top | item 5315649

(no title)

gridaphobe | 13 years ago

C is a language I'd like to see make a reappearance in CS curricula. It's great that most programmers today don't have to deal with memory management and pointers, but I think a CS degree should leave the student with a basic grasp of the full stack of programming paradigms.

I think a nice approach would be to start off with a high-level, functional language like Haskell or Scheme, and then move down the ladder of abstraction in subsequent courses, culminating in a hardcore C (or maybe even assembly) course.

discuss

order

tikhonj|13 years ago

This is exactly what my school did. The first CS class was in Scheme, based on SICP. The next one was about data structures and based on Java. The last one was about computer architecture and used C followed by MIPS followed by designing a simple CPU with logic gates.

Overall, it's a pretty good system. The middle Java class was completely worthless and a big waste of time though; in hindsight, I should have skipped it. Also, while we learned a bunch of cool things in the SICP class, every single other class except for programming languages/compilers completely ignored it. Most retaught some of the same concepts, but poorly.

Also, apart from SICP, there aren't any undergraduate classes doing functional programming! What's up with that?

At least at my university, there's plenty of C and C++--even in places where it blatantly doesn't fit, like the other version of the compilers class. And far, far too much Python. And too little functional programming. Ah well, c'est la vie.

I would love a compilers course taught in ML (maybe OCaml?), and it's a possibility, but not before I graduate :(.

dfeltey|13 years ago

I graduated from the University of Chicago, and they have a handful of undergrad classes using functional languages. The intro comp sci courses were using Haskell for the honors class, and Racket for the non-honors version when I took it. The compilers course there is taught using ML, though the fact that UChicago has several faculty who work on the development and maintenance of Standard ML may have something to do with this.

gridaphobe|13 years ago

Where are you studying? My undergrad (City College of New York) was mostly C++/Java with the exception of the PL course, which used Scheme. We also had an elective that taught x86 assembly.

I had to discover and learn Haskell on my own :)