CS365 -- Programming Languages and Systems

Brad Vander Zanden

Lecture Notes

Topics (Days) Online Notes Online Lectures Attendance Mandatory
Course and Java Introduction (1)
  1. C++ versus Java
  2. Java Basics
Intro Lecture No
Java Basics (2)
  1. Java's Memory Management Model
  2. Java's Runtime System
  3. Types, Variables, and Classes in Java
  1. C++ versus Java
  2. Java Basics
  3. Jar Files
  4. Garbage Collection

optional:
  1. Introductory Java Tutorial. Skip the link to "The Java Technology Phenomenon" unless you want to be bored out of your mind. The "Hello World" Application is good because it tells you how to download NetBeans and run a sample application.
  2. Language Basics. Any of the tutorials are good except for the one on Generics, which we will cover later in the course.
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)
Day 2
  1. Enumerated Types (15:02)
  2. Garbage Collection
No
Java I/O (1)
  1. Brad's Cliff Notes
  2. Java I/O-- pay particular attention to Java's Scanner class
  3. SkewSymmetric Problem and Solution
  1. ConsoleInput (16:02)
  2. ConsoleOutput (8:37)
  3. FileIO (13:58)
No
Java Collections Library (1)
  1. Collections Tutorial (ignore the material on stream operations)
  2. Word Count Problem
Collections (30:25) No
Inheritance (3)
  1. Java's Inheritance System
  2. Different Types of Inheritance in Other Languages
  3. Implementation Issues
  4. Java's Interface/Inheritance Tutorial
Day 1: Inheritance (43:03)

Day 2:

  1. Java Inheritance (18:33)
  2. Interfaces (12:47)

Day 3:

  1. C++-Classes-Inheritance (24:50)
  2. Multiple-Mixin-Inheritance-Composition (25:51)
  3. Inheritance Implementation (16:10)
Yes
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)
No
Polymorphism, Generic Functions and Data Structures (2)
  1. Generics in C, C++, and Java
  2. Tutorial on Java Generics
  3. Example search using Java's generic data structures
Day 1:
  1. Generics C (4:11)
  2. Generics C++ (18:42)

Day 2: Generics Java (32:02)

No
Exception Handling (1)
  1. Exception Handling
  2. Exception Handling Tutorial
  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
No
Intro to Event-Based Programming (1)
  1. Overview of GUI's and Event Handling
  2. Java GUI overview
  3. Java Swing
  4. HelloWorld program with marked regions
EventProgramming (34:15) No
Layout algorithms for widgets (1) Layout Managers No
Widgets and Message Dialogs/Exam Review Session (1)
  1. widgets
  2. Java Swing Components
Widgets (1:05-51:40) No
The MVC Model (1)
  1. Setting up an MVC Application
  2. Sample Code for an MVC Application
MVC (27:39) Yes
Custom Painting and Event Handling (1) Custom Painting
  • Custom Graphics (errata at 22:10-22:20: The rectangle, including the border, is 30x30, not 25x25, because the rectangle's width/height is 20 and the border extends 5 pixels outside the rectangle on all four sides, thus making the overall size 30x30.)
  • Lecture 3/24
No
Python (3) My notes are a terse summary of the Python tutorial. Yes
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
Yes
Functional Languages (4)
  1. functional programming
  2. scheme
  3. other functional issues
  1. Day 1: Functional Language Intro
    Intro Slides
  2. Day 2:
  3. Day 3:
  4. Day 4:
Yes