Programming Languages | There is a bug in Racket 5.0.2's plai/mutator language. To get a patch that fixes the bug, start up DrRacket and choose the File|Install .plt File ... menu item, and paste in this url: http://www.eecs.northwestern.edu/~robby/courses/321-2011-winter/racket-5.0.2-mutator-fix.plt
| Lecture | Tech L150; MF 2:00—3:20 |
| Text | Programming Languages: Application and Interpretation by Krishnamurthi |
| Supplementary Reading | How to Design Programs by Felleisen, Findler, Flatt and Krishnamurthi
Essentials of Programming Languages by Friedman and Wand |
| Mailing List | Subscribe Archive Warning: subscription acknowledgment may land in your spam folder |
| Software | Handin Status
Racket (be sure you get version 5.0.2; it was the current release at the beginning of the quarter but there will be a release during the quarter)
quick-ref.rkt a quick reference to things Racket; open in DrRacket |
| Lab Space | T Lab, Tech F252 Racket is installed in /opt/racket-5.0.2/bin/drracket on the linux side of the t-lab machines. Ask if you prefer the windows side. |
| Grading | Weekly Homeworks: | 75% (weighted equally) | Midterm Exam: | 25% | Homeworks are graded on a scale of 0 to 10, as follows:
| 10 | | perfect++ (I don't expect to see any homeworks like this, but just in case) | | 9 | | all functionality there, working, and well tested | | 8 | | something wrong, but not in the essential parts of the assignment, well tested | | 7 | | something wrong in the essential parts of the assignment, but well tested | | 6 | | lots wrong with essential parts of the assignment, but well tested | | 5 | | woeful tests (no matter how good the rest is) | | 4-1 | | you don't want to be here | | 0 | | nothing handed in |
|
| Course Staff | Robby Findler Office Hours: by appt (send email; I'm around during the day during the week)
James Swaine Office Hours: Wednesdays 11:15am - 1pm Ford 2.211, or by appt (email james.swaine@gmail.com) |
| Syllabus | Week # | Date | Topic | Readings | 1 | Friday, January 7th, 2011 | Introduction to PL & Racket;
lecture00.pdf lecture01.pdf lecture02.pdf | PLAI §1, 2 | | 2 | Monday, January 10th, 2011 | Variables
lecture02.pdf (cotd) | PLAI §2 | 2 | Friday, January 14th, 2011 | Functions
lecture03.pdf | PLAI §3 | 2 | Friday, January 14th, 2011 | HW 1: Setup and mini-string language | | 3 | Monday, January 17th, 2011 | MLK day; no class
| | 3 | Friday, January 21st, 2011 | Software Engineering talk
| PLAI §4 | 3 | Friday, January 21st, 2011 | HW 2: Free, bound, and binding identifiers | | 4 | Monday, January 24th, 2011 | Quasiquote and random testing
lecture03.5.pdf lecture04.pdf | PLAI §4 | 4 | Friday, January 28th, 2011 | Deferring substition
lecture05.pdf | PLAI §5 | 4 | Friday, January 28th, 2011 | HW 3: Multi-arity functions and rec | | 5 | Monday, January 31st, 2011 | Higher-order functions
lecture06.pdf | PLAI §6 | 5 | Friday, February 4th, 2011 | Higher-order functions
lecture06.pdf (cotd) | PLAI §6 | 5 | Saturday, February 5th, 2011 | HW 4: Deferred Substitution, if0, neg?, and mult | | 6 | Monday, February 7th, 2011 | The Why of Y (thanks to Richard Gabriel)
lecture07.pdf | PLAI §6 | 6 | Friday, February 11th, 2011 | Deferred Substitution for higher-order functions
lecture06.pdf (cotd) | PLAI §6 | | 7 | Monday, February 14th, 2011 | Recursion
lecture08.pdf | PLAI §9, 10 | 7 | Friday, February 18th, 2011 | State
lecture09.pdf | PLAI §12, 13 | 7 | Saturday, February 19th, 2011 | HW 5: Functions do more than you thought: natural numbers | | 8 | Monday, February 21st, 2011 | State, GC
lecture09.pdf (cotd) lecture10.pdf | PLAI §12, 13 | 8 | Friday, February 25th, 2011 | GC
lecture10.pdf (cotd) lecture11.pdf | | 8 | Saturday, February 26th, 2011 | HW 6: State | | 9 | Monday, February 28th, 2011 | GC
lecture11.pdf (cotd) | | 9 | Saturday, March 5th, 2011 | GC
lecture11.pdf (cotd) | | 9 | Saturday, March 5th, 2011 | HW 7: GC | | 10 | Monday, March 7th, 2011 | Exam
| | 10 | Friday, March 11th, 2011 | Types
lecture12.pdf | | | 11 | Monday, March 14th, 2011 | Types (optional lecture; in L160)
lecture13.pdf | | 11 | Saturday, March 19th, 2011 | HW 8: Types |
|
| Collaboration policy | Working with others on assignments is a good way to learn the material and we encourage it. However, there are limits to the degree of cooperation that we will permit. When working on programming assignments, you must work only with others whose understanding of the material is approximately equal to yours. In this situation, working together to find a good approach for solving a programming problem is cooperation; listening while someone dictates a solution is cheating. You must limit collaboration to a high-level discussion of solution strategies, and stop short of actually writing down a group answer. Anything that you hand in, whether it is a written problem or a computer program, must be entirely your own work. If you base your solution on any other written solution, you are cheating. When taking a test, you must work completely independently of everyone else. Any collaboration here, of course, is cheating. We do not distinguish between cheaters who copy other's work and cheaters who allow their work to be copied. If you cheat, you will receive the harest penalty possible under the rules of Northwestern. If you have any questions about what constitutes cheating, please ask. |
|
|