5 ms·
Ask HN: Computer Science Fundamentals
I went to interview with a startup last week. Unfortunately, I didn't get it and I never really gave them enough reasons to.
They asked a number of computer science fundamentals that I used to know back in college (e.g. hashing, pointers, etc.) They said they asked candidates about these because they prefer developers who know the impact of their code in the smallest details.
Any suggestions on what else I should learn related to CS fundamentals?
I'm hoping that on my next interview with a startup, I'll be more prepared.
- edu 17y agoAlgorithms, complexity and data structures. Depending on the job, review some hw/networks things (I've been asked to fill a table with the OSI model).
- mbrubeck 17y agoSome concrete things you can do to learn, just based on what I've found enjoyable and worthwhile: Solve some Project Euler problems, then read other solutions in the forums and try to implement some of the algorithms and optimizations you find there. This will force you to learn some basic algorithms and some math, and expose you to a wide variety of concepts and techniques. (Yes, I am constantly pimping this on HN.) http://projecteuler.net/ http://projecteuler.net/ Learn a new programming language or two every year. By learning extremely different languages (C, Lisp, Haskell, Io, Forth, Mercury, J...) you'll learn to think in a lot of different ways. But even before that, just translating what you know into a different context will help force you to learn the names and underlying forms of most of the fundamental building blocks: data structures, closures, higher-order functions, polymorphism... http://learnyouahaskell.com/ http://learnyouahaskell.com/ Read research papers related to your field. When you don't understand something, follow the citations or look it up in Wikipedia. If you don't know what to read, start at ACM Queue and see what's interesting. Then branch out into other publications. http://queue.acm.org/ http://queue.acm.org/ Watch lectures from MIT OpenCourseWare, especially 6.001 (Structure and Interpretation of Computer Programs, taught by the authors). Among other things, you'll learn how to build a simple interpreter and compiler. http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-001Spring-2005/CourseHome/ http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Compute...
- dannyr 17y agoProject Euler looks good. I actually prefer solving problems rather than reading alone. I'm coming from a .Net background where a lot of things are abstracted from you. I haven't done low-level languages for a long time. I guess it's time to do it.
- deleted 17y ago[deleted]
- kuszi 17y agothere is one disadventage: you can not compare the memory usage/runtime of your code to others. Try SPOJ (Sphere Online Judge) it supports also C# if you like.
- keefe 17y agohttp://academicearth.org/subjects/computer-science http://academicearth.org/subjects/computer-science These videos may be of use