CSSE 304 – Programming Language Concepts

Winter, 2020-21 (202120) Schedule Overview updated Fri Feb 19 at 7:14:08 AM

Significant changes will be made during the week before classes start, including assignment due dates. However, the assignments themselves will not change very much
Many more 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 your Late Day Balance


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 41

Week Session Preparation HW Due Topics Resources
1

1

Mon Nov 30

  • CLASS WILL MEET TODAY
     
  • Video topics (view before class): Course intro, (optionsl) Instructor intro, introduction to Scheme basics (using numbers and procedures; variables, symbols, strings; lists, pairs, begin; defining procedures, trace; local variables, recursive procedures
  • Answers to your questions on the video topics
  • More on list, cons
  • (group) Work together on a HW1 problem.
1

2

Tue Dec 1

  • TSPL Chapter 1 and Sections 2.1-2.2
  • Read the Syllabus It has been updated for winter, 2020. There may be a few more minor changes, especially early in the term.
  • See the note about the reading and exercises in the Assignment 0 document
  • Due Tuesday at noon:
  • Assignment 0 (part of this was due on day 1)
    Hand-in sheet (MSWord version);
    Submit to Moodle Drop Box. You can write on a printed copy and scan it, or you can type your answers in the Word document and submit it.
  • Assignment 0 FAQ
  • Due Tuesday at 11:55 PM:
  • 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 answer the questions on a brief Moodle essay quiz.
  • This is not a programming assignment, so you may not submit it late or earn a late day for submitting early..
  • Video topics lambda, recursive procedures, if, cond, case, offline testing and submission.
  • CLASS WILL MEET TODAY
     
  • Student questions about the course and about Scheme.
  • Running off-line tests
  • lambda
  • Practice writing recursive procedures (together and in breakout rooms)
1

3

Thu Dec 3

  • 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.
  • Video topics cons, list, append, improper lists, list? pair?, more recursive procedures
  • CLASS WILL MEET TODAY
     
  • redefine lambda?
  • Student questions
  • Some thoughts from A0 and A1
  • Accumulators review and a new procedure
  • let and let*
  • Student small groups (positives and all-positive?)
1

4

Fri Dec 4

  • TSPL sections 3.2, 4.1-4.4, and 6.1-6.4
  • EOPL-1 (handout) pages 67-74
  • Video topics map, apply, procedures that take a variable number of arguments.
  • CLASS WILL MEET TODAY
     
  • sort a list using insertion sort
  • Local variables: let and let*
  • let is an application of lambda
  • letrec and named let
2

5

Mon Dec 7

  • TSPL Sections 5.1-5.4
  • EoPL (3rd edition) 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.
  • Video topics andmap, ormap. some A2 solutions (some use map and apply).
  • CLASS WILL MEET TODAY
     
  • Instructor intro, part 2
  • An A3 problem solution
  • largest-in-lists (small groups)
2

6

Tue Dec 8

  • 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 before A4 is due.
  • A5 test code for off-line testing.
  • Note that A6a is due in Wednesday.
  • CLASS WILL NOT MEET TODAY
     
  • Video topics andmap, ormap. vectors, list sharing and mutation.
  • I will be available 9:30-11:30 AM in addition to my regular afternoon office hours). Go to my Zoom office hours link.
2

7

Thu Dec 10

  • 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-11) due Thursday at 11:59 PM
  • CLASS WILL MEET TODAY
     
  • Video topics largest-in-lists (7 solutions), positives, sorted, solutions to A3 and A4 problems.
  • BNF Grammar specification, derivations
  • The CSSE 304 canonical list of grammars
  • Focus on s-lists
  • Today's class may include some live coding, writing code about s-lists. You can get the starting code from here
2

8

Fri Dec 11

  • EoPL Section 1.2.2-1.2.4
  • Assignment 7
  • A7 test code for off-line testing
  • A7a (problems 1-4) due at 11:59 PM
  • (Winter, 2020-21) You can submit on Saturday without using one of your late days.
    Warning: there are not instructor office hours or TA lab hours on Saturdays.
  • CLASS WILL MEET TODAY
     
  • Exam 1 specification
  • s-list procedures
  • Today's class will include live coding, writing code about s-lists. You can get the starting code from here
