Software Engineering (SE)

View PDF

Expand all courses

Courses

Courses primarily for undergraduates:

Credits: Required. Contact Hours: Lecture 1.

Prereq: Software Engineering Major
Introduction to the procedures, policies, and resources of Iowa State University and the Software Engineering Program. Offered on a satisfactory-fail basis only.

Credits: Required. Contact Hours: Lecture 1.

Prereq: Software Engineering Major
Introduction to the procedures, policies, and resources of Iowa State University and the Software Engineering Program. Offered on a satisfactory-fail basis only.

Credits: Required. Contact Hours: Lecture 1.

Overview of the nature and scope of the software engineering profession, relationship of coursework to careers, and program of study planning. Offered on a satisfactory-fail basis only.

Credits: Required. Contact Hours: Lecture 1.

Overview of the nature and scope of the software engineering profession, relationship of coursework to careers, and program of study planning. Offered on a satisfactory-fail basis only.

Credits: 3. Contact Hours: Lecture 2, Laboratory 2.

Prereq: Credit or concurrent enrollment in MATH 1430 (or satisfactory scores on mathematics placement examinations)
Introduction to software engineering and computer programming. Systematic thinking process for problem solving in the context of software engineering. Group problem solving. Solving software engineering problems and presenting solutions through computer programs, written documents and oral presentations. Introduction to principles of programming, software design, and extensive practice in design, writing, running, debugging, and reasoning about programs. Satisfactory placement scores can be found at: https://math.iastate.edu/academics/undergraduate/aleks/placement/. Graduation Restriction: Only one of ENGR 1600, ABE 1600, AERE 1600, BME 1600, CE 1600, CHE 1600, CPRE 1850, EE 1850, IE 1480, ME 1600, and SE 1850 may count towards graduation.

Credits: 3. Contact Hours: Lecture 2, Laboratory 2.

Prereq: Credit or concurrent enrollment in MATH 1430 (or satisfactory scores on mathematics placement examinations)
Introduction to software engineering and computer programming. Systematic thinking process for problem solving in the context of software engineering. Group problem solving. Solving software engineering problems and presenting solutions through computer programs, written documents and oral presentations. Introduction to principles of programming, software design, and extensive practice in design, writing, running, debugging, and reasoning about programs. Satisfactory placement scores can be found at: https://math.iastate.edu/academics/undergraduate/aleks/placement/. Graduation Restriction: Only one of ENGR 1600, ABE 1600, AERE 1600, BME 1600, CE 1600, CHE 1600, CPRE 1850, EE 1850, IE 1480, ME 1600, and SE 1850 may count towards graduation.

Credits: 1. Contact Hours: Laboratory 2.

Prereq: ABE 1600 or AERE 1600 or AERE 1600H or BME 1600 or CE 1600 or CHE 1600 or CPRE 1850 or EE 1850 or ENGR 1600 or ENGR 160H or IE 1600 or ME 1600 or SE 1850
Group projects in software engineering. Work effectively in teams to solve problems and provide technical reports and presentations. Self-directed team based projects that are representative of problems faced by software engineers. (Typically Offered: Spring)

Credits: 1. Contact Hours: Laboratory 2.

Prereq: ABE 1600 or AERE 1600 or AERE 1600H or BME 1600 or CE 1600 or CHE 1600 or CPRE 1850 or EE 1850 or ENGR 1600 or ENGR 160H or IE 1600 or ME 1600 or SE 1850
Group projects in software engineering. Work effectively in teams to solve problems and provide technical reports and presentations. Self-directed team based projects that are representative of problems faced by software engineers. (Typically Offered: Spring)

Credits: 3. Contact Hours: Lecture 3.

Prereq: (COMS 2300 or CPRE 3100); (COMS 3090 or SE 3090)
Basic principles and techniques for software testing. Test requirements and management. Test design techniques, evaluation metrics, model-based testing, unit testing, system and integration testing. Software testing tools and programming projects.

Credits: 3. Contact Hours: Lecture 3.

