Data Structures and Algorithms (COMP 254)
Building on object-oriented programming fundamentals, this course introduces students to classical data structures and algorithms essential to efficient software system design.
Course Description
Building on foundational Object-Oriented Programming skills, this course develops students' ability to design, implement, and analyze algorithms and data structures essential to modern software systems. Students will critically assess algorithmic strategies and select appropriate data structures based on performance and efficiency considerations. Emphasizing classical structures and algorithm design patterns, the course integrates AI-assisted development practices, using tools like GitHub Copilot to support code generation, refactoring, and solution exploration. Students gain experience collaborating with AI coding assistants while maintaining rigorous software engineering standards. Java is the primary language of instruction, with Python available optionally for selected exercises and assignments.
Weekly Topics
- Course overview and programming language primer
- Object-oriented design and review
- Fundamental data structures: arrays and singly linked lists
- Fundamental data structures: doubly linked lists
- Algorithm analysis and asymptotic complexity
- Recursion and recursive problem solving
- Stacks, queues, and deques
- List and iterator ADTs; midterm assessment
- Trees and tree traversals
- Priority queues and heaps
- Maps and hash tables
- Search trees
- Sorting and selection algorithms
- Final assessment
Course Materials
Mandatory Text
Goodrich, M. T., Tamassia, R., & Goldwasser, M. H. Data Structures and Algorithms in Java (6th ed.). Wiley, 2014.
Supplementary Texts
- Goodrich, M. T., Tamassia, R., & Goldwasser, M. H. Data Structures and Algorithms in Python. Wiley, 2013.
- Dale, N., Joyce, D. T., Weems, C. Object-Oriented Data Structures Using Java (4th ed.). Jones & Bartlett Learning, 2018.
Java and Python Development Resources
Official Language Documentation
- Java Language Specifications
- Java Platform Documentation
- Python Tutorial (Official)
- Python Guide for Programmers