MCS Program

MCS Program

The Master of Computer Science (MCS) is a professionally-oriented, course-based program for students who wish to enhance their careers with advanced knowledge of computer science. If you are a student considering joining the MCS program, visit our page for Prospective Students.


The Master of Computer Science (MCS) requires a minimum of 32 semester hours (s.h.) of graduate credit, including at least 24 s.h. earned at the University of Iowa. This credit needs to be earned via 2 s.h. of "CS:6000: Research Seminar: Colloquium Series" and 10 additional courses (3 or more s.h. each). A simplified description of MCS requirements is as follows. Consult the Computer Science Graduate Handbook for more detailed information about MCS requirements and departmental and University policies affecting graduate students.


All MCS students are required to take one of the following for a total of 3 s.h. This requirement may be met by using an approved CS:4980 course as well.

MCS Program
Course Number & Name Semester Hours
CS:4330 Theory of Computation 3 s.h.
CS:5340 Limits of Computation 3 s.h.
CS:5350 Design and Analysis of Algorithms 3 s.h.


All MCS students are required to take one of the following courses for a total of 3 s.h. This requirement may be met by using an approved CS:4980 course as well.

MCS Program: Systems
Course Number & Name Semester Hours
CS:5610 High Performance Computer Architecture 3 s.h.
CS:5620 Distributed Systems and Algorithms 3 s.h.
CS:5810 Formal Methods in Software Engineering 3 s.h.
CS:5850 Programming Language Foundations 3 s.h.


MCS students must earn at least 2 s.h. in CS:6000 Research Seminar: Colloquium Series (must enroll at least twice for 1 s.h. each). Students enrolled in CS:6000 are graded Satisfactory/Unsatisfactory (S/U). Students must attend at least 80% of scheduled talks to get a satisfactory grade for the course.


MCS students should complete their remaining 24 s.h. (8 courses) with a combination of computer science graduate courses, research and project courses, and courses that are not computer science graduate courses, approved by their advisor. See our Computer Science graduate courses page for relevant courses. The choice of electives must satisfy the following constraints:

  • at least 6 courses (18 semester hours) must be classroom-based CS graduate courses. These are CS courses numbered 4300 or above, excluding CS:5110, CS:5990, CS:6000, CS:6990, and CS:7990.
  • at most 1 Individualized research/readings/project course (CS:5990 or CS:6990). These courses are an excellent option for students interested in exploring an area in CS beyond the treatment provided by CS classroom-based courses. MCS students interested in getting a PhD usually benefit from taking CS:5990 or CS:6990 courses. 
  • at most 2 technical courses (approved by the advisor) that are not CS graduate courses. For students looking for courses outside the department, courses in mathematics, statistics, electrical engineering, industrial engineering, management sciences, etc. are some popular choices. Students also may include up to 3 s.h. earned in independent study courses (CS:5990 Individualized Research or Programming Project or CS:6990 Readings for Research).

Software Engineering Subprogram

The Department of Computer Science, with the Department of Electrical and Computer Engineering, offers an MCS. subprogram in software engineering. Students receive a software engineering subprogram designation on their transcript after they complete CS:5800 Fundamentals of Software Engineering, CS:5810 Formal Methods in Software Engineering, CS:5820 Software Engineering Languages and Tools, and CS:5830 Software Engineering Project, and earn their MCS degree. Students should meet with the academic services coordinator to file the appropriate paperwork when they apply for degree, if they did not originally declare their intent to complete the software engineering subprogram.