Programming Fundamentals I COSC 1436

Introduces the fundamental concepts of structured and object-oriented programming, and provides a comprehensive introduction to programming for computer science and technology majors. Includes topics on software development methodology, data types, control structures, functions, arrays, and the mechanics of running, testing, and debugging. This course assumes computer literacy

Correlated Learning Outcomes

  • AL-05 Apply an appropriate algorithmic approach to a given problem. [Applying]
  • CYB-01 Describe security as a continuous process of tradeoffs, balancing between protection mechanisms and availability. [Understanding]
  • CYB-06 Examine ethical issues related to cybersecurity. [Analyzing]
  • CYB-07 Illustrate various ways to minimize privacy risks and maximize anonymity. [Applying]
  • CYB-11 Use the principles of secure 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-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-25 Explain browser and web security model concepts including same-origin policy, web sessions, and secure communication channels. [Understanding]
  • GV-03 Illustrate color models and their use in computer graphics. [Applying]
  • HCI-03 Examine the issues of trust in HCI, including examples of both high and low trust systems. [Analyzing]
  • 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.
  • IM-04 Describe proven techniques  to secure data and information. [Understanding]
  • NC-01 Diagram the basic structure of the Internet. [Applying]
  • OS-01 Examine major objectives, functions, features, and concepts of modern operating systems. [Analyzing]
  • 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-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-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-12 Investigate common coding errors that introduce security vulnerabilities. [Applying]
  • 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-08 Illustrate principles of secure software design [Applying]
  • 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]
  • SF-01 Illustrate the basic building blocks of computers and their role in the historical development of computer architecture. [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-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-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-21 Examine the motivation and ramifications of cyber terrorism and criminal hacking. [Analyzing]