August 27, 2019

  • Lecture: Introduction

August 29, 2019

  • Lecture: Overview of programming

September 3, 2019

  • Lecture: Abstract Data Types and Procedural Abstraction, OO programming
  • Quizz 0 due
  • Homework 0 due
  • Homework 1 released

September 5, 2019

  • Lecture: Names, scopes, and binding

September 10, 2019

  • Lecture: Inheritance, Subtyping, and Dynamic Dispatch

September 12, 2019

  • Lecture: Inheritance, Subtyping, and Dynamic Dispatch

September 17, 2019

  • Lecture: Interfaces, Mixins, Traits

September 21, 2019

  • Homework 1 due

September 19, 2019

  • Lecture: Parametric Polymorphism and Generics

September 24, 2019

  • Lecture: Reflection
  • Homework 2 out

September 26, 2019

  • Lecture: Errors and Exceptions

October 1, 2019

  • Lecture: Java Lambdas

October 3, 2019

  • Lecture: Semantics interpreter

October 8, 2019

  • Lecture: Semantics interpreter

October 10, 2019

  • Lecture: Semantics analysis

October 15, 2019

  • Midterm

October 17, 2019

  • Lecture: Midterm solution

October 19, 2019

  • Homework 2 due

October 22, 2019

  • Lecture: Lambda Calculus
  • Homework 3 out

October 24, 2019

  • Lecture: Lambda Calculus

October 29, 2019

  • Lecture: Concurrent Programming

October 31, 2019

  • Lecture: Concurrent Programming

November 2, 2019

  • Homework 3 due

November 5, 2019

  • Lecture: Aspect-Oriented Programming
  • Project out

November 7, 2019

  • Lecture: Compilation to bytecode

November 12, 2019

  • Lecture: Bytecode execution

November 14, 2019

  • Lecture: Memory management

November 19, 2019

  • Lecture: Undefined Behavior

November 21, 2019

  • Lecture: Research topics

November 26, 2019

  • Lecture: Research topics

November 28, 2019

  • Thanksgiving, no lecture

December 3, 2019

  • Lecture: Research topics

December 5, 2019

  • Review for final

December 7, 2019

  • Project due