This site collects resources for use in CSC 424. For information specific to a particular semester, consult the associated Moodle page:
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 | – | – |
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.
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.