## Data Structures and Algorithms

3 Cr. (Hrs.:2 Lec., 2 Lab)

Commonly used structures found in computing and the algorithms which manipulate them are studied. Design and analysis of algorithms are emphasized. Topics include stacks, queues, general lists, trees, hashing, searching, and sorting Prerequisites: CSCI 136, Co-Requisite: CSCI 246 (1st)

#### Expectations:

E1. Students are proficient in a programming language and know basic error-handling, testing and debugging techniques. (CSCI 136)

E2. Students know how to use advanced programming techniques, including recursion, file I/O, abstraction, multi-file programs, and using programming language libraries. (CSCI 136)

E3. Students know how to use basic object-oriented programming methodologies; such as object-oriented problem decomposition, class design/implementation, and object creation/ usage. (CSCI 136)

E4. Students are familiar with summation notation, union and intersection of sets, logarithms, exponential functions, and are able to work with abstractions and manipulate formulas. (CSCI 246)

#### Course Outcomes:

R1. Students understand Abstract Data Types (ADTs), how to specify ADTs with Unified Modeling Language (UML), logical axioms to help specify behaviors, and how to implement ADTs using a high level object oriented programming language. (CAC-c, i; EAC-k, 1)

R2. Students know how to use recursion and prove the correctness of a recurrence by mathematical induction. (CAC-a; EAC-a, 1,)

R3. Students understand basic ADTs like lists, sorted lists, stacks, and queues and be able to evaluate the best data structure to implement them. (CAC-j; EAC-e)

R4. Students understand space and time efficiency (Big O notation) of data structures and algorithms. (CAC-a, b, j; EAC-a, e, 1)

R5. Students can implement and compare several standard sorting techniques. (CAC-a, b, j; EAC-a,b)

R6. Students understand and use general trees, binary trees, binary search trees, and balanced search trees, tables, heaps, priority queues, and hash tables. (CAC-c, i, j, k; EAC-c, e, k,1)

R7. Students can evaluate and select the appropriate data structure for a given problem (CAC-j; EAC-e,1)

R8. Students know about intellectual property, including copyright and patent protection on data structures and algorithms. (CAC-e; EAC-f, j)

R9. Students know how to program in C++ and have experience with file input/output, throwing and catching exceptions, dynamic memory allocation, pointers, strings, class templates and the Standard Template Library (STL), inheritance, virtual functions, polymorphism, and abstract base classes. (CAC-c, i, k; EAC-e, k, 1)

R10. Students will be familiar with a modern software configuration and management (SCM) platform. (CSC-i; EAC-k)