S-111
  • Home
  • Lectures
  • Problem Sets
  • Sections
  • Syllabus
  • Schedule
  • Staff
  • Resources
  • Canvas
  • Ed Discussion
  • Gradescope

Course Outline

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.