Schedule
Week of June 1st
This week we’ll be doing a lot of hands-on work to get up to speed on
the first language in the course: Ruby.
- June 1: Introduction, setting up Ruby
- June 2: Ruby 1
- June 3: Ruby 2
- June 4: Ruby objects and classes
- June 5: Ruby examples and Quiz 1
Week of June 8th
The main focus of this week is to touch on Ruby’s notion of object orientation, and to concentrate on how regular expressions are implemented.
- June 8: Ruby objects and metaprogramming
- June 9: Introducing DFAs
- June 10: Converting REs to NFAs
- June 11: Converting NFAs to DFAs
- June 12: Minimizing DFAs Quiz 2
Week of June 15th
Our goal is to learn as much OCaml as possible. The purpose of this week is explaining how to program in OCaml via a variety of small examples and to build up to implementing project 3.
- June 15: Functional programming, methodology and introduction (basics)
- June 16: Standard datatypes (bools, lists) and recursion and DFA example
- June 17: Higher order functions
- June 18: Boolean logic and Project 2
- June 19: Quiz 3
Week of June 22nd
The midterm exam is this week. We begin covering lambda calculus, and also cover big step semantics for a stipped down version of OCaml.
- June 22: Introducing the lambda calculus
- June 23: Lambda calculus continued / Big step semantics intro
- June 24: Big step semantics
- June 25: Midterm review
- June 26: Midterm
Week of June 29th
This week we’re covering small step semantics and the CEK machine.
List of topics each week
The course schedule has not yet been finalized, but will cover these
major topics:
- Week 1: Ruby
- Week 2: Ruby objects / Finite Automata
- Week 3: OCaml: Lists / Recursion / Higher order functions
- Week 4: Type Systems / Polymorphism
- Midterm 1 (June 26)
- Week 5: Module systems / Operational Semantics / Parameter passing
- Week 6: Object systems / CFGs and Parsing
- Week 7: Logic Programming
- Week 8: Garbage Collection / Implementations
- Final (July 24)
As new content becomes available, I will add notes, readings, and
assignment due dates.
Midterm and Final
The two major exams in the course are the midterm and final. The
midterm will cover roughly the material from the first half of the
course. The final will be cumulative, but will emphasize material fom
the second half of the course.
The midterm and final will both take place on Fridays during the
regularly scheduled class time (2:30-3:50PM)