Date/SubjectPrepIn Class Assignments
       
       
       
       
       
Fri Jan 17 Welcome; The Lambda Calculus; Setup; OOP Staticquiz
slides: presentation pdf
>>> Assign Studio ImmutableList<E>
       
       
       
       
Wed Jan 22<<< Submit Studio ImmutableList<E>
       
Fri Jan 24 The Lambda Calculus; The Y Combinator; xkcd: Editors

Courses and Software Setup
video: The Lambda Calculus
video: Y Combinator
(Optional) Wikipedia: Fixed-point combinator
(Optional) Wikipedia: Church encoding
(Optional) PL A 0 reading: start-here
(Optional) PL A 0 video: welcome-and-some-course-mechanics
PL A 0 video: optional-who-i-am-acknowledgments
PL A 0 video: what-the-course-is-about-initial-motivation
(Optional) PL A 0 video: recommended-background
(Optional) PL A 0 video: why-part-a-part-b-part-c
(Optional) PL A 0 video: grading-policy
PL A 0 video: optional-very-high-level-outline
(Optional) PL A 0 reading: about-the-course
(Optional) PL A 0 reading: some-more-perspective-on-recommended-background
(Optional) PL A 0 reading: why-are-there-3-courses-part-a-part-b-part-c
(Optional) PL A 0 reading: grading-policy-details
(Optional) PL A 0 discussionPrompt: discussion-forums-why-are-you-participating
PL A 1 reading: section-1-welcome-message
PL A 1 reading: section-1-reading-notes
PL A 1 video: ml-variable-bindings-and-expressions
PL A 1 video: rules-for-expressions
PL A 1 video: the-repl-and-errors
PL A 1 video: shadowing
PL A 1 video: functions-informally
PL A 1 video: functions-formally
PL A 1 video: pairs-and-other-tuples
PL A 1 video: introducing-lists
PL A 1 video: list-functions
video: Making Sense of SML Error Output
quiz
slides: presentation pdf
DG slides: pptx pdf
DG slides: pptx pdf
>>> Assign WarmUp My Length
>>> Assign WarmUp SML Practice Problems 1
>>> Assign Lab Calendar Date
       
       
       
       
       
       
Fri Jan 31 Language and Thought; Functional Static 1bTed Talk: Lera Boroditsky: How language shapes the way we think
video: Numbers in Pirahã
video: Recursion in Pirahã?
(Optional) Wikipedia: Pirahã language
xkcd: Side Effect Free

PL A 1 video: let-expressions
PL A 1 video: nested-functions
PL A 1 video: let-and-efficiency
PL A 1 video: options
PL A 1 video: booleans-and-comparison-operations
PL A 1 video: benefits-of-no-mutation
PL A 1 video: optional-java-mutation
PL A 1 video: pieces-of-a-language
quiz
slides: presentation pdf
>>> Assign Studio java.util.Optional<T>
Sat Feb 1<<< Submit Lab Calendar Date
       
       
       
Wed Feb 5<<< Submit Studio java.util.Optional<T>
       
Fri Feb 7 1984; Functional Static 2xkcd: Tail Recursion

Read: Chapters 1-5 (inclusive) of 1984
PL A 2 reading: section-2-welcome-message
PL A 2 reading: section-2-reading-notes
PL A 2 video: building-compound-types
PL A 2 video: records
PL A 2 video: tuples-as-syntactic-sugar
PL A 2 video: datatype-bindings
PL A 2 video: case-expressions
PL A 2 video: useful-datatypes
PL A 2 video: pattern-matching-so-far
PL A 2 video: another-expression-example
PL A 2 video: type-synonyms
PL A 2 video: lists-and-options-are-datatypes
PL A 2 video: polymorphic-datatypes
PL A 2 video: each-of-pattern-matching-truth-about-functions
PL A 2 video: a-little-type-inference
PL A 2 video: polymorphic-and-equality-types
PL A 2 video: nested-patterns
PL A 2 video: more-nested-patterns
PL A 2 video: nested-patterns-precisely
PL A 2 video: optional-function-patterns
PL A 2 video: exceptions
PL A 2 video: tail-recursion
PL A 2 video: accumulators-for-tail-recursion
PL A 2 video: perspective-on-tail-recursion
quiz
slides: presentation pdf
>>> Assign WarmUp SML Practice Problems 2
>>> Assign Studio Hearts Card Game
>>> Assign Studio Tail Recursion
>>> Assign Lab Card Game
       
       
       
       
Wed Feb 12<<< Submit Studio Hearts Card Game
<<< Submit Studio Tail Recursion
       
