CPSC 311, Definition of Programming Languages
Lambda Bound University of British Columbia, Department of Computer Science
CPSC 311 Definition of Programming Languages
Winter 2015 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 2015/09/14 22:00 (10pm) on 2015/09/24
Fun++ interpreter 2015/09/28 22:00 (10pm) on 2015/10/08
Typed Fun++ type checker 2015/10/15 22:30 (10:30pm) on 2015/10/23
End-of-Term Project (posted so you can start thinking about it!) 2015/10/21 2015/11/02: project-commit
2015/11/07: project-proposal
2015/11/16: project-background
2015/11/27: project-plan-proof
2015/12/04 (in class): Poster Session!
2015/12/07: project-final
Subtyping / small-step 2015/11/20 22:30 (10:30pm) on 2015/12/01

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, and our own textbook Programming Languages: Application and Interpretation (first edition), previous offerings of CPSC 311, and Brown's CS173 course 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.