Readings

Week Date Assigned Reading Short Response Prompts
1 Thursday, 9/6 Aesthetics and Programming. Proceedings of the CHI'83 Conference on Human Factors in Computing Systems. Reading 1
1 Thursday, 9/6 A Brief Introduction to C
2 Thursday, 9/13 How to Fix a Motorcycle Reading 2
2 Thursday, 9/13 Github Tutorial (Optional)
2 Thursday, 9/13 Memory Management in C
3 Tuesday, 9/18 Passing pointers by value (Read if you found the add example from class to be confusing)
3 Thursday, 9/20 LaTeX Tutorial (Optional)
3 Thursday, 9/20 Introduction to the Lambda Calculus, Part 1 Reading 3
4 Wednesday, 9/26 What is a linked list? (Optional)
4 Thursday, 9/27 Grammars and Parse Trees (excerpt from 'Concepts in Programming Languages')
4 Thursday, 9/27 Introduction to the Lambda Calculus, Part 2 Reading 4
5 Thursday, 10/11 Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I
A Brief Introduction to F#
Reading 5
6 Thursday, 10/18 A Slightly Longer Introduction to F# Reading 6
6 Thursday, 10/25 Why Functional Programming Matters Reading 7
7 Sunday, 10/28 Parser Combinators
7 Thursday, 11/1 First, Beating the Averages,
and then The Rise of Worse is Better.
Reading 8
7 Thursday, 11/1 The following are examples of language specifications. Use them for inspiration in your own project. Some of these documents are quite long, so I suggest that you utilize these to get the gist of how languages are specified. Don't try to read through them! I would consider all of these to be "good" specifications, although I have to admit to having a favorite. I think the Logo document, especially the section titled "A Logo Primer," is beautiful and lucid, despite being almost totally imprecise.
The Standard ML Core Language (Revised) (Formal syntax; formal semantics)
PASCAL User Manual and Report pp. 133-168 (Formal syntax; informal semantics)
Smalltalk-80: The Language and its Implementation (A tour-de-force of both formal syntax/semantics and informal syntax/semantics)
VoxPL: Programming with the Wisdom of the Crowd (Informal syntax; formal semantics)
Piet Programming Language (Informal syntax; informal semantics)
What is Logo? (Very informal, but beautiful, presentation of syntax and semantics)
9 Tuesday, 11/6 Instead of a reading this week, and in honor of the OOPSLA conference (which is where I'll be this week), I am assigning Guy Steele's classic OOPSLA talk, "Growing a Language."
Read this note before watching the video.
Growing a Language
Reading 9
10 Thursday, 11/15 Read pp. 3--4 of "On Understanding Types, Data Abstraction, and Polymorphism" by Cardelli and Wegner. Reading 10
11 Tuesday, 11/20 Git branching and merging. (Optional)
12 Saturday, 11/24 Unit testing in F#.
Reading 11
12 Thursday, 11/29 While this talk is about research talks, I really think it applies to all technical talks in general.
How to give a great research talk.
If you want to see my interpretation of this advice, here is a video of my most recent talk (optional!).
Reading 12
  • CSCI 334: Principles of Programming Languages, Fall 2018