CSSE 304 – Programming Language Concepts

Winter, 2018-19 (201920) Schedule Overview updated Fri Nov 16 at 3:08:06 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 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 fall, 2018
  • 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, Sept 18 and Tuesday, Oct 16;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 (not yet updated for Winter, 2018-19)
    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
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 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 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. That's why nothing is due Wednesday this week.
  • 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-6) 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 11

  • EoPL 2.1
  • Originally I had A8a due today, and 8b due Monday. I later decided that having all of A8 due Monday will give you more flexibility in scheduling your time for A8 and for exam preparation. A8 only contains 3 problems, but all are very challenging. Even though you are not required to do so, I recommend that you do at least one of them on Friday.
    Finally, 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

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, scope, free and bound variables
  • code for occurs-bound?
  • reverse
  • Variable definition and use
  • lexical address definition (depth, position)
3

12

Fri Dec 14

   
  • DURING THE REGULAR MORNING CLASS TIME:
  • efficient reverse and reverse!
  • efficient rotate
4

13

Mon Dec 17

  • EoPL 2.2
  • Answers to student questions about Exam 1.
  • 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
4

14

Tue Dec 18

  • TSPL 3.1
  • Fall Exam 1 is Tuesday evening, 7:00-9:30 PM.
    G310 (Last name Abernathy - Glave)
    G315 (Grayless-Phillips)
    G317(Sadler - Zheng)
  • 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 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
  • define-syntax intro
  • define-syntax examples (live coding)
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.
  • review of (abstract) datatypes and representations
  • many representations of non-neagative integers
  • Composite datatypes (array, record, union)
  • define-datatype and cases
4

16

Fri Dec 21

  • EoPL 2.4
  • More on define-datatype
  • parsing LcExpressions
  • global environment and local environments
5

17

Mon Jan 7

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

18

Tue Jan 8

  • EoPL 2.5
  • Environments and closures examples
5

19

Thu Jan 10

  • EoPL 3.1, 3.2
  • A12 solution
  • Environment ADT
  • Environment representation/implementation possibilities
5

20

Fri Jan 11

  • 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.
  • Interpreter initial framework
  • Add let to interpreted language
6

21

Mon Jan 14

  • EoPL 6.1 (skim to get the basic ideas; don't get too bogged down in the details)
 
  • Add if, and lambda to the interpreted language
  • Multiple return values in Scheme
  • memoization
6

22

Tue Jan 15

 
  • Assignment 13
    First interpreter milestone. To be done with your team (preferably pair programming together).
    Due to homecoming weekend, you are allowed to submit as late as Sunday and only use one late day.
  • A13 test code for off-line testing
  • Memoized fibonacci
  • Writing procedures in CPS
6

23

Thu Jan 17

 
  • Complete the A13 participation survey (Moodle) by 11:55 PM Monday.
    Three multiple-choice questions and one free-form comment question. The comment question is the most important part.
  • Writing procedures in CPS
  • No new slides today; see Day 22
    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 Wednesday at 11:59 PM
  • A14 test code for off-line testing
  • A15 is an individual assignment; if you want to start it during the break so that you are ahead, feel free to do so. ALl of the background material for A15 should be covered in class before the break.
  • E&C portion of Exam 2
  • For some environments and closures problems from previous terms' exams, see Day 26 Resources and warm-up problems in Day 21 Homework.
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
  • More CPS examples
  • Succeed and fail continuations
7

26

Tue Jan 22

  • EoPL 4.1-4.3
  • Exam 2 is Tuesday evening, 7:00-9:30 PM.
    G310 (A-G), G315 (H-P) and G317 (S-Z)
    • Written part: Closed book and notes. Includes E&C problem.
    • 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 a printout of your A14 code..
    See the Day 25 announcements for details.
  • 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:
  • Add letrec to the interpreted language
  • (if not done day 25) CPS pitfalls
7

27

Thu Jan 24

  • EoPL 4.1-4.3
  • Tuesday's 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)
  • Comments and questions on exam problems
  • Quick CPS summary
  • Add set! to the interpreter: begin the implementation of references
  • 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
  • No class meeting, fall, 2018
 
8

29

Mon Jan 28

  • TSPL 3.3, 3.4
  • Receivers
  • Escape Procedures
  • Introduction to call-with-current-continuation (a.k.a. call/cc)
  • call/cc examples
8

30

Tue Jan 29

 
  • A16 Participation survey on Moodle. Due Wednesday at 11:55 PM. (individual assignment)
  • Suggested timing strategy for A17:
    Tuesday-Wednesday: set! and define
    Thursday-Friday: reference parameters
    Weekend: lexical-address
    Monday: Available if you need more time for one of the above
  • More call/cc examples
8

31

Thu Jan 31

   
  • 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

 
  • 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
  • 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
  • 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.
  • (if time) Introduce Imperative form.
9

35

Thu Feb 7

  • TSPL Section 12.11
 
  • Final Exam specification
  • Imperative form
9

36

Fri Feb 8

   
  • Engines
10

37

Mon Feb 11

 
  • No formal class meeting (Fall, 2018)
  • I will be in the classroom to assist students with A18.
  • Slides
    Announcements
    No handout today; everything is in the slides and/or live coding session.
     
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
  • call/cc examples
  • Questions about the final exam?
10

39

Thu Feb 14

 
  • No formal class meeting (Fall, 2018)
  • I will be in the classroom to assist students with A19.
10

40

Fri Feb 15

   
  • An opportunity for you to ask questions before the final exam.
  • Attendance is not required.
  • 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