CIS 554 Resources
Spring 2010, David Matuszek

Textbook

Seven Languages in Seven Weeks

Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages
by Bruce A. Tate

The paper book will not be available until September 15, but you can get it now as an e-book at http://pragprog.com/titles/btlang/seven-languages-in-seven-weeks. The e-book alone is $22 and the e-book + paper book is $43.75.

You can supplement the book with readings and tutorials from the web. A number of these are listed below, generally with the most important ones first.

General

A Brief, Incomplete, and Mostly Wrong History of Programming Languages
http://james-iry.blogspot.com/2009/05/brief-incomplete-and-mostly-wrong.html
How Not to Write FORTRAN in Any Language
(In author's view, "writing Fortran" = "writing bad programs")
http://queue.acm.org/detail.cfm?id=1039535
Revenge of the Nerds
(How languages are becoming more Lisp-like)
http://www.paulgraham.com/icad.html
The Theory and Practice of Concurrency (600 pages)
http://www.google.com/url?sa=t&source=web&ct=res&cd=1&ved=0CBYQFjAA&url=http%3A%2F%2Fwww.comlab.ox.ac.uk%2Fbill.roscoe%2Fpublications%2F68b.pdf&ei=fM7uS77XDIT78Ab6x9D9Cg&usg=AFQjCNEIgpQyEtBndLXhQMp-J102CatdqQ&sig2=qGULMDlXJPp8aKAEBj8nZw (PDF)
Java, Don't Make Long Term Plans
http://blog.borud.no/2010/10/java-dont-make-long-term-plans.html

Io

Io download
http://github.com/stevedekorte/io/zipball/master
Io Programming Guide
http://www.iolanguage.com/scm/io/docs/IoGuide.html
Io Reference
http://www.iolanguage.com/scm/io/docs/reference/index.html
Io -- The Unofficial Website
http://iolanguage.org/documentation

Prolog

SWI-Prolog 5.10.1 download
http://www.swi-prolog.org/download/stable
Adventure in Prolog
http://www.amzi.com/AdventureInProlog/advfrtop.htm
SWI-Prolog 5.10 Reference Manual (PDF)
http://www.swi-prolog.org/download/stable/doc/SWI-Prolog-5.10.1.pdf

Erlang

Erlang download
http://www.erlang.org/download.html
Getting Started with Erlang User's Guide
http://www.erlang.org/documentation/doc-5.8.1/doc/getting_started/users_guide.html
Erlang Reference Manual
http://www.erlang.org/doc/reference_manual/users_guide.html
Erlang OTP Reference Index (where to find what functions are available)
http://www.erlang.org/doc/man/
A Concise Guide to Erlang (by Dr. Dave)
../ConciseGuides/concise-erlang.html
Installing Erlang on Mac OS X
http://sacharya.com/erlang-on-mac-osx/
Erlang Documentation
http://www3.erlang.org/documentation/doc-5.7.5/doc/
Learn You Some Erlang for Great Good
http://learnyousomeerlang.com/
Tutorial: Learning Erlang – just the basic basics -- Giant Flying Saucer
http://giantflyingsaucer.com/blog/?p=251
Erlang for C, C++ and Java Programmers
http://tamale.net/erlang/tutorial.shtml
Concurrent Programming in ERLANG
http://ftp.sunet.se/pub/lang/erlang/download/erlang-book-part1.pdf
Getting Started with Erlang
http://www3.erlang.org/documentation/doc-5.7.2/doc/getting_started/part_frame.html (v. 5.7.2)
Erlang Style Concurrency
http://www.defmacro.org/ramblings/concurrency.html
Erlang Community Site
http://trapexit.org/
CACM article on Erlang
http://cacm.acm.org/magazines/2010/9/98014-erlang/fulltext

Clojure

Clojure download
http://clojure.org/downloads
Getting started
http://clojure.org/getting_started
Casting SPELs in Lisp (Clojure version)
http://www.lisperati.com/clojure-spels/casting.html
Quick Ref for Clojure Core
http://clojuredocs.org/quickref/Clojure%20Core
"Official" Clojure Cheat Sheet
http://clojure.org/cheatsheet (also available as PDF)
Other cheat sheets
http://devcheatsheet.com/tag/clojure/
Clojure - Functional Programming for the JVM
http://java.ociweb.com/mark/clojure/article.html
 
The Eternal Flame (Julie Ecklar)
Music at http://www.youtube.com/watch?v=5-OjTPj7K54
Lyrics at http://www.songworm.com/lyrics/songworm-parody/EternalFlame.html
The Nature of Lisp
http://www.defmacro.org/ramblings/lisp.html
Revenge of the Nerds
http://www.paulgraham.com/icad.html
Clojure: Functional Programming
http://clojure.org/functional_programming

Haskell

Download and install Haskell (GHC)
http://hackage.haskell.org/platform/
Download and install Haskell (HUGS)
http://cvs.haskell.org/Hugs/pages/downloading.htm
Learn you a Haskell for Great Good
http://learnyouahaskell.com/
Introduction to Haskell (HUGS)
http://www.iceteks.com/articles.php/haskell
Yet Another Haskell Tutorial (HUGS)
http://alturl.com/g54hi

Scala

Trait Suite
(A good starting point for reading about scalatest)
http://www.scalatest.org/scaladoc/doc-1.0/org/scalatest/Suite.html
Trait ShouldMatchers (the really cool stuff)
http://www.scalatest.org/scaladoc/doc-1.0/org/scalatest/matchers/ShouldMatchers.html