Computer Science 365

Programming Language Concepts
Spring 2008
Thomas VanDrunen



Meeting time: MWF 2:00-3:05.
Meeting place: Armerding 123

Office hours: MTuWF 3:10-4:10 pm; Th 8:30-11:30 am.
Contact: 112 Armerding; 752-5692; Thomas.VanDrunen@wheaton.edu


Syllabus: ps pdf


Resources:
Java Language Specification



Final exam: Tuesday, May 6, 1:30 pm


Moon's dayWoden' s dayFrigga's day

Jan 14

Introduction and history
Slides

Jan 16

History

Jan 18

Syntax. Formal languages and the compilation process [2.1]

Jan 21

NO CLASS

Jan 23

Syntax; representing a language in Java and ML [2.2]
Slides

proj 1, due 1/30

Jan 25

More on Java representation; parsing algorithms
code from class

Jan 28

More on parsing algorithms; parser generators
Slides

Jan 30

Compiler implementation and the Visitor pattern
Slides
code from class

proj 2, due 2/1

Feb 1

Abstract syntax [2.3]

proj 3, due 2/8

Feb 4

Semantics. Types [3.1]

Feb 6

Finish type-checking; talk about project 3
ToASTVisitor1.java
ToASTVisitor2.java

Feb 8

Having a baby...

Feb 11

State transformations, operational semantics [3.(2-3)]

proj 4, due 2/20

Feb 13

Axiomatic semantics and denotational semantics [3.(4-5)]
Slides

Feb 15

Imperative programming. Imperative languages [4.(1-4)]

Feb 18

NO CLASS

Feb 20

Loops [4.(5-6)]
Slides

proj 5, due 2/29

Feb 22

Methods [4.7]
Slides

Feb 25

Memory issues Run-time memory [5.(1-2.2)]

Feb 27

Call and return [5.2.3]

Feb 29

Pointers and arrays [5.(3-4)]
Slides
Pass-by-reference interpreter
Pass-by-value/result interpreter
Pass-by-name interpreter

proj 6, due 3/7

Mar 3

Structs and semantics [5.(5-6)]
Slides

Mar 5

More on structs

Mar 7

Garbage collection [5.7]

Mar 10

NO CLASS

Mar 12

NO CLASS

Mar 13

NO CLASS

Mar 17

Review

Mar 19

Midterm

Mar 21

NO CLASS

Mar 24

Object-oriented programming. Introduction to OO [7.1, 7.2.(1-2)]
Slides

proj 7, due 3/31

Mar 26

Type checking in OO

Mar 28

Polymorphism [7.2.(5-6)]

Mar 31

Inheritance [7.2.(3-4)]
Slides

proj 8, due 4/7

Apr 2

Correctness [7.6]

Apr 4

OO without classes
Slides

Apr 7

Functional programming. Lambda calculus [8.1]
For Wed: [ps] [pdf]

Apr 9

More lambda calculus

proj 9, due 4/23

Apr 11

Constructing a functional language
Slides

Apr 14

Recursion and lists

Apr 16

Types in a functional language
Slides

Apr 18

Type-soundness proofs

Apr 21

Finishing type-soundness proofs

Apr 23

Tail form / continuation passing style

Apr 25

Compilation. Compiling Jay

proj 10, due 5/2

Apr 28

Classfiles and the JVM instruction set

Apr 30

"Growing a Language"

May 2

Review