CS 2110
Object-Oriented Programming and Data Structures
Intermediate programming in a high-level language and introduction to software engineering. Topics include object-oriented programming (objects, classes, subtypes, encapsulation, polymorphism), program correctness (specifications, invariants, testing), algorithm analysis (asymptotic complexity, big O notation), recursion, data structures (lists, trees, stacks, queues, heaps, hash tables, graphs), iteration and searching/sorting, graph algorithms, and concurrent and event-driven programming (graphical user interfaces, synchronization). Java is the principal programming language.
Topics
- Employ recursion and object-oriented programming concepts (e.g., classes, interfaces, polymorphism, inheritance) to solve computational problems.
- Design, implement, and verify nontrivial Java programs (roughly 1000 lines of code), starting from an English language specification, leveraging features like encapsulation and unit tests to improve maintainability.
- Build and modify event-driven graphical user interfaces (GUIs) expressed in Java.
- Analyze the asymptotic complexity of algorithms and programs to evaluate their running times and memory requirements.
- Implement basic data structures taught in the course (linked lists, binary search trees, heaps, hash tables, adjacency lists) and be able to use them in programs.
Official roster learning outcomes
Prerequisites & course information
CS 1110 or CS 1112 or equivalent.
Sources
Catalogue variants
- Object-Oriented Programming and Data Structures · 4.0 · Undergraduate