CSSE 304 – Programming Language Concepts

Fall, 2019 (202010) Schedule Overview updated Thu Nov 14 at 8:46:58 AM

Many details will be updated/added as we go through the course, usually before each day's class.
You should read the things in the Preparations column before the given class meeting.
View the Late Day Balances


Session quick links:  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40

Week Session Preparation HW Due Topics Resources
0

1

Thu Sep 5

  • As the course progresses, there will be updates to daily topics, resources, announcements, and slides, and perhaps some changes to assignment due dates.
  • Instructor intro video (6:40) is on Moodle.
  • Read the Syllabus It has been updated for fall, 2019
  • Install Chez Scheme on your computer. Details are in the A0 assignment document. You may use version 9.5, but you should also install Petite Chez Scheme 8.4 on your computer, since that matches The Scheme Programming Language and 8.4 is the version that the PLC grading server uses.
  • Add to your calendar: Evening exam dates for Fall 2019 Tuesday, Sept 24 and Tuesday, Oct 29; the Registrar's office will soon set the final exam date.
  • Claude's weekly schedule (changes from week to week)
  • Unless specified otherwise for a specific assignment, all homework is due at 11:59 PM on the day listed here.
  • Two small tasks from Assignment 0 are due before midnight today
  • Assistant lab hours
    Click here for personnel and location details.
    OVERVIEW: Will be posted when the schedule has been set.
  • Finding course materials on the web
  • Quick Scheme overview
  • Hands-on Scheme introduction
0

2

Fri Sep 6

  • TSPL Chapter 1 and Sections 2.1-2.2
  • See the note about the reading and exercises in the Assignment 0 document
  • Assignment 0 (part of this was due on day 1)
    Hand-in sheet (MSWord version);
    Submit a hard copy at the beginning of Friday's class. You can write on a printed copy, or you can type your answers in the Word document and print it.
  • Assignment 0 FAQ
  • Assignment 1 (due Day 2 at 11:59 PM)
  • A1 test code for off-line testing. Final testing will be done on the PLC server; for most assignments I will provide test code that allows you to readily test your code on your laptop. Please test on your computer first so that the PLC server does not get overloaded. You also may get better error messages from the offline tests.
  • if and cond
  • lambda
  • List structure, recursive procedures
  • Continue live Scheme intro
1

3

Mon Sep 9

  • TSPL Section 2.2-2.8
  • EOPL-1 (handout) pages 2-29
  • Assignment 2 Due at 11:59 PM.
  • A2 code for off-line testing
  • Note that some A3 problems are considerably more difficult than anything in A2, so you may want to do A2 early in the weekend, so you have more time to spend on A3.
  • Course intro
  • Additional recursive Scheme procedures
1

4

Tue Sep 10

  • TSPL sections 3.2, 4.1-4.4, and 6.1-6.4
  • EOPL-1 (handout) pages 67-74
  • Assignment 3 due at 11:59 PM
  • A3 code for off-line testing
  • Due Wednesday at 11:55 PM:
  • Assignment GS:
  • You will watch a 53 minute video and write a one-page paper which you will submit to a drop box on Moodle.
  • This is not a programming assignment, so you may not submit it late.
  • cons, list, append: box-and-pointer diagrams
  • Additional recursive procedures
  • map and apply
1

5

Thu Sep 12

  • TSPL Sections 5.1-5.4
  • EoPL (3rd edition, the actual physical book) Foreword and Preface
  • Assignment 4 due at 11:59 PM
  • A4 test code for off-line testing
  • If you want to even out the workload, also do part of A5 during the weekend.
  • Local variables: let and let*
  • let is an application of lambda
  • letrec and named let
  • box and pointer diagrams practice
  • (if time) begin largest-in-lists
1

6

Fri Sep 13

  • EoPL Section 1.1 (focus on pages 4-9)
  • Assignment 5
  • A5 is more difficult than A4, so you may want to get some of it done on Thursday.
  • A5 test code for off-line testing
  • List mutation preview
  • More map and apply examples
  • Practice with letrec and/or named let (largest-in-lists)
 
2

7