Fri Feb 14 Story of Your Life; Functional Static 3aRead: Story of Your Life
xkcd: College Athletes

PL A 3 reading: section-3-welcome-message
PL A 3 reading: section-3-reading-notes
PL A 3 video: introduction-to-first-class-functions
PL A 3 video: functions-as-arguments
PL A 3 video: polymorphic-types-and-functions-as-arguments
PL A 3 video: anonymous-functions
PL A 3 video: unnecessary-function-wrapping
PL A 3 video: map-and-filter
PL A 3 video: generalizing-prior-topics
PL A 3 video: lexical-scope
PL A 3 video: lexical-scope-and-higher-order-functions
PL A 3 video: why-lexical-scope
PL A 3 video: closures-and-recomputation
PL A 3 video: fold-and-more-closures
PL A 3 video: closure-idiom-combining-functions
PL A 3 video: closure-idiom-currying
PL A 3 video: partial-application
PL A 3 video: currying-wrapup
quiz
slides: presentation pdf
>>> Assign WarmUp N Times
>>> Assign WarmUp SML Practice Problems 3
>>> Assign Studio Higher Order Functions Hall of Fame
>>> Assign Lab Pattern Matching
Sat Feb 15>>> Assign Studio Extra HOF
<<< Submit Lab Card Game
       
       
       
Wed Feb 19<<< Submit Studio Higher Order Functions Hall of Fame
<<< Submit Studio Extra HOF
       
Fri Feb 21 Functional Static 3b and Course Motivationxkcd: Haskell

xkcd: Standards

PL A 3 video: mutable-references
PL A 3 video: closure-idiom-callbacks
PL A 3 video: standard-library-documentation
PL A 3 video: optional-abstract-data-types-with-closures
PL A 3 video: optional-closure-idioms-without-closures
PL A 3 video: optional-java-without-closures
PL A 3 video: optional-c-without-closures
PL A 3 video: course-motivation-introduction
PL A 3 video: why-study-general-pl-concepts
PL A 3 video: are-all-pls-the-same
PL A 3 video: why-functional-languages
PL A 3 video: why-ml-racket-and-ruby
quiz
slides: presentation pdf
>>> Assign Studio Binary Tree
Sat Feb 22<<< Submit Lab Pattern Matching
       
       
       
Wed Feb 26<<< Submit Studio Binary Tree
       
Fri Feb 28 Functional Static 4xkcd: Workflow

PL A 4 reading: section-4-welcome-message
PL A 4 reading: section-4-reading-notes
PL A 4 video: section-introduction
PL A 4 video: what-is-type-inference
PL A 4 video: ml-type-inference
PL A 4 video: type-inference-examples
PL A 4 video: polymorphic-examples
PL A 4 video: optional-the-value-restriction-and-other-type-inference-challenges
PL A 4 video: mutual-recursion
PL A 4 video: modules-for-namespace-management
PL A 4 video: signatures-and-hiding-things
PL A 4 video: a-module-example
PL A 4 video: signatures-for-our-example
PL A 4 video: signature-matching
PL A 4 video: an-equivalent-structure
PL A 4 video: another-equivalent-structure
PL A 4 video: different-modules-define-different-types
PL A 4 video: equivalent-functions
PL A 4 video: standard-equivalences
PL A 4 video: equivalence-versus-performance
PL A 4 video: part-a-wrap-up-parts-b-c-preview
quiz
slides: presentation pdf
>>> Assign Studio Single List and Hashtable Dictionaries
>>> Assign Studio Sorted Dictionary
       
       
       
       
Wed Mar 4<<< Submit Studio Single List and Hashtable Dictionaries
<<< Submit Studio Sorted Dictionary
       
