Live data from Hacker News

SICP in Clojure

sicpinclojure.com

51–60 of 62 posts

Re: SICP in Clojure

#51
post #21

Earlier quoted context omitted.

Scheme and/or Common LISP seem to be the common recommendation to embark on SICP journey, just for reference.

Look at Racket (was Dr Scheme) and use the dialect R5RS http://stackoverflow.com/questions/939582/which-language-in-...

Use the SICP package for Racket, when you get to the chapters with non-standard functions. For example the chapter on streams and the one about the picture language.

http://planet.racket-lang.org/package-source/neil/sicp.plt/1...

Re: SICP in Clojure

#52
post #41

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/pos…

I 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, 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.

Re: SICP in Clojure

#53
post #41

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/pos…

SICP 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/

Re: SICP in Clojure

#54
post #47
post #44

Earlier quoted context omitted.

You just assume that it was much better then anything else and people where to stupid and the marketing of the others to good and thats why CL and Scheme see no industry adoption. This might be true and it might not be true but its sure arrogance to pretend to know that it is true. Your(and other Lispers) arrogance might be a big reason why Scheme and CL never got adopted.

It is pure ignorance on your side to say Scheme or CL never got adopted.

After the AI Winter they where of course still both used, but its absolutly clear that they did not have the addoption other languages had.

At no point was it among the couple of most common used languages at least in the last 30 years. Look at jobs, popularity or any ranking for as we long as we have data.

Re: SICP in Clojure

#55
post #54
post #47

Earlier quoted context omitted.

It is pure ignorance on your side to say Scheme or CL never got adopted.

After the AI Winter they where of course still both used, but its absolutly clear that they did not have the addoption other languages had. At no point was it among the couple of most common used languages at least in the last 30 years. Look at jobs, popularity or any ranking for as we long as we have data.

There is an opinion that AI Winter was caused by dramatic spending cuts, which quickly results in "brain power shortage", and has nothing to do with The Common Lisp, which is considered as [modest] success.)

Re: SICP in Clojure

#56
post #54
post #47

Earlier quoted context omitted.

It is pure ignorance on your side to say Scheme or CL never got adopted.

After the AI Winter they where of course still both used, but its absolutly clear that they did not have the addoption other languages had. At no point was it among the couple of most common used languages at least in the last 30 years. Look at jobs, popularity or any ranking for as we long as we have data.

That sounds different like 'no adoption'. Based on that I would say Clojure has very little adoption. Probably there are a few hundred people using Clojure - not more. The latest State of Clojure survey had just 1000 people taking part. Half of those say they use Clojure at work - where work can be anything from academic to industry.

Clojure has to show a few websites, very few applications and a bunch of hobby projects.

Given that Clojure is at a different point in the hype cycle than Scheme or CL, it does not look like mass scale adoption rivalling Python, Ruby, C++, Objective C or Java is coming soon...

In this light there is absolutely no reason to make snide remarks about CL or Scheme 'industry' adoption, where for example Google uses CL, Sony uses Scheme for game programming, where companies use Siscog's scheduling applications, PTC sells CAD systems, Amdocs uses Allegro Cl in Telco applications, various spae and earth telescopes use a CL-based scheduling engine, various companies use ACL2, NASA has a theorem prover in Lisp, ...

If these apps were written in Clojure we would see large amounts of blog posts, ...

Re: SICP in Clojure

#57
post #53
post #41

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/pos…

SICP 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/

Thanks, would love to. But I don't have a fighting chance with that. Pushing SICP through would be an unbelievable feat.

Re: SICP in Clojure

#58
post #41

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/pos…

You 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/

Thanks for the suggestion. I'll see if I can gather a few supporters before I request their help.

Re: SICP in Clojure

#59
post #52
post #41

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/pos…

I 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…

Wow, 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... :-)

Re: SICP in Clojure

#60
post #57
post #53

Earlier quoted context omitted.

SICP 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/

Thanks, would love to. But I don't have a fighting chance with that. Pushing SICP through would be an unbelievable feat.

That'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.
Post reply on HN