Computer Science 365

Programming Languages
Spring 2006
Thomas VanDrunen



Meeting time: MWF 12:45 - 1:50 pm
Meeting place: Armerding 123
Office hours: 2:00-3:00 pm everyday
Contact: 112 Armerding; 752-5692; Thomas.VanDrunen@wheaton.edu
http://cslab.wheaton.edu/~tvandrun/previous/spring06/cs365

Syllabus: ps pdf



Resources:
Style and documentation guidelines
Java Language Specification
Java API
Java Tree Builder (JTB) homepage
Jay EBNF for our projects.
jay.jj



Moon's dayWoden' s dayFrigga's day

Jan 9

Introduction

Jan 11

History (1)

Jan 13

More history

Jan 16

NO CLASS

Jan 18

Formal languages and the compilation process (2.1). Jay BNF

Jan 20

Syntax (2.2)

Jan 23

Compiler implementation and the Visitor pattern. Mathex EBNF

Project 1: Pretty printing Jay

Jan 25

Parsing algorithms (2.3 & 4)

Jan 27

Types (3.1)

Jan 30

State transformations and operational semantics (3.2 & 3.3)

Project 2: Type-checking Jay

Feb 1

Axiomatic semantics and denotational semantics (3.4-3.6)

Feb 3

Imperative languages and types(4.1 - 4.4)

Feb 6

Loops (4.5)

Project 3: DecJay interpreter

Feb 8

Methods (4.7)

Feb 10

Memory management (5.1-5.2.2)

Feb 13

Semantics of call and return (5.2.3)

Feb 15

Pointers and arrays (5.3-5.4). Assignment: [ps][pdf]

Project 4: RecJay interpreter

Feb 17

Structs and semantics (5.5 & 5.6)

Feb 20

NO CLASS

Feb 22

More structs and semantics

Feb 24

Garbage collection (5.7)

Feb 27

Review

Mar 1

MIDTERM

Mar 3

Growing a language

Mar 6

NO CLASS

Mar 8

NO CLASS

Mar 10

NO CLASS

Mar 13

Introduction to OO (7.1, 7.2.1-2)

Project 5: OJay interpreter

Mar 15

Type checking

Mar 17

Polymorphism (7.2.5-6)

Mar 20

Inheritance (7.2.3-4)

Mar 22

Correctness (7.6)

Project 6: POJay interpreter

Mar 24

An alternative description of OO

Mar 27

Introduction to functional programming; lambda calculus (8.1)

Mar 29

Lambda madness

Mar 31

Catch up on project

Apr 3

More lambdas, some ML

Apr 5

Deconstructing (or constructing) FunJay

Apr 7

Type soundness proofs

Project 7: FunJay interpreter

Apr 10

More type soundness proofs

Apr 12

Continuation passing style

Apr 14

NO CLASS

Apr 17

VisiCalc

Apr 19

Growing a language

Apr 21

Logic and predicate (9.1)

Apr 24

Prolog (9.2)

Apr 26

Practical prolog (9.3 & 9.4)

Apr 28

Review