Computer Science 365

Programming Langauge Concepts
Spring 2012
Thomas VanDrunen



Meeting time: MWF 2:00-3:05.
Meeting place: Science 131

Office hours: MWThF 8:45--10:15 am; Th 8:45--11:15.
Contact: Sci 163 ; 752-5692; Thomas.VanDrunen@wheaton.edu
http://cs.wheaton.edu/~tvandrun/cs365


Syllabus


Resources:
Java Language Specification



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


Moon's dayWoden' s dayFrigga's day

Jan 13

Prolegomena. Introduction; programming languages and abstraction; paradigms
Slides

Jan 15

Compiler structure; implementation

Short assignment

Jan 16

PL Vocabulary

Jan 20

NO CLASS

Jan 22

Warm-up. Grammars etc
Slides

Jan 24

Parsing algorithms

Jan 27

More on parsing algorithms
Slides

Jan 29

Concrete and abstract syntax; parser generators
Slides

Jan 31

The Visitor pattern

Project 1; due 2/10

Feb 3

Imperative features. Types and type-checking

Project 2; due 2/10

Feb 5

Formal semantics and interpretation

Feb 7

Features: switch statements

Feb 10

Features: scope, control flow
Slides

Projects 1 and 2 due. Project 3; due 2/21

Feb 12

Procedures

Feb 14

More on procedures

Feb 17

NO CLASS

Feb 19

Dynamic memory and pointers

Feb 21

Arrays

Project 3 due. Project 4; due 2/26

Feb 24

Arrays

Feb 26

Structs

Project 4 due. Project 5; due 3/24

Feb 28

Back to procedures: parameter passing modes

Mar 3

Nested procedures

Mar 5

Interlude. History of programming languages
Slides

Mar 7

More history of programming languages

Mar 10

NO CLASS

Mar 12

NO CLASS

Mar 14

NO CLASS

Mar 17

Gotos considered
Slides

Mar 19

The lambda-calculus

Mar 21

More lambda-calculus

Mar 24

Compilation

Mar 26

Classfiles and the JVM

Project 5 due. Project 6; due 4/4

Mar 28

Object-oriented features. Objects and classes

Mar 31

Types in OO; polymorphism

Apr 2

Type-checking in OOP

Apr 4

Inheritance

Project 6 due

Apr 7

Alternate formulations of OO

Apr 9

More alternate formulations of OO

Project 7, due 4/25

Apr 11

Functional features. Bootstrapping a functional language

Apr 14

More bootstrapping

Project 8; due 4/30

Apr 16

Efficiency in a functional language; tail form

Apr 18

NO CLASS

Apr 21

Continuation-passing style

Apr 23

Types in a functional language

Apr 25

Type soundness proofs

Project 7 due

Apr 28

More type soundness proofs

Apr 30

Epilogue. "Growing a Language"

Project 8 due

May 2

Review