The Computer Science department offers two Computer Science degrees: the Interdisciplinary Major in Computer Science degree offered through the College of Arts & Sciences (BACS), and the Bachelor of Science in Computer Science degree offered through the School of Engineering and Applied Sciences. In addition to the two Computer Science degrees, we also offer a Bachelor of Science in Computer Engineering degree which is jointly administered with the Electrical and Computer Engineering Department .
The main differences between the two Computer Science degrees are:
- The BACS degree is in the College of Arts & Sciences; the BSCS is in the School of Engineering and Applied Science. This means the degrees have different general requirements. The general requirements for the College of Arts & Sciences are the competency requirements (see the Undergraduate Record for details). They include two writing requirements, a foreign language, and area requirements in natural science and mathematics, social sciences, humanities, and historical studies. The general requirements for the School of Engineering and Applied Sciences include mathematics, chemistry, physics, technical electives, humanities electives, and science, technology, and society courses (see the curriculum for details). To enroll in the BACS major, students must be enrolled in the College of Arts & Sciences. To enroll in the BSCS major, students must be enrolled in the School of Engineering and Applied Science.
- The BACS degree starts with the CS1120-CS2220 gateway sequence; the BSCS degree starts with the CS1110-CS2110 sequence. The CS1120-CS2220 sequence is a more conceptual introduction to computer science, that emphasizes the key intellectual ideas first in CS1120, and includes connections between computer science and the arts and sciences. The CS1110-CS2110 sequence emphasizes first learning an industrial programming language, and is required for all students in the Engineering school. Students in the BACS degree are permitted to take the CS1110-CS2110 sequence, but are usually encouraged to take CS1120-CS2220. After completing the first two courses, students are prepared for the same courses, and both BACS and BSCS take the same core courses (CS2102, CS2150, CS3330, and CS4102).
- The BSCS degree includes some additional required CS courses that are not required for the BACS degree. The additional courses required for the BSCS degree are CS3102 (Theory of Computation), CS3240 (Advanced Software Development Techniques), and CS4414 (Operating Systems). BACS students are welcome and encouraged to take these courses, which can count as CS electives for BACS students, but they are not required for BACS students.
- The BACS degree requires four integration electives, which are not part of the BSCS degree. The integration electives are courses in other departments that have strong connections with computing. See http://www.cs.virginia.edu/ba/integration.html for a list of pre-approved integration electives.
- The BSCS degree (like all Engineering School degrees) requires a fourth-year thesis. This involves taking STS 4010 (in which students write a thesis proposal) and STS 4020 (in which students complete a thesis report), and working with a technical advisor on a thesis project. BACS students are not required to complete a thesis, but may enter the distinguished majors program. To complete a distinguished major, a BACS student must complete a fourth year thesis project that is approved by two readers.