CSSE 304 – Programming Language Concepts

Winter, 2018-19 (201920) Schedule Overview updated Tue Feb 26 at 5:43:17 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
1

1

Mon Nov 26

  • (Schedule is under major construction before the term begins)
  • As the course progresses, there will be updates to daily topics, resources, announcements, and slides, and some changes to assignment due dates.
  • Instructor intro video (6:40) is on Moodle.
  • Read the Syllabus It has been updated for Winter term, 2018-19
  • 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 Winter 2018-19 Tuesday, Dec 18 and Tuesday, Jan 22; 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 (updated for Winter, 2018-19)
    Click here for personnel and location details.
    OVERVIEW: Connor Boyle's schedule as LC tutor for CSSE courses.
  • Finding course materials on the web
  • Quick Scheme overview
  • Hands-on Scheme introduction
1

2

Tue Nov 27

  • 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 Tuesday'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 can also get better error messages from the offline tests, and the ability to trace your code.
  • 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.
  • if and cond
  • lambda
  • List structure, recursive procedures
  • Continue live Scheme intro
1

3

Thu Nov 29

  • 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

Fri Nov 30

  • TSPL sections 3.2, 4.1-4.4, and 6.1-6.4
  • EOPL-1 (handout) pages 67-74
  • cons, list, append: box-and-pointer diagrams
  • Additional recursive procedures
  • map and apply
2

5

Mon Dec 3

  • TSPL Sections 5.1-5.4
  • EoPL (3rd edition, the actual physical book) Foreword and Preface
  • Assignment 4
  • 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
2

6

Tue Dec 4

  • 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 done on Monday.
  • 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)
  • A6a (problems 1-7) due Wednesday at 11:59 PM
 
2

7

Thu Dec 6

  • 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)
  • Assignment 6
  • A6 test code for off-line testing
  • A6a (problems 1-7) due Wednesday at 11:59 PM
  • A6b (problems 8-12) due Thursday at 11:59 PM
  • 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