3

9

Mon Dec 14

  • 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.
  • CLASS WILL MEET TODAY
     
  • Video topics compose, case-lambda, efficiency considerations
  • case-lambda
  • efficient compose
  • OO-behavior using Scheme basics (make-stack)
  • various examples and practice problems (list of procedures, mutation, reverse)
3

10

Tue Dec 15

  • EoPL 2.1
  • CLASS WILL MEET TODAY
     
  • procedural abstraction
  • list-recur
3

11

Thu Dec 17

 
  • 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.
  • CLASS WILL MEET TODAY
     
  • More about Exam 1
  • More on list-recur
  • SOlution to a homework problem
  • binding (definition), use (occurrence)
  • Lambda-calculus grammar and a derivation.
  • free and bound variables
3

12

Fri Dec 18

  • CLASS WILL MEET TODAY
  • code for occurs-bound?
  • (if there is time)lexical address definition (depth, position)
  • efficient reverse and reverse!
  • efficient rotate
4

13

Mon Dec 21

  • Review for Monday's exam. Get some sleep Sunday night, and/or a nap on Monday so you can think well on the exam.
    You'll need to be alert enough to be creative.
  • Advance warning: A10 is a substantial assignment. Start early!
  • Winter Exam 1 is Monday evening, 6:30-9:00 PM.
  • Exam will cover HW 1-9, lectures 1-10, EoPL-1, EoPL chapter 1, assigned readings from TSPL.
  • Allowed resources:
    • "Written" part (a Moodle quiz): No resources allowed except your brain, blank paper and a pen/pencil, and Moodle.
    • 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.
  • CLASS WILL MEET TODAY
      I will instead cancel classs on Tuesday.
  • Discussion of choosing a partner. It's VERY important that you find your own partner(s) if you can.
  • lexical-address exercise: examine the answer together
  • syntactic extension definition, examples in other languages
  • core forms and syntactic expansion
4

14

Tue Dec 22

  • TSPL 3.1
  • Note for Wednesday, Jan 6: This is the first day of classes after the break. CSSE 304 has no official activities that day. But if you have not already made substantial progress on A10, you should do so today.
  • Better ... Do problems 1 and 2 before the break so that you have plenty of time for the difficult A10 problems after the break.
  • CLASS WILL NOT MEET TODAY
    This is a good topic to present on video instead. You can watch it anytime during the break.
  • Part of A11a is based on this video:
  • Video topics define-syntax, Scheme's syntactic expansion process
  • define-syntax intro
  • define-syntax examples
  • The starting and ending code from the define-syntax video are here.
4

15

Thu Jan 7

  • EoPL 2.3
  • Interpreter project partner preference survey (on Moodle) due today at 3:00 PM.
    Self-chosen teams almost always work better than the teams that I choose. See details in Day 13 slides and Zoom video.
  • Assignment 10
  • A10 test code for off-line testing
  • CLASS WILL MEET TODAY
     
  • review of (abstract) datatypes and representations
  • a representationof non-neagative integers
  • Composite datatypes (array, record, union)
  • define-datatype and cases
4

16

Fri Jan 8

  • EoPL 2.4
  • CLASS WILL MEET TODAY
     
  • More on define-datatype
  • parsing LcExpressions
  • global environment and local environments intro
5

17

Mon Jan 11

  • Catch up on reading assignments if you are behind.
  • Assignment 11
  • A11 test code for off-line testing
  • A11a (problems 1-3) is due Monday at 11:59 PM (Winter, 2020-21)
  • Recommendation: Begin A11b today if you have not already doene so. It is a large assignment, and the first team assignment.
  • CLASS WILL MEET TODAY
     
  • lambdas, procedures, and closures
  • Environments and closures
  • E&C diagrams
5

18

Tue Jan 12

  • EoPL 2.5
  • Recommendation: Begin A12 today while the in-class examples are fresh in your mind.
  • CLASS WILL MEET TODAY
     
  • Video topics A complex E&C example
  • Environments and closures example: letrec
  • Environment ADT specification
  • Environment ADT implementations
