CSCI 420

Software Engineering

Coordinator: William Killian

Credits: 4.0


Overview of software engineering concentrating on phases of the software development life cycle including models, agile software development processes, project management, stories and features, specifications, architecture design (APIs, scalability, microservices), specification-based testing, coverage-based testing, and formal verification. Software management topics covered include source control, issue tracking, continuous integration, test automation, quality assurance, and code reviews. Team project provides students with practical experience applying techniques. Offered every semester.


C- or higher in CSCI 330, CSCI 362, and CSCI 366.

Course Outcomes

  1. Develop experience in working (in various roles) as a member of a software development team.
  2. Present technical material to a group
  3. Create precise and informative documents related to software development.
  4. Differentiate between various processes of software development
  5. Apply design patterns to various components of a software project.
  6. Compare several approaches to software design (data flow, data structure, object oriented).
  7. Apply various testing strategies and evaluate their effectiveness.
  8. Recognize the importance of quality assurance and reliability of software systems.
  9. Understand professional responsibilities and the software engineering code of ethics.
  10. Analyze a situation using the software engineering code of ethics (disseminated through a paper)