your adventure in

Software Engineering

This is an archived copy of the 2016-2017 catalog. To access the most recent version of the catalog, please visit http://catalog.iastate.edu.

View PDF

 

For the undergraduate curriculum in Software Engineering leading to the degree Bachelor of Science.  This curriculum is accredited under the General Criteria and Software Engineering Program Criteria by the Engineering Accreditation Commission of ABET, http://www.abet.org .

This curriculum is jointly administered by the Department of Computer Science and the Department of Electrical and Computer Engineering at Iowa State University. The Software Engineering program provides undergraduate students with the opportunity to learn software engineering fundamentals, to study applications of state-of-the art software technologies and to prepare for the practice of software engineering. The student-faculty interaction necessary to realize this opportunity occurs within an environment motivated by the principle that excellence in undergraduate education is enhanced by an integrated commitment to successful, long-term research and outreach programs.

The software engineering curriculum offers emphasis areas in software engineering principles, process and practice. Students may also take elective courses in computer engineering and computer science.

Program Educational Objectives

Within five years of graduation, the graduates should:

1. attain a productive career in Software Engineering or related fields;

2. attain leadership roles and become effective collaborators to advance professional and organizational goals;

3. engage in continuous learning and professional development.

We expect that these objectives will be manifested in our graduates through the following five key attributes: (a) peer-recognized expertise, (b) engagement in professional practice, (c) sustained learning, (d) leadership and (e) teamwork.  

Demonstration of expertise involves applying state-of-the-art practices for solving problems in the design, development, validation, evolution and sustainment of (software) products. Demonstration of professional engagement involves contributing locally and globally to the use of ethical, competent, and creative practices in industry, academia or the public sector. Demonstration of sustained learning involves the ability to adapt to rapid technological, environmental, and organizational changes through self-study and group study and through opportunities of professional development or graduate study. Demonstration of leadership involves the ability to take initiative, and to facilitate the advancements of individuals and the community by influencing others and by having a widespread, positive impact on critical issues and projects. Finally, demonstration of teamwork involves the ability to work with collaborators who have varied expertise, and with diverse cultural and interdisciplinary backgrounds.


As a complement to the instructional activity, the Department of Computer Science and the Department of Electrical and Computer Engineering provide opportunities for each student to have experience with broadening activities. Students have the opportunity to gain practical industry experience in the cooperative education and internship program. Students have the opportunity to participate in advanced research activities. Through international exchange programs, students learn about engineering practices in other parts of the world.

 

Curriculum in Software Engineering

Administered by the Department of Electrical and Computer Engineering in the College of Engineering and the Department of Computer Science in the College of Liberal Arts and Sciences.

Leading to the degree bachelor of science.

Total credits required: 125 cr. Any transfer credit courses applied to the degree program require a grade of C or better (but will not be calculated into the ISU cumulative GPA, Basic Program GPA or Core GPA). See also Basic Program and Special Programs. Note: Pass/Not Pass credits cannot be used to meet graduation requirements.
International Perspectives: 3 cr.1
U.S. Diversity: 3 cr.1
Communication Proficiency/Library requirement:
ENGL 150Critical Thinking and Communication (C or better in this course)3
ENGL 250Written, Oral, Visual, and Electronic Composition (C or better in this course)3
LIB 160Information Literacy1
Choose one of the following:3
Proposal and Report Writing (C or better in this course)
Technical Communication (C or better in this course)
Total Credits10
General Education Electives: 15 cr.2
Choose 1 course from the following:3
Principles of Microeconomics
Principles of Macroeconomics
Engineering Economic Analysis
Arts and Humanities6
Social Sciences3
Additional Arts and Humanities or Social Sciences course3
Total Credits15
Basic Program: 27 cr.

A minimum GPA of 2.00 is required for this set of courses, including any transfer courses (please note that transfer course grades will not be calculated into the Basic Program GPA). See Requirement for Entry into Professional Program in College of Engineering Overview section.

CHEM 167General Chemistry for Engineering Students4
or CHEM 177 General Chemistry I
ENGL 150Critical Thinking and Communication3
ENGL 250Written, Oral, Visual, and Electronic Composition3
ENGR 101Engineering OrientationR
or S E 101 Software Engineering Orientation
S E 185Problem Solving in Software Engineering 33
LIB 160Information Literacy1
MATH 165Calculus I4
MATH 166Calculus II4
PHYS 221Introduction to Classical Physics I5
Total Credits27
Math and Physical Science: 11 cr.
COM S 227Introduction to Object-oriented Programming4
COM S 228Introduction to Data Structures3
MATH 267Elementary Differential Equations and Laplace Transforms4
Total Credits11
Software Engineering Core: 34 cr.

