|
|
| 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.
|
|