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:
                                    
                                    
                                       
                                       - 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.
 
                                       
                                       - Explain and apply the workflows and phases of an agile life cycle model.
 
                                       
                                       - Identify the need for design tradeoffs such as software design patterns, refactoring;
                                          abstract data types, encapsulation, and information hiding.
 
                                       
                                       - Effectively communicate technical matters (written and verbally) with programmers,
                                          clients, and end-users.
 
                                       
                                       - Effectively use collaborative software development tools to assist in the documentation
                                          and development of a software product.
 
                                       
                                       - Explain and apply software engineering metrics (e.g., measures of product size, quality,
                                          and complexity).
 
                                       
                                       - 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