COMP 80 - Programming Languages

Spring 2009
Tufts University Computer Science

 

Class information
 

Time: Tuesday, Thursday, 10:30pm - 11:45pm
Location: Halligan Hall 111a

Instructor: Sam Guyer
Office hours: Monday 11am - 12pm
Location: Halligan Hall 009 (extension)

   

TA: Mark Pellegrini (Mark.Pellegrini@tufts.edu)
Office hours: Tuesday 4:30pm - 5:30pm
Location: Halligan Hall 002A (extension)

Mailing list: https://www.eecs.tufts.edu/mailman/listinfo/comp80

Book: Programming Languages: Principles and Paradigmms
by Allen Tucker and Robert Noonan

Important dates
     

Feb 2, 2009 -- Assignment 1 due.

Feb 12, 2009 -- Assignment 2 due in class.

March 3, 2009 -- Assignment 3 due.

April 16, 2009 -- Assignment 4 due.

April 29, 2009 -- Assignment 5 due.

May 6, 2009 -- Final exam 3:30pm to 5:30pm

Resources
 

DrScheme -- an interactive environment for Scheme

XEmacs: Windows version of the popular text editor. Try running the Windows installer.

SML/NJ: Standard ML of New Jersey.

Note: to install SML/NJ, do the following:

1. Unzip the zip file in C:\Program Files\SMLNJ
2. Go to "My Computer" and choose "View System Information" from the "System Tasks" side bar.
3. Click on the "Advanced" tab.
4. Click the "Environment Variables" button at the bottom.
5. Click "New" and add an environment variable whose name is "SMLNJ_HOME" and whose value is "C:\Program Files\SMLNJ"
6. Double-click the "PATH" variable and add "C:\Program Files\SMLNJ\bin;" on to the front of the current value.

To run SML/NJ, start xemacs and type escape-x and "run-sml". It will ask you for the name of the sml command. Type "sml". When you're done, hit ctrl-d to exit.

A nice ML tutorial.

GNUProlog: a free Prolog compiler and interpreter environment. Choose one of the binary distributions under "Download" on the web-page. The simplest thing to do is use the win32 auto-install on your own Windows machine.

Lecture notes
 
  • Lecture 1: Introduction and overview
  • Lecture 2: Introduction to Scheme
  • Lecture 3: Scheme functions
  • Lecture 4: Higher-order functions; Introduction to syntax
  • Lecture 5: Programming language syntax (I)
  • Lecture 6: Programming language syntax (II)
  • Lecture 7: Names and bindings
  • Lecture 8: Scoping
  • Lecture 9: Types -- basic types
  • Lecture 10: Types -- composite types
  • Lecture 11: Introduction to ML
  • Lecture 12: Programming with types -- ML
  • Lecture 13: Type checking and type inference
  • Lecture 14: Data types, polymorphism -- Examples
  • Lecture 15: Types miscellaneous -- Examples
  • Lecture 16: Functions
  • Lecture 17: Evaluation strategies (parameter passing)
  • Lecture 18: Lambda calculus
  • Lecture 19: Imperative programming
  • Lecture 20: Introduction to operational semantics
  • Lecture 21: Control structures, operational semantics
  • Lecture 22: Operational semantics wrap-up, programming in-the-large
  • Lecture 23: Object-oriented programming
  • Lecture 24: Memory management, garbage collection, course wrap-up
  • Description
         

    An overview of language design and implementation, plus programming techniques for particular types of languages. Compilers and interpreters, binding, scope rules, formal semantic models, structure hiding, object-oriented programming, functional programming, and logical programming. Examples and problems from Pascal, Algol, C++, Java, Scheme, Lisp, Prolog, and others.

    Special thanks to William Cook, Norman Ramsey, and others for valuable teaching material