Computer Science 365

Programming Langauge Concepts
Spring 2016
Thomas VanDrunen



Meeting time: MWF 3:15--4:20.
Meeting place: Meyer 131

Office hours: MWF 9:15-10:15 pm; Tu 1:30-3:30.
Contact: Meyer 163 ; 752-5692; Thomas.VanDrunen@wheaton.edu
http://cs.wheaton.edu/~tvandrun/cs365


Syllabus


Resources:
Java Language Specification



Final exam: Wednesday, May 4, 1:30 PM (switch to 10:30 AM?)


Moon's dayWoden' s dayFrigga's day

Jan 11

Prolegomena. Introduction; programming languages and abstraction; paradigms
Slides

Jan 13

Compiler structure; implementation

Short assignment

Jan 15

PL Vocabulary

Jan 18

NO CLASS

Jan 20

Warm-up. Grammars etc
Slides

Jan 22

Parsing algorithms

Projcet 0; due Jan 29

Jan 25

More on parsing algorithms

Jan 27

Concrete and abstract syntax; parser generators
Slides

Jan 29

The Visitor pattern

Project 1; due Feb 12

Feb 1

Imperative features. Types and type-checking

Proj 0 due. Project 2; due Feb 12

Feb 3

More on type-checking

Feb 5

Formal semantics and interpretation

Feb 8

Features: switch statements; scope and control flow
Slides

Project 3; due Feb 19

Feb 10

Procedures

Feb 12

More on procedures

Projects 1 and 2 due.

Feb 15

NO CLASS

Feb 17

Dynamic memory and pointers

Project 4; due Feb 24

Feb 19

Arrays

Project 3 due.

Feb 22

Arrays

Feb 24

Structs

Project 4 due. Project 5; due March 23

Feb 26

Back to procedures: parameter passing modes

Feb 29

Interlude. History of programming languages
Slides

Mar 2

Project work day

Mar 4

More history of programming languages

Mar 7

NO CLASS

Mar 9

NO CLASS

Mar 11

NO CLASS

Mar 14

Gotos considered
Slides

Mar 16

The lambda-calculus

Mar 18

No class: family situation

Mar 21

More lambda-calculus

Mar 23

Compilation

Project 6; due Apr 4

Mar 25

NO CLASS

Mar 28

Classfiles and the JVM

Project 5 due.

Mar 30

Object-oriented features. Objects and classes

Apr 1

Types in OO; polymorphism

Apr 4

Type-checking in OOP

Project 6 due

Apr 6

Inheritance

Apr 8

Alternate formulations of OO

Project 7, due Apr 22

Apr 11

More alternate formulations of OO

Apr 13

Functional features. Bootstrapping a functional language

Project 8; due Apr 27

Apr 15

More bootstrapping

Apr 18

Efficiency in a functional language; tail form

Apr 20

Continuation-passing style

Apr 22

Types in a functional language

Project 7 due

Apr 25

Type soundness proofs
Slides

Apr 27

More type soundness proofs
(Time permitting: "Growing a Language")

Project 8 due

Apr 29

Review
Long version of review sheet