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.
- BS in Computer Science
- BS in Computer Science, Computer Systems Concentration
- BS in Computer Science, Human-Centered Computing Concentration
- BS in Computer Science, Software Engineering Concentration
- Computer Science Pre-Requisite Flow Chart – Overview of Prerequisites for all the courses
- Approved Supplemental Classes for Completing CS Science Requirement
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 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.
Fall 2016 Dates:
- Sign-up: October 17-21, 2016
- Advising: October 25-28, 2016
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.
- CS Undergraduate Course Flowchart
- Undergraduate curriculum for students entering IN OR AFTER Fall 2007
- Undergraduate curriculum for students who entered BEFORE Fall 2007
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.