4 ms·
Ask HN: Project ideas to learn CS fundamentals
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 !
- killvung 6y agoBuild your own API rate limiter
- superdeeda 6y agoThe Berkeley AI course is very practical. The “search” section can help you learn search algorithms: http://ai.berkeley.edu/search.html http://ai.berkeley.edu/search.html I think writing small games and solvers for them can be a good way to learn and practice algorithms and data structures. In my first year of CS we had to implement the Rush Hour game and write a solver for it.
- deleted 6y ago[deleted]
- throwaway_salsa 6y agothis sounds terrific. building game and writing solve for it.
- machiaweliczny 6y agoMaybe write interpreter or DB
- caseyscottmckay 6y agoNand2Tetris
- elonmollusc 6y agoHere are some projects that I've assigned in my programming and algorithms classes. All of these projects can be done in Python or any other language. 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.
- deleted 6y ago[deleted]
- throwaway_salsa 6y agoAwesome. Thanks for mentioning related algorithms too. It will be good if we build some github repo for this kind of listing.
- asicsp 6y agoCheck out this list: https://github.com/tuvtran/project-based-learning https://github.com/tuvtran/project-based-learning I'd also suggest: https://github.com/tayllan/awesome-algorithms https://github.com/tayllan/awesome-algorithms
- deleted 6y ago[deleted]
- throwaway_salsa 6y agoGreat repos. Thanks
- laurentl 6y agoIf you want a nice tour of classical CS concepts in bite-size chunks, give the "Advent of Code" a try (adventofcode.com) It's a collection of 25 vaguely Christmas-themed problems published each December. The 2019 advent requires you to, among others, write an interpreter for pseudo-machine code, navigate around a maze, manipulate graphs... So it's a fun way to play around with algorithmic and data structure concepts.
- throwaway_salsa 6y agoGreat work ! Thanks !
- jdbowman 6y agoThere is a reasonably popular book (a free version is available online, as well) called _Think Python_: https://greenteapress.com/wp/think-python-2e/ https://greenteapress.com/wp/think-python-2e/ It was originally titled "How to Think Like a Computer Scientist." It tries to teach basic CS concepts with Python.
- probinso 6y agoadventure game with both a GUI and a TUI. Things like graph exploration for maps, memory management, string parsing, software design and architecture are all found in adventure games as puzzle problems, it's worth implementing and benchmarking various tree types. Implement from scratch a bst, trie, b-tree, avl, red-black, quadtree Sort a collection of numbers larger than the memory of your machine.
- probinso 6y agoTo be clear, build a TUI and a simple GUI for the same game, with exactly the same back end
- throwaway_salsa 6y agook thanks. This is what I am looking exactly.
- shakkhar 6y ago> Recently I started seriously looking into opportunities in FAANG. Somewhat orthogonal to your question - but I wanted to point out that if FAANG opportunities are what you're after, doing projects is not going to help. > it doesn't motivate me studing algorithms and data-structure just for job preparation. That's exactly what you need to do if you wish to land a FAANG job.