CS365 -- Programming Language Design and Implementation

Brad Vander Zanden

Lecture Notes

Notice that the lecture notes for the first several class sessions have changed.

Topics (Days) Textbook Readings Online Notes
Course and Java Introduction (1) Scott Ch 1.1-1.3
  1. C++ versus Java
  2. Java Basics
Java Basics (2)
  1. Java's Memory Management Model
  2. Types, Variables, and Classes in Java
  1. Scott 3.1-3.5 -- Names, Scopes, and Bindings
  2. Scott 6.5-6.5.3 -- Loops
  3. Scott 8.3 -- Parameter Passing
  1. C++ versus Java
  2. Java Basics
  3. Jar Files

  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 later.
Java I/O (1) none
  1. Brad's Cliff Notes
  2. Java I/O-- pay particular attention to Java's Scanner class
Inheritance (2) Scott: Chapter 9
  1. Java's Inheritance System
  2. Different Types of Inheritance in Other Languages
  3. Implementation Issues
Module Mechanisms (1) Scott 3.3.4-3.3.5 -- Modules and Module Classes
  1. Modules in C and C++
  2. Java Modules (Packages)
  3. Sun's Java Package Tutorial
Generic Functions and Data Structures (1) Scott 8.4 -- Generic Subroutines and Modules
  1. Generics in C, C++, and Java
  2. Tutorial on Java Generics
  3. Example search using Java's generic data structures
  4. Example using a Java Scanner
Parts of a compiler (1) Scott: 1.4-1.6 -- Overview of compilation none
Regular Expressions and Grammars (2) Scott: 2 - 2.1 -- Specifying syntax
  1. lexical scanning
  2. grammars
Lexical Analysis and Antlr (1) Scott: 2.2 antlr
Parsing (2) Scott: 2.3 - 2.3.2 parsing (Read up to the part entitled "C. LR Parsing Algorithm").
How to build parse trees for your project (1) none building parse trees
Exception Handling (2) Scott: 8.5 -- Exception Handling
  1. Exception Handling in Java
  2. Sun's Exception Handling Tutorial
Intro to Event-Based Programming and the Model View Controller (MVC) Design Pattern (1) Scott: 8.7 -- Events
  1. Overview of GUI's and Event Handling
  2. Java GUI overview
  3. Java Swing
  4. HelloWorld program with marked regions
Widgets and Message Dialogs (1) none
  1. widgets
  2. Java Swing Components
Layout algorithms for widgets (1) none Java Layout Managers
Data Types and Type Checking (1) Scott: 7.1-7.2, 7.4, 7.7 Garbage Collection
Scripting Languages--Introduction (1) Scott: 13.1-13.3 none
Innovative Features of Scripting Languages (1) Scott: 13.4 none
Python--An Example Scripting Language (1) none Python
Concurrency (2) Scott--12 none
Functional Languages (2) Scott--10 none