Fri Mar 6 FUNCTIONAL STATIC EXAM
       
       
       
       
       
       
Fri Mar 13 Spring Break (No Class)
       
       
       
       
       
       
Fri Mar 20 Spring Break (No Class)
       
       
       
       
Wed Mar 25
       
Fri Mar 27 Functional Dynamic 1axkcd: (Parentheses)

Read: Low-fidelity Prototyping
(Optional) Wikipedia: L-system
PL B 1 reading: start-here
PL B 1 video: welcome-to-part-b
PL B 1 video: overview-of-part-b-concepts
PL B 1 video: part-b-course-structure
PL B 1 reading: part-b-software-installation-and-use-racket-and-drracket
PL B 1 reading: section-5-welcome-message
PL B 1 reading: section-5-reading-notes
PL B 1 video: introduction-to-racket
PL B 1 video: racket-definitions-functions-conditionals
PL B 1 video: racket-lists
PL B 1 video: syntax-and-parentheses
PL B 1 video: parentheses-matter-debugging-practice
PL B 1 video: dynamic-typing
PL B 1 video: cond
PL B 1 video: local-bindings
PL B 1 video: toplevel-bindings
PL B 1 video: mutation-with-set
PL B 1 video: the-truth-about-cons
PL B 1 video: mcons-for-mutable-pairs
PL B 1 video: delayed-evaluation-and-thunks
PL B 1 video: avoiding-unnecessary-computations
PL B 1 video: delay-and-force
PL B 1 video: using-streams
PL B 1 video: defining-streams
PL B 1 video: memoization
PL B 1 video: macros-the-key-points
PL B 1 video: optional-tokenization-parenthesization-and-scope
PL B 1 video: optional-racket-macros-with-define-syntax
PL B 1 video: optional-variables-macros-and-hygiene
PL B 1 video: optional-more-macro-examples
quiz
slides: presentation pdf
video: SortedDictionary Scenario
video: SortedDictionary Scenario Responses
video: Making Sense of Dr Racket Error Output
video: Racket Image Library Demo
video: Are C Macros That Bad?
video lecture
video: ThunkThat
>>> Assign WarmUp Home Is Where The Heart Is
>>> Assign Studio Sierpiński and Cantor
>>> Assign WarmUp Thunks and Streams
>>> Assign Lab Streams
       
       
       
       
Wed Apr 1<<< Submit Studio Sierpiński and Cantor
       
Fri Apr 3 Functional Dynamic 2 PL B 2 reading: section-6-welcome-message
PL B 2 reading: section-6-reading-notes
PL B 2 video: datatype-programming-in-racket-without-structs
PL B 2 video: datatype-programming-in-racket-with-structs
PL B 2 video: advantages-of-structs
PL B 2 video: implementing-programming-languages
PL B 2 video: what-your-interpreter-can-and-cannot-assume
PL B 2 video: implementing-variables-and-environments
PL B 2 video: implementing-closures
PL B 2 video: optional-are-closures-efficient
PL B 2 video: racket-functions-as-macros-for-interpreted-language
quiz
slides: presentation pdf
video: Reverse Stream Scenario
>>> Assign Studio MUPL Programs
>>> Assign Lab MUPL
Sat Apr 4<<< Submit Lab Streams
       
       
       
Wed Apr 8<<< Submit Studio MUPL Programs
       
Fri Apr 10 Functional Dynamic 3xkcd: Perl or Lisp

