Object-Oriented Programming INF 260
Object-oriented programming concepts and practice: types, decisions, loops, methods, arrays, classes; design and problem-solving. An intensive introduction intended for students with programming experience. Includes secure coding and data structures.
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-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-15 Write a regular expression to match a pattern. [Applying]
- AL-16 Describe the concept of finite state machines. [Understanding]
- CYB-01 Describe security as a continuous process of tradeoffs, balancing between protection mechanisms and availability. [Understanding]
- CYB-02 Illustrate through examples the concepts of risk, threats, vulnerabilities, attack vectors, and exploits, noting there is no such thing as perfect security. [Applying]
- 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-08 Apply security principles and practices in a dynamic environment. [Applying]
- CYB-11 Use the principles of secure design. [Applying]
- CYB-14 Analyze the tradeoffs associated with designing security into a product. [Analyzing]
- CYB-15 Construct input validation and data sanitization in applications, considering adversarial control of the input channel. [Creating] See also SDF-06.
- CYB-16 Explain the tradeoffs of developing a program in a type-safe language. [Understanding] See also PL-10.
- 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-22 Use a variety of ciphers to encrypt plaintext into ciphertext. [Applying]
- GV-05 Perform information hiding through steganography in images, messages, videos, or other media files. [Applying]
- HCI-04 Write a simple application that uses a modern graphical user interface. [Applying]
- HCI-05 Use at least one national or international user interface design standard in a simple application. [Applying] See also SP-02.
- PD-01 Analyze the goals of parallelism and concurrency. [Analyzing] See also OS-07 and SF-08.
- PL-01 Design a simple class hierarchy using superclasses, subclasses, and abstract classes. [Creating]
- 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-07 Create an interactive program using an event-driven style. [Creating]
- PL-08 Describe potential security vulnerabilities in event-driven GUI applications. [Understanding]
- PL-09 Investigate potential errors detected from both strong-type and weak-type languages. [Applying]
- PL-10 Explain the security implications of a type-safe language for software development. [Understanding]
- SDF-01 Design an algorithm in a programming language to solve a simple problem. [Creating]
- SDF-03 Compare multiple algorithms for a given problem. [Analyzing]
- 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]
- SE-03 Diagram the phases of the secure software development lifecycle (SecSDLC). [Applying]
- SE-05 Investigate the risks in using third-party applications, software tools, and libraries. [Applying]
- SE-06 Use a set of development tools for software systems. [Applying]
- SE-07 Implement the requirements for a secure software system. [Applying]
- SE-08 Illustrate principles of secure software design [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-12 Differentiate between program validation and verification. [Understanding]
- SF-09 Investigate other uses of parallelism, including reliability and redundancy of execution. [Applying]
- SP-10 Differentiate the terms among intellectual property, fair-use, copyright, patent, trademark, and plagiarism. [Understanding]
- SP-18 Develop technical artifacts. [Creating]