6 ms·
I was a student at Northeastern (where Matthias Felleisen was a professor) from 2016-2020, so I have first-hand experience with exactly this system of teaching.
by mjdiloreto 2y ago
I was a student at Northeastern (where Matthias Felleisen was a professor) from 2016-2020, so I have first-hand experience with exactly this system of teaching.
The combination of the "program design" process and the simplicity of the teaching language (student Racket) made the introductory courses at Northeastern excellent. I found that students who already had lots of programming experience hated the initial courses, but those of us with limited experience really excelled. For me, it really validates that Dijkstra quote about Basic programmers being psychologically injured.
The second introductory course used Java, but it mostly covered all the same topics as the first Racket-based course, just using Java constructs. It was a much more gentle introduction to the extra complexity of "real" programming languages, but the program design process was identical.
As I understand it, Northeastern is unique in its CS pedagogy, and there's only 1 other school I know of (WPI) that uses Racket as its teaching language. I will always be grateful for my time there.
- marcosdumay 2y agoThere shouldn't be a lot of people that knows the Basic Dijkstra was talking about in an undergrad course in 2016.
- froh 2y ago> There shouldn't be a lot of people that knows the Basic Dijkstra was talking about in an undergrad course in 2016. please clarify. few know basic in 2016? few know Dijkstra said it in 2016? in 2016 few knew that Dijkstra made the claim at some earlier point in time? I don't understand what you want to say.
- scherlock 2y ago"In 2016, there should not be many undergraduates that are familiar with the version of Basic that Dijkstra was referring to when he made this quote in 1975" see https://www.cs.utexas.edu/~EWD/transcriptions/EWD04xx/EWD498.html https://www.cs.utexas.edu/~EWD/transcriptions/EWD04xx/EWD498... for the original quote
- froh 2y agothank you!
- gav 2y agoDijkstra was talking about Dartmouth Basic in 1975: - Variables: Single letter, optional digit. - Control flow: FOR loops, GOTO for others. - Subroutines: GOSUB line, RETURN. - Parameters: Passed via global variables. - Functions: 26 (FNA–FNZ), one line each. - IF statements: One line only.
- AnimalMuppet 2y agoIn terms of control flow, that's basically assembly, just with a friendlier syntax.
- marcosdumay 2y agoModern assembly you give you named functions, line number independence, unlimited functions, places for carrying a value over RET... Basic had none of those.
- deleted 2y ago[deleted]
- kragen 2y agoIt's much worse than assembly. On all but the shittiest machines, you can store code pointers in RAM and registers, and in a subroutine call, the return address is stored somewhere you can read and change it (whether on a stack, in a register, or before the first instruction of the called subroutine). This allows you to implement object-oriented programming, switch/case, backtracking, and multithreading in assembly. You can't do that in BASIC. Also, since the early 01960s, all but the most primitive assemblers have macros and named labels. One result is that they have an unlimited number of named functions with line number independence, as marcosdumay said. Many of them have a sufficiently powerful macro system to implement nested control structures like while loops and multiline if. Since the 01970s they've also had local labels. BASIC doesn't have any of that.
- cies 2y agoI've been advocating the use of a LISP in the feedback committee of a local CS school I'm in... Some start the course with quite strong JS/Java/C#/Python skills, and some have zero exposure to programming. A LISP would in most cases: * level the playing field for all pupils * focus on learning the concepts over learning the language (I argue LISPs are almost syntax-free) * while not delving into type systems just yet!
- dockd 2y agoThe level playing field is interesting. My initial thought is that's a great idea. But then I start to think about how college classes are supposed to build on what you already know. Your math department doesn't begin with addition, the English department doesn't start with picture books. Perhaps the real issue is forcing everyone with experience to start over at the beginning.
- kragen 2y agoIf you wanted native English speakers and second-language English speakers to be on a level playing field in a literature class, maybe you could teach the class using entirely Esperanto or Lojban translations of the works you are studying.
- huimang 2y agoThe language one speaks has nothing to do with literature class*, as the point is to teach reading comprehension, critical thinking, writing, and whatnot. The exposure of great works before college helps build a firm foundation on which to read and dissect more complex works. * Obviously the works need to be readable in a language one knows. But it's not like the essence of literature classes change whether one speaks English or German or whatever. That's not the point.
- kragen 2y agoIt is easier to pass a literature class when you can already read the language the literature is in.
- seanw265 2y agoI attended the University of Delaware around the same time, where the CS honors program also started with Racket. As someone self-taught with experience in imperative languages like Obj-C, Java, and Haxe, most intro courses would have been redundant. Racket’s functional approach, however, required a significant mindset shift. It deepened my understanding of core programming principles and fundamentally changed how I approach problem-solving.
- appstorelottery 2y ago> For me, it really validates that Dijkstra quote about Basic programmers being psychologically injured. > I was a student at Northeastern (where Matthias Felleisen was a professor) from 2016-2020, so I have first-hand experience with exactly this system of teaching. This maybe so, however you likely don't have first-hand experience with early, unstructured versions of basic to which Dijkstra was referring to in his quote. These early versions lacked control structures such as loops or even if-then-else functions. Later versions of basic evolved to support modularity, OOP, local variables and everything else. Dijkstra tended towards hyperbole and exaggeration IMHO.
- rramadass 2y ago> Dijkstra tended towards hyperbole and exaggeration IMHO. No. Dijkstra being Dutch was famously blunt, vigorously contrarian, uncompromising perfectionist and extremely honest. A summary of his life and works; The Man Who Carried Computer Science on His Shoulders - https://inference-review.com/article/the-man-who-carried-computer-science-on-his-shoulders https://inference-review.com/article/the-man-who-carried-com...
- senthil_rajasek 2y ago"... blunt, vigorously contrarian, uncompromising perfectionist and extremely honest." Or what HR would call as "not a team player".
- rramadass 2y agoHa, Ha! Teamwork is vastly overrated in the Industry. Almost everything achieved by mankind is because one man put together a lot of knowledge in his own head and came up with insights. Even when they worked in Teams each man was an individual and did his own thinking. Today "Teamwork" has come to mean playing politics, jockeying for influence, taking credit for other people's ideas and so on.
- funcDropShadow 2y agoWhen was the last time anybody cared what HR had to say? I've never encountered an HR department whose primary role wasn't to indoctrinate or to create roadblocks for everybody else.
- danielam 2y agoA sad development is that the current administration is attempting to strangle the curriculum Felleisen et al. have developed over the last 2+ decades in favor of returning to the "old way" of teaching he criticizes in this essay. Their motivation is in large part—though not exclusively; ideological elements also enter into the picture—a consequence of Northeastern recently snapping up various bankrupt colleges worldwide and wanting to homogenize the curriculum across these new satellite campuses. Sadly, this means homogenizing down. Apparently, training faculty in this curriculum is too much for them.
- tjridesbikes 2y agoThis is so sad. I got an incredible CS education at Northeastern. I’m very successful in my career, and for someone who didn’t know how to program before college, I found that the CS curriculum pioneered by Felleisen prepared me far better than graduates of other colleges. The curriculum was tough and I spent many nights banging my head against homework assignments. But, everything eventually “clicked” and I graduated feeling confident, empowered, and humbled. Not a single CS major in my graduating class got a 4.0, and I refer to this with honor and respect. The curriculum taught us how to think, how to problem-solve, and how to design programs. It felt like the curriculum was created to foster _understanding_, not to crank out high GPAs. I’m so disappointed that the Northeastern admin is trying to force such an excellent CS program into something more “accessible” a-la a boot camp. That’s not a knock against boot camps, which should be a low-cost way for people to get their foot in the door for this amazing profession! But, for a 4-5 year university costing $60k per year, I would expect to be challenged, learn theory, become versed in things I’ll never use on the job, and come out a well-rounded SE. Felleisen may be a bit cantankerous, but he sure as hell knows how to approach CS education, and I can’t thank him enough for the opportunity I had to learn via his approach.
- setheron 2y agoAt University of Waterloo we used scheme
- kalinkochnev 2y agoUConn had a Racket programming course for maybe a decade up until last year. Enough people complained that it was too hard and a weed-out course and the administration dropped it. Yet another blunder by the CSE department.
- whateveracct 2y ago> As I understand it, Northeastern is unique in its CS pedagogy, and there's only 1 other school I know of (WPI) that uses Racket as its teaching language. Not Racket, but Indiana University uses Scheme. Dan Friedman is a professor there and teaches a great 300-level programming languages class (in Scheme ofc) In-state tuition to that school (and Purdue for that matter) is one of the few reasons I'd advocate for living in Indiana after growing up there haha.