Programming Fundamentals II COSC 1437

Focuses on the object-oriented programming paradigm, emphasizing the definition and use of classes along with fundamentals of object-oriented design. Includes basic analysis of algorithms, searching and sorting techniques, and an introduction to software engineering processes. Students will apply techniques for testing and debugging software. (This course is included in the Field of Study Curriculum for Computer Science.)

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-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-14 Investigate security vulnerabilities in various data structures. [Applying]
  • AL-16 Describe the concept of finite state machines. [Understanding]
  • AR-05 Compare different methods for converting numerical data from one format to another. [Analyzing]
  • 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-05 Explain the concepts of trust and trustworthiness related to cybersecurity. [Understanding]
  • 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-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-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-21 Describe key terms in cryptology, including cryptography, cryptanalysis, cipher, cryptographic algorithm, and public key infrastructure. [Understanding]
  • CYB-22 Use a variety of ciphers to encrypt plaintext into ciphertext. [Applying]
  • CYB-23 Apply cryptographic hash functions for authentication and data integrity. [Applying]
  • DS-02 Perform the operations associated with sets, functions, and relations. [Applying]
  • DS-13 Explain the parallels between ideas of mathematical and/or structural induction to recursion and recursively defined structures. [Understanding]
  • DS-14 Explain the relationship between weak and strong induction and give examples of the appropriate use of each. [Understanding]
  • DS-23 Demonstrate different traversal methods for trees and graphs, including pre-, post-, and in-order traversal of trees. [Understanding]
  • DS-25 Implement and use balanced trees and B-trees. [Applying]
  • 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]
  • 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-02 Implement a simple usability test for an existing software application. [Applying]
  • HCI-06 Analyze the interaction between a security mechanism and its usability. [Analyzing]
  • IM-03 Investigate contingency planning with respect to business continuity, disaster recovery and incident response. [Applying]
  • IM-07 Diagram the components of a database system and give examples of their use. [Applying]
  • OS-06 Manipulate a device list or driver I/O queue. [Applying]
  • 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-10 Explain the security implications of a type-safe language for software development. [Understanding]
  • 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-12 Investigate common coding errors that introduce security vulnerabilities. [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-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-03 Diagram the phases of the secure software development lifecycle (SecSDLC). [Applying]
  • SE-08 Illustrate principles of secure software design [Applying]
  • SE-09 Analyze an existing software design to improve its security. [Analyzing]
  • SE-12 Differentiate between program validation and verification. [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-03 Investigate security implications related to emerging computational paradigms. [Applying]
  • SF-06 Investigate defects in a layered program using tools for program tracing, single stepping, and debugging. [Applying]
  • SP-01 Investigate both positive and negative ways in which computing technology impacts information exchange and social interaction. [Applying]
  • SP-02 Examine developers’ assumptions and values embedded in hardware and software design, especially with respect to underrepresented groups and diverse populations. [Analyzing] See also HCI-06.
  • SP-03 Analyze the impact of diversity on the computing profession. [Analyzing]
  • SP-04 Investigate social engineering attacks and the types of bad actors who might perform them. [Applying]
  • 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-15 Analyze technological solutions to privacy concerns. [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]
  • SP-20 Investigate laws applicable to computer crimes. [Appying]
  • SP-21 Examine the motivation and ramifications of cyber terrorism and criminal hacking. [Analyzing]