Data Structures COSC 2336
Provides further applications of programming techniques, introducing the fundamental concepts of data structures and algorithms. Includes topics on recursion, fundamental data structures (including stacks, queues, linked lists, hash tables, trees, and graphs), and algorithmic analysis.
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-06 Investigate the use of random/pseudo random number generation in cybersecurity applications. [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]
- AL-17 Explain why the halting problem has no algorithmic solution. [Understanding]
- CN-01 Illustrate the concepts of modeling and abstraction with respect to problem solving. [Applying]
- CYB-01 Describe security as a continuous process of tradeoffs, balancing between protection mechanisms and availability. [Understanding]
- CYB-03 Investigate various countermeasures and security controls to minimize risk and exposure. [Applying]
- CYB-07 Illustrate various ways to minimize privacy risks and maximize anonymity. [Applying]
- CYB-10 Illustrate with examples the goals of end-to-end data security. [Applying]
- 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-15 Construct input validation and data sanitization in applications, considering adversarial control of the input channel. [Creating] See also SDF-06.
- CYB-17 Implement programs that properly handle exceptions and error conditions. [Applying] See also SDF-12.
- CYB-18 Examine the need to update software to fix security vulnerabilities. [Analyzing]
- CYB-23 Apply cryptographic hash functions for authentication and data integrity. [Applying]
- DS-01 Explain with examples the basic terminology of functions, relations, and sets. [Understanding]
- DS-02 Perform the operations associated with sets, functions, and relations. [Applying]
- DS-17 Calculate permutations and combinations of a set, and interpret the meaning in the context of the particular application. [Applying]
- 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]
- DS-30 Calculate probabilities of events and expectations of random variables for elementary problems. [Applying]
- DS-31 Differentiate between dependent and independent events. [Understanding]
- DS-32 Explain the significance of binomial distribution in probabilities. [Understanding]
- GV-02 Demonstrate common uses of digital presentation to human senses. [Understanding]
- GV-05 Perform information hiding through steganography in images, messages, videos, or other media files. [Applying]
- HCI-01 Analyze the importance of human-centered software. [Analyzing]
- HCI-02 Implement a simple usability test for an existing software application. [Applying]
- IM-01 Contrast the difference between information and data. [Analyzing]
- IM-02 Describe the advantages and disadvantages of central organizational control over data. [Understanding]
- IM-06 Explain the characteristics that distinguish the database approach from the approach of programming with data files. [Understanding]
- NC-06 Describe security concerns in designing applications for use over wireless networks. [Understanding]
- OS-02 Compare prevailing types of operating systems. [Analyzing]
- OS-03 Illustrate potential threats to operating systems and appropriate security measures. [Applying]
- OS-06 Manipulate a device list or driver I/O queue. [Applying]
- OS-07 Investigate the need for concurrency within an operating system. [Applying] See also PD-01.
- 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]
- PL-07 Create an interactive program using an event-driven style. [Creating]
- PL-08 Describe potential security vulnerabilities in event-driven GUI applications. [Understanding]
- 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-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-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]
- SE-09 Analyze an existing software design to improve its security. [Analyzing]
- SE-10 Describe the cost and tradeoffs associated with designing security into software. [Understanding]
- SE-13 Implement in code different types of testing, including security, unit testing, system testing, integration testing, and interface usability. [Applying]
- SE-14 Design a test plan that validates software security. [Creating]
- SF-04 Describe how computing systems are constructed of layers upon layers. [Understanding]
- SF-08 Summarize the differences among the concepts of instruction parallelism, data parallelism, thread parallelism/multitasking, and task/request parallelism. [Understanding] See also PD-01.
- SP-01 Investigate both positive and negative ways in which computing technology impacts information exchange and social interaction. [Applying]
- SP-05 Contrast stakeholder positions in a given scenario. [Analyzing]
- SP-06 Analyze social tradeoffs in technical decisions. [Analyzing]
- 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-10 Differentiate the terms among intellectual property, fair-use, copyright, patent, trademark, and plagiarism. [Understanding]
- SP-11 Discuss the rationale for legal protection of intellectual property. [Understanding]
- SP-18 Develop technical artifacts. [Creating]
- SP-19 Analyze case studies related to sustainable computing efforts. [Analyzing]