|
|
|
Ask HN: Project ideas to learn CS fundamentals
|
|
33 points
by throwaway_salsa
2111 days ago
|
|
I am a software developer with 5 years of experience. I have worn multiple hats in my jobs, but I mainly work in python where I don't have to deal with CS fundamentals. Recently I started seriously looking into opportunities in FAANG. The biggest problem is, am not from CS background and it doesn't motivate me studing algorithms and data-structure just for job preparation. What I am looking for is some project ideas (any kind of, old/new, smaller/bigger, any stack), where I have to deal with these kind of problems. I am more like learn-by-doing kind. Any advice will be appriciated. Additionally if there are any such kind of projects online (e.g. github) where you deal with many algos/DS, please mention. Thanks ! |
|
For general object-oriented programming and working with lists/sets, write your own versions of classic 2-D arcade games like Snake, Asteroids, Pac-Man, or Breakout. You can use simple geometric shapes and any drawing framework if you don't want to create complex graphics.
Conway's Life, Notakto (2-D arrays)
Frequency-based cipher analysis (easy application of hash tables)
Password cracking (hashing)
Search engine for the plays of Shakespeare: given a word, return the text locations where it occurs (implementing and constructing an index data structure)
Predictive text generators
Simulating queues and theme park rides (priority queues, event-driven simulation)
Stack-based programming language interpreter (stacks, postfix arithmetic, simple lexical analysis)
Generating mazes by building spanning trees (graphs, greedy algorithms)
Spellchecking (using dynamic programming for edit distances)
Writing an interpreter is hard but will tie a lot of things together (lexical analysis, recursive parsing, trees, tree traversals)
I also second the recommendation for coding a simple game like Tic-Tac-Toe or Nim and writing a search-based AI opponent. Great for developing proficiency with recursion.