This quarter we'll learn new programming languages, discuss design tradeoffs, and write fascinating programs. Lecture and sections are super important; don't miss out!
Meeting | Mon, Wed, Fri 12:30 in MGH 241 |
Instructor | Zach Tatlock (ztatlock@cs) |
Office Hours : Mon 3:30 in CSE 546 | |
TAs | Stuart Pernsteiner (spernste@cs) |
Section AA : Thu 12:30 in MGH 234 | |
Office Hours : Fri 2:30 in CSE 218 | |
Gurwinder Gulati (gulati@cs) | |
Section AB : Thu 1:30 in MGH 295 | |
Office Hours : Tue 12:30 in CSE 002 | |
Max Sherman (mms343@cs) | |
Section AC : Thu 2:30 in GLD 435 | |
Office Hours : Wed 2:30 in CSE 002 | |
Riley Wilk (wilkr@cs) | |
Office Hours : Tue/Thu 10:30-12:30 in CSE 002 | |
Resources | Piazza, Syllabus |
Unfortunately, we only get to spend a few hours a week together in person. To help make up for that, we'll use Piazza to facilitate lively discussion and timely feedback.
When you have questions, ask them on Piazza. That way everyone can benefit from the answers AND you can get faster responses from your colleagues. You can even ask questions anonymously! Remember, everyone is working hard to make this the best course possible, so please always be polite and patient. Well-written posts get brownie points.
We'll submit homework using the 341 Dropbox, and you can check your grades using the 341 Gradebook. Please carefully read the Academic Integrity and Challenge Problem policies.
Lecture 1 : Hello ML! (materials)
Lecture 2 : Functions, Pairs, Lists (materials)
Lecture 3 : Local Bindings, Options, Purity (materials)
Section 1 : Setup, REPL, Debugging (materials)
Lecture 4 : Records, Datatypes, Case (materials)
Lecture 5 : More Datatypes, Pattern Matching (materials)
Lecture 6 : Nested Patterns, Exceptions, Tail Recursion (materials)
Section 2 : Type Synonyms, Polymorphism, and More (materials)
Lecture 7 : First Class Functions (materials)
Lecture 8 : Lexical Scope, Function Closures (materials)
Lecture 9 : Function Closure Idioms (materials)
Section 3 : Library Docs, Function Wrapping, Fold (materials)
Lecture 10 : ML Modules (materials)
Lecture 11 : Type Inference (materials)
Lecture 12 : Equivalence (materials)
Section 4 : Mutual Recursion, More Currying, More Modules (materials)
Lecture 13 : Motivation Interlude (materials)
Lecture 14 : Hello Racket! (materials)
Lecture 15 : Thunks, Laziness, Streams, Memoization (materials)
Lecture 16 : Macros (materials)
Lecture 17 : Datatypes in Racket (materials)
Lecture 18 : Implementing Languages Including Closures (materials)
Lecture 19 : Static vs. Dynamic Typing (materials)
Lecture 20 : Hello Ruby! (materials)
Lecture 21 : Arrays, Blocks, Procs, Inheritance, Overriding (materials)
Lecture 22 : Dynamic Dispatch (materials)
Lecture 23 : OOP vs. Functional Decomposition (materials)
Lecture 24 : Discuss Mars Code and The Future of Computing ( materials, Dropbox)
Lecture 25 : Discuss Worse is Better and Social Processes ( materials Dropbox)
Homework 1 : due Wed, April 8 at 11pm
Homework 2 : due Fri, April 17 at 11pm (hw2.sml, tests)
Homework 3 : due Mon, April 27 at 11pm (hw3.sml)
Homework 4 : due Mon, May 18 at 11pm (materials)
Homework 5 : due Wed, May 27 at 11pm (materials)
Homework 6 : due Thu, June 4 at 11pm (materials)
You can submit homework at the 341 Dropbox.