PL B 3 reading: section-7-welcome-message
PL B 3 reading: section-7-reading-notes
PL B 3 video: ml-versus-racket
PL B 3 video: what-is-static-checking
PL B 3 video: soundness-and-completeness
PL B 3 video: weak-typing
PL B 3 video: static-versus-dynamic-typing-part-one
PL B 3 video: static-versus-dynamic-typing-part-two
PL B 3 video: optional-eval-and-quote
PL B 3 video: part-b-wrap-up-and-part-c-preview
quiz
slides: presentation pdf
video lecture play list
>>> Assign Studio Branch and Snowflake
Sat Apr 11<<< Submit Lab MUPL
       
       
       
Wed Apr 15<<< Submit Studio Branch and Snowflake
       
Fri Apr 17 The Computer Revolution Hasn't happened yet; OOP Dynamic 1xkcd: The General Problem

video: Alan Kay OOPSLA 1997
PL C 1 reading: section-8-welcome-message
PL C 1 reading: section-8-reading-notes
PL C 1 video: introduction-to-ruby
PL C 1 video: classes-and-objects
PL C 1 video: object-state
PL C 1 video: visibility
PL C 1 video: a-longer-example
PL C 1 video: everything-is-an-object
PL C 1 video: class-definitions-are-dynamic
PL C 1 video: duck-typing
PL C 1 video: arrays
PL C 1 video: blocks
PL C 1 video: using-blocks
PL C 1 video: procs
PL C 1 video: hashes-and-ranges
PL C 1 video: subclassing
PL C 1 video: why-use-subclassing
PL C 1 video: overriding-and-dynamic-dispatch
PL C 1 video: method-lookup-rules-precisely
PL C 1 video: dynamic-dispatch-versus-closures
PL C 1 video: optional-dynamic-dispatch-manually-in-racket
quiz
slides: presentation pdf
video lecture play list
>>> Assign Studio Render Part A
>>> Assign Studio Render Part B
>>> Assign Lab Tetris
       
       
       
       
Wed Apr 22<<< Submit Studio Render Part A
<<< Submit Studio Render Part B
       
Fri Apr 24 Kingdom of Nouns; Mostly Wrong History; OOP Dynamic 2 & 3; OOP Static; Course Reviewread: A Brief, Incomplete, and Mostly Wrong History of Programming Languages
read: Execution in the Kingdom of Nouns
Read: Java Interfaces
Read: Java Inheritance
PL C 2 reading: section-9-welcome-message
PL C 2 reading: section-9-reading-notes
PL C 2 video: oop-versus-functional-decomposition
PL C 2 video: adding-operations-or-variants
PL C 2 video: binary-methods-with-functional-decomposition
PL C 2 video: double-dispatch
PL C 2 video: optional-multimethods
PL C 2 video: multiple-inheritance
PL C 2 video: mixins
PL C 2 video: interfaces
PL C 2 video: optional-abstract-methods
PL C 3 reading: section-10-welcome-message
PL C 3 reading: section-10-reading-notes
PL C 3 video: subtyping-from-the-beginning
PL C 3 video: the-subtype-relation
PL C 3 video: depth-subtyping
PL C 3 video: optional-java-c-arrays
PL C 3 video: function-subtyping
PL C 3 video: subtyping-for-oop
PL C 3 video: generics-versus-subtyping
PL C 3 video: bounded-polymorphism
PL C 3 video: summarizing-all-we-have-learned
PL C 3 video: saying-good-bye
quiz
slides: presentation pdf
video lecture play list
>>> Assign Studio Iterable ImmutableList<E>
>>> Assign Studio Render Part C
>>> Assign Studio Render Part D
>>> Assign Lab Geometry Language
Sat Apr 25<<< Submit Lab Tetris
       
       
       
Wed Apr 29<<< Submit Studio Iterable ImmutableList<E>
<<< Submit Studio Render Part C
<<< Submit Studio Render Part D
       
       
Sat May 2<<< Submit Lab Geometry Language
       
       
Tue May 5 FUNCTIONAL DYNAMIC AND OOP DYNAMIC EXAM