5

19

Thu Jan 14

  • EoPL 3.1, 3.2
  • A11b (problem 4) due at 11:59 PM
    I recommend that you get most of it done early in the week; it is a big assignment.
  • For your final submission, one team member should submit, and include the other team member's usernames on the PLC submissions page.
    If a team member did not work on this assignment with you, do not include their username.
  • Plan for A13: You and your team should plan your work on A13.
    Soon 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.
  • CLASS WILL MEET TODAY
     
  • Environment ADT implementations
  • Interpreter starting code overview
5

20

Fri Jan 15

  • TSPL 5.7 (skip the parts about call/cc)
  • A11b Team Survey on Moodle. Due at 11:59 Friday . How are things going for you and your team?
  • Assignment 12 Due Saturday at 11:59 PM Written problem (Submit to drop box on Moodle)
    No late days may be earned or used for this written problem.
  • You can do this assignment individually or with your interpreter team.
    If you do it together, only one of you should submit it, with everyone's name at the top of the page.
    Only submit A12 as a "team" assignment if you are reasonably sure that all team members understand it.
  • Warm-up problems for E&C practice for A12 and the E&C exam on Day 23.
    Do them yourself, then look at the solutions.
  • Solution to warm-up problem 1
    Solution to warm-up problem 2
    Solution to warm-up problem 3
  • CLASS WILL MEET TODAY
     
  • Interpreter initial framework (review and student questions)
  • Add let, if, and lambda to the interpreted language
6

21

