P.L. Guy

CSC 424: Programming Languages

This site collects resources for use in CSC 424. For information specific to a particular semester, consult the associated Moodle page:

Schedule

Week Topics Readings Assignments
1 Intro Scott: Ch. 1 Lab One: Scala Overview
2 Syntax Scott: Ch. 2, only Sect. 1 Lab Two: Parsing
3 Names and Bindings Scott: Ch. 3, except Sect. 4 Lab Three: Expression Language
4 Control Flow Scott: Ch. 6, Sects. 1-6 Lab Four: Defining Control Structures
5 Data Types Scott: Ch. 7 Lab Five: Type Checking
6 Control Abstraction Scott: Ch. 8 Lab Six: Function Language
7 Midterm Exam
8 Data Abstraction and OOP Scott: Ch. 9 Lab Seven: Design Patterns
9 Functional Programming Scott: Ch. 10 Lab Eight: Higher-Order Control Structures
10 Logic Programming Scott: Ch. 11 Lab Nine: Prolog
11 Concurrency Scott: Ch. 6, Sect. 7; Ch. 12 Lab Ten: Approaches to Concurrency
12 Scripting Languages Scott: Ch. 13 Lab Eleven: JavaScript
13 Domain-Specific Languages Lab Twelve: Internal and External DSLs
14 Wrap-up and Presentations

Readings

Textbooks

There are many textbooks covering the area of programming languages in general (to say nothing of the books that focus on specific languages); here are links to a few of the better ones (several of which are available online):

One of the common features of all of these texts is that they focus on the concepts behind various languages and paradigms, rather than simply presenting a catalog of different language features.

Articles

Part of this list comes from a 2009 blog post by Michael Feathers, 10 Papers Every Programmer Should Read (At Least Twice). The comments on that post suggest many additional worthwhile papers.