CSSE 304 – Programming Language Concepts

Winter, 2019-20 (202020) Schedule Overview updated Mon Mar 2 at 3:28:42 PM

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 Dec 2

  • (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 perhaps some changes to assignment due dates.
  • Instructor intro video (6:40) is on Moodle.
  • Read the Syllabus It has been updated for Winter term, 2019-20
  • 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 2019-20 Wednesday, Jan 8 and Wednesday, Feb 5; 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
  • TA lab hours in F217
    Click here for personnel and location details.
    OVERVIEW:
  • Finding course materials on the web
  • Quick Scheme overview
  • Hands-on Scheme introduction
1

2

Tue Dec 3

  • 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 also may get better error messages from the offline tests.
  • 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 Dec 5

  • 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 Dec 6

  • 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 9

  • 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
2

6

Tue Dec 10

  • 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 12

  • 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 13

  • 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 16

  • 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.
  • OO-behavior using Scheme basics (make-stack)
  • Pascal triangle solution
  • various examples and practice problems (list of procedures, mutation, reverse)
3

10

Tue Dec 17

  • EoPL 2.1
  • A8 only contains two problems, but both are very challenging, so nothing is due today.
    A8 is due on Wednesday.
  • Assignment 8
  • A8 test code for off-line testing
  • procedural abstraction
  • list-recur
3

11

Thu Dec 19

 
  • If you choose to use a late day for A9, which I don't recommend, you can submit it until the end of December 30 and only use one late day.
  • 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.
  • More on list-recur
  • binding, definition, use, free and bound variables
  • code for occurs-bound?
  • (if there is time)lexical address definition (depth, position)
3

12

Fri Dec 20

 
  • Advance warning: A10 is a substantial assignment. If you find that you are bored sometime during the break, you may want to do part of A10 then.
  • Assignment 9
  • A9 test code for off-line testing
  • efficient reverse and reverse!
  • efficient rotate
  • Variable definition and use
  • lexical address definition (depth, position)
4

13

Mon Jan 6

  • EoPL 2.2
  • Joanna Garrett will hold an Exam 1 review session 8:00-10:00 PM today in the Percopo classroom.
  • A10 would normally be due today. Because of the break, I delayaed it until Tuesday,
  • 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 Jan 7

  • Review for Wednesday's exam. Get some sleep tonight, and/or a nap on Wednesday so you can think well during the exam.
    You'll need to be creative.
  • TSPL 3.1
  • Assignment 10
  • A10 test code for off-line testing
  • You are not allowed to use a late day for this assignment. But you may earn a late day by submitting early.
  • Winter Exam 1 is Wednesday evening, 7:00-9:30 PM.
  • Room assignments for tomorrow's exam, based on last name:
    A-F G308, H-K G310, L-P G317, S-Z G315
  • Exam 1 will cover HW 1-10, lectures 1-12, 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, 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 PLC grading server.
  • DURING THE Tuesday MORNING CLASS TIME:
  • define-syntax another example: for (live coding)
  • datatypes review
4

15

Thu Jan 9

  • 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 at 3:00 PM today.
    Available Thursday morning, after you can see your exam score.
  • representation-independent code
  • very quick intro: define-datatype
4

16

Fri Jan 10

  • EoPL 2.4
 
  • Brief post-exam discussion.
  • More on define-datatype
  • parsing LcExpressions
  • intro: global environment and local environments
5

17

Mon Jan 13

  • Catch up on reading assignments if you are behind.
  • lambdas, procedures, and closures
  • Environments and closures
  • E&C diagrams (intro) * Environments and closures examples
  • (if there is time) Environment ADT and some implementation possibilities.
5

18

Tue Jan 14

  • EoPL 2.5
  • A12 is due Wednesday at noon.
    See day 19 for details.
  • Assignment 11. Do part b with your interpreter project partner.
  • A11 test code for off-line testing
  • A11a (problems 1-3) due today 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.
  • Environment ADT
  • Environment representation/implementation possibilities
5

19

Thu Jan 16

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

20

Fri Jan 17

  • 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 with your interpreter project partner.
  • Add let, if, and lambda to the interpreted language
6

21

Mon Jan 20

  • EoPL 6.1 (skim to get the basic ideas; don't get too bogged down in the details)
  • Part of today's class meeting: 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.
  • E&C exam
6

22

Tue Jan 21

 
  • Assignment 13
    First interpreter milestone. To be done with your team (preferably pair programming together).
  • A13 test code for off-line testing
  • memoization
  • Multiple return values in Scheme
  • Control flow
  • What is a continuation?
6

23

Thu Jan 23

 
  • 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.
  • Tail position and tail-recursive code.
  • CPS
  • Continuations: Two possible representations.
  • Live coding: represent continuations by scheme procedures.
6

24

Fri Jan 24

  • EoPL 3.3, 3.4
  • Assignment 14 (team assignment)
  • A14 test code for off-line testing
  • A15 is an individual assignment. Not super long, but some parts are very challenging; it's a good idea to do most of it during the weekend.
  • Live coding: represent continuations by data structures.
  • (Introduction: Add letrec to the interpreted language)
  • No new slides or handout today. If there is time, we may look at Day 25 slides.
    Announcements
     
7

25

Mon Jan 27

  • EoPL 3.5, 3.6
  • Skim EoPL 6.2, 6.3
  • A14 participation survey (on Moodle) due Monday at 11:55 PM.
  • Continue working with your partner on the interpreter project (A16 is next, and it does not depend on A15)
  • letrec implementation
  • Introduction: Add set! to the interpreter: begin the implementation of references.
7

26

Tue Jan 28

  • EoPL 4.1-4.3
  • 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
  • Winter 2020: I'm giving a "grace day" for A15: You can submit on Wednesday without using a late day. If you want to earn a late day, you still must submit on Monday. Yoi should continue working with your partner on A16 even if you have not finished A15.
  • References: apply-env-ref and implementations
  • cells
  • rib-cage approach to references
  • memory model (basic idea, no details)
  • Differences between set! and define.
7

27

Thu Jan 30

  • 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 Wednesday of final exam week.
  • 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
7

28

Fri Jan 31

  • EoPL 5.1, 5.2
  • 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
  • No class meeting today (Winter 2019-20)
  • I plan to be in my office during the regular class times (10:00-12:50) to help students with interpreter debugging.
8

29

Mon Feb 3

  • TSPL 3.3, 3.4
  • Exam review session. Joanna Garrett and two of the TAs will hold a review session Sunday at 6:00 PM.
  • A16 Participation survey on Moodle. Due at 11:55 PM. (individual assignment)
  • Planning how you'll do the reference-parameters part of A17b before you begin A17a may save you a lot of time and effort. Draw pictures of how your references and parameter passing will work.
  • call/cc examples
8

30

Tue Feb 4

 
  • Assignment 17 4th interpreter milestone (team).
  • A17 test code for off-line testing
  • Assignment A17a (the basic assignment, without lexical address or ref parameters) is due today.
     
  • You are not allowed to use a late day for A17a. But you may earn a late day by submitting early.
  • Exam 2 is Wednesday evening, 7:00-9:30 PM.
    • 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 9-17a, Lectures 9-26, readings through Day 25.
  • No class meeting Tuesday (Winter 2019-20)
  • I plan to be in my office during the regular class times (10:00-12:50) to help students with interpreter debugging.
8

31

Thu Feb 6

 
  • Many students find that A17b is the most difficult assignment of the term. Start your design early!
  • Exam discussion
  • Connvert interpreter to CPS
8

32

Fri Feb 7

   
  • Add call/cc to the interpreted language.
  • fact with call/cc
  • 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 10

 
  • A17b is due today
  • No class meeting today (Winter 2019-20)
  • I plan to be in my office during most of the regular class times (10:30-12:50) to help students with interpreter debugging.
9

34

Tue Feb 11

 
  • 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 13

  • TSPL Section 12.11
 
  • More imperative form
  • ref parameters solution (in-class only)
 
9

36

Fri Feb 14

 
  • Exam preview
  • Engines
10

37

Mon Feb 17

   
  • Course Evals
  • How to do reference parameters
  • Coroutines
10

38

Tue Feb 18

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

39

Thu Feb 20

 
  • Due today : 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.
    Do it even if you don't have a partner.
    50 points.
  • An opportunity for you to ask questions before the final exam.
  • call/cc examples
 
10

40

Fri Feb 21

 
  • No class meeting today. I will be available in my office for help on A19.
  • The final exam is Monday evening, Feb 24 at 6:00 PM in the same rooms as the previous exams.
  • A list of possible exam topics is in the Session 35-36 slides (has been updated for fall, 2019).
  • If you have more questions about exam expectations, ask in the exams forum on Piazza