|
|
Subscribe / Log in / New account

Scheme

Scheme

Posted May 8, 2023 19:06 UTC (Mon) by NYKevin (subscriber, #129325)
In reply to: Scheme by tialaramex
Parent article: The end of the accounting search

Since we're apparently posting "here's what my college does," well, here's what I experienced several years ago:

* CS 1 (the introductory course for freshmen) uses Python. I have no experience with this as I placed out of it. I think it previously used C++ at some point?
* Data Structures (effectively CS 2) uses C++. The class structure consists of two lectures introducing a new data structure that you have probably never seen before (I specifically remember "leftist heaps," which are just extremely unbalanced heaps that you can merge quickly), an assignment where you're supposed to implement that data structure (as in, you submit code, they compile it, and it has to produce exact byte-for-byte correct output over a range of test inputs), and a lab (where you do a more basic version of the assignment and can ask TAs for help). Every week. For the entire semester. As you might imagine, this is where a lot of students drop out. OTOH, this was probably the most useful course of my entire four years at that place, because it taught me how to Actually Get Shit Done, which is a rather important skill in this business.
* "Computer Organization" (basically, low level stuff for people not on the hardware track) uses x86 assembly, by way of DEBUG.EXE on 16-bit DOS on 32-bit Windows on 64-bit Windows. No, I don't know why they did that either.
* Programming Languages had a mandate to teach us logic programming (SWI Prolog), functional programming (Oz, but only the functional parts) and the Actor model (a weird Java dialect which the professor invented himself). I'm told that the other prof. used more sane languages in their iteration of the course (though at least Prolog makes some sense). For the Prolog part, I distinctly remember an exam where we were asked to implement a linked list in Prolog, and I had no idea what I was doing and just wrote out the list invariants as logical formulae... and was very surprised to later get full points for that answer.


to post comments

Scheme

Posted May 9, 2023 11:37 UTC (Tue) by mathstuf (subscriber, #69389) [Link]

Oz and the Java-like (Salsa?) are pretty specific. As is the CompOrg name (though DOS wasn't used then; we had "Dave's bombs" instead to debug). If you went to RPI, this sounds almost exactly what it was like in the late 00's as well. The Oz-and-Salsa-loving professor was on sabbatical when I took it, so we got Prolog, Java, Scheme, and (I think) Python in the ProgLang course instead. Friends who took it when he returned kept finding Salsa compiler bugs…

Scheme

Posted May 12, 2023 1:39 UTC (Fri) by jschrod (subscriber, #1646) [Link]

Ah, story telling time, I'll take it up -- from the other side of the teaching fence.

I'm from Germany and had the opportunity to get a full-paid position in my university for my PhD time. In US terms, this position is a mixture of teaching and research assistant position, available for those with a Master degree and working towards a PhD. (This was in 1990, btw.)

My professor (PhD advisor) had an annual lecture called "principles of programming languages". I was supposed to develop and supervise the practical exercises accompanying that lecture. Well, the main point the lecture wanted to drive home: Specific programming languages are irrelevant. If you, as a CS master student, have learned to program any imperative, functional, object-oriented, or logical language (like Prolog), then you should be able to learn a new language of the same paradigm quickly, if you understood the principles behind it.

So, when I started to design the practical exercises for this lecture, I decided that my students would have to learn a new programming language every 2 weeks as far as to produce a program for a sensible requirement. The learning exercise was: It doesn't matter if you indent your program structure (Python) or if you have lots of parenthesis (the Lisp family) -- what matters are, what data and control structures are available to you in your program design.

Anectodical note: Don't do this after a thorough analysis of the technical means you have to provide to the students. I remember especially two issues:

1) Exceptions, which were not well supported in many languages in 1991. So I had to make available a CLU compiler for the exercises, within 2 weeks, since this was -- at this time -- the best practical example what it means to have exceptions as a fully-fledged 1st-order part of the language. (Still, I think that Liskov is way underrated for her contributions to the development of programming languages. Besides her work on exceptions, her SIGPLAN paper "Programming with Abstract Data Types" in 1974 actually coined the term `abstract data types'!)

2) My professor insisted to cover class-instance vs. prototype-instance models in the part of the OO language introduction. So I had to devise an excercise for a problem that's suitable to prototype-instance concepts. Nowadays, we could just use Javascript -- but this was 1991. The work to set up a working Self system for my students (for a 2 weeks assignment!!) was outrageous. But I have bought into it, and I got through it.

The interesting part of this story is: There were quite some students who shied away from the demands of the lecture and (mandatory) practical excercises. But for those, who did it together with us, it was a great experience. Many of my master students that supported my PhD came off from that course. In fact, some of them were helping me to set up the excercise environments during the course, while actually taking the course -- and those were the ones who later took off and have now excellent positions, both in companies and universities.

I'm still proud to have been a part of their journey towards the understanding that expression doesn't matter prinicipally. (We can discuss, where it matters.) Models and understanding the principles are the gains you get from a thorough university education. There is a "everything changes so fast" attitude I'm experiencing today from others in my field (mainly software and business process architect, with a lasting footage in the open-source development community in my spare time). Well, from a CS point of view, no. The principles remain the same.


Copyright © 2025, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds