

Ask HN: Computer Science Fundamentals - dannyr

I went to interview with a startup last week. Unfortunately, I didn't get it and I never really gave them enough reasons to.<p>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.<p>Any suggestions on what else I should learn related to CS fundamentals?<p>I'm hoping that on my next interview with a startup, I'll be more prepared.
======
mbrubeck
Some 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/>

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/>

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/>

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-
Compute...](http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-
Science/6-001Spring-2005/CourseHome/)

~~~
dannyr
Project 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.

~~~
kuszi
there 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.

------
edu
Algorithms, 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).

------
keefe
<http://academicearth.org/subjects/computer-science> These videos may be of
use

