August 22 (Thu), 2013 Several technical problems with the TV studio and overflow room. Syllabus, grading policy handouts (also on the web site). Textbooks. Why study principles of PLs?
August 27 (Tue), 2013 HW1 assigned: Do the exercise at the end of Chapter 1 [L], due 2013-09-02 (Tuesday). Turn in a paper. Try to keep your work on a single page. What makes a PL successful? Two perspectives: [S] and [T]. Programming methodologies: waterfall, spiral, RUDE. Software tools, IDEs, Emacs. Examples of Unix software tools. The Unix shell as a glue language or simple scripting language.
August 29 (Tue), 2013 Q&A on HW1. Data and control abstraction. Von Neumann architecture. Harvard architecture. Computers for functional languages (Symbolics, Lisp machine, Mago reduction machine) and for logic languages (PIM from the Japanese Fifth Generation Computer Programme). Translation, compilation, interpretation.
September 3 (Tue), 2013 HW1 collected. Quiz 1. The three major language families. Euclid's algorithm in C, Scheme, and Prolog. Brief history of programming language (based on an article by Brian Hayes, linked to the web site for the course). The Tiobe PL Index and the PYPL Index (August 2013).
September 5 (Thu), 2013 HW1 returned. Quiz 2. Ch.1 [L] ("Thinking and Computation"). Beginning of Ch.2 [L] ("A Procedure for Thinking").
September 10 (Tue), 2013 PR1 assigned, due Thursday, September 19, 2013: Exercise at the end of Ch.3[L] (movie database); turn in a paper; write enough facts to answer all queries; your paper should contain your program (KB), and a script (or scripts or screen dumps) showing the queries and Prolog's answers to them. Ch.2 [L] ("A Procedure for Thinking"). Beginning of Ch.3 [L] ("The Prolog Language").
September 12 (Thu), 2013 Ch.3 [L] ("The Prolog Language") through section 3.2. The SWI-Prolog website. How to install SWI-Prolog. Examples of Prolog program execution. Use of the trace facility.
September 17 (Tue), 2013 Ch.3 [L] ("The Prolog Language") concluded. Ch.4 [L] ("Writing Prolog Programs") started. Note: One can create a log of an SWI-Prolog session using protocol/1 and noprotocol/0. See www.swi-prolog.org/FAQ/MakeLog.html.
September 19 (Thu), 2013 PR2 assigned: Exercises at the end of chapter 4 [L]; turn in a paper with the Prolog KB and an example of use for each predicate you define; Due 2013-09-26. PR1 collected. PR1 discussed. Ch.4 [L] ("Writing Prolog Programs") almost completed.
September 24 (Tue), 2013 PR3 assigned: Exercises 2, 3, and 4 at the end of Ch.5[L], due 2013-10-03 (Thursday). Q3. Ch.4 [L] ("Writing Prolog Programs") completed. Ch.5 [L] ("Case Study: Satisfying Constraints") through section 5.1; subsection 5.2.1 ("The anonymous variable in Prolog") completed.
September 26 (Thu), 2013 The first midterm will most likely be on October 8, 2013; this is a change with respect to the syllabus on the course website. PR1 returned. PR2 collected. Ch.5[L] continued through section 5.3 (Cryptarithmetic).
October 1 (Tue), 2013 Discussion of PR2 (exercises from Ch.4[L]: family relations). Ch.5 [L] completed.
October 3 (Thu), 2013 Midterm will be on Tuesday, October 8, 2013. It will be a closed book exam. PR4 assigned: exercise 6 Ch.7 [L], due on Tuesday, October 15, 2013. PR3 collected and discussed. PR2 returned. Ch.6 [L] (Sections 1 and 2: Interpreting aerial sketches) completed. Ch.7 [L] (Lists in Prolog) started.
October 8 (Tue), 2013 MT1.
October 10 (Thu), 2013 MT1 and PR3 returned and discussed. More on lists.
October 15 (Tue), 2013 Due date of PR4 (exercise 6 Ch.7 [L]) changed to Tuesday, October 22, 2013. Ch.7[L] (Lists in Prolog) completed.
October 22 (Tue), 2013 Mr. Mohamed Sharaf is guest instructor. PR4 collected. Backus's 1987 lecture on FP, based on his 1978 Turing award paper.
October 24 (Thu), 2013 Mr. Mohamed Sharaf is guest instructor. Erik Meijer's introductory lecture on Haskell.
October 29 (Tue), 2013 PR5 on FP assigned, due on November 5, 2013 (Tue). Examples of FP programs. Introduction to Haskell (ch. 1[H]); First Steps (started; ch.2[H]).
October 31 (Thu), 2013 PR6 on Haskell assigned, due on November 7, 2013 (Thu): exercises 1-5 at the end of Ch.2 [H]. PR4 returned. PR4 solution discussed. Quiz 4 (Q4). First Steps (ch.2[H]).
November 5 (Tue), 2013 PR7 assigned: exercises 1-6 Ch.4[H] and 3,4,7 Ch.5[H], due 2013-11-14. PR5 collected. Types and Classes (ch.3[H]).
November 7 (Thu), 2013 PR5 returned and discussed. PR6 collected. Defining Functions (Ch.4[H]).
November 12 (Tue), 2013 PR6 partially returned. Discussion of parts of PR7: using null instead of == to test for list emptiness. List Comprehensions (Ch.5[H]): all except part of the Caesar Cypher.
November 14 (Thu), 2013 PR7 collected. PR6 returned. Caesar Cypher. Recursive Functions (Ch.6 [H]).
November 19 (Tue), 2013 PR8 assigned: exercises 3,4,5 Ch.6[H]; please follow the hint for exercise 5; due 2013-11-26. More examples of recursive functions, including quicksort. Higher-order Functions (Ch.7[H]) up to parts of section 7.3 (foldr).
November 21 (Thu), 2013 Presentation assigned. PowerPoint must be submitted by Wednesday, December 4, 2013, at 1500. Submissions must be through departmental dropbox. See website for other details. Mutually recursive functions (section 6.5[H]). Higher-order Functions (Ch.7[H]) completed. Functional Parsers (Ch.8[H]) started.
November 26 (Tue), 2013 PR7 returned. PR8 collected. More examples of recursive functions. The string transmitter program from Ch.7[H].
December 3 (Tue), 2013 PR8 returned. Functional Parsers (Ch.8[H]) completed.
December 5 (Thu), 2013 The final will be in the classroom and in the overflow room on Tuesday, December 10, from 9-1130am. It will be closed book and notes. The Countdown Problem (Ch.9[H]): Hutton's video and slides. End of course evaluation.