separate compilation
Date Reading Subject
Sept. 3
  Introduction, administrivia, lab use, languages and paradigms
Sept. 5
  History of programming languages:
machine, assembly, first HOL's
Sept. 8
  More history; Language theory: generative grammar and ambiguity
Sept. 10 timeline History 1970-present
Sept. 12 Kernighan & Ritchie
The C Programming Language,
or Schmidt,
The Annotated ANSI C Standard
The C Language: types and operators
Sept. 12 Deadline to add courses
Sept. 15 C: more operators, grammar
Sept. 17
C: I/O, pointers, and memory
Sept. 19 C: casting, pointers vs. arrays, memory allocation
Sept. 22 Installing and Using a C Compiler; #include
Sept. 24 Installing and Using jGRASP (in various languages)
Sept. 26 Memory allocation and deallocation; memory leaks and dangling pointers
Sept. 29 Deadline to drop courses
Sept. 29
C: file I/O, standard string operations, command-line arguments
Oct. 1
C: arrays of pointers, multi-dimensional arrays
Oct. 3
C: enums, structs, unions, typedefs
Oct. 6
Yom Kippur; no classes
Oct. 8
  C: headers, function prototypes, multiple source files, conditional compilation
Oct. 10
I'm out of town
Oct. 13
Stroustrup,
The C++ Programming Language,
or Budd,
C++ for Java Programmers
C++: history and philosophy, I/O, declaration differences, strings
Oct. 15 C++: consts, references, default parameters, new/dispose
Oct. 17 C++: classes, data members, member functions, and constructors
Oct. 20
C++: inheritance, composition, polymorphism, and overriding
Oct. 22 C++: overloading "<<" and ">>"; const member functions
Oct. 24
C++: try, catch, and assert
Oct. 27 Sierra & Bates,
Head First Java,
or Budd,
C++ for Java Programmers
Java: history and philosophy, final, primitive types
Oct. 29 Java: Strings, arrays, new, garbage collection
Oct. 31 Java: classes, instance variables, methods, (default) constructors
Oct. 31 Deadline to withdraw from courses
Nov. 3 Java: class hierarchy, invoking superclass methods and constructors, abstract classes and interfaces
Nov. 5 Java: toString, I/O, try/catch, assert, file and network I/O
Nov. 7 Java: GUI components and Listeners
Nov. 10 Java: container classes and Iterators
Nov. 12 How to Design Programs Scheme: history and philosophy, types, defining variables and functions
Nov. 14 Scheme: conditionals, symbols vs. strings, type-checking
Nov. 17 Scheme: structures, graphics
Nov. 19 Scheme: inheritance and mixed data types (i.e. polymorphism)
Nov. 21 Scheme: lists and recursion thereon
Nov. 24 Scheme: local definitions, higher-order functions, lambda
Nov. 26 Scheme: mutation, I/O, format, sequential programming, vectors, iteration
Nov. 28 Thanksgiving break -- no classes
Dec. 1 Adventure in Prolog Prolog: history and philosophy, variables and predicates, arithmetic
Dec. 3 Defining rules, arithmetic
Dec. 5
Recursion
Dec. 8
Structures and lists
Dec. 10
Cut, programming tricks, difference lists
Dec. 12 Catch up and review
Dec. 17 Final exam, 8:00-10:00 AM

Last modified:
Stephen Bloch