Mon Jan 18

  • EoPL 6.1 (skim to get the basic ideas; don't get too bogged down in the details)
  • I recommend that you meet with your team today to make sure that everyone understands what you are supposed to do for A14.
  • CLASS WILL MEET TODAY
     
  • Intro to continuations and CPS.
  • Be sure to watch this video before Friday's classtime:
  • Video topics Writing code in CPS.
  • Memoization
6

22

Tue Jan 19

 
  • 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
  • CLASS WILL MEET TODAY
     
  • Memoization
  • Multiple return values in Scheme
  • More CPS
6

23

Thu Jan 21

 
  • Complete the A13 participation survey (Moodle) by 11:55 PM on Wednesday.
  • Take the E&C EXAM at the beginning of your regular class time. Then you can leave. Students with 50% accommodations can take 45 minutes.
     
  • E&C portion of Exam 2 (30 minutes)
  • Some environments and closures exam problems from recent terms' exams, See also the warm-up problems in the Day 20 Homework column.
  • Article: Continuation-Passing Style and why JavaScript developers might be interested in it
  • The remainder of this document has not been updated since Fall, 2020.
6

24

Fri Jan 22

  • EoPL 3.3, 3.4
  • Assignment 14 (team assignment).
    This is another "free late day" assignment, but don't forget that A15 (individual) is due on Tuesday.
  • A14 test code for off-line testing
  • A15 is an individual assignment;
  • CLASS WILL MEET TODAY
     
  • Extra-credit interpreter assignment is in today's slides.
  • Continuations represented as data structures.
7

25

Mon Jan 25

  • EoPL 3.5, 3.6
  • Skim EoPL 6.2, 6.3
 
  • CLASS WILL MEET TODAY
     
  • Add letrec to the interpreted language
  • (if not done day 24) CPS pitfalls
7

26

Tue Jan 26

  • EoPL 4.1-4.3
  • Assignment 15
    This is an individual assignment that does not depend on A13 or A14.
    Winter 2020-2021: Due date postponed until Wednesday.
    DOn't forget to answer the memoize question from the A15 assignment document.
    Your answer should be in a comment at the top ogf your submission file.
  • A15 test code for off-line testing.
    I removed testcases that involve set?-cps.
  • 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 5:00 PM on Thursday of final exam week.
  • Continue working with your team on the interpreter project (A16 is next)
  • CLASS WILL MEET TODAY
     
  • Exam specification
  • 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.
  • call/cc warm-up (if we have time)/
7

27

Thu Jan 28

  • EoPL 4.1-4.3
 
  • CLASS WILL MEET TODAY
     
  • Receivers
  • Escape Procedures
  • Definition of call-with-current-continuation (a.k.a. call/cc)
  • call/cc examples
7

28

Fri Jan 29

  • EoPL 5.1, 5.2
  • Assignment 16 11:59 PM (team) 3rd interpreter milestone (the smallest interpreter milestone, but tricky to debug.)
    Winter 2020-2021: Due date postponed until Sunday.
  • Warning: If you have your local environments be extensions of the global environment, that will make tracing your code for debugging purposes nearly impossible. I strongly suggest that you separate them (as in the Day 20 slides) before you begin this assignment.
    If you come to me for help, I will probably ask you to trace your code. If the trace is cluttered by the dozens of procedures in the global env, I will ask you to fix that and come back for help later.
  • A16 test code for off-line testing
  • CLASS WILL MEET TODAY
     
  • call/cc examples
8

29

Mon Feb 1

  • 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.
  • A16 Participation survey on Moodle. Due Monday at 11:55 PM. (individual assignment)
    This survey focuses on how team members have helped each other to understand the interpreter.
  • It's a good idea to begin A17 (team assignment) today if you have not already done so.
  • CLASS WILL MEET TODAY
     
  • call/cc examples
8

30

Tue Feb 2

 
  • Exam 2 is Tuesday evening, 7:00-9:30 PM.
    • Moodle part: Closed book, code, and notes. No internet use other than to access the Moodle quiz.
    • 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.
  • CLASS WILL NOT MEET THIS MORNING
  • Use the time to meet with your team to get going on A17, if you have not already done so.
    A17b is a very difficult assignment. Be sure to finish A17a on time, or early if possible
8

31

Thu Feb 4

   
  • CLASS WILL MEET TODAY
     
  • Comments and questions on exam problems
  • Interpreter in CPS form
8

32

Fri Feb 5

 
  • 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.
    Winter 2020-21: Due date posponed to Monday of week 9.
  • CLASS WILL MEET TODAY
     
  • example: fact with call/cc
  • Add call/cc to interpreted language.
  • Slides    Slides PDF
  • 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 8

 
  • 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. Winter 2020-21: Due date postponed to Saturday of week 9.
  • CLASS WILL NOT MEET TODAY
    I will be available 9:30-11:30 on my Zoom office hours link.
 
9

34

Tue Feb 9

   
  • CLASS WILL MEET TODAY
     
  • Imperative form
9

35

Thu Feb 11

  • TSPL Section 12.11
  • A18a is due today Winter 2020-21: Due date postponed to Wednesday of week 10.
  • CLASS WILL MEET TODAY
     
  • reference params example
  • Final Exam Preview
  • Engines
9

36

Fri Feb 12

   
  • CLASS WILL NOT MEET TODAY
    I will be available 9:30-11:30 on my Zoom office hours link.
 
10

37

Mon Feb 15

 
  • Assignment 18 (team)
  • A18 test code for off-line testing
  • A18b is due today. Winter 2020-21: Due date posponed to Saturday of week 10.
  • CLASS WILL MEET TODAY
     
  • About the course evaluations (including extra-credit rules)
  • ref parameters solution
  • coroutines
10

38

Tue Feb 16

   
  • CLASS WILL NOT MEET TODAY
    I will be available 9:30-11:30 on my Zoom office hours link.
10

39

Thu Feb 18

 
  • Complete the A18/overall project survey (Moodle) by 11:55 PM Sunday.
  • Overall project and partner survey.
    On previous surveys I have asked for a small amount of info.
    This one is more extensive. Expect to spend longer on it.
    50 points.
  • CLASS WILL NOT MEET TODAY
    I will be available 9:30-11:30 on my Zoom office hours link.
 
10

40

Fri Feb 19

 
  • CLASS WILL MEET TODAY
     
  • Questions about the final exam?
  • (if time: strange2 solution)
11

41

Mon Feb 22

  • Final Exam is Wednesday evening at 6:00 PM
  • A general exam description and a list of possible exam topics are in the Session 35 slides.
  • If you have more questions about exam expectations, ask in the exams folder on Piazza
 
  • Computer parts of some previous exams
  • I am not distributing a sample written part of the exam.