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.

Summary of CS Degree requirements and details are presented in different formats below to understand the requirements better:.

Required & Selective CS 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.


100 level coursesBSCSOHCCSE
CS 100Discovering Computer Science
CS 107Introduction to Computing and Programming
CS 109C/C++ Programming for Engineers with MatLab
CS 111Program Design IRRRR
CS 141Program Design IIRRRR
CS 151Mathematical Foundations of ComputingRRRR
200 level coursesBSCSOHCCSE
CS 211Programming PracticumRRRR
CS 251Data StructuresRRRR
CS 261Machine OrganizationRRRR
300 level coursesBSCSOHCCSE
CS 301Languages and AutomataRRRR
CS 341Programming Language Design and ImplementationRRRR
CS 342Software DesignRRRR
CS 361Computer SystemsRRRR
CS 362Computer DesignRRRR
CS 377Communication and Ethical Issues in ComputingRRRR
CS 385Operating Systems Concepts and DesignRRRR
CS 398Undergraduate Design/Research
400 level coursesBSCSOHCCSE
CS 401Computer Algorithms IRRRR
CS 411Artificial Intelligence IS
CS 412Introduction to Machine Learning
CS 415Computer Vision IS
CS 421Natural Language ProcessingS
CS 422User Interface Design and ProgrammingRS
CS 424Visualization and Visual AnalyticsS
CS 425Computer Graphics IS
CS 426Video Game Design and DevelopmentS
CS 440Introduction to Software EngineeringR
CS 441Engineering Distributed Objects For Cloud ComputingS
CS 442Software Engineering IIR
CS 450Introduction to NetworkingS
CS 455Design and Implementation of Network Protocols
CS 466Advanced Computer ArchitectureS
CS 469Computer Systems DesignS
CS 473Compiler DesignS
CS 474Object-Oriented Languages and EnvironmentsS
CS 476Programming Language Design
CS 477Public Policy, Legal, and Ethical Issues in Computing, Privacy, and Security
CS 478Software Development for Mobile Platforms
CS 480Database SystemsS
CS 485Networked Operating Systems Programming
CS 486Secure Operating System Design and Implementation
CS 487Building Trustworthy Computing SystemsS
CS 489Human Augmentics
CS 491Seminar
CS 493Special Problems

The CS department offers peer tutoring services focused on 100, 200 and 300 level classes. Current list of tutors and the tutoring schedule is available on our course information website.

Tutoring is available from 10AM-9PM Monday-Friday in 2250 SELE.

Refer to the link above for availability of specific class levels. No appointment necessary.

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. In Fall and Spring you will receive email from the department or your advisor about advising sign-up and advising appointments. You should complete this before registration becomes available in the 11th week.

Find your advisor from the advising list. If you do not hear from you advisor by the 9th week, get in touch with them for an appointment.

You must bring your DARS report, list of courses you are interested in taking for the next semester 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:

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.

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.

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.