CSE 341: Programming Languages


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

Unit 1

Lecture 1 : Hello ML! (materials)

Lecture 2 : Functions, Pairs, Lists (materials)

Lecture 3 : Local Bindings, Options, Purity (materials)

Section 1 : Setup, REPL, Debugging (materials)

Unit 2

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)

Unit 3

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)

Unit 4

Lecture 10 : ML Modules (materials)

Lecture 11 : Type Inference (materials)

Lecture 12 : Equivalence (materials)

Section 4 : Mutual Recursion, More Currying, More Modules (materials)

Motivation Interlude

Lecture 13 : Motivation Interlude (materials)

Unit 5

Lecture 14 : Hello Racket! (materials)

Lecture 15 : Thunks, Laziness, Streams, Memoization (materials)

Lecture 16 : Macros (materials)

Unit 6

Lecture 17 : Datatypes in Racket (materials)

Lecture 18 : Implementing Languages Including Closures (materials)

Lecture 19 : Static vs. Dynamic Typing (materials)

Unit 7

Lecture 20 : Hello Ruby! (materials)

Lecture 21 : Arrays, Blocks, Procs, Inheritance, Overriding (materials)

Lecture 22 : Dynamic Dispatch (materials)

Unit 8

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

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.

Midterms

Spring 15 : midterm   solved

Spring 14 : midterm   solved

Spring 13 : midterm   solved

Winter 13 : midterm   solved

Spring 11 : midterm   solved

Finals

Spring 13 : final   solved

Winter 13 : final   solved

Spring 11 : final   solved