

Ask HN: Studying Computer Science - mitjak

I'm not sure if HN is the best place to ask this, but I don't know any better place to ask this.<p>Some time ago I decided that programming is something I enjoy doing. A few years and night school calculus courses later I got into a university computer science program on the second year of which I am now.<p>I found the software engineering and general computer science courses rather easy, including those that taught Python, Java and the intro C/UNIX course. What I found a bit more difficult to cue into were the more `academic' courses, e.g. those dealing with proofs of correctness, state machines, some low-level hardware courses (although putting together logic circuits was quite fun indeed), and university-level calculus. While the latter most struggle with, the computer science courses I know there should have no problems tackling, but it's almost as if a switch in my mind needs flipping, and it's too dark in the room to find it. A few of my friends have zero problems with the more rigorous courses, but are completely useless when it comes to even the most basic object-oriented design and even version control, which took a surprising amount of effort to explain.<p>When I first came to see the university counsellor, we parted ways with him saying "we will turn you from a coder into a computer scientist", which is precisely what I'd like to take away from post-secondary education. Is there any advice or resources you could point towards to learn about the stumbling block could be?<p>Thanks in advance!
======
whimsy
Python, Java, intro to C/UNIX aren't computer science in my opinion. Dijkstra
said, "Computer science is as much about computers as astronomy is about
telescopes." I'm in Dijkstra's camp when it comes to defining what computer
science is.

Computer science is applied mathematics. Math comes easily to few people. It's
going to take time; you're going to have to study. I have a similar problem;
the math of computer science doesn't come easily to me, either... but I think
this is where the magic is. When studying math, I have a lot of "aha" moments
- I won't understand a concept for hours, but finally some explanation will
make sense and the entire thing will gel in my mind. Don't be afraid to ask
for help! Go to study groups. Go to office hours.

In my opinion, some of the more important computer science classes are classes
on algorithms and classes on compilers. Make sure you take those.

Industrially, you have an advantage - understanding OO design, VCS, et cetera
are important for actual work, but they aren't computer science... they're
development tools. If you can arm yourself with the deeper magic of the math
behind the constructs we use in development, you'll be ahead of the game.

As a footnote, related questions have been asked a lot on HN. Try searchyc.com
to find them.

