CSCE 330 (Fall 2024): Lecture Log

August 20 (Tue), 2024 This class was online; the instructor had Covid and was isolating at home. We used Zoom. The recording is on Panopto. Discussion of syllabus (also on the main course web site). Textbooks. Why study principles of PLs?

August 22 (Thu), 2024 This class was online; the instructor had Covid and was isolating at home. We used Zoom. The recording is on Panopto. Introductory slides through slide 27 (Abstraction) and some discussion of the popularity of different programming languages.

August 27 (Tue), 2024 HW1 assigned: do the exercise at the end of ch.1 [L]. This is a paper-and-pencil exercise. Please handwrite your work neatly; do not type it. This assignment is due in one week (September 3, 2024). Details on how to submit will be provided later. Introductory slides through slide 43 (Euclid's GCD program in C).

August 29 (Thu), 2024 This class was online; the instructor had Covid and was isolating at home. We used Zoom. The recording is on Panopto. Detailed discussion of how to submit HW1, with some hints. Conclusion of introductory slides. Brief demonstration of use of swipl in Windows, with the GCD program in Prolog.

September 3 (Tue), 2024 This class was online; the instructor had Covid and was isolating at home. We used Zoom. The recording is on Panopto. swipl in Linux, as installed on the deparmental lab machines. Ch.1 [L] (Thinking as Computation), in full, using slides provided by the author.

September 5 (Thu), 2024 This class was online; the instructor had Covid and was isolating at home. HW2 assigned: exercise at the end of Ch.2 [L]. There will be further instructions on details of submission and use of Prolog for this exercise at the next class. For now, I recommend that you do the exercise with paper and pencil. Ch.2 [L] (A Procedure for Thinking), in full, using slides provided by the author.

September 10 (Tue), 2024 This class was online; the instructor had Covid and was isolating at home. HW2 discussed in much detail. See dropbox. Due date: September 17. The family KB in Prolog. Ch.3 [L] (The Prolog Language) up to p.45.

September 12 (Thu), 2024 This class was online; the instructor had Covid and was isolating at home. Ch.3 [L] (The Prolog Language) almost completed.

September 17 (Tue), 2024 HW3 (exercise at the end of Ch.4[L]) assigned, due on 2024-09-24. See dropbox for details. Unification. Backchaining: the more complete version at the end of Ch.3[L]. Ch.3 [L] (The Prolog Language) completed. Ch.4 [L] (Writing Prolog programs) started.

September 19 (Thu), 2024 HW3 due date changed to 2024-09-26. Quizzes: Q1, Q2, Q3, with detailed discussion. Ch.4 [L] continued. Recursion and induction. More incompleteness of backchaining: the example of the above/2 predicate.

September 24 (Tue), 2024 Mathematical induction. Size of a predicate. Partial correctness of above/2 and left/2. Correctness requires termination, which can be established by showing the diminishing size of a predicate, where the size is a non-negative integer. Recursive programs and induction. Induction can be used to prove that a recursive program is correct. Induction can also be used as a guide to writing Prolog programs. The base case is usually a clause. The induction step is usually a collection of one or more clauses, which are determined by case analysis. We will see that a similar technique can be used in Haskell for functional programs. Ch.5 [L] (Case Study: Satisfying Constraints) started.

September 26 (Thu), 2024 HW4 assigned, due in one week (2024-10-03): exercises 2,3, and 4 Ch.5[L]. Midterm is likely to be on the date announced in the syllabus: October 10. Class was recorded to help students who had trouble getting to class due to the conditions of road during inclement weather. HW4 assigned, due in one week (2024-10-03): exercises 2,3, and 4 Ch.5[L]. Ch.5 [L] continued through the cryptoarithmetic program (to be reviewed).

October 1 (Tue), 2024 HW4 due date changed to 23:59 on Friday, 2024-10-04 (because of the disruption caused by Hurricane Helene). Ch.5 [L] completed, with some discussion of the HW4 assignments. Ch.6 [L] (Case Study: Interpreting Visual Scences) Sections 6.1 and 6.2 completed; we will not cover the rest of that chapter in class.

October 3 (Thu), 2024 HW5 assigned, due in one week (2024-10-10): Exercise 6 Ch.7[L]. Please read the hints in the book and the directions in the departmental dropbox carefully and follow them. The midterm will take place one class period late with respect to the date announced in the syllabus: it will be on Tuesday, October 15, 2024. Q5 (note: Q4 will be assigned later). Ch.7 [L] (Lists in Prolog) through Section 7.2. The students are asked to study the whole chapter.

October 8 (Tue), 2024 Q4 (on Backus's lecture on FP/FL). The TA, Mr. Renjith Prasad, leads the class. Most of the class is taken over by the video of a lecture by John Backus on the FP/FL system.

October 11 (Thu), 2024 Discussion of the contents of the midterm. The (mostly ISO-compliant) length/2 predicate from the SWI-Prolog library. Development of an equivalent len1/2 predicate, recursive. Development of an equivalent len2/3 predicate, tail-recursive and with an accumulator. Good questions and discussion.

October 15 (Tue), 2024 Midterm exam (MT1). Grades will be recorded in the departmental dropbox.

October 22 (Tue), 2024 October 17-18 was fall break. Syntax, started; slides on Syntax on the main course website were used.

October 24 (Thu), 2024 HW6 on syntax (parse tree construction) assigned, due on 2024-11-05. Syntax continued, through the definition of parse tree.

October 29 (Tue), 2024 Q6 on the definition of syntax and semantics. Ambuguous grammars, with examples, including the "dangling else" one. Syntax concluded. Haskell started. Students are reminded that the need to buy a copy of [H].

October 31 (Thu), 2024 HW7 assigned: exercises at the end of Ch.1[H], to be done in paper and pencil. Due time for HW6 changed to 23:59. Brief discussion on how to deal with EBNF (as opposed to BNF) in derivations and syntax trees; this is important for HW6. Ch.1 [H] ("Introduction") completed.

November 7 (Thu), 2024 HW8 assigned: exercises at the end of Chs.2 and 3[H]. See dropbox for details. Ch.1[H] monadic programming example (seqn'). Ch.2[H] (First Steps).

November 12(Tue), 2024 Ch.2[H] and Ch.3[H] (Types and classes) completed. The version of ghci installed on the departmental computers was used for most of the class, using the MobaXterm terminal emulator.

November 14(Thu), 2024 Q7 on types and function application. HW9 assigned: exercise 4.8 [H]. See dropbox for details. Review of some points from Ch.3 [H] (Types and Classes). Ch.4[H] (Defining functions), through section 4.4 [H]. The version of ghci installed on the departmental computers was used for most of the class, using the MobaXterm terminal emulator.

November 19(Tue), 2024 HW10 assigned: exercises 5 and 6 ch.5[H], due on 2024-12-03. (Note: in class, it was mentioned incorrectly that the assignment would consist of exercises 5 and 9; exercise 9 is not assigned, although it is a useful one for self-study.) Ch.4[H] (Defining functions) completed. Ch.5[H] (List comprehensions) completed, except for the Caesar Cypher example (Sect.5.5[H]).

November 21(Thu), 2024 HW11 assigned: ex. 4,7, and 8 Ch.6 [H] due on 2024-12-03. HW12 assignedL ex. 5 and 9 Ch.7 [H], due on 2024-12-05. Presentation assigned, due on 2024-12-05. See dropbox for details. Ch.5[H]: the Caesar cipher. Ch.6[H] (Recursive functions) completed. Ch.7[H] (Higher-order functions) started, through most of section 7.2.

December 3 (Tue), 2024 Ch.7[H] (Higher-order functions) completed. Some of the binary transmission example program is presented. The voting algorithms example program is only briefly touched on. Some comments on the final exam.