August 20 (Fri), 2010 Syllabus, grading policy handouts (also on the web site). Textbooks. Why study principles of PLs? HW1 assigned, due date Friday, August 27. ([S], parts of Ch.1)
August 23 (Mon), 2010 HW1 modified to take into account a curricular change at MIT: see web site. What makes a PL successful? Two perspectives: [S] and [T].
August 25 (Wed), 2010 Recall: HW1 due date is Friday, August 27, 2009. Please turn in a hard copy. 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. 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).
August 27 (Fri), 2010 HW1 collected. Quiz 1 (Q1). Translation, compilation, interpretation. The three major language families.
August 30 (Mon), 2010 PR1 assigned: (1) install either hugs or ghc to your computer; (2) do all exercises at the end of chapters 1 and 2 [H], due 2010-09-08. Review of the three major language families: imperative, functional, logic, with Euclid's algorithm as an example in java, Scheme, and Prolog. The Tiobe index of programming language popularity, with a discussion of trends. Haskell introduction with the sum examples from Ch.1.
September 1 (Wed), 2010 Haskell introduction with the sum and double examples from Ch.1.
September 3 (Fri), 2010 Recall: PR 1 due on Wednesday, 2010-09-08. PR1 must be turned in on paper, with screen shots (or scripts) showing an example of use for each program. Haskell: Chapters 1 and 2 completed.
September 8 (Wed), 2010 PR2 assigned: all exercises at the end of chapter 3 [H]. PR1 collected and corrected in class. Chapter 2 reviewed. Chapter 3 (types) started.
September 10 (Fri), 2010 Chapter 3 [H] (Types and Classes) completed.
September 13 (Mon), 2010 PR1 returned. PR2 collected. PR3 assigned: all exercises at the end of chapter 4 [H], due on Monday, 8/20. PR4 assigned: exercises 3, 4, and 7 at the end of chapter 5 [H], due on Wednesday, 8/22. Chapter 4 [H] (Defining Functions) completed.
September 15 (Wed), 2010 Chapter 5 [H] (List Comprehensions) started: through "sorted" in section 5.3.
September 17 (Fri), 2010 Chapter 5 [H] (List Comprehensions) finished, except for the concluding part of the Caesar cypher example.
September 20 (Mon), 2010 PR3 collected. PR5 assigned: exercises 1-5 at the end of Ch.6, due Monday 9/27 [later changed to 10/1]. MT1 (Midterm) will be on Friday, 9/24. Caesar cypher in detail, with much discussion. Chapter 6 (Recursive Functions) started.
September 22 (Wed), 2010 MT1 will be on Friday. It will cover chapter 1 or Scott's book, the slides used for the introductory lectures, and chapters 1-5 of Hutton's book. It will most likely be closed book. PR4 collected and corrected in class. PR5 due date is changed to Friday, 10/1. Chapter 6 through the recursive definition of the product function on lists and its evaluation.
September 24 (Fri), 2010 MT1.
September 27 (Mon), 2010 MT1 and PR2 returned. MT1 corrected in full. There will be a second midterm in this course. The grading page has been changed accordingly.
September 29 (Wed), 2010 PR3 and PR4 returned. Ch. 6 (Recursive Functions) completed.
October 1 (Fri), 2010 PR6 assigned: exercises 1-5 and 8, Ch.7, due 2010-10-11 (Monday). PR5 collected. I announced in class that late homework will be taken next week and be graded for up to 80% of original credit. Ch.7 (Higher-order functions) completed, except for the spring transmitter example, which is assigned.
October 4 (Mon), 2010 Guest lecturer: Jingsong Wang. Tape on the countdown problem (Ch.11 [H]), presented by Graham Hutton.
October 6 (Wed), 2010 Guest lecturer: Jingsong Wang. Tape on lazy evaluation (Ch.12 [H]), presented by Erik Meijer.
October 8 (Fri), 2010 Guest lecturer: Jingsong Wang. Tape on probabilistic relational models, presented by Daphne Koller.
October 11 (Mon), 2010 PR6 collected. Discussion of the string transmitter problem at the end of Ch.7 [H] (Higher-order functions).
October 13 (Wed), 2010 Attendance was low. Review of recursive programs from PR5 (Ch. 6). The and function using foldr and review of foldr.
October 18 (Mon), 2010 Continued review of recursive programs from PR5 (Ch. 6), with a detailed discussion of mergesort. Backus's tape on FL/FP: first 15 minutes (approx.) with much discussion.
October 20 (Wed), 2010 PR6 returned, with very low grades. PR6b assigned: exercises 8 and 9 from Ch. 7 [H]. (See details of submission in the homework list on the main course web page.)
October 22 (Fri), 2010 PR5 returned. PR7 assigned: Three short FP programs, due Wednesday 2010-10-27. Most of Backus's tape on FL/FP presented. Brief introduction to Carter Bays's FP interpreter, linked to course web site.
October 25 (Mon), 2010 PR6b collected. PR7 due date changed to Friday, October 29. More FP examples, including matrix multiplication from Backus's 1977 Turing Award presentation.
October 27 (Wed), 2010 Discussion of FP assignment. FP tape concluded. Link to Backus's FP/FL video shown in class is not on the class web site, under Lecture Notes. Interactive programs in Haskell: ch.9 [H], started.
October 29 (Fri), 2010 PR7 (FP) collected. Interactive programs in Haskell: ch.9 [H] completed, except for the conclusion of the presentation of the hangman program.
November 1 (Mon), 2010 Second midterm (MT2) will be on Friday and cover all of Hutton's book through Ch.10 [note: changed to 9, see entry immediately below], except for Ch.8. PR6b and PR7 returned. Ch. 9 [H] completed, with discussion of hangman and of Eric Meijer's interactive_dialogue function. Ch. 10 [H] ("Declaring Types and Classes") started.
November 3 (Wed), 2010 Second midterm (MT2) will be on Friday and cover all of Hutton's book through Ch.9, except for Ch.8. It will be closed book. Ch. 10 [H] completed, with several examples of functions on recursive data types worked out on the board.
November 5 (Fri), 2010 MT2.
November 8 (Mon), 2010 MT2 returned. The countdown problem (Ch. 11 [H]).
November 10 (Wed), 2010 PR8 assigned, due 2010-11-17 (Wednesday). Prolog started (Ch. 11 [S]).
November 12 (Fri), 2010 More Prolog.
November 15 (Mon), 2010 Assignment of student presentations. (See student presentation link.) More Prolog.
November 17 (Wed), 2010 Student will present their pair presentations on Monday after Thanksgiving. Prolog completed (with a little datalog). Syntax vs. semantics. Syntax. Introduction to BNF.
November 19 (Fri), 2010 Reminder: Student will present their pair presentations on Monday after Thanksgiving. Students must email me their presentation and bring it on a USB memory key. HW2 assigned: exercises 2.9, 2.12 (parts a and b; also show that there are two parse trees for part (b)), 2.13 (parts a and b only) [S] due Monday, November 29. (Note: [S] is the main textbook, by Michael Scott.) Syntax, ctd.
November 22 (Mon), 2010 Reminder: Student will present their pair presentations on Monday after Thanksgiving. Students must email me their presentation and bring it on a USB memory key. Syntax, ctd. Lexical analysis and parsing. Slides used; the slides are available on the course web site, as usual.
November 29 (Mon), 2010 Student presentations: Almutairi and Bailey (Ada), Becker and Bennett (C#), Burbol and Burrell (Clojure), Burris and Bush (D), Cawthorne and Chandler (Erlang).
December 1 (Wed), 2010 Student presentations: Breece and Brothers (C++), Daigle and Denmark (F#), Dodson and Falls (Falcon), Galloway and Greene (Forth), James and Kain (Groovy), Long and Mabry (Javascript).
December 3 (Fri), 2010 HW2 corrected in class, in full. Brief discussion of final exam. Student presentations: McGarvie and McKnight (Lua), Reese and Ring (Perl), Roselli and Tindal-Stevens (Python). Student course evaluation.