Fundamentals of Software Engineering ITCS2080

This course introduces the basic principles and concepts of software engineering and provides the necessary foundation for subsequent SE courses at the upper division level. Topics include: basic terminology and concepts of software engineering; system requirements, modeling, and testing; object oriented analysis and design using UML; frameworks and APIs; client-server architecture; user interface technology; and the analysis, design, and programming of simple servers and clients.

Correlated Learning Outcomes

  • 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-04 Analyze the tradeoffs of balancing key security properties, including Confidentiality, Integrity, and Availability (CIA). [Analyzing]
  • CYB-06 Examine ethical issues related to cybersecurity. [Analyzing]
  • CYB-09 Illustrate through examples the key role risk management frameworks play in identifying, assessing, prioritizing, and controlling risks to organizational assets. [Applying]
  • CYB-10 Illustrate with examples the goals of end-to-end data security. [Applying]
  • CYB-20 Illustrate the key principles of social engineering, including membership and trust. [Applying] See also SP-04.
  • 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-03 Investigate contingency planning with respect to business continuity, disaster recovery and incident response. [Applying]
  • IM-04 Describe proven techniques  to secure data and information. [Understanding]
  • IM-05 Describe approaches to scale up information systems. [Understanding]
  • IM-12 Diagram a relational data model for a given scenario that addresses security and privacy concerns. [Applying]
  • IM-13 Describe the differences among relational data models and other models. [Understanding]
  • PD-01 Analyze the goals of parallelism and concurrency. [Analyzing] See also OS-07 and SF-08.
  • PD-05 Investigate the challenges and concerns related to security and privacy in Cloud computing. [Applying] See also NC-08.
  • 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-05 Investigate potential vulnerabilities in provided programming code. [Applying] See also AL-16, CYB-28, PL-10, SDF-12.
  • SDF-11 Compare the efficiency of basic operations across various data structures. [Analyzing]
  • SDF-12 Investigate common coding errors that introduce security vulnerabilities. [Applying]
  • SE-01 Diagram how software interacts with various systems, including information management, embedded, process control, and communications systems. [Applying]
  • SE-02 Compare the features of various process models. [Analyzing]
  • SE-03 Diagram the phases of the secure software development lifecycle (SecSDLC). [Applying]
  • SE-04 Illustrate common behaviors that contribute to the effective functioning of a team. [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-11 Implement a small software project that uses a defined coding standard. [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]
  • SE-14 Design a test plan that validates software security. [Creating]
  • SF-03 Investigate security implications related to emerging computational paradigms. [Applying]
  • SF-04 Describe how computing systems are constructed of layers upon layers. [Understanding]
  • SP-03 Analyze the impact of diversity on the computing profession. [Analyzing]
  • 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-12 Outline the need for legal protection of personal privacy. [Analyzing]
  • SP-13 Investigate threats to privacy rights in personally identifiable information (PII). [Applying]
  • SP-14 Illustrate the role of data collection in the implementation of pervasive surveillance systems. [Applying]
  • 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-19 Analyze case studies related to sustainable computing efforts. [Analyzing]
  • SP-20 Investigate laws applicable to computer crimes. [Appying]
  • SP-21 Examine the motivation and ramifications of cyber terrorism and criminal hacking. [Analyzing]