Details will be filled in as the term progresses.
| Topic | Reading (See "Required Textbooks" and "Other References" above) | Notes and Examples | Date |
|---|---|---|---|
| An introduction to programming paradigms | Required: Chapter 13, Gabbrielli and Martini Optional: "Programming Paradigms for Dummies" article |
Lecture Notes (pdf) | January 5 |
| Prolog: Introduction | Required: Programming in Prolog Chapter 1 | likes.pl, victoria.pl, family.pl, vices4.pl | January 10-12 |
| Prolog: Syntax and Lists | Required: Programming in Prolog Chapter 2, Sections 2.1, 2.2, 2.3, 2.4 Chapter 3, Sections 3.2, 3.3 |
examples1.pl | January 12-17 |
| Prolog: Satisfying Goals and Backtracking | Required: Programming in Prolog Chapter 2, Section 2.6 |
siblings.pl | January 17 |
| Prolog: Arithmetic, More on Lists | Required: Programming in Prolog Chapter 2, Section 2.5 |
examples2.pl, prince.pl, power.pl | January 19 |
| Prolog: More on Lists, Structures, and Recursion | Required: Programming in Prolog Chapter 3, Sections 3.4, 3.5, 3.6 |
insert.pl, bicycle.pl | January 24 |
| Prolog: Input/Output | Required: Programming in Prolog Chapter 5, Section 5.1 |
examples3.pl | January 24 |
| Prolog: Trees and Databases | trees.pl, empl.pl | January 24-26 | |
| Tutorial on the Relation between Logic and Prolog, taught by TA | Tutorial Notes (pdf) | January 31 | |
| Tutorial on Lists, taught by TA | Tutorial Notes (text file) | February 2 | |
| Prolog: Databases continued | dbs.pl | February 7 | |
| Prolog: The cut operator | Required: Programming in Prolog Chapter 4, Sections 4.1, 4.2, 4.4 |
pairs.pl, examples4.pl | February 7-9 |
| Prolog: More on Built-Ins | Required: Programming in Prolog Chapter 6, Sections 6.1, 6.2, 6.3, 6.4, 6.5 |
examples5.pl | February 9 |
| Prolog: Grammars and Parsing | Required: Programming in Prolog Chapter 9, Sections 9.1, 9.2, 9.3, 9.4, 9.5, 9.6 |
parserNL.pl, grammarNL.pl, grammarNLwithTrees.pl, ifStmt.pl, ifStmtsT.pl | February 14 |
| Midterm Review | sisters.pl, flights.pl, treequery.pl, sets.pl | February 16 | |
| Paradigms Again | Optional: Chapter 1, Tucker and Noonan | February 28 | |
| Scheme: Getting Started | Required: The Scheme Programming Language Chapter 1 |
February 28 | |
| Scheme: Simple Expressions, Evaluation, Arithmetic, Lists, Conditional Expressions, Simple Recursion | Required: The Scheme Programming Language Chapter 2, Sections 2.1 through 2.8 |
examples1.scm, examples2.scm, examples3.scm, examples4.scm | February 28-Mar 9 |
| Scheme: I/O, Assignment, Vectors, Trees | Required: The Scheme Programming Language Chapter 2, Sections 2.9 (up to page 53) Chapter 3, Sections 3.2 Chapter 4, Sections 4.1, 4.2, 4.4, 4.7 Chapter 6, Sections 6.9 Chapter 7, pages 284-285 |
examples5.scm, trees.scm | March 14-21 |
| Scheme: Functions as First-Class Data Values | examples6.scm, examples7.scm, examples8.scm | March 21-28 | |
| Python | Required: Python Tutorial Chapters 1 and 3 Chapter 4, Sections 4.1, 4.2, 4.3, 4.6 Chapter 6, Sections 6.1, 6.2 Chapter 7, Section 7.2 Optional: Chapter 13, Section 13.5, Tucker and Noonan |
Lecture Notes (pdf), examples1.py, examples2.py, sum_prod.py |
March 28-30 |
| Other Paradigms: Imperative Revisited (Pascal), Constraint Programming, | Optional: Gabbrielli and Martini, Chapter 12, Section 12.5.3 | example1.p, example2.p, pascal.txt, clp.txt | April 4 |
| Other Paradigms: Concurrent Programming | Optional: Tucker and Noonan, Chapter 17, Section 17.1 | Lecture Notes (pdf) | April 6 |