CSci 658: Software Language Engineering
Fall 2013
Lecture Notes


Free Programming Language Textbooks and Tutorials

  1. GitHub Free Programming Books list
  2. BETA--a pure object-oriented language from the "Scandinavian School" of object-oriented languages. This School originated with Simula, the first object-oriented language.
    1. Ole Lehrmann Madsen, Birger Moller-Pedersen, and Kristen Nygaard. Object-Oriented Programming in the Beta Programming Language, ACM, 1993: [PDF book]
  3. Erlang--a concurrency-oriented functional programming language developed in the 1980s at the Ericsson Computer Science Laboratory but which is now available in an open-source implementation.
    1. Joe Armstrong, Robert Virding, Claes Wikstrom, and Mike Williams. Concurrent Programming in ERLANG, Second Edition, Prentice-Hall, 1996: [Section 1 PDF]
    2. Fred Hebert. Learn You Some Erlang for Great Good, No Starch Press, 2011: [HTML book]
  4. Forth
    1. Leo Brodie, Thinking Forth, ANS Forth Edition, 2004: [PDF book page]
  5. Haskell
    1. William R. Cook. Anatomy of Programming Lanuages (new textbook on programming language theory under development): [HTML book]
    2. H. Conrad Cunningham. Notes on Functional Programming with Haskell (notes for the CSci 555 course on Functional Programming): [PDF notes]
    3. Kees Doets and Jan van Eijck. The Haskell Road to Logic, Math and Programming, March 2004: [PDF book]
    4. Paul Hudak. The Haskell School of Music: From Signals to Symphonies, Version 2.5, January 2013: [PDF draft book]
      Source code from Paul Hudak's The Haskell School of Expression: Learning Functional Programming through Multimedia, Cambridge University Press, 2000: [local files]
    5. Miran Lipovaca. Learn You a Haskell for Great Good: [HTML book]
    6. Simon Marlow. Parallel and Concurrent Programming in Haskell: [HTML book]
    7. Bryan O'Sullivan, Don Stewart, and John Goerzen. Real World Haskell: [HTML book]
    8. Jonathan Tang. "Write Yourself a Scheme in 48 Hours: A Haskell Tutorial" (writing a Scheme interpreter in Haskell): [HTML book]
    9. Source code from Simon Thompson's Haskell: The Craft of Functional Programming, Third Edition, Addison Wesley, 2011: [local files]
  6. Icon and Unicon
    1. Ralph E. Griswold and Madge T. Griswold. The Icon Programming Language Third Edition, Peer-to-Peer Communications, 1996, and other Icon books at Arizona: [book links]
    2. Clinton Jeffery, Shamim Mohamed, Jafar Al Gharaibeh, Ray Pareda, and Robert Parlett. Programming with Unicon, Second Edition, 2013: [PDF book]
  7. Javascript
    1. Marijn Haverbeke. Eloquent JavaScript: A Modern Introduction to Programming, First Edition, No Starch Press, February 2011: [HTML book] [2nd ed preview]
    2. Addy Osmani. Learning JavaScript Design Patterns, O'Reilly Media, Inc., 2014: [HTML]
    3. Axel Rauschmayer. Speaking JavaScript, O'Reilly Media, Inc., 2014: [HTML]
  8. Linda
    1. Nicholas Carriero and David Gelernter. How to Write Parallel Programs: A First Course, 1992: [HTML/PDF book]
  9. Lisp (Common Lisp)
    1. Doug Hoyle. Let Over Lambda--50 Years of Lisp, Second Edition, 2013: [HTML book]
  10. Lua
    1. Fabio Mascarenhas. Programming in Lua Lecture Notes, for a course based on Roberto Ierusalimschy's (PiL) Programming in Lua, Third Edition, 2013.
    2. Lua Tutorial
  11. ML
    1. Robert Harper. Programming in Standard ML, Carnegie Mellon University, 2011: [PDF draft]
    2. John Harrison. Introduction to Functional Programming, 1996: [PS book/slides]
  12. OCaml
    1. Yaron Minsky, Anil Madhavapeddy, and Jason Hickey. Real World OCaml, O'Reilly Media, 2013: [PDF book]
  13. Prolog
    1. Patrick Blackburn, Johan Bos, and Kristina Striefnitz. Learn Prolog Now, 2006-12: [book site]
  14. Python
    1. Allen B. Downey. Think Python: How to Think Like a Computer Scientist, Green Tea Press, 2013:
      [PDF/HTML book page]
  15. Ruby
    1. Chris Pine. Learn to Program, 2009: [HTML book]
    2. why the lucky stiff (Jonathan Gillette). why's (poignant) guide to Ruby: [Tutorial]
  16. Scala
    1. Michel Schniz and Philipp Haller. A Scala Tutorial for Java Programmers: [PDF notes]
      Original from http://www.scala-lang.org (Documentation, Manuals, A Brief Scala Tutorial).
    2. Martin Odersky. Scala by Example: [PDF notes]
      Original at http://www.scala-lang.org (Documentation, Manuals, Scala By Example).
    3. Martin Odersky, Lex Spoon, and Bill Venners. Programming in Scala, First Edition, Artima, 2008: [HTML book]
    4. Dean Wampler and Alex Payne. Programming Scala, O'Reilly, 2008: [HTML book]
  17. Scheme
    1. (SICP) Harold Abelson and Gerald J. Sussman with Julie Sussman. Structure and Interpretation of Computer Programs, Second Edition, MIT Press, 1996: [book site at MIT Press] [HTML book] [SICP ebook site] [local source code]
    2. Stephen Bloch. Picturing Programs: An Introduction to Computer Programming (uses the Racket dialect of Scheme): [HTML/PDF book]
    3. Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, and Shriram Krishnamurthi. How to Design Programs, Second Edition (uses the Racket dialect of Scheme): [HTML book]
    4. Brian Harvey and Mathew Wright. Simply Scheme: Introducing Computer Science, Second Edition, MIT Press, 1999: [book site]
    5. Kurt Normark. Functional Programming in Scheme With Web Programming Examples, Department of Computer Science, Aalborg University, Denmark
  18. Simula--the first object-oriented programming language. It is a "Scandinavian School" object-oriented language designed for simulation programming.
    1. Rob Pooley. An Introduction to Programming in Simula, Oxford Blackwell Scientific Publications, 1987: [HTML book]
  19. Smalltalk--a dynamically typed, reflective, object-oriented programming language originally designed at Xerox PARC in the 1970s.
    1. Andrew P. Black, Stephane Ducasse, Oscar Nierstrasz, Damien Pollet, Damien Cassou, and Marcus Denker. Squeak by Example: [PDF book]
    2. Andrew P. Black, Stephane Ducasse, Oscar Nierstrasz, and Damien Pollet, Damien Cassou, and Marcus Denker. Pharo by Example: [PDF book]
    3. Alexandre Bergel, Damien Cassou, Stephane Ducasse, and Jannik Laval. Deep into Pharo, 2013: [PDF draft]
  20. Snobol4--the classic string-processing language and precursor to Icon
    1. R. E. Griswold, J. F. Poage, and I. P. Polonsky. The Snobol4 Programming Language, Second Edition, Prentice-Hall, 1971: [PDF book]
  21. Programming language design
    1. Source code for interpreters in the the textbook: Samuel N. Kamin. Programming Languages: An Interpreter-Based Approach, Addison Wesley, 1990.
    2. Shiram Krishnamurthi. Programming Languages: Application and Interpretation, Second Edition,
      [HTML] [PDF] [Fall 2012 course] [Fall 2013 course]
    3. Simon Thompson. Type Theory and Functional Programming, Addison-Wesley, 1991: [book site]

UP to CSci 658 lecture notes document?


Copyright © 2013, H. Conrad Cunningham
Last modified: Fri Jul 4 14:42:42 CDT 2014