9 ms·
Northeastern's redesign of the CS curriculum
- jcgrillo 2y agoThe disease must have jumped the river from M.I.T.
- ycombinatrix 2y agoi think it is coming from industry
- davewritescode 2y agoI am a graduate of Khoury and find this very disappointing. I wasn’t a huge fan of learning Scheme/Racket but after looking back during my career I’m grateful for the education I got there. This feels like a step backwards.
- dickfickling 2y agoI attended Northeastern from 2010-2013. Fundies (the freshman-level functional programming courses) was fundamental (ha) to my growth as a software developer. It taught me how to reason about data and how to design programs (the literal name of the textbook). I know a lot of students hated it—frankly those were mostly the students that it seemed were only doing computer science programs because they’d heard they could make a lot of money in the field. The “real nerds” all seemed to love it, and now nearly 15 years later those are the engineers in my network who have built the most impressive systems and products. I guess I’ll have to update my default instructions for recruiters from “automatically interview anyone with a degree from Northeastern” to add “if they graduated before 2025”
- jcgrillo 2y ago> I know a lot of students hated it That's a good thing. I don't know whether your assertion about the breakdown between "real nerds" and the other camp is accurate or not, but I think this point stands on its own regardless--learning is hard. It's uncomfortable. It's unpleasant. If it isn't, you're not being pushed hard enough. So what's the point of asking students how they feel about it? Why make strategic decisions based on those data? I'm genuinely curious, not trolling or anything. It seems completely baffling to me that educators behave this way, and I'd really love to understand why.
- hitekker 2y agoMy take: if a given task is not fun, then it is work. People on average do not enjoy work. They do not like doing work, let alone doing it well. Training kids to do work well, without any pleasure, necessitates heavy accountability enforced by management, which brings a slew of its own requirements and complexities. Schools already handle many cross-competing concerns across stakeholders (PTA, Taxpayers, Town Government, State Government), so I suspect they would want to reduce their enforcement & oversight load. They'll choose a teaching style that makes everyone happy or at least complacent, even if they know "fun is not learning".
- robrenaud 2y agoMy best learning was difficult, whole mind encompassing, and incredibly fun. If you can get college students idle brains curiously contemplating the how and why of the subject, that's when the tuition is really worth it.
- jcgrillo 2y agoI completely agree. The only things I consider fun are also "hard", "uncomfortable", and "unpleasant". Otherwise it's just boring. Another way to say it is "rewarding".
- WorldPeas 2y agoI can't find a person who didn't initially make the fun-dies joke, then later come around to it, myself included. Sometimes you don't realize someone helped you until years later.
- asimeqi 2y ago15 years after MIT made the same switch from Scheme to Python. Since CS at MIT seems to be fine, so will CS at NEU.
- fn-mote 2y ago"Everything will be OK" - people will succeed in any system. Nobody will ever compare the outputs of the two systems, so nobody will ever know. Let me instead suggest that one question we should ask is: What kind of students will be successful in the new system? What kinds of students will not? One interesting thing aspect of the former curriculum is that (IMO) it provides an entry for students who are not entering with a lot of pre-existing knowledge. One of the criticisms of "old school" computer science teaching is that it privileges students who already have exposure to the material... The former curriculum is not the only way to level the playing field, but it certainly does provide a more level playing field for students who might not even be sure about the major. I will stop with the suggestion that (IMO) pre-existing experience is definitely not the best indicator of future developer quality, so I value a curriculum that does not select for this. (Caveats: never saw the new curriculum, it could be just fine, there are lots of other ways to accomplish this goal, but still... I am concerned.)
- dehrmann 2y agoI don't know how much I buy the "leveling the playing field" argument. In my computer architecture class, we learned Sparc assembly. Very few people had encountered much assembly, and definitely not Sparc. At first, it was level, but people with more programming experience quickly adapted since it wasn't actually that different.
- davidalayachew 2y agoIs it fine? How would we determine that? What's the metric?
- bmitc 2y agoMIT, despite it thinking otherwise, is a slave to industry, funding, and trends.
- chrisaycock 2y agoThis op-ed was written by an undergrad and complains that Northeastern's switch to Python (from Racket) for its introductory classes will prevent students from learning fundamentals of computer science. But that complaint can be made about any language! "This dynamically typed language won't allow students to understand type safety." "This high-level language won't allow students to learn pointers and systems programming." Etc. I believe that an intro course should get students coding since the first major hurdle is learning how to construct any kind of program at all. The switch to a more "employable" language isn't going to make education worse.
- SolarNet 2y agoTell me you haven't read the article (or used racket) without telling me. > I believe that an intro course should get students coding since the first major hurdle is learning how to construct any kind of program at all. The switch to a more "employable" language isn't going to make education worse. None of this is the issue at hand. The switch to python is because industry uses it. The article correctly makes the point that racket was intentionally designed to get students coding as easily and quickly as possible. It has multiple steps of teaching languages for exactly that purpose, introducing concepts in ways that let students grapple with them one at a time in an interactive environment. Meanwhile in python complex topics like duck typing, object oriented methods, exceptions, the distinction between iterables and lists, how to use a command line/terminal or how to configure an IDE, and so on must be covered before people can start writing code for the exercises. Racket is streamlined for beginners.
- lazyasciiart 2y ago> Meanwhile in python complex topics like duck typing, object oriented methods, exceptions, the distinction between iterables and lists, how to use a command line/terminal or how to configure an IDE, and so on must be covered before people can start writing code for the exercises. No, they dont have to be at all. You might as well suggest you need to learn the JVM before writing a line of Java.
- deleted 2y ago[deleted]
- ideashower 2y agoIt's funny, my friends and I all entered CS around the same time (2010-2013) and I remember thinking it was weird for NEU to be using Racket. Clearly it's successful, and has proven itself to be a great place to start a CS career. I always advocated a C based language, like C or C++. That's where my program (not NEU) began and I hated it but am grateful. We eventually moved onto Java. Later courses through my 3rd year allowed me briefly work with functional programming. We never touched Python or web frameworks until our Junior and Senior year projects, and even then it was generally voluntary and depended on the project we had proposed for our databases or algorithms classes. What I do think CS programs should be evolving for are LLMs. Python + ChatGPT are powerful without the user knowing too much of the logic off-hand. That's a problem for new CS students who need to learn the fundamentals of logic, reasoning and programming. I don't know what languages work "less-better" with modern LLMs, all I know is that ChatGPT and Claude work exceptionally well with Python. I suppose, as long as we keep paper exams, all hope is not lost. Maybe just a little, in my opinion.
- thot_experiment 2y agoAgreed, LLMs mean that it's MORE useful and important to learn Racket and C, the LLM will help you much more with knowing the specifics of python/js/go/java or whatever human-focused language you end up working with for your job. If you want to be a stellar developer in 2025 you want to learn the things the LLM ISN'T good at, understanding the fundamentals of computer science is way more useful now than it was 5 years ago because the baseline for being good at a language is so much lower with an LLM aiding you.
- InkCanon 2y agoI'm seeing many undergrads write LLM code that they don't even understand. It's a travesty. Can't remember the exact saying, but it went like: "AI creates short development times and super long debugging"
- rswail 2y agoNone of what you talk about is computer science, it's applied programming. Computer science is to programming in the same way that astronomy is to navigation. How can a student "understand" LLMs without the background knowledge of computer science? Programming courses can teach how to use LLMs, in the same way it can teach how to use Python, Java, language-de-jour.
- theodpHN 2y agoAlso expressing concerns about the selection of suitable languages for novice programming is King's College CS Prof Michael Kölling, who explains, "One of the drivers is the perceived usefulness of the language in a real-world context. Students (and their parents) often have opinions which language is 'better' to learn. In forming these opinions, the definition of 'better' can often be vague and driven by limited insight. One strong aspect commonly cited is the perceived usefulness of a language in the 'real world.' If a language is widely used in industry, it is more likely to be seen as a useful language to learn." Kölling's recommendation? "We need a new language for teaching novices at secondary school and introductory university level," Kölling concludes. "This language should be designed explicitly for teaching [...] Maintenance and adaptation of this language should be driven by pedagogical considerations, not by industry needs." While noble in intent, one suspects Kaplan and Kölling may be on a quixotic quest in a money wins world, outgunned by the demands, resources, and influence of tech giants like Amazon — the top employer of Northeastern MSCS program grads — who pushed back against NSF advice to deemphasize Java in high school CS and dropped $15 million to have tech-backed nonprofit Code.org develop and push a new Java-based, powered-by-AWS CS curriculum into high schools with the support of a consortium of politicians, educators, and tech companies. Echoing Northeastern, an Amazon press release argued the new Java-based curriculum "best prepares students for the next step in their education and careers." Links at: Should First-Year Programming Students Be Taught With Python and Java? https://developers.slashdot.org/story/25/01/05/1853210/should-first-year-programming-students-be-taught-with-python-and-java https://developers.slashdot.org/story/25/01/05/1853210/shoul...
- fn-mote 2y agoI fourth-year undergraduate argues against the change like a professor. Honestly, this shows the strength of NEU's current (former) curriculum. Without knowing the new curriculum, I guarantee you that one of the biggest daily complaints about the old curriculum was the requirements that they write unit tests ("check-expects"). Do you think that's going away? Hahahaha. The laugh will be on students who think they're getting something different because the label on the can changed.
- juliangamble 2y agoThe University that hosted "The Little Schemer" and all its derivatives. Those books were a delight and taught me to think about programming in a way that other languages had not. (Even if I didn't go to that University). https://prl.khoury.northeastern.edu/teaching.html https://prl.khoury.northeastern.edu/teaching.html I had been to a Scheme conference in Washington, adjunct to the Clojure Conference one year, and it was attended by many undergraduates from Northeastern, (and the authors of those books that I got a photo with.) I have to feel sympathy for those undergraduates I spoke to. They gave a strong feeling, even then (8 years ago), that it was time for the University to move on in language choice. I had a similar experience in the late 90s when the world was picking up Java, and our University insisted on teaching in Eiffel.
- herdrick 2y agoMatthias Felleisen, architect (I think) of the current curriculum, explains to a hypothetical skeptical university administrator the virtues of it: https://felleisen.org/matthias/Thoughts/py.html https://felleisen.org/matthias/Thoughts/py.html
- herdrick 2y ago(... in the style of his The Little Schemer et al. books)
- herdrick 2y agoThis is so sad.
- anonymouscaller 2y agoHere is Felleisen's (who I should note is retiring) views on teaching programming at NEU, which is worth a read: https://felleisen.org/matthias/Thoughts/Developing_Developers.html https://felleisen.org/matthias/Thoughts/Developing_Developer...
- deleted 2y ago[deleted]
- pclmulqdq 2y agoI went to Caltech when they were contemplating similar things in the CS curriculum, although the normal curriculum was less radical than Northeastern's seems to be. There is a tension here that is being understated which is that people of every major now take the intro-level CS class because programming is integral to everything. Teaching algorithm design in that class is not particularly useful to a biologist who just wants to be able to cobble something together to analyze some data (usually in Python). As a result, the non-computer-scientists and non-software-engineers at the school would rather have a curriculum that is more "practical" and directly applies to research (or later class projects) the students might be doing. Some time not far in the future, we are going to accept that this is not the same thing at all as computer science and give the computer scientists a curriculum that is a lot heavier on math and theory while adding elective or core courses for non-major students on programming. That will end the compromised state that intro CS courses currently sit in. Right now, there isn't enough teaching talent to run those non-core courses (because that talent is earning the big bucks doing something else).
- unethical_ban 2y ago<specialty> for non-majors isn't radical. "Stats for business" "PE for physicists" Why isn't "programming for sciences" not a thing?
- sarchertech 2y agoIt is. When I was in school we had a matlab class for grad students in other departments. I don’t know why you’d try to throw CS majors and Biology majors looking to cobble together scripts into the same class.
- analog31 2y ago"PE for physicists." Touche. ;-) Dating myself, my college had Pascal for CS majors, and FORTRAN for physicists. The FORTRAN class was math heavy, and we had a higher level course in process control as well, plus we all took the math class in numerical analysis. When my daughter was in college, it was Java and Python. She took Java. I had suggested to her that she could easily keep up with the CS students, which she did. I very much favor better training in programming for scientists. Taught by a scientist. The "intro to Matlab" that many students take is really too lightweight. Also, as for languages becoming obsolete, the disciplines that I learned in the 1980s are still of value today even if the languages have changed.
- bmitc 2y agoThis is a really frustrating development, and I'm not sure I have the energy to explain why because it should be obvious and because the negative emotions of years of dealing with stuff like this. My main complaints border around: there's no art in anything anymore in that unless you're doing the lowest common denominator you are doing it wrong, companies show more and more success in influencing others (namely universities) to be their training centers for them, and that universities should be about learning and exploration and not subservience to culture.
- deactivatedexp 2y agoi'm a dropout just do horrible coding for fun can anyone explain why CS programs are adamant about not teaching on the job skills? like databases, web, embedded, security plus theory
- sarchertech 2y agoThat heavily depends on the school. But I’ll add many years later, I appreciate the theoretical classes much more because the knowledge I gained there has aged much better.
- soegaard 2y agoMost Computer Science programs teach principles. The ideas behind a database is more important than the the concrete database used. If the ideas are taught, then the students can adapt when the fashion changes. So instead of teaching something that you can use on your first job, they teach principles you can use your entire career. And times does change. Remember the good old languages Fortran, Algol 60 etc. That's where the jobs were...
- ramses0 2y agoI graduated with a degree in CS. Checking back with my university they'd added a degree in Software Engineering. CS (traditionally) is more about algorithms, limits, growth. There's a bunch of complexity in even just understanding and calculating what a computer can do. The Software Engineering degree makes so much sense if you're studying about how libraries can be tied together, upgraded, unit/integration testing, container and source code management, etc. They are truly different disciplines at this point.
- fireburning 2y agosorry if this sounds dumb I don't have any formal education why is there a distinction? when i hear computer science i hear the study of computers that in my head means software, hardware, and theory it's like having doctors that study humans theoretically and others that do surgery
- stevev 2y agoI’m wondering if neighboring competitor schools who offer python classes are the reason for the change since more students would actually consider attending a different school due to having a stronger post experience and skills gained.
- shmorkin 2y agoI don't think Northeastern is worried about attracting applicants, they were the 8th most applied-to school in the US last year, with nearly 100K applicants. And CS is one of their most popular programs. I think the more likely cause is pressure from their co-op program's partner employers to make the intro curriculum more 'practical' (i.e. outsourcing training from the employer to school). It's beneficial in the short-term but IMO a loss in the long-term, Northeastern is a university not a bootcamp.
- treyd 2y agoMy biggest worry is that maybe the co-op program for CS became a "low interest rate" phenomenon over the years from ~2009-2020 and now they don't want to take gambles on students that likely need to grow into the role. It's not enough, and they treat it like a regular internship program.
- mjdiloreto 2y agoThe end of an era. This is nothing less than a travesty honestly. The current (now former) curriculum at NEU was uniquely exceptional, and now it will be conformingly adequate. Anyone who complained about the difficulty or lack of "job-market applicability" of the Fundies classes entirely missed the forest for the trees. The point is the design _process_, and using Racket forced this. It also demonstrated the magic that is possible with computer science. The Dr. Racket editor has features that do not exist in any other editor (e.g. visually tracing references, and so much more). The teaching language just got out of the way and let professors teach the essentials of program design, without the burden of language idiosyncrasies. My mind was honestly blown when Olin Shivers coded the Y combinator directly and showed us how to add recursion to a language. It felt like having occult knowledge, and it made me an acolyte to computer science. I mourn the loss of this curriculum for future students, especially considering the premium price tag they now pay.
- awscherb 2y agoI always enjoy seeing Olin Shivers name come up in threads about Northeastern. I had him for Fundies and have many fond memories of his lectures, I was truly inspired. It's no exaggeration to say that class and those lectures helped me find a passion and a career I enjoy. It's a shame they're phasing out Fundies, hopefully whatever they come up with will still be able to have that same impact on young students.
- patrickmay 2y agoHe also wrote the best Acknowledgments section to a manual ever: https://scsh.net/docu/html/man.html https://scsh.net/docu/html/man.html
- theonething 2y agoToo bad there isn't an online version that anyone can take.
- WorldPeas 2y agoI spoke briefly with Felleisen at the end of this year, and sadly it seems the zoom recordings from the pandemic are lost to time. The course sites will likely stay up but the lectures were where it mattered
- NickNaraghi 2y agoExciting to see this on HN! As a ‘15 NU alum that took the CS program & third time founder, I support the change. Fundies 1 and 2 were great, but I have always felt that the amount of delayed gratification in NU’s CS program was much too long and incongruent with the university’s focus on experiential learning. I wanted to get my hands dirty and build something and the whole curriculum felt too academic. Northeastern CS is world class at compilers and programming language research, so I always understood that the undergrad program would tend to be academic as a trickle down effect. It’s a spectrum with tradeoffs, so I think balance is key. But happy to see the pendulum swing a bit and think it will be good for new grads, especially as more coding work becomes automated.
- ben7799 2y agoThe new curriculum might be worse but I'm not sure how a 4th year undergraduate should be too sure of themselves when second guessing the department. My undergraduate degree is from RPI, I have worked with many NU grads, they are often very good, but there have been many eye opening moments for me with them in terms of how different the material they learned was and what was left for graduate school when it comes other the core mathematical fundamentals of computer science. To be fair I've run into engineers from other schools that leave all of this to graduate school too. My first internship I shared a cubicle with a graduate student at Boston University. She was taking a graduate course on algorithm proofs and the course used the same book that we had used in the major weed out class that we had in the spring of Freshman year. "Program Design" has changed almost as often as popular programming languages during my career. Almost none of those core mathematical fundamentals have changed at all.
- treyd 2y agoWould be interested on hearing more if you expanded on that point about differences in material.
- ben7799 2y agoTypes of automata and computability Algorithm proofs around complexity, efficiency, etc.. At least an introduction to the design of languages, parsers, and grammars Algorithms and concepts in the design of different database designs (not how to use specific databases) Fundamentals of operating systems and systems programming Some crossover with computer systems engineering courses. You must know at a basic level how logic gates are implemented, how an ALU is built, and how these blocks are built up to construct a CPU These are the actual fundamentals of CS and they change at glacial pace compared to languages and design patterns.
- nluken 2y agoI can't speak to your experiences with others from my alma mater but pretty much all of these things are covered in the core CS curriculum at NU (at least the pre-redesigned one). Systems, PL, Algorithms, Algorithmic proofs, automata, ALU design were all part of required courses, and that's before I include the elective CS courses I took. One area where NU does fall down IMO is that they offer "combined majors" with CS and other subjects that eschew some of these courses to make room for the other half of the major, which will be an unrelated subject. This offering is a mistake because you do miss out on some key concepts. If you're working with a pure CS major, however, they were required to learn all these concepts.
- tptacek 2y agoTeaching object-oriented design as fundamental computer science seems like it would have been an odd decision for 2025. I looked up the class syllabus, and it seems to have been taught in Java (fine) and makes extensive reference to design patterns (not fine).
- geokon 2y agoI once asked a professor about this and the answer I got was interesting. Basically Java and OO and Design Patterns are taught upfront because it turned out this was a huge stumbling block for a lot of people. Bigger than for instance C and pointers. Like it just doesn't click for a lot of people and they end up struggling a lot the rest of the major So it's not that these are the most crucial concepts, but you want people to "fail fast" and have a sense if they'll succeed in the major within the first year
- tptacek 2y agoRight, so... just don't teach Java and OO at all? They're not fundamental. Some of the ideas in that course are something closer to discredited. Later I edited "a lot of" to "some of"; I was coming on too strong.
- wbl 2y agoIf by discredited you mean incorporated into many of the most used languages as well as several of the hot new ones then yes. Furthermore part of PLT is learning the past and what worked and what didn't.
- tptacek 2y agoI don't think that literally means learning how to write AbstractFactories in Java.
- dehrmann 2y agoThis makes sense. You might not immediately need to design a complex hierarchy, but you'll encounter them pretty early in a lot of languages standard libraries.
- userbinator 2y agoI haven't seen many CS curricula start bottom-up with things like digital logic, yet the best programmers I've worked with all started around there and then went upwards --- many of them were self-taught, and although I realise that introduces some selection bias, I have also worked with others who were self-taught but started with some HLL instead, but they didn't have quite the same performance.
- Swizec 2y ago> I haven't seen many CS curricula start bottom-up with things like digital logic That's how we did it in Slovenia (Uni of Ljubljana). You start with discrete math and bool algebra, and you learn how transistors work in physics, then you learn about digital circuits and write some assembly, after that it kinda feels like two parallel branches. One set of professors teaches you the math of it all, the other set teaches you how all that math works in practice. It's a really good curriculum. Yes yes you also have programming classes in parallel with the digital logic and the math and the assembly. Gotta make sure folks can get those all important part-time jobs and feel like they're learning something useful. It's common, or at least was back then, for students to have jobs in industry while they are studying CS. I honestly think having a job and getting to apply what you're learning makes it stick more ... even if it leads to abysmal completion rates (average 7.5 years to graduate when I was there).
- lo_zamoyski 2y agoThat's not "bottom-up". That's a concern for EE/CE or something in that general scope. As the old Dijkstra quote correctly states, physical computing devices have as much to do with CS as telescopes have with astronomy. They're eating utensils, not the main course. Computer science (the name in English is misleading and horrible) is not about physical computing devices. Devices are merely an instrument. Knowing how to use this instrument well is very useful for people in the field, but it is incidental to the field itself. Even the distinction between "high-level" and "low-level" languages is meaningless from a CS perspective, as it essentially presumes a target language on a target architecture (with the target "low-level" language) that is treated as normative and "real", but again, that is an implementation concern wrt the instrument. From the CS perspective, compilation is just translation from one language to another. So I dare say that a CS curriculum that starts with digital logic is not really a CS curriculum, but an electronics engineering curriculum. This is the lesson here.
- User23 2y agoNortheastern is a major part of PLT right? What does this mean for the future of sch^H^H^Hracket?
- andrewstuart 2y agoMeh. Don’t agree. It’s entirely reasonable to ask why students valuable learning budget is being wasted on Racket. If you go to university you have a reasonable expectation to learn relevant things.
- rgovostes 2y agoMy university's CS program was taught in Ancient C++. This was fine for the Comp Sci majors, but the intro-level class was required for all science majors. I fielded many pleas for help on homework assignments and saw that many struggled so much with the (let's be honest, incredibly unintuitive) syntax and inscrutable compiler errors, that they couldn't internalize the more fundamental concepts that the course was trying to teach. Later on, I joined the curriculum committee and argued for it to be taught in Python. The faculty weren't convinced at the time but I see now that eventually they moved the intro course to Python and kept the later courses in C++, which seems like a wise decision. Python is far more approachable and will serve science students well if they ever need to use Pandas etc. (The second-semester C++ course has you implement the STL container types, which is an extremely valuable exercise.)
- mettamage 2y agoSkimmed it quickly and saw it taught Racket to teach programming design. I've worked at a coding bootcamp in 2017. And I have to say, I was a bit jealous. Where I was learning through methods at university that were a bit quaint, my students learned JS with the latest frameworks. And sure, you can argue whether the length of 3 months is enough, but they were surely getting a better education. What they learned in 3 months, took me at least 6 months to a year in terms of how useful it is. The thing is, especially as a beginner, learning any programming language will give you similar difficulties (glossing over some nuances). So why not just learn a practical one? I think once a student has had a practical programming course under their belt, only after that should more esoteric languages come to showcase certain concepts. I believe that they'd be more motivated to learn them as they're more into the groove of programming. And this is coming from someone that has programmed 2 years in Pharo.
- plun9 2y agoWhat?
- nxobject 2y agoAre you sure you meant to post in the thread about NEU's intro CS curriculum?
- dang 2y agoI've moved the comment there now. It was originally posted as a top-level comment to https://news.ycombinator.com/item?id=42676928 https://news.ycombinator.com/item?id=42676928; hence the 'wtf' replies. Thanks!
- ablation 2y ago@dang Is this another instance of that concurrency bug in the comments?
- dang 2y agoI hope not! because I thought I'd fixed that bug.
- casey2 2y ago>we should not teach something just because it's a useful skill, we should teach our favorite dogma that we believe is totally more useful than a system built up through decades of practical experience, guys really. At least "Racket" is aptly named.
- bjourne 2y ago> The program design skills that our current curriculum emphasizes are “what distinguishes a garage programmer from a serious software developer,” in the words of the Fundies 1 textbook. I lol:ed. > The “code swap” at the end of the semester, where students are required to build upon other students’ code, is one of the assignments students struggle most with Wow, sadism may be common in academia, but that is just on a whole different level! A few hours of waterboarding would be nicer. There is exactly zero evidence indicating that Racket would be a better introductory language than Python, so why not go with what is popular? CS students are de facto expected to already know basic programming. So with Python you can jump straight to algorithms, you don't have to waste time with a foreign syntax and an esoteric interpreter.
- sinuhe69 2y agoI read the article and got curious about Pyret. It turns out to be a very nice language, especially for teaching! Very clear and easy to read syntax, no weird bracket mania :D, it even forces programmers to write good formatted code (space surrounding operator!) and encourages the use of best practices (test first!). I also like the fact that it is functional, invariant by default, and they are working on type checking. Seeing this, I can't wait to hear about the students' experiences with the new curriculum.
- red_admiral 2y agoMixed feelings here. There are two separate points. The first one, almost a bit hidden, seems to be a "keep the student numbers up" change: allow placing out with AP CS credit and so skipping the intro courses; making the curriculum easier; reducing the number of students who withdraw from some of the modules; removing the teamwork (code swap) exercise; rolling back on fundamentals and design principles. This is just the word of one TA, but it's big if true. The second one is about the language change. Look - if you're as great a TA as you say, you can teach design in any language, it just works a bit differently. You can teach good design in python, though it's a lot harder than just teaching python. You can teach design in Java, at some point you'll realise that half the design patterns book is still relevant (the other half has been eaten by streams and lambdas). You can teach design in golang, the people who wrote it at google did think of this. Using a Lisp brackets-style language doesn't give you magical powers, and I doubt the full details of macros and whatever the racket equivalent of call/cc is are that accessible in a beginner course anyway. Even SICP has a JS edition these days. Personally I think "OOP light" is where it's at: interfaces instead of subclassing, methods that can be called on objects, encapsulation and modularity, and a package-private option so you can unit test stuff but indicate to users that this is not part of the API. Immutable objects and collections are good for many things and need to be taught, but sometimes there's good reasons just to make something with internal state and a fixed set of methods to modify it, so you can reason inductively about its invariants. You can get this out of many languages and teach it properly if you really know what you're doing. And you need actual programming projects, not just exams or "write a 20 line program" midterms. You don't need racket for this.
- enum 2y agoA discussion about this from faculty: https://bsky.app/profile/samth.bsky.social/post/3lf22654bks2c https://bsky.app/profile/samth.bsky.social/post/3lf22654bks2...
- GeoffKnauth 2y agoMy son went to Northeastern ('19) and now designs programming languages and can program skillfully in ANY language. I'm glad he went to Northeastern before this announced change. I feel my money spent at Northeastern was well worth it, not because it made him employable (it did), but because it gave him critical thinking and research skills. It would be sad if too many future Northeastern grads were limited to programming in Python or whatever the mainstream language of the decade is. "Batteries included" Python is great for the workforce but it may weaken basic development skills of undergrads. I'm glad I grew up in an era (1970-80s) when what mattered was sitting down with a manual or book and picking up a language in a weekend and, working with your friends, mastering it in a few weeks or months. A favorite memory that still astonishes me: in 1983 Andy Sudduth, one of my roommates and soon Olympic rowing medalist, built his own computer (a Heathkit), and with a paper due the next day, I offered to lend him my Kaypro-II so he could use WordStar. He said, "Thanks, but I'm going to put my own operating system on it [which he developed in his OS course], then I'm going to use my own full-screen editor I wrote, and then I'm going to write my paper using that editor." "You're going to do all that by tomorrow?", I asked. "Yes." And HE DID IT.
- ashton314 2y agoHey! Guessing by your handle, your son is Alex, yes? He's done some really cool work. I particularly love his paper "Type Systems as Macros" that he wrote with Stephen Chang and Ben Greenman (my advisor now). Super cool stuff.
- 11101010001100 2y agoThe best thing for a student is to abandon dogma. The easiest thing for a teacher is to embrace it.
- randcraw 2y agoIf this strategy infects CS degree curriculums widely, employers looking for more than mere coders will overlook CS majors and instead look to engineers, which is where most computing professionals came from academically before about 1980. Engineering continues to demand that students learn principles grounded in theory (calculus and statistics and discrete math), rigorous analysis (pattern recognition and learning), and system compositionality (design using reliable components as building blocks). CS curricula largely jettisoned this approach after higher-level languages like FORTRAN and C caught on, and has retained only vestiges of old-school mathematical rigor (basic inductive proofs and algorithmic analysis (albeit dumbed down to O(n) only). In the past 20 years, CS has even given up teaching software engineering (compositionality and reliablility) as a requisite skill area. That speaks volumes about the difference that already exists between CS and engineering. With the enormous growth in college-preparation for software careers in the past decade, it's little wonder that most students prefer a less rigorous, less formal curriculum, and that colleges will choose to meet demand where it lives. Thereafter, if employers want to hires grads with math or engineering skills, they will turn back to engineering as they did long ago. I expect programs in EE and Computer Engineering will adjust their curricula (or add minors) to fill the intellectual void that 'CS For Poets' will leave.
- naijaboiler 2y agoI find myself agreeing. As a person with an engineering background that's part of an ownership team, I often find myself longing for software developers with an engineering mindset i.e think of how the components will fit, without breaking user experience.
- Buntry 2y agoPyret, the pedagogical language for the next intro course seems like a massive improvement over Racket. I have faith in the PL team at Northeastern, especially BLerner to not skip problem-solving fundamentals in an introductory course. Having been a TA for Fundies I and seeing what these professors value, I feel confident it’s in capable hands and that it may ultimately be an improvement.