Kurt Eiselt
  • Home
  • CV
  • WCCCE2015
  • FIE2018

CPSC 311
Definition of Programming Languages
Winter Session 2012/2013 - Term 1
Course Information
(page revised December 4, 2012)

Instructor:
     Kurt Eiselt
     eiselt@cs.ubc.ca
     ICCS 233

Teaching Assistants:
     Glenn Bevilacqua               lennson@cs.ubc.ca
     Evgeny Roubinchtein          evgenyr@cs.ubc.ca
     Ryan Ki Sing Chung           rkschung@cs.ubc.ca

Office Hours:
     Kurt             Monday        1:30 to 3:30      ICCS 233
     Glenn           Thursday      3:00 to 4:00      DLC
                        Friday           3:00 to 4:00      DLC 
     Evgeny        Wednesday  11:15 to 11:45   DLC
                        Wednesday   2:30 to 4:00      DLC
     Ryan           Thursday       4:00 to 5:00      DLC
                        Friday           4:00 to 5:00      DLC

Official Calendar Description:
     Comparative study of advanced programming language features.  Statement types, data types, variable binding, parameter passing mechanisms.  Methods for
     syntactic and semantic description of programming languages.

Unofficial Instructor Description:
     We'll learn about how programming languages work, how they let us express what we want them to do, what different design features languages can have,
     and how those features fit together to make a programming language.  (This description is borrowed from Steve Wolfman's version of CPSC 311, as is a
     great deal of other stuff you'll see in this course.  Steve, in turn, has borrowed from the professors who taught the course before he did.  And so on and so on.)

Textbooks:
     Programming Languages:  Application and Interpretation, Shriram Krishnamurthi, self published.
     A digital download of this book is available without cost at http://www.cs.brown.edu/~sk/Publications/Books/ProgLangs/2007-04-26/
     If you're old school like your instructor and you must have a printed copy, you can order one at http://www.lulu.com but you have to pay for it.

Programming Language:
     Racket is a variant of Scheme.  If you took CPSC 110, you know all about it.  You can download the latest version at http://www.racket-lang.org

Tentative Grading Scheme:
     Assignments (several)          20%
     Midterm exams (2)               40%
     Final exam*                         40% 

     * You must earn at least 50% of the possible marks on the final examination in order to pass the course, regardless of the marks you have received
     for other evaluated components.

Very Tentative Schedule (this schedule could change significantly): 
                       


Week 1


Week 2


Week 3


Week 4


Week 5






Week 6

Week 7


Week 8



Week 9


Week 10






Week 11

Week 12


Week 13
Dates

Sept. 5, 7


Sept. 10, 12, 14


Sept. 17, 19, 21


Sept. 24, 26, 28


Oct. 1, 3, 5






Oct. 10, 12

Oct. 15, 17, 19


Oct. 22, 24, 26



Oct. 29, 31, Nov. 2


Nov. 5, 7, 9






Nov. 14, 16

Nov. 19, 21, 23


Nov. 26, 28, 30





Readings for the week

Scheme


Ch. 1:     Modeling Languages
Ch. 2:     Interpreting Arithmetic

Ch. 3:     Substitution
Ch. 4:     An Introduction to Functions

Ch. 5:     Deferring Substitution
Ch. 6:     First-Class Functions

Ch. 7:     Programming with Laziness
Ch. 8:     Implementing Laziness

You should review Chapters 1 through 6

Midterm exam 1 is on October 5

Instructor has medical meltdown

Ch. 9:    Understanding Recursion
Ch. 10:   Implementing Recursion

Ch. 11:   Representation Choices
Ch. 12:   Church and State
Ch. 13:   Mutable Data Structures

Ch. 14:   Variables
Ch. 21:   Automatic Memory Management

Ch. 22:   Shrinking the Language
Ch. 23:   Semantics

You should review Chapters 1 through 14

Midterm exam 2 is on November 9

Ch. 24:   Introduction (to Types)

Ch. 25:   Type Judgments
Ch. 26:   Typing Control

Ch. 27:   Typing Data
Ch. 28:   Type Soundness

Final exam is on December 6 at 3:30pm


Powered by Create your own unique website with customizable templates.