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.

Requirements

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.

Theory

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:4350 Logic in Computer Science 3 s.h.
CS:5340 Limits of Computation 3 s.h.
CS:5350 Design and Analysis of Algorithms 3 s.h.
CS:5360 Randomized Algorithms 3 s.h.
CS:5370 Computational Geometry 3 s.h.
CS:5850 Programming Language Foundations 3 s.h.
CS:5860 Lambda Calculus and its Applications  3 s.h.

Algorithms

All MCS students are required to take "Design and Implementation of Algorithms." This is a 3 s.h. course being offered in Spring 2019 for the first time as CS: 4980, but it will acquire a different and permanent 4000-level course number for the 2019-20 academic year.

Colloquium

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.

Electives

MCS students should complete their remaining 24 s.h. (8 courses) with a combination of computer science graduate courses, research and project courses, and non-CS 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/project course (CS:5990). This course is 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. 
  • 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 1 course at the CS 3000 level taken during a student's first year in the M.C.S. program, limited to the following: CS:3330 Algorithms; CS:3620 Operating Systems; CS:3640 Introduction to Netowrks and Their Applications; or CS:3820 Programming Language Concepts.

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.