there are additional sections where they broke off into smaller groups.
It is selling you into the world of computer science, a window into it. This could be further seen by its spin-off courses for different audiences.
> My fear is that students will come out of the course with a very narrow view of computer science such that they think C, Python, HTML/CSS/JS, SQL are the only games in town.
It's an "intro" course. In fact, this intro course covers way more than what colleges in the US do for an intro course.
> Are MLs (SML, Ocaml, F#) or Lisps/Schemes mentioned at all in this course?
> It is selling you into the world of computer science
I personally don't like being sold something when learning and feel like there's a fine line between something being sold and something being presented as important or interesting. I acknowledge this is a strong personal preference.
> It's an "intro" course. In fact, this intro course covers way more than what colleges in the US do for an intro course.
Well, that's part of my problem with it. If it's an intro course, why throw so much into it? If it's meant to survey a lot of things, then why not provide a wider view? Having not taken the course, I am speculating here, but I would guess there's two outcomes to a student taking the course. They either get a superficial view of what they cover or things are covered at such a pace by going both deep and wide that there isn't time to properly ingest everything. That's why I am curious of hearing about actual outcomes from people taking the course. Courses that cover too much, for me, get me thinking in too many directions to be useful.
> Nope, and why should they be?
I was just asking the question, not saying they should be. But I do feel it's a bit of a disservice not mentioning them given that they inspired a wide swath of today's modern programming features. I also feel they are the ideal teaching languages, especially for intro courses.
I'm fairly unconvinced by that answer, which is rather predictable. Why is it important it's close to hardware? There's nothing stopping you from implementing data structures or exploring buffer overflows in other languages. Mathematicians don't start teaching students mathematics by being "close to the hardware". If they did, we'd start off the university education with real analysis, topology, and abstract algebra. Instead, calculus is the primary starting point, which sits at the right level of abstraction. C is exactly at the wrong level of abstraction. It's too far away from the hardware to really understand the hardware <-> software interaction in depth, and it's too low-level to understand the more useful abstractions in computer science and programming. I personally view abstraction as the key point in learning programming and computer science, and C is probably the worst language you could pick for that.
The approach found in Nand2Tetris and the book The Elements of Computing Systems is far more interesting if one wants to truly understand how software stacks on top of software that stacks on top of hardware.
Arguably, this course does both of selling and presenting the importance of computer science in today's world. I think before you add more speculation, it would be best if you at least look at the syllabus and content.
---
I am not sure how familiar you are with university intro-level course. This course actually providers a wider viewer than many many other intro courses.
---
> I also feel they are the ideal teaching languages, especially for intro courses.
Not sure how involved you are with designing a CS curriculum but at least in the US, most colleges shy away from these languages. (Yale does start in Racket) I'd make an assumption that over all this time period, a lot of these professors have actually put some thought into which language is suitable.
---
There's nothing stopping but since this course is giving you a window into the world of computer science, they wanted to add the hardware/memory-mangament aspect as well. I'd say this is quite unnecessary for an intro-cs course, but not a bad thing. Assuming this purpose, I can't think of another language that would be more suitable than C. Assembly? That'd be painful and unhelpful.
I think your analogy is a false equivalency, regarding topology and abstract algebra. I don't know about math enough to give my vision of a better analogy.
I'd saying teaching kids to drive in manual shift instead of auto would be a better equivalency to having them write in C.
---
The course you are mentioning is for a very specific purpose. Even the author says that the students for this course should be able to program in some programming language. (Which wouldn't work for an intro course where they target someone with no exposure at all).
And most CS programs would have a similar course at 200-level. See examples of CMU's 15-213, MIT's 6.004, Stanford's C107.
It is selling you into the world of computer science, a window into it. This could be further seen by its spin-off courses for different audiences.
> My fear is that students will come out of the course with a very narrow view of computer science such that they think C, Python, HTML/CSS/JS, SQL are the only games in town.
It's an "intro" course. In fact, this intro course covers way more than what colleges in the US do for an intro course.
> Are MLs (SML, Ocaml, F#) or Lisps/Schemes mentioned at all in this course?
Nope, and why should they be?
> C as intro language
David Malan answers this here: https://qr.ae/pNsCkQ