Lectures and Code Samples
The lecture notes cover the whole semester of the course Fundamentals of Computing and Programming 2.
While some of the lectures compare the new material with similar material students should have encountered in our first course, the text can be used by students who do not have that prerequisite.
Every lecture comes with a complete sample Java code that can be run in class or by students themselves. The code makes all ideas concrete, and it also sets an example of coding style we would like the students to follow.
Lecture 1: Design Recipe and DrRacket Review
Introduces the Design Recipe for designing functions
in the context of designing static methods in Java.
Reviews the foldl and foldr loops in DrRacket
and highlights the problems encountered in computing with inexact
numbers.
Lecture 2: Data Definitions in Java
Design of simple classes and classes that contain objects in another class. Uses the tester library to display the data.
Lecture 3: Data Definitions: Unions
Design of classes that represent a disjoint union of sets of data.
Extending unions to represent self-referential data.
Lecture 4: Designing Methods: Simple Classes
Design of methods for simple classes and classes with containment.
Lecture 5: Designing Methods: Unions
Design of methods for unions of classes.
Lecture 6: Designing Methods: Self-referential Classes
Design of methods for self-referential unions of classes.
Lecture 6a: Designing Methods: Lists
Design of methods for self-referential unions of classes that represent lists.
Lecture 7: Abstracting over fields and methods
Abstracting over common fields and methods: Abstract classes.
Lecture 11: Designing interactive games; Using libraries
Designing interactive games; Using libraries, Extending abstract class; Deriving subclass
Lecture 12: Function objects: Boston Marathon
Abstracting over the behavior; designing and using function objects.
Lecture 12a: Function objects: Three questions
Abstracting over the behavior; designing and using function objects.