Mon Sep 16

  • EoPL Section 1.2, 1.2.1
  • Re-read TSPL 4.1-4.4 (you'll probably get more out of it on a second reading)
  • Instructor intro, part 2 (CWA)
  • A few leftovers (solutions, larger letrec examples, andmap)
  • BNF Grammar specification, derivations
  • The CSSE 304 canonical list of grammars
2

8

Tue Sep 17

  • EoPL Section 1.2.2-1.2.4
  • A6b (problems 8-12) due Tuesday at 11:59 PM
  • Assignment 7
  • A7 test code for off-line testing
  • A7a (problems 1-4) due Wednesday
  • Exam 1 specification
  • s-list procedures
  • case-lambda
  • efficient compose
2

9

Thu Sep 19

  • EoPL Section 1.3, 1.4
  • TSPL Sections 2.9 and 3.5 (you can skip the parts that use define-syntax for now)
  • Section 18.4 of Data Structures and Problem Solving using Java by Mark Weiss (CSSE 230 textbook).
  • A7b (problems 5-7) due today.
  • Nothing is due on Friday (Winter, 2018-19). The main reason for this is that both A8 problems are challenging,
  • OO-behavior using Scheme basics (make-stack)
  • Pascal triangle solution
  • various examples and practice problems (list of procedures, mutation, reverse)
2

10

Fri Sep 20

  • EoPL 2.1
  • A8 is due Monday. I recommend that you finish one problem on Friday, and the other during the weekend, so you can use Monday for exam review.
    You are not allowed to use a late day for A8, due to the exam on Tuesday. You can earn a late day by finishing early.
  • procedural abstraction
  • list-recur
3

11

Mon Sep 23

  • Review for Tuesday's exam. Get some sleep Monday night, and/or a nap on Tuesday so you can think well on the exam.
    You'll need to be alert enough to be creative.
  • Optional exam review session 6-8 PM in O159. Led by Joanna Garrett and one or two of the TAs.
  • Assignment 8
  • A8 test code for off-line testing
  • Don't forget the assignment from the end of the Day 10 class: Come up with a procedure for which list-recur makes it easier to write, and figure out which of the in-class examples is a bad idea.
  • CWA intro, part 2
  • More on list-recur
  • binding (definition), use (occurrence)
  • Lambda-calculus grammar.
3

12

Tue Sep 24

 
  • Fall Exam 1 is Tuesday evening, 7:00-9:30 PM.
    Exam Rooms
  • There will be class Tuesday and Thursday. (We will cancel class on a different day later in the term)
  • Will cover HW 1-8, lectures 1-10 (but not the procedural abstraction stuff), EoPL-1, EoPL chapter 1, Assigned readings from TSPL.
  • Allowed resources:
    • Written part: No resources allowed except your brain and a writing implement.
    • Computer part: your notes and code plus a text editor and a Scheme interpreter, grading server, TSPL, EoPL, EOPL-1, programs you have written this term, plus this term's course web pages, Piazza and Moodle pages.
  • Bring your computer to the exam, so you can debug and submit your solutions to the grading program
  • DURING THE REGULAR MORNING CLASS TIME:
  • free and bound variables
  • Variable definition and use
  • lexical address definition (depth, position)
  • code for occurs-bound?
  • (If there is time) efficient reverse and reverse!
  • efficient rotate
3

13

Thu Sep 26

  • EoPL 2.2
  • Answers to student questions about Exam 1.
  • Discussion of choosing a partner
  • lexical-address exercise: examine the answer together
  • computation in the lambda-calculus
  • Y combinator
  • syntactic extension definition, examples in other languages
  • core forms and syntactic expansion
3

14

Fri Sep 27

  • TSPL 3.1
 
  • define-syntax intro
  • define-syntax examples (live coding)
4

15

Mon Sep 30

  • EoPL 2.3
  • Read the instructions for the interpreter team member preference survey in the Day 15 class notes, so you can understand the basis of partner selection.
  • review of (abstract) datatypes and representations
  • many representations of non-neagative integers
  • Composite datatypes (array, record, union)
  • define-datatype and cases
4

16

Tue Oct 1

  • EoPL 2.4
  • Assignment 11
  • A11 test code for off-line testing
  • A11a (problems 1-3) are due WednesdayThursday (changed because of the Careeer Fair) at 11:59 PM
  • More on define-datatype
  • parsing LcExpressions
  • global environment and local environments
4

17

Thu Oct 3

  • Catch up on reading assignments if you are behind.
  • Recommendation: Begin A11b today. It is a large assignment. And it's easy to do several of the cases in a few minutes each.
  • lambdas, procedures, and closures
  • Environments and closures
  • E&C diagrams
4

18

Fri Oct 4

  • EoPL 2.5
  • Environments and closures examples
5

19

Mon Oct 7

  • EoPL 3.1, 3.2
  • Assignment 12 written problem (Turn in hard copy at the beginning of class time)
    No late days may be earned or used for this written problem.
  • You can do this assignment individually or with your interpreter partner.
    If you do it together, submit one paper with both of your names.
  • Warm-up problems for E&C practice for A12 and the exam.
    Do them yourself, then look at the solutions.
  • Solution to warm-up problem 1
    Solution to warm-up problem 2
  • A12 solution
  • Environment ADT
  • Environment representation/implementation possibilities
5

20

Tue Oct 8

  • TSPL 5.7 (skip the parts about call/cc)
  • A11b (problem 4) due Tuesday at 11:59 PM
    I recommend that you get most of it done during the previous week and weekend; it is a big assignment.
  • Plan for A13: You and your partner should plan your work on A 13.
    Before the break, you should at least get together to be sure that you understand the A13 starting code, and to schedule the times when you will meet.
    It is a good idea to get some simple parts of the assignment working before the break.
  • Interpreter initial framework (review and student questions)
  • Add if, and lambda to the interpreted language
  • memoization
6

21

Mon Oct 14

  • EoPL 6.1 (skim to get the basic ideas; don't get too bogged down in the details)
 
  • Multiple return values in Scheme
  • Intro to continuations and CPS.
6

22

Tue Oct 15

 
  • Assignment 13
    First interpreter milestone. To be done with your team (preferably pair programming together).
    For this assignment I am allowing a "grace day" (that is, a free late day) until Wednesday at 11:59PM, but I recommend that you finish it on Tuesday, so that you have plenty of time for A14.
  • A13 test code for off-line testing
  • Writing procedures in CPS
6

23

Thu Oct 17

 
  • Complete the A13 participation survey (Moodle) by 11:55 PM.
    Three multiple-choice questions and one free-form comment question. The comment question is the most important part.
  • E&C portion of Exam 2 (30 minutes)
  • For some environments and closures problems from previous terms' exams, see Day 30 Resources and warm-up problems in Day 19 Homework column.
  • Article: Continuation-Passing Style and why JavaScript developers might be interested in it
6

24

Fri Oct 18

  • EoPL 3.3, 3.4
  • Fall, 2019: HW4 due date postponed until Saturday.
  • Assignment 14 (team assignment)
  • A14 test code for off-line testing
  • A15 is an individual assignment;
  • More CPS examples
  • Succeed and fail continuations
7

25

Mon Oct 21

  • EoPL 3.5, 3.6
  • Skim EoPL 6.2, 6.3
  • A14 participation survey (on Moodle) due Monday at 11:55 PM
  • Add letrec to the interpreted language
  • (if not done day 24) CPS pitfalls
7

26

Tue Oct 22

  • EoPL 4.1-4.3
 
  • 3rd approach to letrec implementation: syntax-expand
  • Exam specification
  • Quick CPS summary
  • Add set! to the interpreter: begin the implementation of references
  • References: apply-env-ref and implementations
  • cells
7

27

Thu Oct 24

  • EoPL 4.1-4.3
  • Assignment 15 New due date for Fall, 2019
    This is an individual assignment that does not depend on A13 or A14.
  • A15 test code for off-line testing
  • Day 24 slides included a description of the extra credit interpreter problem. If you do it, you must complete and demonstrate it to me by the Wednesday of final exam week.
  • Continue working with your partner on the interpreter project (A16 is next)
  • rib-cage approach to references
  • memory model (basic idea, no details)
  • Differences between set! and define.
  • Receivers
  • Escape Procedures
  • Introduction to call-with-current-continuation (a.k.a. call/cc)
  • call/cc examples
7

28

Fri Oct 25

  • EoPL 5.1, 5.2
 
  • No class meeting Fall, 2019
8

29

Mon Oct 28

  • TSPL 3.3, 3.4
  • Review for Tuesday's exam. Get some sleep tonight, and/or a nap on Tuesday so you can think well on the exam.
    You'll need to be creative.
  • Assignment 16 11:59 PM (team) 3rd interpreter milestone (the smallest interpreter milestone)
  • A16 test code for off-line testing
  • You may not use a late day for this assignment, due to the exam on Tuesday. I recommend that yo finish this assignment by Saturday, so that you have a lot of time to prepare for the exam.
  • call/cc examples
8

30

Tue Oct 29

 
  • A16 Participation survey on Moodle. Due Wednesday at 11:55 PM. (individual assignment)
  • Exam 2 is Tuesday evening, 7:00-9:30 PM.
    There will be a class meeting Tuesday morning.
    • Written part: Closed book and notes.
    • Computer part: your notes plus a text editor and Petite Chez Scheme interpreter, grading server, TSPL, EoPL, programs you have written, plus this term's course web pages.
  • Bring your computer to the exam, so you can submit your solutions to the grading program
  • Material for the exam: HW 7-16, Lectures 9-26, readings through Day 25.
    More details in Session 26 slides.
  • DURING THE REGULAR TUESDAY MORNING CLASS TIME:
  • More call/cc examples
  • introduce continuation ADT (representation using define-datatype)
8

31

Thu Oct 31

   
  • Comments and questions on exam problems
  • Live coding: transform CPS code to datatype representation.
8

32

Fri Nov 1

 
  • Fall, 2019: due-date for A17a postponed to Monday, Nov 4.
  • A17 has two parts. A17a is due today. It would have been due on Thursday, but because of the exam, I made it Friday.
    However, I recommend that you also make some progress on A17b by the end of the day.
  • no class meeting today (Fall, 2019)
  • More call/cc examples I found these examples, copied them here (with attribution). I looked at the details of some of them (but not all).
    If you find additional good examples elsewhere, tell me and I will add them to this file.
9

33

Mon Nov 4

 
  • Assignment 17 4th interpreter milestone (team). A VERY substantial assignment that is worth more points than any other assignment in the course.
  • A17 test code for off-line testing
  • A17b is due today.
  • Fall, 2019: due-date for A17b postponed to Thursday, Nov 7.
  • Finish the CPS conversion to data structures representation of continuations (live coding)
9

34

Tue Nov 5

   
  • Interpreter in CPS form
  • example: fact with call/cc
9

35

Thu Nov 7

  • TSPL Section 12.11
  • A18a is due today
  • Fall, 2019: due-date for A18a postponed to Monday, Nov 11.
  • Call/cc implementation in the interpreter
  • Imperative form
9

36

Fri Nov 8

 
  • Complete the A17 participation survey (Moodle) by 11:55 PM Saturday.
  • Exam preview
  • Imperative form
  • Engines
10

37

Mon Nov 11

 
  • Assignment 18 (team)
  • A18 test code for off-line testing
  • A18b is due today
  • Fall, 2019: due-date for A18b postponed to Thursday, Nov 14.
  • Engines wrapup
  • How to do reference parameters
  • Coroutines
10

38

Tue Nov 12

   
  • No class meeting today.
  • I'll be in my office to assist students with A18.
10

39

Thu Nov 14

 
  • Course Evals
  • Questions about the final exam?
  • call/cc examples
10

40

Fri Nov 15

 
  • Complete the A18/overall project survey (Moodle) by 11:55 PM Saturday.
  • Overall project and partner survey.
    On previous surveys I have asked for a small amount of info.
    This one is much more extensive. Expect to spend longer on it.
    100 points.
  • No class meeting today.
  • I'll be in my office to assist students with A18, A19.
    A19 is not an official assignment; it is practice for the final exam.
  • The final exam is Monday evening, Nov 18 at 6:00 PM in Rooms TBA
  • A list of possible exam topics is in the Session 36-38 slides (has been updated for fall, 2019).
  • If you have more questions about exam expectations, ask in the exams forum on Piazza
  • Rooms for final exam:
    G308 A - D
    G310 F - K
    G317 L - Sanchez
    G315 Scheumann - Z