your adventure in

Computer Science

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

View PDF

Overview

http://www.cs.iastate.edu

The department of Computer Science offers Bachelor of Science and Bachelor of Arts degrees in Computer Science in the College of Liberal Arts and Sciences.

The undergraduate curriculum in Computer Science leading to the Bachelor of Science degree is accredited by the Computing Accreditation Commission of ABET, http://www.abet.org. This degree equips students with a sound knowledge of the foundations of Computer Science as well as problem-solving and system design skills necessary to create robust, efficient, reliable, scalable, and flexible software systems. The B.S. degree in Computer Science prepares students for graduate study in Computer Science and for various business, industry, and government positions including computer scientists, information technologists, and software developers.  

The purpose of the Bachelor of Arts degree in Computer Science is to accommodate students who wish to pursue a major in Computer Science while taking more courses outside of the major than a Bachelor of Science degree program permits. This will include students pursuing double majors, students pursuing one or more strong minors, and students pursuing broader liberal educations. The B.A. program retains the rigor of our B.S. program while allowing students to spread the breadth of their education over other disciplines in addition to Computer Science.

The main educational objectives of the B.S. degree program in Computer Science at Iowa State University are that its graduates demonstrate expertise, engagement, and learning within two to five years after graduation.

  • Expertise: Graduated students should have the ability to establish peer-recognized expertise in the discipline. They should have the ability to articulate this expertise by formulating and solving problems of interest, by creating or deriving value through the application of technology, and by using mathematical foundations, algorithmic principles, and computer science theory in designing, implementing and evaluating computer-based systems and processes which meet the desired needs of their employers.
  • Engagement: Graduated students should have the ability to be engaged in the profession through the practice of computer science in industry, academia, or the public sector. They should demonstrate effective teaming and commitment to working with others by applying communications skills and professional knowledge.
  • Learning: Graduated students should have the ability to engage in sustained learning through graduate work, professional improvement opportunities, and self-study so that they can adapt to the role played by information processing in ever-changing areas of science, technology, and society.

Student Learning Outcomes

Upon graduation, students should have:

  1. An ability to analyze a complex computing problem, and to apply principles of computing and other relevant disciplines to identify solutions. 
  2. An ability to design, implement, and evaluate a computing-based solution to meet a given set of computing requirements in the context of the program’s discipline. 
  3. An ability to communicate effectively in a variety of professional contexts. 
  4. An ability to recognize professional responsibilities and make informed judgments in computing practice based on legal and ethical principles.  
  5. An ability to function effectively as a member or leader of a team engaged in activities appropriate to the program’s discipline. 
  6. An ability to apply computer science theory and software development fundamentals to produce computing-based solutions.

Undergraduate Curriculum in Software Engineering

The Department of Computer Science, together with the Department of Electrical and Computer Engineering, also offer a curriculum leading to an undergraduate degree in Software Engineering. 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.

Degree Requirements

As majors in the College of Liberal Arts and Sciences, students pursuing both the B.A. and the B.S. in Computer Science must meet College of Liberal Arts and Sciences and University-wide requirements for graduation in addition to those stated below for the major.

LAS majors require a minimum of 120 credits, including a minimum of 45 credits at the 300/400 level. You must also complete the LAS world language requirement and career proficiency requirement.

