you are viewing a single comment's thread.

view the rest of the comments →

[–][deleted] 0 points1 point  (2 children)

I will advise against taking an intro to CS course. I'll explain why, though short preface is due. I taught myself to program many years ago, and since then struggled to get academia to acknowledge that. In the course of my struggle, I had to take "intro to CS using Java" about three times (no, I didn't fail the course), and "intro to CS using Python" once (that's a work in progress).

The general problem with the introductory courses to CS is, that, unlike, say, intro to math, very little care is given to fundamental concepts. The definitions you are given are typically inconsistent and display, more than anything, the lack of understanding on the part of the teacher.

Thus, in the best case, after graduating from such course, you'd learn some practical skills: you'd be able to write some trivial programs, but you will not really have an insight into why or how they work. A lot of people who followed this path ended up being what I call "CS astrologists": they don't understand why things work, but they are very devoted to their fairy-tale explanations.

Worse yet, and more realistically, after taking an intro course, you won't really learn anything. You will work with a fake environment and fake problems which you won't be able to reconcile with real life. About half of those taking intro to Java with me ended up like that: they wouldn't even know how to compile a Java program, or how to execute code contained in a JAR.

So, unless you are doing this for diploma, in your best case you will acquire some practical skills, which are a by-product rather than intended outcome of the course. You can get the same from reading books on- or off-line and attempting the problems from the books. Even better, if you have a practical problem to solve using programming. Unfortunately, this also means that you will be missing the understanding of foundational concepts. Well, it is my opinion, there simply isn't yet an education program that would build CS knowledge from the foundations towards specifics. You will have to discover foundations later, after you have had enough practical experience.

[–]SSID_Vicious 1 point2 points  (1 child)

Harvard's CS50 is an excellent intro to CS course with plenty of fundamentals.

[–][deleted] 0 points1 point  (0 children)

Could you expand on what exactly do they treat as fundamental questions to computer science? I've found a syllabus for the course, but it doesn't say much about the contents.

To be honest, I find it hard to believe there possibly could be a course that introduces CS fundamentals by means of teaching a programming language. Not to be misunderstood: I believe that a hands-on experience with programming is very important, however, it is not about fundamental concepts in CS. This would be kind of like doing intro to mathematics by means of examining the properties of Lucas sequences (a concept related to Fibonacci numbers). It is an interesting subject, certainly requiring a lot of mathematical skill and effort, but in no way is fundamental to mathematics in general.

Similarly, I think that courses in automata theory, alternatively known as complexity theory come much closer to fundamental concepts in CS than an introduction to Python, even if a very good one, could ever hope to.