University of Illinois Urbana-ChampaignWebsiteAcademic Catalog
Computing and Data ScienceDepartment Website
BS Degree in Computer Sciencesource 1source 2source 3ABET
CS Courses
- or
- Software Design LabCS 222 (1)softengCS 222: Software Design Lab
Design and implementation of novel software solutions. Problem identification and definition; idea generation and evaluation; and software implementation, testing, and deployment. Emphasizes software development best practices—including framework selection, code review, documentation, appropriate library usage, project management, continuous integration and testing, and teamwork.
- Data StructuresCS 225 (4)introCS 225: Data Structures
Data abstractions: elementary data structures (lists, stacks, queues, and trees) and their implementation using an object-oriented programming language. Solutions to a variety of computational problems such as search on graphs and trees. Elementary analysis of algorithms.
- System ProgrammingCS 341 (4)sysCS 341: System Programming
Basics of system programming, including POSIX processes, process control, inter-process communication, synchronization, signals, simple memory management, file I/O and directories, shell programming, socket network programming, RPC programming in distributed systems, basic security mechanisms, and standard tools for systems programming.
- Numerical Methods ICS 357 (3)mathCS 357: Numerical Methods I
Fundamentals of numerical methods for students in science and engineering; floating-point computation, systems of linear equations, approximation of functions and integrals, the single nonlinear equation, and the numerical solution of ordinary differential equations; various applications in science and engineering; programming exercises and use of high quality mathematical library routines.
- Introduction to Algorithms & Models of ComputationCS 374 (4)algsCS 374: Introduction to Algorithms & Models of Computation
Analysis of algorithms, major paradigms of algorithm design including recursive algorithms, divide-and-conquer algorithms, dynamic programming, greedy algorithms, and graph algorithms. Formal models of computation including finite automata and Turing machines. Limitations of computation arising from fundamental notions of algorithm and from complexity-theoretic constraints. Reductions, undecidability and NP-completeness.
- Virtual RealityorCS 417 (3)graphicsCS 417: Virtual Reality
Provides both a deep understanding of the fundamentals of virtual reality (VR) and practical experience implementing VR systems. Topics covered include visual and audio display technology, tracking, human perception and psychophysics, building user interfaces for VR, and analyzing VR experiences.
Software Engineering IorCS 427 (3)softengCS 427: Software Engineering ISoftware process, analysis and design. Software development paradigms, system engineering, function-based analysis and design, and object-oriented analysis and design. Course will use team-projects for hands-on exercises. Same as CSE 426.
Software Engineering IIorororCS 428 (3)softengCS 428: Software Engineering IIContinuation of CS 427. Software development, management, and maintenance. Project and configuration management, collaborative development models, software quality assurance, interoperability domain engineering and software reuse, and software re-engineering. Same as CSE 429.
User Interface DesignorCS 465 (4)humansCS 465: User Interface DesignA project-focused course covering fundamental principles of user interface design, implementation, and evaluation. Small teams work on a term-long project that involves: analysis of the problem domain, user skills, and tasks; iterative prototyping of interfaces to address user needs; conducting several forms of evaluation such as cognitive walkthroughs and usability tests; implementation of the final prototype. Non-technical majors may enroll as non-programmers who participate in all aspects of the projects with the possible exception of implementation.
Social VisualizationorororCS 467 (3)graphicsCS 467: Social VisualizationVisualizing social interaction in networked spaces: investigation of patterns in networked communications systems such as messaging (email, instant messaging), social networking sites and collaborative sites; social network theory and visualizations; exploration of how to move beyond existing visualization techniques; visualizing the network identity over compilations of online data.
- Programming Languages & CompilersCS 421 (3)plsCS 421: Programming Languages & Compilers
Structure of programming languages and their implementation. Basic language design principles; abstract data types; functional languages; type systems; object-oriented languages. Basics of lexing, parsing, syntax-directed translation, semantic analysis, and code generation.
Math/Stat Courses
- Calculus IMATH 221 (4)mathMATH 221: Calculus I
First course in calculus and analytic geometry for students with some calculus background; basic techniques of differentiation and integration with applications including curve sketching; antidifferentation, the Riemann integral, fundamental theorem, exponential and trigonometric functions.
- Linear Algebra with Computational ApplicationsorMATH 257 (3)mathMATH 257: Linear Algebra with Computational Applications
Introductory course incorporating linear algebra concepts with computational tools, with real world applications to science, engineering and data science. Topics include linear equations, matrix operations, vector spaces, linear transformations, eigenvalues, eigenvectors, inner products and norms, orthogonality, linear regression, equilibrium, linear dynamical systems and the singular value decomposition.
Applied Linear AlgebraorMATH 415 (3)mathMATH 415: Applied Linear AlgebraIntroductory course emphasizing techniques of linear algebra with applications to engineering; topics include matrix operations, determinants, linear equations, vector spaces, linear transformations, eigenvalues, and eigenvectors, inner products and norms, orthogonality, equilibrium, and linear dynamical systems.
- Probability & Statistics for Computer ScienceCS 361 (3)mathCS 361: Probability & Statistics for Computer Science
Introduction to probability theory and statistics with applications to computer science. Topics include: visualizing datasets, summarizing data, basic descriptive statistics, conditional probability, independence, Bayes theorem, random variables, joint and conditional distributions, expectation, variance and covariance, central limit theorem, Markov inequality, Chebyshev inequality, law of large numbers, Markov chains, simulation, the PageRank algorithm, populations and sampling, sample mean, standard error, maximum likelihood estimation, Bayes estimation, hypothesis testing, confidence intervals, linear regression, principal component analysis, classification, and decision trees.
Engineering Courses
Science Courses
- University Physics: MechanicsPHYS 211 (4)sciPHYS 211: University Physics: Mechanics
Newton's Laws, work and energy, static properties and fluids, oscillations, transverse waves, systems of particles, and rotations. A calculus-based approach for majors in engineering, mathematics, physics and chemistry. Credit is not given for both PHYS 211 and PHYS 101.
- University Physics: Elec & MagPHYS 212 (4)sciPHYS 212: University Physics: Elec & Mag
Coulomb's Law, electric fields, Gauss' Law, electric potential, capacitance, circuits, magnetic forces and fields, Ampere's law, induction, electromagnetic waves, polarization, and geometrical optics. A calculus-based approach for majors in engineering, mathematics, physics, and chemistry. Credit is not given for both PHYS 212 and PHYS 102.
Other Courses
- 24 units from
Free Electives
Program Educational Objectives
The objectives are to prepare graduates who:
- For years after graduation are highly sought after by employers and accepted at top graduate schools, obtain positions in industry, government, not-for-profits and academia.
- Pursue education through lifelong learning either through self-directed study or in leading graduate programs.
- Emerge as leaders in the field through creation of new knowledge and systems in the rapidly changing world.
- Provide leadership with their high ethical and technical standards.
Student Outcomes
Our Student Outcomes include the ability, by the time of graduation, to:
- Analyze a complex computing problem and apply principles of computing and other relevant disciplines to identify solutions.
- Design, implement, and evaluate a computing-based solution to meet a given set of computing requirements in the context of the program’s discipline.
- Communicate effectively in a variety of professional contexts.
- Recognize professional responsibilities and make informed judgments in computing practice based on legal and ethical principles.
- Function effectively as a member or leader of a team engaged in activities appropriate to the discipline.
- Apply computer science theory and software development fundamentals to produce computing-based solutions.