EECS 321: Programming LanguagesLecture | Tech LR5; Tuesdays and Thursdays 11:00—12:20 |
| Text | Programming Languages: Application and Interpretation (First Edition) by Shriram Krishnamurthi |
|
| Piazza | http://piazza.com/northwestern/fall2018/eecs321 |
| Software | Handin Status
quick-ref.rkt a quick reference to things Racket; open in DrRacket |
| Course Staff | Vincent St-Amour Office Hours: Wednesdays 4-5 or by appointment, Mudd 3215
Spencer Florence, Emily Blackman, Hakan Dingenc, Kate Hayner-Slattery, Jeremy Kaish, Patrick Sachaj, and Nathan Shelly Office Hours: Mudd 3534 collaboration space Mondays: 6pm-8pm Tuesdays: 1pm-3pm (in Mudd 3532), 3pm-5pm (in Mudd 3532), 6pm-8pm Wednesdays: 10am-noon, 2pm-4pm, 6pm-8pm Thursdays: 1pm-3pm (in Mudd 3303), 6-8pm Fridays: 10am-noon |
| Syllabus | Week # | Date | Topic | Readings | 1 | Thursday, September 27th, 2018 | Introduction
01a-intro.pdf 01b-plai.pdf | PLAI §1, §2 | | 2 | Due: Noon on Monday, October 1st, 2018 | HW 1: Setup and Finger Exercises | 2 | Tuesday, October 2nd, 2018 | Variables and Binding
02-variables-binding.pdf | PLAI §3 | 2 | Thursday, October 4th, 2018 | Functions and Parsing
03-functions-parsing.pdf | PLAI §4 | 2 | Due: Noon on Friday, October 5th, 2018 | HW 2: Binding | | 3 | Tuesday, October 9th, 2018 | Deferred Substitution
04-deferred-substitution.pdf | PLAI §5 | 3 | Thursday, October 11th, 2018 | Random Testing
05-random-testing.pdf | | 3 | Due: Noon on Friday, October 12th, 2018 | HW 3: Multi-Argument Functions | | 4 | Tuesday, October 16th, 2018 | Higher-Order Functions
06-higher-order-functions.pdf | PLAI §6 | 4 | Thursday, October 18th, 2018 | Capture-Avoiding Substitution, Compilation
07a-capture-avoiding-substitution.pdf 07b-compilation.pdf | | 4 | Due: Noon on Friday, October 19th, 2018 | HW 4: Deferred Substitution | | 5 | Tuesday, October 23rd, 2018 | Higher-order Functions II, Recursion
08a-higher-order-functions-2.pdf 08b-recursion.pdf | PLAI §6, §9 | 5 | Thursday, October 25th, 2018 | Recursion II, State
09a-recursion-2.pdf 09b-state.pdf | PLAI §10, §12, §13 | 5 | Due: Noon on Friday, October 26th, 2018 | HW 5: Higher-Order Functions | | 6 | Tuesday, October 30th, 2018 | State II
10-state-2.pdf | PLAI §13 | 6 | Thursday, November 1st, 2018 | Control
11-control.pdf | PLAI §18, §19 | 6 | No Homework on Friday, November 2nd, 2018 | | | 7 | Tuesday, November 6th, 2018 | Garbage Collection: Intro
12-gc-intro.pdf | PLAI §21 | 7 | Thursday, November 8th, 2018 | Garbage Collection: Mark-and-Sweep
13-14-gc-mark-and-sweep.pdf | | 7 | Due: Noon on Friday, November 9th, 2018 | HW 6: State | | 8 | Tuesday, November 13th, 2018 | Garbage Collection: Mark-and-Sweep
13-14-gc-mark-and-sweep.pdf (cont'd) | | 8 | Thursday, November 15th, 2018 | Garbage Collection: Copying, Types: Intro
15a-gc-copying.pdf 15b-types-intro.pdf | PLAI §24 | 8 | Due: Noon on Friday, November 16th, 2018 | HW 7: Control | | 9 | Tuesday, November 20th, 2018 | Types: Typing Rules
16-typing-rules.pdf | PLAI §25 | 9 | Thursday, November 22nd, 2018 | Thanksgiving
| | 9 | No Homework on Friday, November 23rd, 2018 | | | 10 | Tuesday, November 27th, 2018 | Types: Typechecking
17-typechecker.pdf | | 10 | Thursday, November 29th, 2018 | Types: Type Soundness, Extensions
18a-type-soundness.pdf 18b-types-extensions.pdf | PLAI §28 | 10 | Due: Noon on Friday, November 30th, 2018 | HW 8: Garbage Collection | | 11 | Tuesday, December 4th, 2018 | Types: Type Inference
19-type-inference.pdf | PLAI §30 | 11 | Thursday, December 6th, 2018 | Generational GC & Cheney on the MTA
20a-generational-gc.pdf 20b-recap.pdf | | 11 | Due: Noon on Friday, December 7th, 2018 | HW 9: Types |
|
| Grading | Your homework each week will be graded automatically and you will receive either a check+ (A), check (B), check- (C), or 0 (F). When computing your final grade, a check+ is treated like a 9, a check is treated like an 7, a check- is treated like 6, and a 0 is treated like a 0. The numbers are then averaged and this function is used to map them into number grades: (define (numeric-grade->letter-grade number)
(cond
((<= 8.3 number 9) 'A)
((<= 7.8 number 8.3) 'A-)
((<= 7.4 number 7.8) 'B+)
((<= 7.0 number 7.4) 'B)
((<= 6.4 number 7.0) 'B-)
((<= 6.0 number 6.4) 'C)
((<= 5.0 number 6.0) 'C-)
((<= 4 number 5) 'D)
((<= number 5) 'F)))
Homeworks are due on Fridays at noon. You can expect grades to be out on the following Monday. Failing that, you will have heard from the course staff regarding when to expect them. To encourage you to revisit material you have ot yet mastered, you have the option to resubmit homework assignments after their original deadline. If your understanding of that homework has improved, hopefully so should your grade. Each homework has two resubmission deadlines: hwN-second-round at noon the Friday following the original deadline, and hwN-third-round at noon the Friday two weeks after the original deadline. You can submit to any of the three deadlines for a homework independently. E.g., you don't need to submit to the second round to be allowed to submit to the third, etc. Resubmission grading follows the same schedule described above. Late submissions will not be accepted. Resubmission grades are capped to an 8, halfway between a check and a check+. I.e., if you get a check+ on a resubmission, it counts as an 8. The last time second-try assignments will be accepted is Wednesday of finals week (December 12th), 5pm. |
|
| Collaboration policy | Collaboration is a really good thing and we encourage it. On the other hand, cheating is a very serious offense, which carries serious consequences. It's OK to meet with colleagues, form study groups, discuss assignments with them, or compare alternative approaches. But it is never ok to share code or homework solutions, or even to see each other's code or solutions. What you turn in must be your own work. Copying (or even studying) code, solutions, etc., from anywhere (e.g., other people, web, GitHub) is strictly prohibited. Be aware that we use the (highly effective) MOSS software similarity detection system. If you discuss your work with another group, please list their names in your hand-in. It is also forbidden to share, post, or otherwise publicise your solutions. This even extends after the quarter ends. No matter how proud you are of them, no posting your solutions to GitHub; doing so is an invitation to plagiarism. It is the responsibility of every student in this class to be familiar with and to adhere to the Academic Integrity Policies of Northwestern University and the McCormick School of Engineering. The policies can be found here. Any suspicion of violation of these policies will be reported immediately to the Associate Dean for Undergraduate Studies. If you are in doubt whether your actions constitute a violation of the above policies, ask the instructor. |
|
|