CPSC 311
Definition of Programming Languages
Winter Session 2012/2013 - Term 1
Course Information
(page revised December 4, 2012)
Instructor:
Kurt Eiselt
[email protected]
ICCS 233
Teaching Assistants:
Glenn Bevilacqua [email protected]
Evgeny Roubinchtein [email protected]
Ryan Ki Sing Chung [email protected]
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):
Kurt Eiselt
[email protected]
ICCS 233
Teaching Assistants:
Glenn Bevilacqua [email protected]
Evgeny Roubinchtein [email protected]
Ryan Ki Sing Chung [email protected]
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 |