Introduction to Software Engineering CS 216

Implementation of large programming projects using object-oriented design techniques and software tools in a modern development environment. Software engineering topics to include: life cycles, metrics, requirements specifications, design methodologies, validation and verification, testing, reliability and project planning.

Correlated Learning Outcomes

  • AR-02 Analyze alternative formats to represent numerical data. [Analyzing]
  • AR-04 Examine the internal representation of non-numeric data. [Analyzing]
  • AR-05 Compare different methods for converting numerical data from one format to another. [Analyzing]
  • CN-01 Illustrate the concepts of modeling and abstraction with respect to problem solving. [Applying]
  • CN-02 Illustrate the relationship between modeling and simulation. [Applying]
  • CN-03 Exemplify different types of simulations. [Understanding]
  • CYB-17 Implement programs that properly handle exceptions and error conditions. [Applying] See also SDF-12.
  • HCI-02 Implement a simple usability test for an existing software application. [Applying]
  • HCI-04 Write a simple application that uses a modern graphical user interface. [Applying]
  • PD-01 Analyze the goals of parallelism and concurrency. [Analyzing] See also OS-07 and SF-08.
  • PD-02 Implement various programming constructs for synchronization. [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-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-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-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-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]