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

  1. Course overview and programming language primer
  2. Object-oriented design and review
  3. Fundamental data structures: arrays and singly linked lists
  4. Fundamental data structures: doubly linked lists
  5. Algorithm analysis and asymptotic complexity
  6. Recursion and recursive problem solving
  7. Stacks, queues, and deques
  8. List and iterator ADTs; midterm assessment
  9. Trees and tree traversals
  10. Priority queues and heaps
  11. Maps and hash tables
  12. Search trees
  13. Sorting and selection algorithms
  14. 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

Java and Python Development Resources

Official Language Documentation

Practice and Algorithmic Problem Solving

Development Tools and Environments

Supplementary Reading and Community Resources