CPSC 311, Definition of Programming Languages
Lambda Bound University of British Columbia, Department of Computer Science
CPSC 311 Definition of Programming Languages
Winter 2016 Term 1

Course Goals     Syllabus     Notes     Assignments         Piazza    
CPSC 311, Definition of Programming Languages

Assignments

Read the assignments section of the syllabus. Follow the collaboration policy. Feel free to work in ICCS X251 or X350 when they're not in use (see the ICCS X251 schedule or ICCS X350 schedule).

Don't submit late.

Assignment Out Due
Racket/PLAI practice 2016/09/11 22:00 (10pm) on 2016/09/19
Evaluation semantics + interpreter 2016/09/27 22:00 (10pm) on 2016/10/0607
Fun type checker 2016/10/14 22:00 (10pm) on 2016/10/21
Small-step semantics 2016/11/01 22:00 (10pm) on 2016/11/12
Subtyping and environments 2016/11/15 01:00* (1am) on 2016/11/25
Bidirectional typing 2016/11/26 22:00 (10pm) on 2016/12/06
* The deadline for turning in the written part of a5 is 8:45 a.m. on Friday, November 25.

Handback

There are two different ways to see your marks: If the Web interface doesn't work, please try the "handin handback". If neither method works, contact us.

Remembering CPSC 110

CPSC 311 relies on familiarity with the HtDP design method, Racket language, and DrRacket IDE. Fortunately, Racket, DrRacket, the HtDP textbook from CPSC 110, CPSC 110 itself, the first edition of the textbook Programming Languages: Application and Interpretation (used previously in 311), and previous offerings of CPSC 311 are all freely available online! Find them with your favorite search engine.

Learning Racket

First, install the latest DrRacket. The plai language we use comes pre-installed with the latest releases; just begin your file with the line:
#lang plai
The documentation for the plai module is in the help desk (search for "plai").

For a thorough introduction to Racket and HtDP in general, read the prologue, part 1, and part 2 of the second edition of How to Design Programs. Also Part IV, Part VI, Part VII, and Part VIII of the first edition.

For something quicker, go to the Quick guide to Racket and the guides on Web programming and systems programming.

The following exercises from Brown's CS173 course will help you learn Racket:

Basic Racket
exercises | solutions
Lists and Trees
exercises | solutions
Higher-order Functions
exercises | solutions

What next? Try to use it to write some small data manipulation program you need or just want to build.