Unit 1: Getting started. Computational problem solving. Simple Java programs. Statements. Standard output. Procedural decomposition using simple methods.
Unit 2: Imperative programming, part I. The programming process. Data types. Literals, variables, and expressions. Definite loops. Simple conditional execution.
Unit 3: Imperative programming, part II. Methods with parameters and return values. Using objects. Strings. Console input using Scanner objects. Conditional execution revisited. Indefinite loops and boolean expressions.
Unit 4: Processing collections of data. Arrays. References and reference variables. File processing. A first look at recursion.
Unit 5: Object-oriented programming. Writing “blueprint” classes. Fields, non-static methods, and constructors. Inheritance and polymorphism.
Unit 6: Foundations of data structures. Defining and implementing an abstract data type. Memory allocation (stack and heap storage). Recursion revisited, including recursive backtracking algorithms.
Unit 7: Sorting and algorithm analysis. Sorting arrays using the following algorithms: insertion sort, selection sort, bubble sort, Shellsort, quicksort, and radix sort. Algorithm analysis: running-time analysis; big-O notation; worst-case, average-case, and best-case analyses.
Unit 8: Sequences. Linked lists. List, stack, and queue abstract data types, including both array and linked-list implementations of each of these ADTs. Implementing a generic collection.
Unit 9: Trees and hash tables. Tree overview and terminology. Data structures and algorithms for data dictionaries: binary search trees, 2-3 trees, B-trees, and hash tables. Data compression using Huffman encoding. Heaps and priority queues.
Unit 10: Graphs. Graph overview and terminology. Depth-first and breadth-first traversals. Dijkstra’s shortest-path algorithm. Minimum spanning trees. Topological sort. Classifying problems.
Last updated on June 22, 2025.