Hacker News new | past | comments | ask | show | jobs | submit login

My university has unintentionally addressed this problem in a (cough) interesting way. The CS classes are increasingly difficult programming practice for three years, and in senior year we finally get one and a half courses of what I would call "computer science" with an introduction to state machines and algorithms. The people who don't know what they're doing or who don't like to program will change majors within the first two years, and the survivors have become comfortable with programming before they are introduced to the high-level concepts. The obvious downside is that there is little time left in the degree track to teach the high-level concepts, but fortunately MIT's OpenCourseware is there for students who want to continue learning.

Both my local university and junior college use C++ as the introductory language, which I believe makes the high learning curve even worse. (I cheated my way through the introductory course by teaching myself C and arguing that the programs compiled and ran in a C++ compiler, and taught myself C++ later when I was better grounded in the fundamentals.) If it were up to me, the introductory class would be half in Python to teach the fundamental concepts of 'if' and 'while', and half in straight C to teach the low-level concepts of compilation, data structures, and memory management, and the fact that you can implement the same algorithm in different languages. I would wait until a second course to introduce C++ and its inheritance, templates, and operator overloading.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact