Information Technology 473

ITEC 473: Advanced Software Engineering

Credit Hours: (4)

Instructional Method: Four hours lecture

Prerequisites: ITEC 370 (Grad of "C" or better)

The course will explore the concepts of advanced principles of software engineering and the design and implementation strategies appropriate for large software projects. This course includes the use of front-end and back-end development tools, agile programming methods, secure coding standards, software metrics, verification, validation, quality assurance, as well as the exploration of the principles of human-computer interaction.

Detailed Description of Content of the Course:

This course explores theoretical topics in software engineering including:

1. Software Development tools related to:

  • a. Project Planning 
  • b. Requirements Management 
  • c. Front-end Development frameworks
  • d. Back-end Development frameworks
  • e. Bug Fix Tracking 
  • f. Unit Testing 
  • g. Version Control Software 
  • h. Continuous Integration/Continuous Development (CI/CD)

2. Agile Software Development Techniques

  • a. Scrum
  • b. Extreme Programming
  • c. Feature Driven-Development

3. Software Metrics

  • a. Software development metrics
  • b. Human-computer interaction metrics

4. Evaluation of Software Systems

  • a. Secure Coding Standards
  • b. Verification and validation
  • c. Software quality assurance

5. Introduction to Human-Computer Interaction

  • a. Usability
  • b. Standards, styles, and guidelines
  • c. Interaction development process
  • d. Evaluation

Detailed Description of Conduct of Course:

This will be a primarily asynchronous, online course with online meetings to accompany the asynchronous modules.

Student Learning Outcomes

Students who complete the course will be able to:

  1. Work as a part of a team to plan activities, choose leadership, delegate responsibility, and follow a large software development project from inception to completion.
  2. Explain and apply the workflows and phases of an agile life cycle model.
  3. Identify the need for design tradeoffs such as software design patterns, refactoring; abstract data types, encapsulation, and information hiding.
  4. Effectively communicate technical matters (written and verbally) with programmers, clients, and end-users.
  5. Effectively use collaborative software development tools to assist in the documentation and development of a software product.
  6. Explain and apply software engineering metrics (e.g., measures of product size, quality, and complexity).
  7. Demonstrate the ability to apply software verification and validation techniques to software developed using an agile software development model.

Assessment Measures:

Participation in the design of a large software project is crucial to the successful completion of this course. At least one exam will also be used in evaluating the student's level of achievement.

Review and Approval

Revised August, 2020

Revised June, 2023