Any experimental courses offered by S E can be found at: registrar.iastate.edu/faculty-staff/courses/explistings/
Courses
Courses primarily for undergraduates:
Cr. R.
Introduction to the procedures, policies, and resources of Iowa State University and the Software Engineering Program.
Offered on a satisfactory-fail basis only.
Cr. R.
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.
(2-2) Cr. 3.
Prereq: MATH 143 or satisfactory scores on mathematics placement examinations; credit or enrollment in MATH 165
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.
Only one of ENGR 160, A B E 160, AER E 160, C E 160, CH E 160, CPR E 185, E E 185, I E 148, M E 160, and S E 185 may count toward graduation.
(Cross-listed with COM S). (3-1) Cr. 3. F.S.
Prereq: Minimum of C- in COM S 228 and MATH 165
A practical introduction to methods for managing software development. Process models, requirements analysis, structured and object-oriented design, coding, testing, maintenance, cost and schedule estimation, metrics. Programming projects.
Cr. 3.
Prereq: COM S 230 or CPR E 310; COM S 309; ENGL 250; SP CM 212.
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 COM S). (3-0) Cr. 3. F.S.
Prereq: COM S 228
Overview of user interface design. Evaluation and testing of user interfaces. Review of principles of object orientation, object oriented design and analysis using UML in the context of user interface design. Design of windows, menus and commands. Developing Web and Windows-based user-interfaces. Event-driven programming. Introduction to Frameworks and APIs for the construction of user interfaces.
(Cross-listed with CPR E). (3-0) Cr. 3.
Prereq: COM S 309
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 CPR E). (3-0) Cr. 3.
Prereq: S E 319
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 COM S). (3-1) Cr. 3. F.S.
Prereq: Minimum of C- in COM S 228 and MATH 165; COM S 230 or CPR E 310
Study of concepts in programming languages, especially functional programming concepts. Overview of major programming paradigms, their relationship, and tradeoffs among paradigms enabling sound choices of programming language for application-specific development. Programming projects.
Cr. R. Repeatable. SS.
Prereq: Permission of department and Engineering Career Services
Professional work period of at least 10 weeks during the summer. Students must register for this course prior to commencing work.
Offered on a satisfactory-fail basis only.
Cr. R. Repeatable. F.S.
Prereq: Permission of department and Engineering Career Services
Professional work period. One semester per academic or calendar year. Students must register for this course before commencing work.
Offered on a satisfactory-fail basis only.
(Dual-listed with COM S 509). (3-0) Cr. 3.
Prereq: COM S 309; for graduate credit: graduate standing or permission of instructor
The requirements engineering process including elicitation, requirements analysis fundamentals, requirements specification and communication, and requirements evaluation. Modeling of functional and nonfunctional requirements, traceability, and requirements change management. Case studies and software projects.
(Dual-listed with COM S 512). (Cross-listed with COM S, CPR E). (3-0) Cr. 3.
Prereq: COM S 311; STAT 305 or STAT 330 or STAT 341; for graduate credit: graduate standing or permission of instructor
A study of formal techniques for model-based specification and verification of software systems. Topics include logics, formalisms, graph theory, numerical computations, algorithms and tools for automatic analysis of systems. Graduate credit requires in-depth study of concepts.
(Cross-listed with CPR E). (3-0) Cr. 3.
Prereq: COM S 309
Practical importance of software evolution and maintenance, systematic defect analysis and debugging techniques, tracing and understanding large software, impact analysis, program migration and transformation, refactoring, tools for software evolution and maintenance, experimental studies and quantitative measurements of software evolution. Written reports and oral presentation.
(Cross-listed with CPR E). (3-3) Cr. 4.
Prereq: COM S 363 or COM S 352 or CPR E 308; COM S 228
Software tools for managing and manipulating large volumes of data, external memory processing, large scale parallelism, and stream processing, data interchange formats. Weekly programming labs that involve the use of a parallel computing cluster.
(Cross-listed with CPR E). Cr. 3. F.S.
Prereq: COM S 309; CPR E 310 or COM S 230
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.
Cr. arr. Repeatable.
Prereq: Senior classification in software engineering
Investigation of an approved topic.
(Cross-listed with CPR E, E E). (2-3) Cr. 3. F.S.
Prereq: CPR E majors: CPR E 308, completion of 29 credits in the CPR E professional program, ENGL 314. E E majors: E E 322, completion of 24 credits in the E E professional program, ENGL 314. SE majors: S E 329 and S E 339, CPR E 308 or COM S 352, ENGL 309 or ENGL 314.
Preparing for entry to the workplace. Selected professional topics. Use of technical writing skills in developing project plan and design report; design review presentation. First of two-semester team-oriented, project design and implementation experience.
(Cross-listed with CPR E, E E). (1-3) Cr. 2. F.S.
Prereq: CPR E 491 or E E 491
Second semester of a team design project experience. Emphasis on the successful implementation and demonstration of the design completed in E E 491 or CPR E 491 and the evaluation of project results. Technical writing of final project report; oral presentation of project achievements; project poster.
Cr. R. F.S.
Prereq: Credit or enrollment in S E 491
Portfolio assessment for Software Engineers. Guidelines and Advice to improve software engineering portfolios and to better use portfolios as a tool to enhance career opportunities.
Offered on a satisfactory-fail basis only.