22c:111 (CS:3820)
Programming Language Concepts
The University of Iowa, Fall 2014
Schedule

Note: The schedule is tentative, including the due dates of homework assignments and the dates of the midterm.

The topics marked with (*) will not be part of the final exam, although you should have a rough idea of their motivation and connections to other relevant topics.

Date Topic
Mon Aug 25
  • Introduction, Motivation
  • Syllabus Overview
  • Four Question Assignment
  • Formal Languages vs. Natural Languages
Wed Aug 27
  • Deterministic Finite State Automata
  • Non-Deterministic Finite State Automata
Fri Aug 29
  • Determinizing NFAs (*)
Mon Sep 1
  • Labor Day: no classes
Wed Sep 3
  • Determinizing NFAs (cont'd) (*)
  • Minimizing DFAs (*)
  • Discussion of Micro 1
Fri Sep 5
  • Minimizing DFAs (cont'd)
Mon Sep 8
  • Regular Expressions
Wed Sep 10
  • Regular Expressions to DFAs (*)
Fri Sep 12
  • Limits of Regular Expressions (*)
  • Context-free Grammars
Mon Sep 15
  • Derivations in Context-Free Grammars
  • Parse Trees from Derivations
  • Ambiguity of Grammars
Wed Sep 17
  • Resolving Ambiguity in Context-Free Grammars
  • Relationship between Regular and Context-Free Languages
  • First Stages of Compilation: Lexical, Syntactical, Semantic Analysis
  • Homework 1 out
Fri Sep 19
  • Introduction to Functional Programming
  • The OCaml Language
Mon Sep 22
  • OCaml Syntax
  • Evaluation in the OCaml Toplevel
  • Basic Datatypes
Wed Sep 24
  • Defining Functions
  • Pattern Matching
  • Lists
  • Homework 1 due
Fri Sep 26
  • Functions on Lists
  • Recursion and Tail Recursion
Mon Sep 29
  • Defining New Types
Wed Oct 1
  • Currying and Partial Evaluation
  • Higher-order Functions
  • Functional programming idioms: map
Fri Oct 3
  • Functional Programming idioms: fold
Mon Oct 6
  • map and fold on Trees
Wed Oct 8
  • Introduction to Typing
  • The Hindley-Milner Type System
Fri Oct 10
  • Type Inference in the Monomorphic Hindley-Milner Type System (*)
Mon Oct 13
  • Type Inference in the Monomorphic Hindley-Milner Type System (*)
  • Homework 2 out
Wed Oct 15
  • Type Inference in the Polymorphic Hindley-Milner Type System (*)
Fri Oct 17
  • Type Inference in Practice
  • The Idea of Unification
Mon Oct 20
  • Modules and Compilation in OCaml (*)
  • Midterm Review
  • Homework 2 due
Wed Oct 22
  • Midterm Exam
Fri Oct 24
  • Overview of Lexical Analysis
Mon Oct 27
  • Building a Lexical Analyzer
  • Overview of Bottom-up Parsing
Wed Oct 29
  • Shift-Reduce Parsing
  • Conflicts in Shift-Reduce Parsing
Fri Oct 31
  • LR Parsing Algorithm (*)
  • Resolving Conflicts in LR Parsing
Mon Nov 3
  • Implementing Scoping in ASTs
  • Evaluating ASTs with an Environment
  • Homework 3 out
Wed Nov 5
  • Runtime Environments of Programming Languages
  • Memory Organization and Layout
  • Activation Records and Calling Sequences for Function Calls (*)
Fri Nov 7
  • Static and Dynamic Scoping (*)
  • Activation Records and Static Scoping (*)
Mon Nov 10
  • Recursion and Tail Recursion
  • Homework 3 due
Wed Nov 12
  • Introduction to Garbage Collection
  • Reference Counting
Fri Nov 14
  • Mark-and-Sweep
Mon Nov 17
  • Stop-and-Copy
Wed Nov 19
  • Incremental Garbage Collection
  • Partial Garbage Collection
  • Garbage Collection in OCaml
Fri Nov 21
  • Imperative Features of OCaml (*)
  • Arrays (*)
  • Memoization for Dynamic Programming
Mon Nov 24
  • Thanksgiving Break
Wed Nov 26
  • Thanksgiving Break
Fri Nov 28
  • Thanksgiving Break
Mon Dec 1
  • Declarative Programming
  • Introduction to Logic Programming with Prolog
  • Homework 4 out
Wed Dec 3
  • Unification
Fri Dec 5
  • Evaluation of Logic Programs
Mon Dec 8
  • Examples of Logic Programs
Wed Dec 10
  • Logic Programming and Databases
  • Datalog (*)
  • Homework 4 due
Fri Dec 12
  • Course Review and Evaluation
Mon Dec 15
7.30am
  • Final Exam in 140 SH

22c:111 (CS:3820)
Programming Language Concepts
Fall 2014

Lectures

Every Monday, Wednesday and Friday 1.30pm-2.20pm in W228 CB

Instructor

Dr. Christoph Sticksel
Email

Office hours

Every Tuesday 2pm-3.30pm and Friday 10.30am-12noon in 201K MacLean Hall.

Teaching Assistant

Jingwei Ji
Email

Office hours

Every Monday 3pm-5pm and Wednesday 3pm-5pm, 101N MLH