The track system was designed to give students the opportunity for additional depth in a more diverse set of areas while still providing the opportunity for students to include plenty of breadth in their programs. The general structure of most tracks is similar: one or two gateway courses, two or three 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. A track must consist of at least 25 units and 7 classes.
Choosing a Track
The track system was purposefully designed to allow students to explore different areas before settling on a track. Students can sample a track by taking the gateway course of a particular track and then make a decision about whether or not to continue in that area. By design, the gateway courses in each track are typically also on the general CS electives list so any gateway course can still count towards the degree requirements. There is no penalty for trying out different tracks! There is also the unspecialized track for students who take 4 or 5 gateway courses without finding a single area they like best. In many cases students will be able to take some gateway courses before completing the core, but the program has enough flexibility to let students take several courses after finishing the core before committing to a track.
There are currently 9 approved tracks, as well as an individually designed option. For details about the specific academic and course requirements for each track, see a program sheet.
Artificial Intelligence 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.
Biocomputation 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 biocomputation 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 degreee. 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 has 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 teaches 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.
Graphics includes the study of digital image and video manipulation, including topics related to capture and display devices; color, shading, lighting, and perception; digital representations of physical objects, simulation, modeling, and animation; and geometric algorithms.
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 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.