Fri Dec 7

  • EoPL Section 1.2.2-1.2.4
  • Assignment 7
    A substantial assignment with a couple of very difficult problems (#4 and #7).
    Finish A6b early and begin A7 early if you can.
  • A7 test code for off-line testing
  • A7a (problems 1-4) due today
  • Exam 1 specification
  • s-list procedures
  • case-lambda
  • efficient compose
3

9

Mon Dec 10

  • 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 Wednesday (Winter, 2018-19). The main reason for this is that both A8 problems are challenging, so you should plan to get a good start on Tuesday and Wednesday.
  • OO-behavior using Scheme basics (make-stack)
  • various examples and practice problems (list of procedures, mutation, reverse)
3

10

Tue Dec 11

  • EoPL 2.1
  • A8 only contains two problems, but both are very challenging.
    Even though you are not required to do so, I recommend that you do at least one of them by Wednesday.
  • procedural abstraction
  • list-recur
3

11

Thu Dec 13

  • 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.
  • Optional exam review session 8-10 PM in O159. Led by Connor Boyle and one or two of the TAs.
  • More on list-recur
  • binding, definition, use, free and bound variables
  • code for occurs-bound?
  • (if there is time) Lexical address
3

12

Fri Dec 14

 
  • Nothing is due today. However, I suggest that you do some of A9, so that during the weekend you can review for the exam and begin A10.
  • efficient reverse and reverse!
  • efficient rotate
  • Variable definition and use
  • lexical address definition (depth, position)
4

13

Mon Dec 17

  • EoPL 2.2
  • Connor Boyle will hold an Exam 1 review session at 8:00 PM today in O159.
  • Advance warning: A10 is a substantial assignment. Start early!
  • Assignment 9
  • You are not allowed to use a late day for this assignment. But you may earn a late day by submitting early.
  • A9 test code for off-line testing
  • Answers to student questions about Exam 1.
  • Discussion of choosing a partner
  • syntactic extension definition, examples in other languages
  • core forms and syntactic expansion
  • define-syntax examples
4

14

Tue Dec 18

  • TSPL 3.1
  • Winter Exam 1 is Tuesday evening, 7:00-9:30 PM.
    G315 Section 01 plus Bock and Byers
    G310 Section 02
    G317 Section 03
    G308 Students with extra-time accommodations.
  • There will be class Tuesday and Thursday. (We will cancel class on a different day later in the term)
  • Will cover HW 1-9, lectures 1-11 (but not free, bound, lexical-address), 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 Petite Chez Scheme interpreter, grading server, TSPL, EoPL, programs you have written, 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:
  • define-syntax another example: for (live coding)
  • datatypes review
  • representation-independent code
  • very quick intro: define-datatype
4

15

Thu Dec 20

  • 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.
  • Interpreter project partner preference survey (on Moodle) due friday at 11:55 PM.
  • Brief post-exam discussion.
  • More on define-datatype
  • parsing LcExpressions
4

16

Fri Dec 21

  • EoPL 2.4
  • Assignment 10
  • A10 test code for off-line testing
  • You can submit this until Friday, Jan 4 and use a single late day (if you have at least one remaining late day).
  • computation in the lambda-calculus
  • Y combinator
  • intro: global environment and local environments
  • lambdas, procedures, and closures
  • Environments and closures
  • E&C diagrams (intro)
5

17

Mon Jan 7

  • Catch up on reading assignments if you are behind.
  • Assignment 11. Do part b with your interpreter project partner.
  • A11 test code for off-line testing
  • A11a (problems 1-3) due at 11:59 PM.
  • Recommendation: Begin A11b today (or sooner). It is a large assignment. And it's easy to do several of the cases in a few minutes each.
  • Interpreter project partners for Winter, 2018-19.
  • Environments and closures examples
  • (if there is time) Environment ADT and some implementation possibilities.
5

18

Tue Jan 8

  • EoPL 2.5
  • Environment ADT
  • Environment representation/implementation possibilities
5

19

Thu Jan 10

  • EoPL 3.1, 3.2
 
  • A12 solution
  • Interpreter initial framework
  • Add let to interpreted language
5

20

Fri Jan 11

  • TSPL 5.7 (skip the parts about call/cc)
  • A11b (problem 4) due 11:59 PM
    It's a very large assignment (probably the largest of the term). Do it alone or with your interpreter project partner.
  • Add let, if, and lambda to the interpreted language
  • memoization
6

21

Mon Jan 14

  • EoPL 6.1 (skim to get the basic ideas; don't get too bogged down in the details)
 
  • Multiple return values in Scheme
  • What is a continuation?
  • Writing procedures in CPS
6

22

Tue Jan 15

 
  • Assignment 13
    First interpreter milestone. To be done with your team (preferably pair programming together).
  • A13 test code for off-line testing
  • More CPS procedures
  • Succeed and Fail continuations
6

23

Thu Jan 17

 
  • Complete the A13 participation survey (Moodle) by 11:55.
    Three multiple-choice questions and one free-form comment question. The comment question is the most important part.
  • CPS wrap-up.
  • E&C portion of Exam 2 (30 minutes)
  • For some environments and closures problems from previous terms' exams, see Day 26 Resources and warm-up problems in Day 18 Homework column.
  • Slides
    Announcements
    No new notes for today; we'll do everything online.
     
  • Article: Continuation-Passing Style and why JavaScript developers might be interested in it
6

24

Fri Jan 18

  • EoPL 3.3, 3.4
  • Assignment 14 (team assignment)
    Due to the delay of previous assignments' due dates, this is now due Sunday at 11:59 PM
  • A14 test code for off-line testing
  • A15 is an individual assignment. Not super long, but very challenging; it's a good idea to start it during the weekend.
    All of the background material for A15 should be covered in class during week 6.
  • (Winter 2018-19) No regular class meeting.
  • I will be available in G308 hours 2-4 to assist students with A14 and A15, in addition to regular office hours.
7

25

Mon Jan 21

  • EoPL 3.5, 3.6
  • Skim EoPL 6.2, 6.3
  • 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.
  • Optional exam review session 8-10 PM in O159. Led by Connor Boyle and one or two of the TAs.
  • A14 participation survey (on Moodle) due Monday at 11:55 PM.
  • Get a good start on A15 during the weekend.
  • Convocation schedule: CSSE 304 classes meet at 8:50, 9:35, 10:20.
  • (if not done earlier) CPS pitfalls
  • Introduction: Add letrec to the interpreted language
7

26

Tue Jan 22

  • EoPL 4.1-4.3
  • Exam 2 is Tuesday evening, 7:00-9:30 PM. There will be a class meeting Tuesday morning. (I'll cancel class on a different day)
    • 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-14, Lectures 9-21, readings through Day 24.
  • DURING THE REGULAR TUESDAY MORNING CLASS TIME:
  • letrec implementation
  • Introduction: Add set! to the interpreter: begin the implementation of references
7

27

Thu Jan 24

  • EoPL 4.1-4.3
  • Previous slides included a description of the extra credit interpreter problem. If you do it, you must complete and demonstrate it to me by the Thursday of final exam week.
  • Continue working with your partner on the interpreter project (A16 is next, and it does not depand on A15)
  • Comments and questions on exam problems
  • References: apply-env-ref and implementations
  • cells
  • rib-cage approach to references
  • memory model (basic idea, no details)
  • Differences between set! and define.
7

28

Fri Jan 25

  • EoPL 5.1, 5.2
  • Assignment 15 Due at 11:59 PM.
    This is an individual assignment that does not depend on A13 or A14.
  • A15 test code for off-line testing
  • Warm-up for call/cc (review of continuations. Receivers and escape procedures)
  • Introduction to call-with-current-continuation (a.k.a. call/cc)
  • call/cc examples
8

29

Mon Jan 28

  • TSPL 3.3, 3.4
  • Assignment 16 11:59 PM (team) 3rd interpreter milestone (the smallest interpreter milestone)
  • This is by far the smallest of the interpreter milestones; I suggest that you finish it a day or two early so that yo ucan get an early start on the larger A17.
  • A16 test code for off-line testing
  • call/cc examples
8

30

Tue Jan 29

 
  • A16 Participation survey on Moodle. Due Wednesday at 11:55 PM. (individual assignment)
  • (Winter) No class meeting today. Hopefully this will free up time to get going on A17. In my office 9:15-11:30, and in the afternoon.
 
8

31

Thu Jan 31

 
  • 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
  • Assignment A17a (the basic assignment, without lexical address or ref parameters) is due today.
  • More call/cc examples
  • introduce continuation ADT (representation using define-datatype)
8

32

Fri Feb 1

   
  • Live coding: transform CPS code to datatype representation.
  • Slides
    Announcements
    Class notes

     
  • 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 Feb 4

 
  • A17b is due today
  • Interpreter in CPS
  • Add call/cc to the interpreted language
  • fact with call/cc
9

34

Tue Feb 5

 
  • Complete the A17 participation survey (Moodle) by 11:55 PM Wednesday
  • (Fall, 201) Suggested strategy for A18:
    Tuesday-Wednesday: Convert to CPS with data-structures continuations
    Thursday-Friday: Debug your CPS interpreter
    Weekend: Add call/cc and exit. If CPS is correct, this will not be difficult.
  • Imperative form.
9

35

Thu Feb 7

  • TSPL Section 12.11
  • No class meeting today. Instructor avaialble for help on A18
 
9

36

Fri Feb 8

   
  • Final Exam topics (More about the exam next Tuesday and Friday)
  • ref parameters in the interpreter
  • Engines
10

37

Mon Feb 11

 
  • A18b is due today.
  • No class meeting today. Instructor avaialble for help on A18
 
10

38

Tue Feb 12

 
  • Due Tuesday (actually before 2:00 AM Wednesday): 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 about an hour on it.
    100 points.
  • Course Evals
  • How to do reference parameters
  • Coroutines
10

39

Thu Feb 14

 
  • No class meeting today. I will be available in G308 for help on A19
 
10

40

Fri Feb 15

 
  • An opportunity for you to ask questions before the final exam.
  • call/cc examples
  • The final exam is Wednesday evening, Nov 14 at 6:00 PM in G219 (A-Geng), 221(Glave-P), 222 (S-Z).
  • A list of possible exam topics is in the Session 35-36 slides (has been updated for fall, 2018).
  • If you have more questions about exam expectations, ask in the exams forum on Piazza