## Data Structures ITCS2870

This traditional computer science course introduces students to advanced data structure concepts including objects and inheritance, algorithm analysis, recursion, stacks, queues, lists, randomization, trees, sorting and searching, hash tables, and graphs and paths.

### Correlated Learning Outcomes

- AL-01 Analyze best, average, and worst-case behaviors of an algorithm. [Analyzing]

- AL-02 Estimate time and space complexities for a given algorithm using Big-O notation. [Evaluating]

- AL-03 Contrast standard complexity classes. [Analyzing]

- AL-04 Analyze the performances of an algorithm with various input sizes. [Analyzing]

- AL-05 Apply an appropriate algorithmic approach to a given problem. [Applying]

- AL-07 Implement basic numerical algorithms. [Applying]

- AL-08 Implement common search algorithms, including linear and binary searches. [Applying]

- AL-09 Implement common sorting algorithms, including iterative, quadratic, and recursive. [Applying]

- AL-10 Implement hash tables, including collision avoidance and resolution. [Applying]

- AL-11 Explain the runtime and memory efficiency of principal sorting, searching, and hashing functions. [Understanding]

- AL-12 Investigate factors other than computational efficiency that influence the choice of algorithms. [Applying]

- AL-13 Compare various data structures for a given problem. [Analyzing]

- AL-14 Investigate security vulnerabilities in various data structures. [Applying]

- CYB-06 Examine ethical issues related to cybersecurity. [Analyzing]

- CYB-11 Use the principles of secure design. [Applying]

- CYB-12 Illustrate the security implications of relying on open design vs the secrecy of design. [Applying]

- CYB-17 Implement programs that properly handle exceptions and error conditions. [Applying] See also SDF-12.

- DS-22 Illustrate the basic terminology of graph theory including properties and special cases for each type of graph/tree. [Applying]

- DS-23 Demonstrate different traversal methods for trees and graphs, including pre-, post-, and in-order traversal of trees. [Understanding]

- DS-24 Solve a variety of real-world problems in computer science using appropriate forms of graphs and trees, such as representing a network topology or the organization of a hierarchical file system. [Applying]

- DS-25 Implement and use balanced trees and B-trees. [Applying]

- DS-26 Implement graph algorithms. [Applying]

- DS-27 Demonstrate how concepts from graphs and trees appear in data structures, algorithms, proof techniques (structural induction), and counting. [Understanding]

- DS-28 Describe binary search trees and AVL trees. [Understanding]

- DS-29 Explain complexity in the ideal and in the worst-case scenario for both implementations. [Understanding]

- PL-01 Design a simple class hierarchy using superclasses, subclasses, and abstract classes. [Creating]

- PL-02 Diagram control flow in a program using dynamic dispatch. [Applying]

- PL-03 Use access and visibility modifiers to secure class data and methods. [Applying]

- PL-04 Implement in code OOP constructs, including encapsulation, abstraction, inheritance, and polymorphism. [Applying]

- PL-05 Implement algorithms which utilize immutable and mutable variables. [Applying]

- PL-06 Contrast functional and object-oriented programming paradigms. [Analyzing]

- SDF-03 Compare multiple algorithms for a given problem. [Analyzing]

- SDF-04 Create simple programs that use abstract data types (ADTs). [Creating]

- SDF-06 Create programs which use defensive programming techniques, including input validation, type checking, and protection against buffer overflow. [Creating] See also CYB-15.

- SDF-07 Create code in a programming language that includes primitive data types, references, variables, expressions, assignments, I/O, control structures, and functions. [Creating]

- SDF-08 Create a simple program that uses persistence to save data across multiple executions. [Creating]

- SDF-09 Create a simple program that uses recursion. [Creating]

- SDF-10 Create simple programs that include each of the following data structures: lists, stacks, queues, hash tables, graphs and trees. [Creating]

- SDF-11 Compare the efficiency of basic operations across various data structures. [Analyzing]

- SDF-12 Investigate common coding errors that introduce security vulnerabilities. [Applying]

- SDF-13 Implement refactoring within given program components. [Applying]

- SDF-14 Analyze programming code that utilizes preconditions, postconditions, and invariants. [Analyzing]

- SDF-15 Apply a variety of strategies to test and debug programs. [Applying]

- SDF-16 Use an integrated development environment (IDE) to create, execute, test, and debug secure programs. [Applying]

- SDF-17 Use standard libraries for a given programming language. [Applying]

- SDF-18 Apply consistent documentation and program style standards. [Applying]

- SDF-19 Carry out a code review on a program component using a provided security checklist. [Applying]

- SP-07 Examine various ethics scenarios in computing. [Analyzing]

- SP-08 Support the ethical responsibility of ensuring software correctness, reliability, and safety. [Evaluating]

- SP-09 Compare professional codes of conduct from the ACM, IEEE Computer Society, and other organizations. [Analyzing]

- SP-16 Use effective oral, written, electronic, and visual communication techniques with stakeholders. [Applying]

- SP-17 Interpret the impact of both verbal and nonverbal cues during communication among team members. [Understanding]

- SP-18 Develop technical artifacts. [Creating]