Prereq: (COMS 2300 or CPRE 3100); (COMS 3090 or SE 3090)
Basic principles and techniques for software testing. Test requirements and management. Test design techniques, evaluation metrics, model-based testing, unit testing, system and integration testing. Software testing tools and programming projects.

(Cross-listed with CPRE 3290).
Credits: 3. Contact Hours: Lecture 3.

Prereq: COMS 3090
Process-based software development. Capability Maturity Model (CMM). Project planning, cost estimation, and scheduling. Project management tools. Factors influencing productivity and success. Productivity metrics. Analysis of options and risks. Version control and configuration management. Inspections and reviews. Managing the testing process. Software quality metrics. Modern software engineering techniques and practices.

(Cross-listed with CPRE 3290).
Credits: 3. Contact Hours: Lecture 3.

Prereq: COMS 3090
Process-based software development. Capability Maturity Model (CMM). Project planning, cost estimation, and scheduling. Project management tools. Factors influencing productivity and success. Productivity metrics. Analysis of options and risks. Version control and configuration management. Inspections and reviews. Managing the testing process. Software quality metrics. Modern software engineering techniques and practices.

(Cross-listed with CPRE 3390).
Credits: 3. Contact Hours: Lecture 3.

Prereq: SE 3190
Modeling and design of software at the architectural level. Architectural styles. Basics of model-driven architecture. Object-oriented design and analysis. Iterative development and unified process. Design patterns. Design by contract. Component based design. Product families. Measurement theory and appropriate use of metrics in design. Designing for qualities such as performance, safety, security, reliability, reusability, etc. Analysis and evaluation of software architectures. Introduction to architecture definition languages. Basics of software evolution, reengineering, and reverse engineering. Case studies. Introduction to distributed system software.

(Cross-listed with CPRE 3390).
Credits: 3. Contact Hours: Lecture 3.

Prereq: SE 3190
Modeling and design of software at the architectural level. Architectural styles. Basics of model-driven architecture. Object-oriented design and analysis. Iterative development and unified process. Design patterns. Design by contract. Component based design. Product families. Measurement theory and appropriate use of metrics in design. Designing for qualities such as performance, safety, security, reliability, reusability, etc. Analysis and evaluation of software architectures. Introduction to architecture definition languages. Basics of software evolution, reengineering, and reverse engineering. Case studies. Introduction to distributed system software.

(Cross-listed with CPRE 4210).
Credits: 3. Contact Hours: Lecture 3.

Prereq: [(COMS 2300 or CPRE 3100) and (COMS 3090 or SE 3090)] or Graduate Standing
Significance of software safety and security; various facets of security in cyber-physical and computer systems; threat modeling for software safety and security; and categorization of software vulnerabilities. Software analysis and verification: mathematical foundations, data structures and algorithms, program comprehension, analysis, and verification tools; automated vs. human-on-the-loop approach to analysis and verification; and practical considerations of efficiency, accuracy, robustness, and scalability of analysis and verification. Cases studies with application and systems software; evolving landscape of software security threats and mitigation techniques. Understanding large software, implementing software analysis and verification algorithms. (Typically Offered: Fall, Spring)

(Cross-listed with CPRE 4210).
Credits: 3. Contact Hours: Lecture 3.

Prereq: [(COMS 2300 or CPRE 3100) and (COMS 3090 or SE 3090)] or Graduate Standing
Significance of software safety and security; various facets of security in cyber-physical and computer systems; threat modeling for software safety and security; and categorization of software vulnerabilities. Software analysis and verification: mathematical foundations, data structures and algorithms, program comprehension, analysis, and verification tools; automated vs. human-on-the-loop approach to analysis and verification; and practical considerations of efficiency, accuracy, robustness, and scalability of analysis and verification. Cases studies with application and systems software; evolving landscape of software security threats and mitigation techniques. Understanding large software, implementing software analysis and verification algorithms. (Typically Offered: Fall, Spring)

Credits: 3. Contact Hours: Lecture 3.

