Syllabus - COMP121

COMP121 - Object-Oriented Data Structures & Algorithms I

Description:
This course continues the objected-oriented approach to software construction. The student learns and reflects on advanced object-oriented techniques, algorithm efficiency, class hierarchies, and data structures. To support the concepts and principles of software construction, the student will design, code, test, debug, and document programs using the Java programming language. Design principles, I/O, exception handling, linear data structures (lists, stacks, and queues), and design patterns are emphasized in addition to the object-oriented techniques of inheritance and polymorphism.

Outcomes:

  • Apply the advanced object-oriented principles of inheritance and polymorphism to analyze real-world problems and design, implement, and test solutions
  • Detect and correct runtime program errors using exceptions
  • Read and write random access and sequential files of text and binary data
  • Analyze space and time complexity of algorithms
  • Design, implement, test, debug, and document linear data structures
  • Use lists, stacks, and queues to solve problems
  • Recognize and apply the design patterns of Strategy, Template Method, Iterator, and Adapter in object-oriented designs
  • Discuss relationships between the disparate topic areas addressed in this course

Required Text(s):

  • Horstmann, C. (2015). Big Java (6th ed.). John Wiley & Sons. ISBN: 9781119056447 (print), 9781119141594
    • Note: This book will be used again in COMP 321.
  • Koffman, E., & Wolfgang, P. (2016). Data structures: Abstraction and design using Java (3rd ed.). John Wiley & Sons. ISBN: 9781119239147 (print), 9781119186526
    • Note: This book will be used again in COMP 311.
  • Freeman, E., & Freeman E., (2020). Head first design patterns (Links to an external site.) (2nd ed). O'Reilly Media, ISBN: 9781492078005
    • Note: This book will be used again in COMP 311 and is recommended in COMP 321.
  • COMP 121 Learning Activity support files are required for completing the Guided Learning Activities in select modules. They contain pre-built BlueJ projects that you will modify and run.