CMSC 330, fall 2016

Organization of Programming Languages


Quick Reference

Software Installation

  • Download Ruby 2.2.2 for Windows (2.2.3 is not available yet) here. Directions for other systems here.
  • Download OCaml 4.02.x for Windows here. (This installer will also install Cygwin for you, to complete a Unix-style development environment.) Directions for other systems here.
  • Download SWI-prolog 7.2.3 for Windows and other platforms here. It is also available with standard package management tools (e.g., homebrew, ports for the Mac).

VirtualBox Linux VM

  • If you want to work in a virtual Linux environment on your Windows computer, you can use a virtual machine. First, you have to download VirtualBox from and install it. Then download the Linux VM image file, and open it with VirtualBox. This Linux image have Ruby, OCaml, Prolog, and emacs installed. You can install other tools if you want.
  • Linux VM Image (, 2.8GB) (Linux admin user name: cs, password: cmsc330!)


  • - The main Ruby website.
  • Quick Start (Ruby in 20 minutes)
  • Introduction to Ruby - A simple introduction to basic Ruby
  • PythonTutor for Ruby - An interactive, web-based visual debugger for Ruby programs
  • The Pragmatic Programmer's Guide - "The Pickaxe Book" is a more comprehensive overview of Ruby. It's an online version of the first edition of a printed Ruby book. The only thing to keep in mind is that it covers Ruby 1.6, while you can buy the newest printed version which covers the Ruby 1.9 and 2.0. We probably won't do anything for this course where the difference between versions. There's a lot of information here which you won't need- the most relevant sections are the first fourteen listed (the first up through "Basic Input and Output"), then "When Trouble Strkes", "Ruby and Its World", and "The Ruby Language" and "Classes and Objects". These last two are good summary references for the language.
  • Ruby Class Reference
  • Ruby documentation - A list from of Ruby reference manuals, online sources of Ruby information (some of the ones which will probably be more useful are mentioned specifically below), and Ruby articles. If you want to buy a printed book about Ruby several are listed.
  • Ruby User's Guide - An English translation of a book written by the designer of the language. More of a language reference than a tutorial.



Formal grammars and finite automata

Lambda calculus

Java Generics

Java Garbage Collection

Ruby On Rails

  • Rails is a full-stack framework for developing database-backed web applications according to the Model-View-Control pattern.
  • Instant Rails is a single package containing Ruby, Rails, Apache, and MySQL, all pre-configured and ready to run without installation. Currently for Windows only.


Other relevant texts

Previous required texts for CMSC 330 have chapters on relevant topics covered in this course. If the lecture notes are insufficient, look for these books. They should be available in the university library.

  • Concepts of Programming Languages (Seventh Edition) by R. Sebesta, Addison Wesley (2006) (ISBN 0-321-33025-0).
  • Programming Languages: Design and Implementation (Fourth Edition) by T. Pratt and M. Zelkowitz, Prentice Hall (2001) (ISBN 0-13-027678-2).
  • O'Reilly History of Programming Languages Poster