Prereq: (SE 3090 or SE 3390); (CPRE 3810 or COMS 3210)
A comprehensive view of cloud computing with respect to software development from platforms and services to programming and infrastructure. Virtualization and containerization; cloud computing platforms, with examples from currently available cloud services; cloud services for data analytics, machine learning, and devops; programming frameworks for parallel computing in the cloud; distributed storage in the cloud; Container management. Includes homeworks and programming assignments. The programming assignments will be done in AWS. (Typically Offered: Fall)

Credits: 3. Contact Hours: Lecture 3.

Prereq: (SE 3090 or SE 3390); (CPRE 3810 or COMS 3210)
A comprehensive view of cloud computing with respect to software development from platforms and services to programming and infrastructure. Virtualization and containerization; cloud computing platforms, with examples from currently available cloud services; cloud services for data analytics, machine learning, and devops; programming frameworks for parallel computing in the cloud; distributed storage in the cloud; Container management. Includes homeworks and programming assignments. The programming assignments will be done in AWS. (Typically Offered: Fall)

Credits: 3. Contact Hours: Lecture 3.

Pragmatic challenges of refactoring source-code in software development life cycle. Understanding software refactoring step-by-step using example. Identifying code smells and applying different software refactoring tools and techniques. Building tests, refactoring catalog, simplifying conditional logic, refactoring APIs, dealing with encapsulation and inheritance. (Typically Offered: Fall)

Credits: 3. Contact Hours: Lecture 3.

Pragmatic challenges of refactoring source-code in software development life cycle. Understanding software refactoring step-by-step using example. Identifying code smells and applying different software refactoring tools and techniques. Building tests, refactoring catalog, simplifying conditional logic, refactoring APIs, dealing with encapsulation and inheritance. (Typically Offered: Fall)

Credits: 3. Contact Hours: Lecture 3.

Prereq: COMS 3090 or SE 3090 and Senior classification
Theory and practice of software engineering using Artificial Intelligence (AI) and Large Language Models (LLMs). Integration of AI tools into the Software Development Lifecycle (SDLC). AI-driven requirements engineering, rapid prototyping, code generation, and legacy refactoring. Automated test generation, verification of AI artifacts, and AI-augmented CI/CD pipelines. Focus on Intelligence Amplification (IA), engineering judgment, and ethical implications of generative AI in software development. (Typically Offered: Spring)

Credits: 3. Contact Hours: Lecture 3.

Prereq: COMS 3090 or SE 3090 and Senior classification
Theory and practice of software engineering using Artificial Intelligence (AI) and Large Language Models (LLMs). Integration of AI tools into the Software Development Lifecycle (SDLC). AI-driven requirements engineering, rapid prototyping, code generation, and legacy refactoring. Automated test generation, verification of AI artifacts, and AI-augmented CI/CD pipelines. Focus on Intelligence Amplification (IA), engineering judgment, and ethical implications of generative AI in software development. (Typically Offered: Spring)

Credits: 3. Contact Hours: Lecture 3.

Prereq: SE 3090 and SE 3190
Software design using machine learning and artificial intelligence (AI) components from an objective viewpoint. Focus on design principles, processes, activities, and deliverables. Multiple design challenges are given. Design as an optimization problem with several human and technical factors. Introduction to intelligent, interactive, and autonomous software systems. Team projects that require analysis, design, and implementation of AI software. Code-, architecture-, and user-level design. AI models, tools, and frameworks. . (Typically Offered: Fall)

Credits: 3. Contact Hours: Lecture 3.

Prereq: SE 3090 and SE 3190
Software design using machine learning and artificial intelligence (AI) components from an objective viewpoint. Focus on design principles, processes, activities, and deliverables. Multiple design challenges are given. Design as an optimization problem with several human and technical factors. Introduction to intelligent, interactive, and autonomous software systems. Team projects that require analysis, design, and implementation of AI software. Code-, architecture-, and user-level design. AI models, tools, and frameworks. . (Typically Offered: Fall)

Credits: 1-30. Repeatable.

Prereq: Senior classification in software engineering; Permission of Instructor
Investigation of an approved topic.

Credits: 1-30. Repeatable.

Prereq: Senior classification in software engineering; Permission of Instructor
Investigation of an approved topic.