August 23 (Thu), 2012 HW1 assigned: Do the exercise at the end of Chapter 1 [L], due 2012-09-04. Syllabus, grading policy handouts (also on the web site). Textbooks. Why study principles of PLs? HW1 assigned, due date Friday, August 27. 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. The Tiobe PL Index (August 2012).
August 28 (Tue), 2012 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. The three major language families. Euclid's algorithm in C, Scheme, and Prolog.
August 30 (Thu), 2012 HW1 is due at the beginning of class on Tuesday, September 4, 2012; paper is requested. Brief history of programming language (based on an article by Brian Hayes, linked to the web site for the course). Last part of ch.1 [L] ("Thinking and Computation"). Beginning of Ch.2 [L] ("A Procedure for Thinking").
September 4(Tue), 2012 Chapter 2 [L] ("A Procedure for Thinking," completed). Chapter 3 [L] ("The Prolog Language") started. The SWI-Prolog website. How to install SWI-Prolog.
September 6(Thu), 2012 Ch.3 [L] continued, almost to the end, with much Q&A and Prolog program runs.
September 11(Tue), 2012 PR1 assigned: Exercise at the end of Ch.4 [L] due 2012-90-25 (Tuesday). Ch.3 [L] completed. Ch.4 [L] ("Writing Prolog Programs") through section 4.3.
September 13(Thu), 2012 Q1 (Quiz 1). Ch.4 [L] completed. Ch.5 [L] started ("Case Study: Satisfying Constraints") through section 5.1.
September 18 (Tue), 2012 Ch.5[L] continued through section 5.3 (the eight queens).
September 20 (Thu), 2012 HW1 returned. Ch.5[L] completed. Ch.6 (Sections 1 and 2: Interpreting aerial sketches) [L] completed. Ch.7[L] (Lists in Prolog) started.
September 25 (Tue), 2012 PR1 collected. Students who have not included (at least) one example of use per predicate must email a file with such examples by COB tomorrow (2012-09-26). PR2 (formerly named HW3) assigned: exercises 2,3, and 4 pp.115-116 and exercise 6 p.151 [L], due 2012-10-02 (Tuesday). Ch.7 [L] almost completed.
September 27 (Thu), 2012 PR1 (formerly named HW2) corrected in class. Much discussion. Reminder: PR2 (formerly named HW3) due on Tuesday, 2012-10-02. Miderm will be on Thursday, 2012-10-04.
October 2 (Tue), 2012 Midterm will be on Thursday, October 4. It will open book [L], but not open notes; If you own an electronic version of the textbook, you may bring a printed copy of (parts of) it. PR1 returned. PR2 collected and corrected in class. Solutions for PR1 (formerly named HW2) and PR2 (formerly named HW3) are posted on blackboard. Ch.7 [L] ("Lists in Prolog") completed. Ch.8 [L] ("Case Study: Understanding Natural Language") started.
October 4 (Thu), 2012 MT1.
October 9 (Tue), 2012 MT1 returned and corrected in detail, with discussion. Ch.8 [L] ("Case Study: Understanding Natural Language") continued.
October 11 (Thu), 2012 PR3 (formerly named HW4) assigned: do parts 1-6 of the exercise at the end of ch.8[L]. Ch.8 [L] completed. End of Prolog coverage for the course.
October 16 (Tue), 2012 Guest instructor: Mr. Mohamed Sharaf. Video: John Backus on the FP/FL System. (A link to the video is on the course website, under "Lecture Notes.")
October 23 (Tue), 2012 PR4 on FP assigned, due on November 1, 2011 (Thu). Examples of FP programs. Introduction to Haskell (ch. 1[H]).
October 25 (Tue), 2012 PR3 collected. The Hugs and GHC (GHCi) systems: links for download and documentation are online. Ch.2 [H] ("First Steps") completed. Ch.3 [H] ("Types and Classes") started.
October 30 (Tue), 2012 Ch.3 [H] completed. Ch. 4 [H] ("Defining Functions") started.
November 1 (Thu), 2012 PR3 returned. PR4 collected. PR5 assigned: Exercises 1 through 6 ch.4 [H] and 3,4,7 ch.5 [H] assigned. Ch.4 [H] completed. Ch.5 [H] ("List Comprehensions") completed, except for the extended example of section 5.5 (The Caesar cipher).
November 8 (Thu), 2012 First class after fall break. PR4 returned. PR5 Exercises 1 through 6 ch.4 [H] and 3,4,7 ch.5 [H] assigned, due date November 15, 2012 (Thursday). Note that this is different that the date originally given in class on November 1. Ch.5 [H] reviewed. The Ceasar cipher example.
November 13 (Tue), 2012 Chs.6 and 7 [H] ("Recursive Functions" and "Higher-Order Functions") completed.
November 15 (Thu), 2012 PR6 assigned: exercises 8 and 9 ch.7 [H], due 2012-11-27 (Tuesday). PR5 collected. The string transmitter example of ch.7 [H]. Ch.8 [H] ("Functional Parsers") started.
November 20 (Tue), 2012 PR5 returned. Programming language presentations assigned for all students who came to class today. See "Student Presentations" link on the main course page. Ch.8 [H] completed. Ch.9 [H] ("Interactive Programs") almost completed.
November 27 (Tue), 2012 PR6 collected. Ch.12 [H] (Lazy Evaluation) completed. Ch.11 [H] (The Countdown Problem): Graham Hutton's video.
November 29 (Thu), 2012 HW2 assigned: syntax, see under "Homework" on the course website. Student presentations will be on Tuesday, December 4, 2012, with a possible spill-over to Thursday, December 6, 2012. Syntax. We used slides, which are under "Lecture Notes" on the course website.
December 4 (Tue), 2012 Student presentations on Arduino, C#, COBOL, Erlang, Perl, and Python.
December 6 (Thu), 2012 HW2 collected. Final will be closed books and notes. It will be comprehensive but biased (80-20, roughly) towards material covered after the midterm. A set of "final-type" question is now posted on the course web site. Some Q&A on functions vs. methods vs. procedures. Student presentations on Scala and Ruby. (Presentations on ASP, TCL, and JavaScript after class, in my office.)