Students in all ISU majors must complete a three-credit course in U.S. diversity and a three-credit course in international perspectives. Check (http://www.registrar.iastate.edu/courses/div-ip-guide.html) for a list of approved courses. Discuss with your advisor how the two courses that you select can be applied to your graduation plan.

Degree requirements for the B.S. in Computer Science:

The B.S. departmental requirements consist of a minimum of 49 credits in Computer Science and satisfaction of written and oral requirements.
The following courses are required:

COM S 101OrientationR
COM S 127Introduction to Computer Programming3
COM S 227Object-oriented Programming4
COM S 228Introduction to Data Structures3
COM S 309Software Development Practices3
COM S 311Introduction to the Design and Analysis of Algorithms3
COM S 321Introduction to Computer Architecture and Machine-Level Programming3
COM S 327Advanced Programming Techniques3
COM S 331Theory of Computing3
COM S 342Principles of Programming Languages3
COM S 352Introduction to Operating Systems3
COM S 402Computer Science Senior Project3
At least 15 credits, including at least 6 credits of 400-level courses, all with a grade of C- or better, from the following:15
Construction of User Interfaces
Introduction to Computer Graphics
Object-Oriented Analysis and Design
Introduction to Database Management Systems
Applied Formal Methods
Software Requirements Engineering
Distributed Development of Software
Formal Methods in Software Engineering
Program Analysis
Software System Safety
Software Testing
Introduction to Computational Geometry
Logic for Mathematics and Computer Science
Introduction to High Performance Computing
High Performance Computing for Scientific and Engineering Applications
Introduction to Parallel Algorithms and Programming
Concurrent Programming in Practice
Molecular Programming of Nanoscale Devices and Processes
Algorithms for Large Data Sets: Theory and Practice
Computer Game and Media Programming
Principles and Practice of Compiling
Programming Languages
Privacy Preserving Algorithms and Data Security
Distributed Systems
Simulation: Algorithms and Implementation
Principles and Internals of Database Systems
Principles of Artificial Intelligence
Introduction to Machine Learning
Motion Planning for Robotics and Autonomous Systems
Foundations of Robotics and Computer Vision
Numerical Methods for Differential Equations
Introduction to Network Programming and Cloud Computing
Computer Networks
Software Evolution and Maintenance
Software Tools for Large Scale Data Analysis
Network Protocols and Security
Basics of Information System Security
Real Time Systems
Computer Networking and Data Communications
Total Credits49

Com S 414 may not be applied towards fulfilling the 400-level electives. 

Toward satisfying the requirements of the College of Liberal Arts and Sciences, the following courses should be included:

PHIL 343Philosophy of Technology3
SP CM 212Fundamentals of Public Speaking3
LAS 203Professional Career Preparation1
At least 17 credits of Math and Statistics17
MATH 165Calculus I4
MATH 166Calculus II4
COM S 230Discrete Computational Structures3
One Statistics course from:
STAT 305Engineering Statistics3
STAT 330Probability and Statistics for Computer Science3
STAT 341Introduction to the Theory of Probability and Statistics I4
STAT 347Probability and Statistical Theory for Data Science4
At least one Math course from:
MATH 207Matrices and Linear Algebra3
MATH 265Calculus III4
MATH 266Elementary Differential Equations3
MATH 267Elementary Differential Equations and Laplace Transforms4
MATH 304Combinatorics3
MATH 314Graph Theory3
MATH 317Theory of Linear Algebra4
One of the following 2-course Natural Science sequences (with labs):
BIOL 211
211L
BIOL 212
BIOL 212L
Principles of Biology I
and Principles of Biology Laboratory I
and Principles of Biology II
and Principles of Biology Laboratory II
8
Or
BIOL 255
255L
BIOL 256
BIOL 256L
Fundamentals of Human Anatomy
and Fundamentals of Human Anatomy Laboratory
and Fundamentals of Human Physiology
and Fundamentals of Human Physiology Laboratory
8
Or
CHEM 177
177L
CHEM 178
CHEM 178L
General Chemistry I
and Laboratory in General Chemistry I
and General Chemistry II
and Laboratory in College Chemistry II
9
Or
GEOL 100
100L
GEOL 102
GEOL 102L
How the Earth Works
and How the Earth Works: Laboratory
and History of the Earth
and History of the Earth: Laboratory
8
Or
PHYS 231
231L
PHYS 232
PHYS 232L
Introduction to Classical Physics I
and Introduction to Classical Physics I Laboratory
and Introduction to Classical Physics II
and Introduction to Classical Physics II Laboratory
10

The following courses meet the communication proficiency requirement:

LIB 160Introduction to College Level Research1
ENGL 150Critical Thinking and Communication3
ENGL 250Written, Oral, Visual, and Electronic Composition3
One of the following
ENGL 302Business Communication3
ENGL 305Creative Writing: Nonfiction3
ENGL 309Proposal and Report Writing3
ENGL 314Technical Communication3

Degree requirements for the B.A. in Computer Science:

The B.A. departmental requirements consist of a minimum of 31 credits in Computer Science and satisfaction of written and oral requirements. 
The following courses are required:

Computer Science core:
COM S 101OrientationR
COM S 127Introduction to Computer Programming3
COM S 227Object-oriented Programming4
COM S 228Introduction to Data Structures3
COM S 309Software Development Practices3
COM S 311Introduction to the Design and Analysis of Algorithms3
Advanced Computer Science, five 300/400-level courses chosen from lists (a) and (b) below, with at least one at the 400-level and at least two chosen from list (a). COM S 414 may not be applied towards fulfilling the 400-level electives.15
(a) Software and Hardware Systems:
Introduction to Computer Architecture and Machine-Level Programming
Advanced Programming Techniques
Principles of Programming Languages
Introduction to Operating Systems
Object-Oriented Analysis and Design
Introduction to Database Management Systems
Software Requirements Engineering
Distributed Development of Software
Formal Methods in Software Engineering
Program Analysis
Software System Safety
Software Testing
Principles and Practice of Compiling
Programming Languages
Distributed Systems
Introduction to Network Programming and Cloud Computing
Computer Networks
(b) Other Advanced Computer Science:
Theory of Computing
Introduction to Computer Graphics
Introduction to Computational Geometry
Logic for Mathematics and Computer Science
Molecular Programming of Nanoscale Devices and Processes
Algorithms for Large Data Sets: Theory and Practice
Computer Game and Media Programming
Simulation: Algorithms and Implementation
Principles of Artificial Intelligence
Introduction to Machine Learning
Motion Planning for Robotics and Autonomous Systems
Foundations of Robotics and Computer Vision
Total Credits31

Toward satisfying the requirements of the College of Liberal Arts and Sciences, the following courses should be included:

Mathematics Core (3 courses):
Calculus I
Calculus II
Discrete Computational Structures
Additional Mathematics (1 course from the following):
Theory of Computing
Matrices and Linear Algebra
Calculus III
Elementary Differential Equations
Elementary Differential Equations and Laplace Transforms
Combinatorics
Graph Theory
Theory of Linear Algebra
Statistics (1 course from the following):
Engineering Statistics
Probability and Statistics for Computer Science
Introduction to the Theory of Probability and Statistics I
Probability and Statistical Theory for Data Science
SP CM 212Fundamentals of Public Speaking3
Natural Sciences: minimum 8 credits from approved College list

The following courses meet the communication proficiency requirement:

LIB 160Introduction to College Level Research1
ENGL 150Critical Thinking and Communication3
ENGL 250Written, Oral, Visual, and Electronic Composition3
One of the following
ENGL 302Business Communication3
ENGL 305Creative Writing: Nonfiction3
ENGL 309Proposal and Report Writing3
ENGL 314Technical Communication3

The following pertains to both the B.S. and the B.A. in Computer Science:

Students must earn at least a C- in Math 165, Math 166, and each Computer Science course taken to fulfill the Degree Program. The LAS College requires the major must contain at least 8 credits in courses taken at Iowa State University that are numbered 300 or above and in which the student’s grade is C or higher.

According to the university-wide Communication Proficiency Grade Requirement, students must demonstrate their communication proficiency by earning a grade of C or better in ENGL 250. The Department requires a C or higher in the upper-level ENGL course (302, 305, 309, 314).

To obtain a bachelor's degree from the College of Liberal Arts and Sciences, curriculum in liberal arts and sciences, a student must earn at least 45 credits at the 300 level or above taken at a four-year college. All such credits, including courses taken on a pass/not pass basis, may be used to meet this requirement.

Students must take at least 15 credits of Computer Science courses at the 300 level or higher at Iowa State University while resident here. Computer Science transfer courses need to be a minimum grade of C or higher to be considered for course substitution. 

Four Year Plan

Computer Science, B.S.

Freshman
FallCreditsSpringCredits
COM S 101RCOM S 2274
COM S 1273MATH 1664
MATH 1654ENGL 2503
ENGL 1503LIB 1601
SOCIAL SCIENCE3ARTS & HUMANITIES3
 13 15
Sophomore
FallCreditsSpringCredits
COM S 2283COM S 3213
COM S 2303COM S 3113
SCIENCE SEQUENCE PART 14COM S 300/400 ELECTIVE3
SOCIAL SCIENCE3SCIENCE SEQUENCE PART 24
WORLD LANGUAGE 101/ELECTIVE3-4WORLD LANGUAGE 102/ELECTIVE3-4
LAS 2031 
 17-18 16-17
Junior
FallCreditsSpringCredits
COM S 3093COM S 3273
COM S 300/400 ELECTIVE3COM S 3313
MATH ELECTIVE3STAT 300 ELECTIVE3
SP CM 2123ENGL 300 ELECTIVE3
ARTS & HUMANITIES3PHIL 3433
 15 15
Senior
FallCreditsSpringCredits
COM S 3423COM S 4023
COM S 300/400 ELECTIVE3COM S 3523
COM S 400 ELECTIVE3COM S 400 ELECTIVE3
SOCIAL SCIENCE & USD/IP3ARTS & HUMANITIES & USD/IP3
ELECTIVE2-3ELECTIVE3
 14-15 15
Total Credits: 120-123

Computer Science, B.A.

Freshman
FallCreditsSpringCredits
COM S 101RCOM S 2274
COM S 1273MATH 1664
MATH 1654ENGL 2503
ENGL 1503Arts and Humanities3
Social Science3LIB 1601
 13 15
Sophomore
FallCreditsSpringCredits
COM S 2283COM S 3113
COM S 2303Arts and Humanities3
Natural Science 14Natural Science 24
Elective3Elective3
World Languages 13-4World Languages 23-4
LAS 2031 
 17-18 16-17
Junior
FallCreditsSpringCredits
COM S 3093COM S 300/400-level Elective3
MATH Elective3-4English 300-level Elective3
SP CM 2123Elective3
Arts and Humanities3STAT 300-level Elective3
Elective3Social Science3
 15-16 15
Senior
FallCreditsSpringCredits
COM S 300/400-level Elective3COM S 300/400-level Elective3
COM S 300/400-level Elective3COM S 300/400-level Elective3
Social Science and US Diversity/IP3Arts and Humanities and US Diveristy/IP3
Elective3Elective3
Elective2-3Elective3
 14-15 15
Total Credits: 120-124

Note: The B.A. in Computer Science, like other B.A. degrees in LAS, gives students more freedom than the B.S. to design their own curricula. However, LAS degree requirements impose some rigor on this freedom. For example, the B.A. requires 24 upper-level credits in Computer Science, Mathematics, and Statistics, but LAS requires at least 45 upper-level credits, so a substantial fraction of B.A. students' extra freedom will be confined to upper-level courses.

Undergraduate Minor in Computer Science

The Department of Computer Science offers an undergraduate minor in Computer Science. The minor requires at least 16 credits in computer science courses. COM S 414 cannot be used to fulfill minor requirements.  

A minimum grade of C- is required in COM S 227 and COM S 228. A minimum grade of C is required in both COM S 311 and the three credits of 300-level Computer Science courses and above. Students must meet all prerequisites for Computer Science courses taken to fulfill the minor. At least 6 credits of the minor must be in courses numbered 300 and above and taken at ISU with a grade of C or higher. The minor must include at least 9 credits that are not used to meet any other department, college, or university requirement.

COM S 227Object-oriented Programming4
COM S 228Introduction to Data Structures3
COM S 230Discrete Computational Structures3
COM S 311Introduction to the Design and Analysis of Algorithms3
3 credits in ComS courses at the 300 level or above3

Certificate in Computing Applications

Students interested in the computing applications, may want to explore the Certificate in Computing Applications; it is a cross-disciplinary course of study in the Colleges of Liberal Arts and Sciences, Engineering, and Business.

Concurrent Bachelors and Masters Degrees 

The concurrent B.S./M.S. degree in Computer Science offers highly motivated and focused students the opportunity for accelerated study. Students will be allowed to double count up to 12 credits. This program will pair undergraduate students in the concurrent program with research teams of graduate students and dedicated faculty members prominent in their fields of expertise. Students that declare concurrent enrollment will be considered graduate-level students, and therefore eligible for graduate research assistantships and scholarships. Click here for application instructions

More information can be found here: https://www.cs.iastate.edu/cs.iastate.edu/concurrent-comajor-transfer 

Graduate Programs

The department offers graduate programs leading to degrees of Master of Science (MS) and Doctor of Philosophy (PhD) with a major in Computer Science. The Doctor of Philosophy degree may also be earned with computer science as a co-major with some other discipline. Additionally, the department offers a minor for the students majoring in other disciplines. The department also offers a Master of Science (MS) in Artificial Intelligence. This program is for graduate-level students with strong quantitative backgrounds who are interested in learning AI and machine-learning techniques. 

Established research areas include algorithms, artificial intelligence, computational complexity, computer architecture, bioinformatics, computational biology, computer networks, database systems, formal methods, information assurance, machine learning and neural networks, multimedia, operating systems, parallel and distributed computing, programming languages, robotics, and software engineering. There are also numerous opportunities for interdisciplinary research. 

Typically, students beginning graduate work in the Department of Computer Science have completed a bachelor’s degree or equivalent in Computer Science. However, some students with undergraduate majors in other areas, such as Mathematical, physical, or biological science or engineering become successful graduate students in Computer Science. 

For the degree Master of Science, 31 - 34 semester credits is required. A thesis or a creative component demonstrating research and the ability to organize and express significant ideas in computer science is required. 

The purpose of the doctoral program is to train students to do original research in Computer Science. Each student is also required to attain knowledge and proficiency commensurate with a leadership role in the field. The PhD requirements are governed by the student’s program of study committee within established guidelines of the department and the graduate college. They include coursework (demonstrating breadth and depth of knowledge), a research skills requirement, a preliminary examination, and a doctoral dissertation and final oral examination. The department recommends that all graduate students majoring in Computer Science teach as part of their training for an advanced degree.