BS | Available Tracks
The CS major track system allows students to explore different concentrations before settling on a solidified path. Students are encouraged to sample a track by enrolling into that particular track's gateway course. Track gateway courses are generally CS electives that can be applied towards the major degree requirements. If students complete 4-5 gateway courses without developing a strong interest for a single area, they are welcome to complete the Unspecialized track. Many students are able to complete gateway courses before completing the core requirements; however, the program's flexibility allows students to take several courses after completing the core before committing to a track. You can switch tracks anytime — just ensure that all the requirements for one track are fulfilled by the time you graduate. The Department does not check up on your tracks; you do not need to notify us of any changes, and there is no penalty for trying out different tracks!
Most CS tracks have a similar general structure: 1-2 gateway courses, 2-3 highly-related courses, and electives from a list of more broadly related courses. The electives list includes graduate courses in the track area, related classes from other departments, and the general CS electives list. Every track must consist of at least 25 units and 7 classes.
Note: The list of sample classes is not exhaustive and not all of the sample classes are required. If you are interested in a specific track, feel free to explore the People page for professors in that area of concentration.
Computer Science Tracks Synopsis
Artificial Intelligence (AI) includes the study of foundational material on topics such as logic, probability, statistics, language, and their relationship to several applications. Topics in the AI concentration include knowledge representation, logical reasoning, robotics, machine learning, probabilistic modeling and inference, natural language processing, cognition, speech recognition and synthesis, computer vision, and computational biology.
Computational Biology (Biocomputation)
Computational Biology is an interdisciplinary track that focuses on computational challenges and solutions in the biological and medical informatics application areas. Courses covering advanced algorithms, databases, networking, modeling and simulation, as well as those covering Biocomputation, Bioengineering, and Medical Informatics are included in this specialization.
The Computational Biology track is unique because it has modified math and science requirements in order to give students necessary background in biology. It also opens up the possibility to fulfill pre-med requirements with a CS degree. Please see a program sheet for more details.
The Computer Engineering track gives students a combination of CS and EE knowledge required to design and build both general purpose and application-specific computer systems. The Computer Engineering track focuses on three main areas: Networking, Digital Systems, and Robotics and Mechatronics. In the networking portion students learn the fundamental aspects of networking hardware and software. Digital Systems courses teach students how to design and build digital hardware and the low-level software required to support it. Finally, Robotics and Mechatronics is an area within this track which gives students experience building hardware and software for robotic and mechanized systems.
Visual Computing (Graphics)
Creating, manipulating, and interpreting visual information (images, videos, 3D geometry, and simulated virtual worlds) is pervasive in modern computing. These techniques play a huge role in applications ranging from entertainment (games, CGI for TV and film) and digital imaging (smartphone cameras, AR/VR capture, scientific imaging) robotics (driver assistance, autonomous vehicles, health-care robotics), engineering, and e-commerce. The Visual Computing Track is a specialization at the intersection of AI/ML, Graphics, and Systems that aims to give students the background needed to master the fundamental techniques of visual computing and to develop new visual computing techniques and applications. Since visual computing applications involve deep connections between modern AI/ML, advanced computer systems, and detailed modeling of the physical world, the visual computing track provides opportunities for students to develop strong foundational knowledge in any of these areas.
Human-Computer Interaction is a multidisciplinary track that studies how people interact with computational devices from the largest computing machines to handheld devices to tiny, ubiquitous computers. The HCI group teaches user-centered design thinking with a focus on ubiquitous computing, novel interaction techniques, tools for enhancing designers' creativity, and rapid prototyping. These skills are applicable to areas such as collaborative work, information visualization, and tangible computing.
Information is a track that synthesizes topics from across Computer Science that pertain to creating, processing and understanding digital information in the modern world. The track seeks to span topics ranging from computer data storage through issues of data models, formal query languages, and issues of data integrity to searching for and extracting information from unstructured data sources such as web pages, human languages, and DNA, by using techniques like machine learning and data mining.
Systems is the study of the design and implementation of computer systems such as compilers, databases, networks, and operating systems. Topics include the hardware/software interface, the networking stack, digital architecture, memory models, optimization, concurrency, privacy, security, distributed and large-scale systems, reliability and fault tolerance, and related algorithms and theoretical topics.
Theory includes the study of fundamental computational techniques, their capabilities, and their inherent limitations. Topics include data structures, sequential and parallel algorithms, computational geometry, design and analysis of programs and programming languages, logic and formal methods, and supporting studies in combinatorial, logical, and algebraic mathematics.
The unspecialized track includes classes from across the CS Department and gives students the opportunity to study many areas in the field, providing them with a significant amount of breadth. This track is essentially the previous CS undergraduate curriculum. Requirements include a systems class, an AI class, an applications class, and electives from the general CS electives list.
Students also have the option to propose an individually designed track to suit their particular academic interests and needs. Individually designed tracks must be an intellectually coherent program of study not available as part of an existing track. Proposals must include a minimum of 25 units and 7 courses, 4 of which must be CS courses numbered 100 or above. Each course must be taken for at least 3 units. Proposals must be approved by the student's undergraduate advisor and the associate chair. Proposals may not modify any non-track or elective requirements. For example, math, science, engineering fundamentals, and CS core courses cannot be modified.