A minimum GPA of 2.00 is required for this set of courses, including any transfer courses (please note that transfer course grades will not be calculated into the Core GPA):

CPR E 281Digital Logic4
Choose one of the following:3
Advanced Programming Techniques
Embedded Systems I: Introduction
Choose one of the following:3
Introduction to Computer Architecture and Machine-Level Programming
Computer Organization and Assembly Level Programming
Choose one of the following:3
Introduction to Operating Systems
Operating Systems: Principles and Practice
Choose one of the following:3
Discrete Computational Structures
Theoretical Foundations of Computer Engineering
COM S 311Design and Analysis of Algorithms3
COM S 363Introduction to Database Management Systems3
COM S 309Software Development Practices3
S E 319Software Construction and User Interfaces3
S E 329Software Project Management3
S E 339Software Architecture and Design3
Note: CPR E 288, CPR E 381 and CPR E 308 are 4-credit courses. The core credit requirement (34 credits) is given in terms of 3-credit courses. If the 4-credit courses are taken instead, then the extra credits will be used as credits for Supplementary Electives.
Total Credits34
Other Remaining Courses: 38 cr.
S E 491Senior Design Project I and Professionalism3
S E 492Senior Design Project II2
SP CM 212Fundamentals of Public Speaking3
One of the following STAT courses3
Probability and Statistics for Computer Science
Engineering Statistics
One of the following ENGL courses (with a C or better in this course )3
Proposal and Report Writing
Technical Communication
Math Elective: Choose one from the following list3
Matrices and Linear Algebra
Combinatorics
Graph Theory
Theory of Linear Algebra
Software Engineering Elective 26
Technical Elective 23
Supplementary Elective 29
Open Elective 23
Total Credits38
Seminar/Co-op/Internships
S E 166Careers in Software EngineeringR
S E 494Software Engineering Portfolio DevelopmentR
Co-op or internship (S E 396, S E 397, S E 398) is optional
Transfer Credit Requirements

The degree program must include a minimum of 30 credits at the 300-level or above in professional and technical courses earned at ISU in order to receive a B.S. in software engineering. These 30 credits must include S E 492 Senior Design Project II and credits in the core professional curriculum and/or in technical electives. The software engineering degree program requires a grade of C or better for any transfer credit course that is applied to the degree program.

  1. These university requirements will add to the minimum credits of the program unless the university-approved courses are also approved by the department to meet other course requirements within the degree program. U.S Diversity and International Perspectives courses may not be taken Pass/Not Pass.
  2. Choose from department approved lists.
  3. See Basic Program for Professional Engineering Curricula for accepted substitutions for curriculum designated courses in the Basic Program.

See also: A 4-year plan of study grid showing course template by semester .

Note: International perspectives and U.S. diversity courses are used to meet the general education electives .

Plan of Study - 4 Year Plan*

Freshman
FallCreditsSpringCredits
MATH 1654COM S 2274
ENGL 1503MATH 1664
S E 1010S E 1660
LIB 1601PHYS 2215
CHEM 167 or 1774Economic Elective3
S E 1853 
 15 16
Sophomore
FallCreditsSpringCredits
CPR E 28114COM S 36313
ENGL 2503COM S 327 or CPR E 2882, 33
MATH 2674Math Elective3
COM S 2283General Education Elective3
Supplementary Electives3 
 17 12
Junior
FallCreditsSpringCredits
S E 31913S E 32913
COM S 230 or CPR E 31013COM S 352 or CPR E 30833
COM S 30913ENGL 3143
COM S 321 or CPR E 3812, 33SP CM 2123
General Education Elective3COM S 31113
 S E 3393
 15 18
Senior
FallCreditsSpringCredits
S E 4940S E 4922
S E 4913Supplementary Electives6
STAT 330 or 3053Software Engineering Electives3
Technical Elective3Genaral Education Elective3
General Education Elective3Open Elective3
Software Engineering Elective3 
 15 17
Total Credits: 125
*

Total credits required - 125 credits.  Any transfer credit courses applied to the degree program require a grade of C or better (but will not be calculated into the ISU Cumulative GPA, Basic Program GPA or Core GPA).  See also Basic Program and Special Programs.

Basic Program - A minimum GPA of 2.00 is required for this set of courses, including any transfer courses (please note that transfer course grades will not be calculated into the Basic Program GPA)

