
Stanford "Programming Languages" course readings - helwr
http://www.stanford.edu/class/cs242/readings/
======
koenigdavidmj
A lot more diverse than that at my university. The professors basically had a
four by four grid: strongly typed and object oriented (Java, covered in the
introductory programming classes), strongly typed and functional (Standard ML
or Haskell, depending on what quarter you sit the class), weakly typed and
functional (Scheme), and weakly typed yet object oriented (Ruby).

Once recursion was sufficiently beaten into you, it was not particularly new
material. The Stanford curriculum here seems a bit better designed: most
people will not implement a language of their own or use more than one or two
languages to any great extent (and a fairly small percentage will actually
touch Standard ML or Scheme), and this class is better targeted to those two:
it lets them see what the ideas were behind the language and how they can
choose the right tool for a lot more jobs.

In other words, the Stanford course is a bit better at showing the range of
ideas and higher level languages to people who were up to that point Blub
programmers (see <http://www.paulgraham.com/avg.html> , of course).

------
johnswamps
FWIW this is actually the old course website, the new one is
<https://courseware.stanford.edu/pg/courses/3524>, though I'm not sure if you
can see it without being logged in and being off-campus. When I took the
course last fall we didn't have any of these readings, we just used the
professor's textbook (with the exception of 2 of the haskell readings)

~~~
gtani
<http://www2.research.att.com/~kfisher/teaching.html>

<http://www.stanford.edu/class/cs242/readings/index.html>

------
bigmac
Pleased to see the classic "Smashing the stack for fun and profit." Absolutely
essential for anyone in the security industry.

Looks like the link is dead; here is a mirror:
[http://www.phrack.com/issues.html?issue=49&id=14#article](http://www.phrack.com/issues.html?issue=49&id=14#article)

~~~
Confusion
Came here to say the same. Some other links also require an ACM account, but
can be found elsewhere:

Dijkstra on Goto:
[http://www.ecn.purdue.edu/ParaMount/papers/dijkstra68goto.pd...](http://www.ecn.purdue.edu/ParaMount/papers/dijkstra68goto.pdf)

Wirth on stepwise refinement:
[http://www.cs.inf.ethz.ch/~wirth/Articles/StepwiseRefinement...](http://www.cs.inf.ethz.ch/~wirth/Articles/StepwiseRefinement.pdf)

Parnas on decomposition into modules:
[http://www.cs.umd.edu/class/spring2003/cmsc838p/Design/crite...](http://www.cs.umd.edu/class/spring2003/cmsc838p/Design/criteria.pdf)

Ingalls on design principles behind Smalltalk:
<http://carlstrom.com/stanford/cs242/readings/10.pdf>

Cook on Smalltalk collection classes:
[http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.24....](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.24.7900&rep=rep1&type=pdf)

~~~
khandelwal
Here is the scan of the original typewritten EWD:
<http://userweb.cs.utexas.edu/users/EWD/ewd02xx/EWD215.PDF>

The entire EWD archive can be read here:
<http://userweb.cs.utexas.edu/users/EWD/>

------
wheaties
Fairly surprised to see an STM article linked. I wonder how soon the days will
be where people learn STM and Actors in their concurrency classes first and
these become the norm in the real world. You know, sort of like a parallel to
how many people don't understand pointers or manual memory handling in C.

------
kingkilr
Way more comprehensive than my university's (I'm taking the course now) :/

Edit: For values of now that mean: this coming semester. This is unfortunate
because I'm a massive programming language nerd (designing/implementing a
language, plus contributing to VM implementations == fun).

~~~
mahmud
If you think that reading list is comprehensive, wait til you see what the
autodidact layman has to read ;-) Don't let your curiousity and learning
potential be bounded by a formal curriculum.

PLs are immensely interesting and rewarding. Have fun!

