Computer Science is an extremely rich and diverse discipline. At one end of the spectrum, computer science may be viewed as the formal study of what can be computed and what resources are required for computation. At the other end of the spectrum, computer science may be seen as the application of human resources, software and of course, computers to solve computational problems relating to society's and individuals' needs.

A well-trained computer scientist requires a knowledge of both ends of this spectrum--and several points in between. The Computer Science curriculum in the Department of Computer Science is intended to provide that broad background. Along with a strong theoretical component, our program places special emphasis on the development of applied skills in design, implementation and validation of computer systems. In our experience, industry and graduate programs alike value--above all--people who can solve real problems, and who come prepared to use the tools of their trade.

All students acquire a common background in the fundamental areas of computer science: computer systems, organization and architecture, algorithms and data structures, principles of software design, elements of the theory of computation, and operating 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 multi disciplinary careers.

There are very few areas in modern society untouched by Computer Science. Computer science is present in everything from health care, telecommunications and entertainment, to transportation, education and defense. The result of this diversity is that a computer scientist must be capable of working with people outside his or her field. In support of this, the Computer Science program provides its students with a well-rounded education requiring significant course work outside the Department of Computer Science, placing a strong emphasis on writing and communication skills.

Computer System Concentration

The Computer Systems Concentration represents a sub-specialty that provides more emphasis on understanding and designing computer hardware. The student continues to learn the fundamental areas of computer science: programming, data structures, discrete math, algorithms, formal languages, architecture and operating systems. Unlike traditional computer science, however, the student also studies low-level circuit analysis and high-level system design, and has the option to take additional hardware-oriented courses. The result is a unique blend of computer science and computer engineering.

Software Engineering Concentration

The Software Engineering Concentration emphasizes the knowledge and skills needed to begin a professional practice in software engineering. The concentration continues to cover in depth the fundamental areas of computer science, including programming, data structures, discrete mathematics, algorithms, formal languages, computer architecture, and operating systems. In addition the concentration focuses on key topics of software engineering practice such as software cost estimation, large-scale software development, and risk management.

Human-Centered Computing Concentration

The Human-Centered Computing Concentration emphasizes the knowledge and skills needed to begin a professional practice in areas such as: user-interface design and development for desktop or mobile devices; computer graphics and animation for video games, movie special effects; and scientific-, engineering- and medical visualization. The concentration continues to cover in depth the fundamental areas of computer science including programming, data structures, discrete mathematics, algorithms, formal languages, computer architecture, and operating systems. In addition the concentration focuses on key topics of human-centered computing practice such as user-interface design, computer graphics, visual media, and natural language processing.

Official UIC Catalog Degree Requirements are available in the UIC Catalog.

You may also reference these pdf documents in table format summarizing official catalog requirements. These are easier to read than the official catalog entries.

NOTE: A substantial revision of the undergraduate curricula became effective in Fall 2012. The Transition Guide Document includes a summary of the changes and their rationale; guidance to continuing students who may elect to switch to the new program; and phase-in and phase-out schedules of new courses and courses being retired.

Required & Selective Courses

The following table shows if a CS course is Required (R) or Selective (S) for the Bachelor of Science (BS) in Computer Science, and each of the 3 concentration areas:

  • CSO – the Computer Systems Concentration
  • HCC – the Human-Centered Computing Concentration
  • SE – the Software Engineering Concentration.

Course descriptions and official program requirements can be viewed on the UIC catalog.

Note: Corresponding courses and requirements for the pre-Fall 2012 curriculum can be viewed here.

100 level courses BS CSO HCC SE
CS 100 Discovering Computer Science
CS 107 Introduction to Computing and Programming
CS 109 C/C++ Programming for Engineers with MatLab
CS 111 Program Design I R R R R
CS 141 Program Design II R R R R
CS 151 Mathematical Foundations of Computing R R R R
200 level courses BS CSO HCC SE
CS 211 Programming Practicum R R R R
CS 251 Data Structures R R R R
CS 261 Machine Organization R R R R
300 level courses BS CSO HCC SE
CS 301 Languages and Automata R R R R
CS 341 Programming Language Design and Implementation R R R R
CS 342 Software Design R R R R
CS 361 Computer Systems R R R R
CS 362 Computer Design R R R R
CS 377 Communication and Ethical Issues in Computing R R R R
CS 385 Operating Systems Concepts and Design R R R R
CS 398 Undergraduate Design/Research
400 level courses BS CSO HCC SE
CS 401 Computer Algorithms I R R R R
CS 411 Artificial Intelligence I S
CS 412 Introduction to Machine Learning
CS 415 Computer Vision I S
CS 421 Natural Language Processing S
CS 422 User Interface Design and Programming R S
CS 424 Visualization and Visual Analytics S
CS 425 Computer Graphics I S
CS 426 Video Game Design and Development S
CS 440 Introduction to Software Engineering R
CS 441 Engineering Distributed Objects For Cloud Computing S
CS 442 Software Engineering II R
CS 450 Introduction to Networking S
CS 455 Design and Implementation of Network Protocols
CS 466 Advanced Computer Architecture S
CS 469 Computer Systems Design S
CS 473 Compiler Design S
CS 474 Object-Oriented Languages and Environments S
CS 476 Programming Language Design
CS 477 Public Policy, Legal, and Ethical Issues in Computing, Privacy, and Security
CS 478 Software Development for Mobile Platforms
CS 480 Database Systems S
CS 485 Networked Operating Systems Programming
CS 486 Secure Operating System Design and Implementation
CS 487 Building Trustworthy Computing Systems S
CS 489 Human Augmentics
CS 491 Seminar
CS 493 Special Problems

The CS department offers peer tutoring services focused on 100, 200 and 300 level classes. The most current list of tutors and the tutoring schedule, is posted on our site under 'Academics' & 'Courses'. Direct link for F'16.

Tutoring sessions are held in 2250 SELE.

All College of Engineering undergraduate students are required to be advised before they are able to register for classes each semester. 'Advising hold' will not be removed until you are advised. Fall and Spring advising sign-up is the 9th week of the semester. Advising appointments are held during the 10th week.

Find your advisor from the advising list and make an appointment with your advisor directly during the 9thweek. It is recommended that you bring your DARS report, list of courses you are interested in and any questions you have for your appointment. Once you are advised, fill out the advising form with your advisor and submit it to the CS Student Affairs office (SEO 905). Keep your white copy for your records. Staff in the office will remove your advising hold within 2-3 business days.

Questions regarding advising can be directed to the CS Student Affairs Office, SEO 905.

Phone: 312-413-4950/ 312-996-2290 or E-mail:

Fall 2016 Dates:

  • Sign-up: October 17-21, 2016
  • Advising: October 25-28, 2016

Slides from the Group Advising sessions.

All transfers and credits are handled through the College of Engineering. Please see a counselor in the College of Engineering in Room SEO 123 or call (312-996-3463).

The Computer Science department's BS program has been accredited by the Computing Accreditation Commission of ABET (and its predecessors) since 1997. Details are available under our Graduation Objectives.

The University of Illinois at Chicago and the department of computer science are committed to providing an educational environment that is accessible to all students. In accordance with this commitment, students in need of accommodations due to a disability are encouraged to contact the Disability Resource Center or Phone (312) 413-2183 for determination of reasonable accommodations as soon as possible.