4 ms·
I'm trying to get my faculty to switch to SICP as the intro to programming course, instead of a planned migration to Python (I'm at the EE department, which is
by Nimi 13y ago
I'm trying to get my faculty to switch to SICP as the intro to programming course, instead of a planned migration to Python (I'm at the EE department, which is completely separate from CS). Can anyone think of good arguments in favor, which may convince the professors?
So far, my main "ammunition" is Dijkstra's argument that "it provides an environment that discourages operational reasoning":
http://chrisdone.com/posts/dijkstra-haskell-java http://chrisdone.com/posts/dijkstra-haskell-java
- crashbangwallop 13y agoYou can try to contact the heads of the SOFT group at the Free University of Brussels, they might give you a heap of good arguments and or documents. Thanks to them (and some others), our university still uses SICP as the main course in the first year of the CS education. http://soft.vub.ac.be/ http://soft.vub.ac.be/
- Nimi 13y agoThanks for the suggestion. I'll see if I can gather a few supporters before I request their help.
- Myk267 13y agoYou might want to read this paper by Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi who provide interesting points about SICP as well as HTDP as an introductory course in programming: http://www.ccs.neu.edu/racket/pubs/jfp2004-fffk.pdf http://www.ccs.neu.edu/racket/pubs/jfp2004-fffk.pdf
- jgg 13y agoI don't know what's in the Python course, and they very well could be doing a decent job of teaching CS concepts. However, I'll assume it's a "here's how a for loop works"-type course. The ultimate utility is ignoring a specific language (Scheme really has nothing to do with the book, and SICP is not a Lisp book per se) and teaching students how to think about computing. It enables problem solving and understanding of the more abstract concepts involved with programming. Scheme just happens to work because there's nothing to the language and there are few boundaries, in terms of functionality. Honestly, your school can decide if they want to churn out Students Who Program in Python (tm) or students who are taught to teach themselves and can reason about programs on their own, and who feel comfortable understanding varied language concepts. There may be other approaches to accomplish that, but SICP does it well. It's really the only thing that distinguishes a computer science curriculum from a vocational degree, which is an idea that has fallen out of favor or even been lost in the rush to graduate more CS students and embrace "industry standards." Does your school want to educate students or simply teach them programming trivia and practicum that they can pick up on their own? It's an important distinction. Would you want a Linguistics degree that started off by teaching some travel phrases from a Spanish guide purchased at a gas station? Plus, given the depth of the book, the course could be scaled to a relative difficulty, which would probably be necessary. Recommended pre-reading could consist of the Schemer series (Little & Seasoned) with the expectation that the students might not make it all the way through them before the course starts. Perhaps you could persuade the faculty to offer a basic Python course and an "honors" CS course that used SICP, or have the SICP course after the Python one, since I think in practice having some basic programming experience is probably a good idea before diving into SICP. I went Googling for another perspective, and I found http://www.cs.berkeley.edu/~bh/sicp.html http://www.cs.berkeley.edu/~bh/sicp.html, which says a lot of the same things. People who are new to programming look at SICP and like to say something to the effect of, "Wow, it's a shitty old Lisp book from a bygone error. I actually want to accomplish something, so I'm going to read this O'Reilly Java book now, because I can actually get a job that way." (heavy condescension implied), but perhaps this is a case of the amateur not really knowing what's best for them. In the end, interested students can always pick up the book in their free time, and you will probably be fighting an uphill battle (at least if you're in the US). SparkNotes Version: SICP encourages a thought process. A traditional class encourages you to learn how to do X in language Y. It is possible to do the former without SICP, but SICP does it very well.
- Nimi 13y agoWow, the Brian Harvey essay you linked to is exactly what I was hoping to find. A down-to-earth explanation of the benefits, as opposed to Dijkstra's formalism and its potential to alienate non-programmers (in fairness, I only read the first half of it, getting late here). Thanks! Your explanation is of course along the same lines, and rings true, but I need a "source of authority" (if I can even get someone to listen). Sadly, pre-reading and "honors" are not options at my school, certainly not when a lowly TA pitches them. But this Harvey essay, this might actually work... :-)
- jgg 13y agoGood luck.
- chongli 13y agoSICP is okay for that but if you really want to discourage operational reasoning you should check out courses based on Haskell or ML. I hear the course Bob Harper co-designed is doing really well at CMU. http://www.cs.cmu.edu/~15150/ http://www.cs.cmu.edu/~15150/
- Nimi 13y agoThanks, would love to. But I don't have a fighting chance with that. Pushing SICP through would be an unbelievable feat.
- chongli 13y agoThat's a real shame. Bob Harper's philosophy is that the teaching of computer science is more important than the vagaries of one technology industry trend or another. I wish more schools agreed with him.
- Nimi 13y agoIn their defense, this is EE, not CS. The main thing that matters to them is to get the future engineers proficient in C. When I push for SICP, I claim it will achieve this better than the proposed alternatives, which are all-C and Python-then-C. Our CS department did use SICP for many years, including when I was a student. Unfortunately they just dumped it, I don't know why. The fact they dumped it makes life even more difficult for me with this...