Course Information

This course covers the design and implementation of fundamental data structures, including arrays, stacks, queues, linked lists, binary trees, heaps, balanced trees, hash tables, and graphs. Other topics include basic algorithms (sorting, balancing search trees, graph search algorithms), asymptotic analysis, programming in Java (object-oriented, generics, unit testing). Coursework involves both written exams and programming assignments.

Prerequisites

$C+$ or better in EN.600.120 OR EN.601.220 OR EN.600.107 OR EN.601.107 OR EN.500.112 OR (EN.500.113 AND EN.500.132) OR (EN.500.114 AND EN.500.132) or by permission of instructor.

Upon successful completion of this course, you should be able to:

  1. Understand the operation of common data structures and algorithms.
  2. Use analysis techniques to choose the data structure/implementation appropriate for a given problem.
  3. Write advanced object-oriented solutions in Java to significant problems by implementing appropriate data structures and algorithms.
  4. Evaluate and compare the time complexity of functions using mathematical techniques.
  5. Design an algorithm that produces the correct results according to specified inputs and time or space complexity constraints.

This course will address the following Computer Science BS Program Student Outcomes:

  • Analyze a complex computing problem and apply computing principles and other relevant disciplines to identify solutions. [SO1]
  • Design, implement and evaluate a computing-based solution to meet a given set of computing requirements in the context of the program's discipline. [SO2]
  • Apply computer science theory and software development fundamentals to produce computing-based solutions. [SO6]