CS365 -- Programming Languages and Systems

Brad Vander Zanden

Lecture Notes

  1. In other courses I videotape my lectures but for this course I have prepared condensed video lectures that I post. If you miss lecture, just review the video lectures for that day. You can also speed them up. I find that I sound good at 1.5 times normal speed.
  2. When there are assigned Zybook readings, you are responsible for completing the Participatory Activities in those sections. To receive credit for them, go to Canvas and click through on the link for that day.

Topics (Days) Textbook Readings and Online Notes Online Lectures
Course and Java Introduction (1)
  1. Zybook: 1.2, 1.7, 2.9, 2.12, 2.15, 2.21, 7.7, 19.4
  2. C++ versus Java
  3. Java Basics
Intro Lecture (start from 1:00)
Java Basics (2)
  1. Java's Memory Management Model
  2. Java's Runtime System
  3. Types, Variables, and Classes in Java
  1. Zybook
    Day 1: 3.12, 3.13, 3.15, 4.10, 4.11, 5.2, 5.9, 5.10, 8.1-8.5
    Day 2: 6.1, 6.8, 6.17, 6.18, 6.20, 7.2-7.5, 7.9-7.12, 7.19
  2. C++ versus Java
  3. Java Basics
  4. Jar Files
  5. Garbage Collection
Also review parameter passing at the bottom of the Java Basics notes. They are pretty basic so there is no lecture over them.

Day 1

  1. YourFirstJavaProgram (6:45)
  2. VariablesTypesScoping (6:42)
  3. Strings (4:27)
  4. Arrays (9:36)
  5. Classes (19:43)
  6. Lecture 1/26/21 (start at 5:30)
Day 2
  1. Enumerated Types (15:02)
  2. Garbage Collection
  3. Lecture 2/28/21 (start at 1:45)
Java I/O (1)
  1. Zybook: Chapter 9 and 6.12
  2. Brad's Cliff Notes
  3. SkewSymmetric Problem, Solution with Command Line Args, and Solution with Standard IO.
  1. ConsoleInput (16:02)
  2. ConsoleOutput (8:37)
  3. FileIO (13:58)
  4. Lecture 2/2/21 (start at 1:10)
Java Collections Library (1)
  1. Zybook: 7.13, 7.15, Chapter 15
  2. Word Count Problem
Inheritance (2)
  1. Zybook: Day 1--Chapter 10, Day 2--Chapter 11
  2. Java's Inheritance System
  3. Different Types of Inheritance in Other Languages
  4. Implementation Issues
Day 1:
  1. Inheritance (43:03)
  2. Lecture 2/9 (start at 1:00)

    Day 2:

    1. Java Inheritance (18:33)
    2. Interfaces (12:47)
    3. Lecture 2/11 (start at 0:30)

    Day 3:

    1. C++-Classes-Inheritance (24:50)
    2. Multiple-Mixin-Inheritance-Composition (25:51)
    3. Inheritance Implementation (16:10)
Module Mechanisms (1)
  1. Modules in C and C++
  2. Java Modules (Packages)
  3. Sun's Java Package Tutorial
  1. Modules-C-C++ (18:37)
  2. Packages-Java (20:06)
Polymorphism, Generic Functions and Data Structures (2)
  1. Zybook: Day 2--Chapter 14
  2. Generics in C, C++, and Java
  3. Example search using Java's generic data structures
Day 1:
  1. Generics C (4:11)
  2. Generics C++ (18:42)
  3. Lecture 2/18 (start at 0:30)

Day 2:

  1. Generics Java (32:02)
  2. Lecture 2/23 (start at 0:30)
Exception Handling (1)
  1. Zybook: Chapter 13
  2. Exception Handling
  3. Lecture 2/25
  1. C++ Exception Handling (20:44)
  2. Exception Handling C++ SafeArray Example (17:31)
  3. Java Exception Handling (27:05)
  4. C Exception Handling Watch from 29:45-1:02:50
Intro to Event-Based Programming (1)
  1. Event Programming Introduction
  2. Overview of GUI's and Event Handling
  3. Zybook 16.1
  4. Java GUI overview
  5. Java Swing
  6. HelloWorld program with marked regions
  1. Lecture 3/2 (start at 0:20)
  2. EventProgramming (34:15)
Widgets and Message Dialogs (1)
  1. widgets
  2. Zybook 16.2, 16.4-16.7, 16.9, 16.11
  3. Java Swing Components
Lecture 3/4 (start at 0:35)
Layout algorithms for widgets (1) Lecture 3/11 (start at 0:30)
Custom Painting and Event Handling (1) Review Zybook 16.1 and then read Custom Painting Lecture 3/16
The MVC Model (1)
  1. Setting up an MVC Application
  2. Sample Code for an MVC Application
Lecture 3/18
Python (3) My notes are a terse summary of the Python tutorial.
Concurrency (4)
  1. My Concurrency Slides
  2. Oracle's Concurrency in Java Tutorial
  3. My Sockets Slides
  4. Oracles' Java Sockets Tutorial
  5. My High Level Java Concurrency Slides
Functional Languages (4)
  1. functional programming
  2. scheme
  3. other functional issues
  1. Lecture 4/15: Functional Language Intro
    Intro Slides
  2. Day 2:
  3. Day 3:
  4. Day 4: