Weekly Schedule

The schedule along with the list of topics to be covered are tentative and subject to change.

Week DateTopicAssignment
1T1/21Welcome and course overviewPost a note on Teams to introduce yourself.
Review the Syllabus.
 R1/23No class: Instructor on travelSetup software and development environment for the course (see here)
2T1/28Basic Introduction to the Scala Language 
 R1/30Constructing Programs: A Brief Primer 
3T2/4Recursion 
 R2/6Inductive Definitions and Inductively Defined StructuresAssignment 1 due
4T2/11Operations on Inductively Defined Structures 
 R2/13A Brief Introduction to ParsingAssignment 2 due
5T2/18Functors in Scala: Map, Filter and Fold 
 R2/20Big Step Operational Semantics : IntroductionAssignment 3 due
6T2/25Lettuce: A toy language with let-bindings 
 R2/27Lettuce: Scopes and EnvironmentsAssignment 4 due
7T3/4Function Calls and Closures in Lettuce 
 R3/6Recursion in Lettuce: Y-Combinators and Circular ScopesAssignment 5 due
8T3/11References, Mutable Vars and Side Effects 
 R3/13Implicit ReferencesAssignment 6 due
9T3/18No class: Spring recess 
 R3/20No class: Spring recess 
10T3/25Calling Conventions: Call by Value vs. Reference 
 R3/27Garbage Collection: Basic ConceptsAssignment 7 due
11T4/1Continuation Passing Style (CPS): Converting to Tail Recursion 
 R4/3TrampolinesAssignment 8 due
12T4/8Types and Type Checking 
 R4/10Type Inference: Basic IdeaAssignment 9 due
13T4/15Type Inference: Unification and Constraint Solving 
 R4/17Introduction to Object Oriented Concepts (in Scala)Assignment 10 due
14T4/22Traits, Type Parameters, Generics and Type Constraints 
 R4/24Subtyping and Variance AnnotationsAssignment 11 due
15T4/29Lazy Evaluation, Streams, Iterators and Comprehensions 
 R5/1Introduction to Formal MethodsAssignment 12 due
16T5/6Review 
 R5/8Review 
17Wed5/14Final Exam in CSB 130 (6:20-8:20 pm)