The MCS curiculum fosters the development of logical and analytical thinking and is designed to provide a basic foundation for students who seek careers in the forefront of computing. Emphasis is given to the mathematical theory of computer science and computational methods. The program concentrates on both the practical and theoretical aspects of computer science such as numerical computing, super computing, programming languages, algorithms, complexity, coding theory, combinatorics and graph theory. The curriculum is intended for students who seek careers in systems and/or mathematical computing.
A helpful list of required courses in the MCS major including recommended clusters.
Each MCS major will be able to decide whether to graduate using the old requirements or under the new requirements. If you would like to switch to the new one, you must see a Department Advisor during advising and declare this option.
It is important to understand that once a change is made, it cannot be reversed. Full details are available at the Undergraduate Studies Offices on the 3rd floor SEO or at advising during the Spring Semester.
(This schedule is pending approval, expected effective in 2018. See the flyer at SEO336 for the current curriculum requirements)
Course  Hours  Prerequisites and Advice 

Math 180, 181, 210
Calculus I, II, III

13  C or higher in each to continue 
Math 300
Writing in Mathematics

1  English 161 and C or higher in Math 210
Open only to declared majors

Math 310
Applied Linear Algebra, or
Math 320
Linear Algebra I

3  C or higher in Math 210
C or higher in MCS 261 or Math 215

MCS 260
Intro to Comp Science

4  C or concurrent enrollment in Math 180 
MCS 261
Discrete Mathematics

3  C or higher in MCS 260 and Math 180 
MCS 275
Programming Tools

4  C or higher in MCS 260 and Math 180 
MCS 360
Intro to Data Structures

4  C or higher in MCS 261 and 275 
Stat 381
Applied Stat Methods

3  C or higher in Math 210 
Phyics 141142
General Physics I, II
or
Chem 112114
General Chemistry I, II
or
Chem 116118
Honors Chem I, II
or
Bios 100101
Cells and Organisms,
Populations and
Communities

8  10  See individual prerequisites 
Six courses taken from Math
220, 330, 410, 430, 435,
436, 480, Stat 471, and MCS
courses numbered 300 or
higher other than MCS 360,
Calculus I, II, III