Must receive a C or better grade in required English classes.

General Educational Elective courses to be selected in consultation with SE advisers from a list of approved courses. They must include courses that satisfy university and college general education requirements. These courses include courses or categories of courses such as international perspectives and U.S. diversity, language, arts and humanities, and social sciences. Pass/Not Pass credit is not accepted.

Software Engineering Electives, Technical Electives, and Supplementary Electives must be selected from the program-approved list.

1

Core Professional Curriculum (A minimum GPA of 2.00 is required for this set of courses, including any transfer courses but transfer course grades will not be calculated into the Core GPA)

2

Software Engineering students must have completed CPR E 281 and have obtained C or better in COM S 327 to enroll in COM S 321

3

Students who take the 4-credit lab courses CPR E 288, CPR E 308, and CPR E 381 instead of the corresponding 3-credit alternatives can apply the additional credits towards Supplementary Electives. The total number of credits required in Software Engineering Program remains the same for all students.

Expand all courses

Courses

Courses primarily for undergraduates:

Cr. R.


Introduction to the procedures, policies, and resources of Iowa State University and the department of Computer Science and Electrical and Computer Engineering. Information on engineering and computer-based professions.

Cr. R.


Overview of the nature and scope of the software engineering profession. Relationship of coursework to careers. Departmental rules, student services operations, degree requirements, program of study planning, career options, and student organizations.

(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.

Cr. R. F.S.SS.

Prereq: Permission of department and Career Services
First professional work period in the cooperative education program. Students must register for this course before commencing work.

(Cross-listed with COM S). (3-0) Cr. 3. F.

Prereq: COM S 228
Basic theory of grammars, parsing. Language paradigms. State transition and table-based software design. Review of principles of object orientation, object oriented analysis using UML. Frameworks and APIs. User interface architecture, evaluation of user interface. Design of windows, menus, and commands. Introduction to formal specification and model-based software design. Introduction to domain-specific software engineering.

(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, COM S 230 or CPR E 310
Study of concepts in programming languages and major programming paradigms, especially functional programming. Special emphasis on design tradeoffs that enable students to make sound choices of programming languages for a given software development task. Programming projects.

Cr. R. Repeatable. SS.

Prereq: Permission of department and Career Services
Summer professional work period.

Cr. R. Repeatable. F.S.

Prereq: Permission of department and Career Services
One semester maximum per academic year professional work period.

Cr. R. F.S.SS.

Prereq: S E 298, permission of department and Career Services
Second professional work period in the cooperative education program. Students must register for this course before commencing work.

(Cross-listed with COM S). (3-0) Cr. 3. F.

Prereq: COM S 309
The requirements engineering process including identification of stakeholders requirements elicitation techniques such as interviews and prototyping, analysis fundamentals, requirements specification, and validation. Use of Models: State-oriented, Function-oriented, and Object-oriented. Documentation for Software Requirements. Informal, semi-formal, and formal representations. Structural, informational, and behavioral requirements. Non-functional requirements. Use of requirements repositories to manage and track requirements through the life cycle. Case studies, software projects, written reports, and oral presentations will be required.

(Cross-listed with COM S, CPR E). (3-0) Cr. 3. S.

Prereq: COM S 230 or CPR E 310; COM S 311, STAT 330
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 COM S). (3-0) Cr. 3. S.

Prereq: COM S 309; COM S 230 or CPR E 310; ENGL 250, SP CM 212
Comprehensive study of software testing, principles, methodologies, management strategies and techniques. Test models, test design techniques (black box and white box testing techniques), test adequacy criteria,integration, regression, system testing methods, and software testing tools.

(Cross-listed with CPR E). (3-3) Cr. 4.

Prereq: CPR E 308 or COM S 352, COM S 309
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.

Cr. arr. Repeatable.

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

(2-3) Cr. 3.

Prereq: S E 329, completion of 29 credits in the S E core professional program, ENGL 314
Preparing for entry to the workplace. Selected professional topics. Use of technical writing skills in developing project plan and design report; project poster. First of two-semester team-oriented, project design and implementation experience.

(1-3) Cr. 2.

Prereq: S E 491
Second semester of a team design project experience. Emphasis on the successful implementation and demonstration of the design completed in S E 491 and the evaluation of project results. Technical writing of final project report; oral presentation of project achievements.

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.

Cr. R. Repeatable. F.S.SS.

Prereq: S E 398, permission of department and Career Services
Third and subsequent professional work periods in the cooperative education program. Students must register for this course before commencing work.