Fundamentals of Java: Comprehensive Course


Annotated Table of Contents



Lesson 1 Background

Presents a concise overview of the history of computing, computer hardware and software, binary representation of information, programming languages, the software development process, and an intuitive overview of OOP.


Lesson 2 First Java Programs

Presents an overview of the JVM and byte code, the edit/compile/execute cycle, a hello world program, a temperature conversion program, and a simple turtle graphics program. Students learn to send messages to objects in each program, thus becoming familiar with the use of objects, methods, actual parameters and returned values.


Lesson 3 Syntax, Errors, and Debugging

Presents an overview of the syntax and semantics of basic language elements such as imports, variables, object instantiation, expressions, random numbers.  Presents an introduction to strings and their operations.  Illustrates syntax, run-time, and logic errors and debugging.  Presents the first two case studies.


Lesson 4 Introduction to Control Statements

Presents selection and iteration using the if-else statement, the while and for statements, and nested if statements. Includes coverage of relational operators, increment and decrement operators, and the math and random methods.  Provides an overview of testing and debugging loops.


Lesson 5 Introduction to User-Defined Classes

Presents an overview of interfaces and a template for defining classes, instance variables and methods, constructors, accessors, and mutators.  Primary focus is on encapsulation, object state and identity.  Secondary focus is on methods, scope and lifetime of variables, and parameter passing.  At least two case studies illustrate the development of cooperating classes by modifying existing classes.


Lesson 6 More Operators and Control Statements

Provides an overview of other useful operators and control statements, including the logical operators and nested loops.


Lesson 7 Improving the User Interface

Introduces graphical user interfaces and contrasts them with terminal-based interfaces.  The use of GUIs provides many new opportunities to send messages to objects.


Lesson 8 Introduction to Arrays

Presents an overview of the use of arrays.  Includes declaration, instantiation, indexing, use with loops and methods, linear search, manipulation of partially full arrays, parallel arrays, and two-dimensional arrays.


Lesson 9 More on Classes

Discusses additional aspects of classes and objects, including the use of preconditions and postconditions, exceptions, static variables and methods, equals vs ==, comparing objects, copying objects, polymorphism, inheritance, abstract classes, and casting.


Lesson 10 More on Arrays

Presents advanced manipulations of arrays, including linear search, binary search, selection sort, insertions, removals, and resizing.  Also introduces the use of Java's ArrayList class.


Lesson 11 Recursion, Complexity, Searching, and Sorting

Presents an overview of recursive problem solving with interesting examples.  Introduces big-O notation, binary search, and nlogn sorting algorithms.


(AB level only starts here)


Lesson 12 Object-Oriented Analysis and Design

Presents an overview of basic concepts and tools, including UML, for analysis and design of classes and objects.


Lesson 13 Linear Collections: Lists

Presents a conceptual overview of collections.  Introduces the list interface and its two implementing classes from the client's perspective.  Includes an introduction to the use of iterators.


Lesson 14 Linear Collections: Stacks and Queues

Introduces the stack, queue, and priority queue collections from a client's perspective.


Lesson 15 Unordered Collections: Sets and Maps

Introduces the set and map collections from a client's perspective.


Lesson 16 Implementing Lists, Stacks, and Queues

Presents array-based and link-based implementations of lists, stacks, and queues and discusses their tradeoffs.


Lesson 17 Implementing Sets and Maps

Presents the implementation of sets and maps.


Lesson 18 Implementing Trees and Priority Queues

Presents the implementation of binary trees and priority queues.


Lesson 19 Simple Two-Dimensional Graphics

Presents the basics of graphics programs in Java.  Coordinate systems, drawing primitives, the transient image problem, use of panels, handling mouse events, bar graphs and pie charts.


Lesson 20 Files

Presents the use of file streams, text files, and object serialization.


Lesson 21 Introduction to HTML and Applets

Presents an overview of HTML and applets using BreezySwing.


Lesson 22 Swing

Presents an overview of Swing.