The longer I teach CS, the stronger I feel that the move away from C & toward Java (& Python) in intro sequences was a mistake. I don’t think the intro lang has to be C, but I think it should be one that fosters building a useful mental model of the machine & OS.
@rob my intro to CS class was ML, which, I guess, is even more abstract and high level than Java/ python (although the class was called intro to algorithms, not intro to CS)
@rob although it was taught alongside a compulsory operating systems class.
@IanSudbery the OS class isn’t compulsory at UMD (or most places I know of). There is one class in our required curriculum where students must encounter C, but: 1) they have already been misled by having worked for a year or more in a GC’ed language and 2) the required course, while nice, doesn’t force substantial enough projects in C to really drive home the key concepts about memory etc.
@rob people taking a CS minor at my school had compulsory classes in algorithms and operating systems (semester 1) and discrete mathematics and object-oriented programming (java) in semester 2. The OS classes was entirely abstract. No C coding, although the concept of GC was introduced.