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
OREN.601.220
OREN.600.107
OREN.601.107
OREN.500.112
OR (EN.500.113
ANDEN.500.132
) OR (EN.500.114
ANDEN.500.132
) or by permission of instructor.
Upon successful completion of this course, you should be able to:
- Understand the operation of common data structures and algorithms.
- Use analysis techniques to choose the data structure/implementation appropriate for a given problem.
- Write advanced object-oriented solutions in Java to significant problems by implementing appropriate data structures and algorithms.
- Evaluate and compare the time complexity of functions using mathematical techniques.
- 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 principles of computing 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]