18  See MCS Clusters below for recommendations in major electives 
The MCS curriculum requires 6 electives taken from Math 220, Math 330, Math 410, Math 430, Math 435, Math 436, Math 480, Stat 471 and MCS courses numbered 300 and higher other than MCS 360. Students are encouraged to concentrate their electives in a specialization of computer science represented by one of the following clusters of courses and to consult with the faculty advisor or advisors associated with the cluster for further information.
Advisors: Gyorgy Turan (gyt@uic.edu)
Errorcorrecting codes protect information against noise. CDs sound the same even when they've been scratched, thanks to ReedSolomon codes. Cryptography protects information against espionage and sabotage. Internet eavesdroppers can't see the creditcard number that you send to Amazon, thanks to the RSA publickey cryptosystem. MCS 401 is an introduction to the design and analysis of algorithms. Fast computations are essential for applied coding theory and applied cryptography. MCS 425 is an introduction to coding theory and cryptography. Math 435 is an introduction to number theory. Math 436 is a second course in number theory, focusing on the problem of discovering the prim factors of a large integer. These aspects of number theory are crucial for understanding why the RSA cryptosystem works and how secure it is.
Advisors: Jan Verschelde (jan@math.uic.edu)
This cluster is for students interested in computer programming. MCS 415 is an introduction to the major types of programming languages and to general issues in language design such as description of syntax and semantics, control structures, data types, and methods of communication between separate parts of a program. These issues arise in many different languages, and familiarity with them can lead to a deeper understanding of a language one already knows and to easier learning of new language. MCS 320 introduces symbolic computation through the Maple Language. MCS 451, designed for students familiar with C, presents the concepts of objectorientation with are central to languages such as C++, Java, and Smalltalk. It also provides overall background in C++ programming not limited to objectoriented features. The Department often offers 400level special topics courses on programming languages. With Departmental approval one such course may be substituted for MCS 320 or MCS 451.
Advisors: Dhruv Mubayi (mubayi@math.uic.edu) and Gyorgy Turan (gyt@uic.edu)
This cluster focuses on techniques important in theoretical computer science. MCS 421 covers counting techniques (including solving recurrences and generating functions) essential for the analysis of computer algorithms  how efficient of a given algorithm is in terms of time and storage resources. MCS 423 covers problems such as graph coloring, matching, and reachability that are useful in modeling computer resource allocation and management, as well as complexity studies. MCS 441 covers formal languages, automata, grammars and Turing machines, and forms the basis for studies in computability and complexity, central topics in theoretical computer science. Students completing this cluster will have a solid background for further study in computer science, as well as for practical applications such as network design and VLSI design.
Advisors: Gyorgy Turan (gyt@uic.edu)
This cluster deals with solutions of discrete optimization problems such as sorting, searching, and manipulation of trees and more general graphs. Linear programming seeks to maximize linear functions of several variables subject ton constraints given by linear equations and inequalities. Many realworld optimization problems can be solved in terms of linear programming. In addition, knowledge of linear programming is essential in solving harder combinatorial optimization problems such as matching and matroid problems. Graph theory is more theoretical, but helpful in the design of computer algorithms for problems such as matching and network flows which admit an efficient solution, and for problems such as Hamiltonian Graphs and the Traveling Salesman Problem, which are believed not to have an efficient solution method. Computational geometry studies algorithms related to objects embedded in a space of fixed dimension. Such algorithms have relevance to computer graphics, VLSI design and statistics.
Advisors: Jan Verschelde (jan@math.uic.edu)
This cluster is an applied computer science concentration of courses, also called computational science. The focus of the computational numerical analysis and mathematical software courses in on discretizing continuous mathematical models and preparing discrete models for real floating point computation so that the problems of finite floating point precision are minimized and the speed of computations is maximized. The applications concern solving problems in linear algebra, nonlinear equations, integrals, differential equations, least squares curve fitting, random simulations and data mining. Also a course in data encryption is important for data transfer security in industrial applications.
At the University of Illinois at Chicago, there are four options for students who are interested in computers. The College of Engineering offers majors in Computer Science and Computer Engineering. In addition, the College of Liberal Arts and Sciences offers a major in Mathematics and Computer Science and the College of Business offers a program in Information and Decision Sciences.
Computer Engineering is concerned with the application of electrical theory to the design of computer systems and digital networks.
This program requires courses in discrete mathematics, probabilitity and statistics and in the fundamentals of electrical engineering and computer science. This includes course work in computer languages, data structures an algorithms, software design and development, circuit analysis, signal processing, computer architecture, digital networks, microprocessor based design, digital electronic circuits design, and computer operating systems design.
This program is intended to provide a broad background in the fundamental areas of computer science; such as computer systems, organization and architecture, algorithms and data structures, principles of software design, elements of the theory of computation and operating systems; along with a strong theoretical component which places special emphasis on the development of applied skills in design, implementation, and validation of computer systems.
In addition, students obtain specialized backgrounds through the selection of five technical elective courses in computer science. Required and elective courses in the sciences and mathematics, along with additional courses in writing, humanities, social sciences, and the arts give students the opportunity to expand their horizons and to prepare for multidisciplinary careers.
Mathematics is the language of the sciences and of fields where patterns and systematic processes are analyzed. Study in the mathematical sciences provides the tools and a framework essential for the understanding of a modern technological society. The MCS curriculum fosters the development of logical and analytical thinking and is designed to provide a basic foundation appropriate for students who seek careers in computing. Emphasis is given to the mathematical theory of computer science and computational methods.
The Mathematics and Computer Science curriculum requires coursework in calculus, discrete mathematics, statistics, computer programming, and data structures. Because of the diversity of the underlying field, students are encouraged to select electives from a variety of areas such as coding and cryptography, combinatorics, numerical analysis, advanced algorithms, and symbolic computation. In addition, students are required to complete a strong liberal arts background in natural sciences, humanities and foreign language.
This program offers instruction in the application of computer ad mathematical techniques to the analysis of problems of business and management. This involves three major interrelated disciplines:
Majors take courses in each of the three disciplines with further work in one or more of the disciplines chosen by the student. A graduate of the program brings an analytical approach to the solutions of management problems and may find employment in fields such as information systems development, operations and production management and statistical data analysis. The program also provides ideal preparation for graduate study leading to the MS in Management Information Systems, Master of Business Administration and other advanced degrees.