Computer science is now a critical tool for pursuing an everbroadening range of topics, from outer space to the workings of the human mind. In most areas of science and in many liberal arts fields, cuttingedge work depends increasingly on computational approaches. The undergraduate program at Brown is designed to combine breadth in practical and theoretical computer science with depth in specialized areas. These areas range from traditional topics, such as analysis of algorithms, artificial intelligence, databases, distributed systems, graphics, mobile computing, networks, operating systems, programming languages, robotics and security, to novel areas including games and scientific visualization.
Requirements for the Standard Track of the Sc.B. degree
Prerequisites (1 or 2 courses)  
Two semesters of Calculus, for example:  
Introductory Calculus, Part II  
or MATH 0170  Advanced Placement Calculus  
Concentration Requirements (15 courses)  
CoreComputer Science:  
Select one of the following introductory course Series:  2  
Series A  
Introduction to ObjectOriented Programming and Computer Science and Introduction to Algorithms and Data Structures  
Series B  
Computer Science: An Integrated Introduction and Computer Science: An Integrated Introduction  
Series C  
Accelerated Introduction to Computer Science (and an additional CS course not otherwise used to satisfy a concentration requirement; this course may be CSCI 0180, an intermediatelevel course, or an advanced course)  
Select three of the following intermediatelevel courses, one of which must be mathoriented and one systemsoriented:  3  
Introduction to Discrete Structures and Probability (math)  
Introduction to Software Engineering (systems)  
Introduction to Computer Systems (systems)  
Theory of Computation (math) ^{3}  
Probability and Computing (math) ^{4}  
Additional Computer Science Courses: ^{1}  
Select one theoretical computer science course: ^{2}  1  
Theory of Computation ^{3}  
Introduction to Cryptography and Computer Security  
Probabilistic Methods in Computer Science  
Design and Analysis of Algorithms  
Introduction to Computational Complexity  
Multiprocessor Synchronization  
Computational Topology  
Algorithmic Foundations of Computational Biology  
Logic for Systems  
Select one artificial intelligence course: ^{2}  1  
Artificial Intelligence  
Machine Learning  
Computer Vision  
Probability and Computing  
Computational Linguistics  
Select one computer science systems course: ^{2}  1  
Introduction to Computer Graphics  
Compilers and Program Analysis  
Database Management Systems  
User Interfaces and User Experience  
Creating Modern Web Applications  
Distributed Computer Systems  
RealTime and Embedded Software  
Introduction to Computer Systems Security  
Operating Systems  
Computer Networks  
Design and Implementation of Programming Languages  
csciStartup  
Four additional advanced computer science or related courses. Five of the 8 advanced courses must be from CS. In addition to those listed above, students can choose:  4  
Introduction to Computer Animation  
Intermediate 3D Computer Animation  
Virtual Reality Design for Science  
Parallel and Distributed Programming  
Cybersecurity and International Relations  
Computational Molecular Biology  
csciStartup  
Computational Modeling and Algorithmic Thinking  
Computational Topology and Discrete Geometry  
2D Game Engines  
Compiler Practice  
Advanced Animation Production  
Topics in 3D Game Engine Development  
Software Foundations  
Logic for Systems  
Computational Methods for Biology  
Data Science  
Designing Humanity Centered Robots  
Computers, Freedom and Privacy: Current Topics in Law and Policy  
Optimization Methods in Finance  
CSCI 1951H  Software Security Exploitation  
Interdisciplinary Scientific Visualization  
Individual Independent Study  
A capstone course ^{5}  1  
Math: Two semesters of Mathematics or Applied Mathematics beyond MATH 0100/0170. One of these courses must be a linear algebra course  2  
Linear Algebra  
Honors Linear Algebra  
Directions: The Matrix in Computer Science  
Total Credits  15 
^{1} 

^{2}  No course may be used to satisfy more than one area requirement. 
^{3}  CSCI 1010 may be used either as a mathoriented intermediate course or as an advanced course, but not both. It was formerly known as CSCI 0510. 
^{4}  CSCI 1450 may be used either as a mathoriented intermediate course or as an advanced course, but not both. CSCI 1450 was previously known as CSCI 0450. Applied Math 1650 may be used in place of CSCI 1450. However, concentration credit will be given for only one of Applied Math 1650 and CSCI 1450. 
^{5}  Capstone: a onesemester course, normally taken in the student's last undergraduate year, in which the student (or group of students) use a significant portion of their undergraduate education, broadly interpreted, in studying some current topic in depth, to produce a culminating artifact such as a paper or software project. 
Requirements for the Professional Track of the Sc.B. degree.
The requirements for the professional track include all those of the standard track, as well as the following:
Students must complete two twotofourmonth fulltime professional experiences, doing work that is related to their concentration programs. Such work is normally done within an industrial organization, but may also be at a university under the supervision of a faculty member.
On completion of each professional experience, the student must write and upload to ASK a reflective essay about the experience addressing the following prompts, to be approved by the student's concentration advisor:
 Which courses were put to use in your summer's work? Which topics, in particular, were important?
 In retrospect, which courses should you have taken before embarking on your summer experience? What are the topics from these courses that would have helped you over the summer if you had been more familiar with them?
 Are there topics you should have been familiar with in preparation for your summer experience, but are not taught at Brown? What are these topics?
 What did you learn from the experience that probably could not have been picked up from course work?
 Is the sort of work you did over the summer something you would like to continue doing once you graduate? Explain.
 Would you recommend your summer experience to other Brown students? Explain.
Requirements for the Standard Track of the A.B. degree
Prerequisites  
Two semesters of Calculus, for example:  
Introductory Calculus, Part II  
Advanced Placement Calculus  
Concentration Requirements (9 courses)  
Core Computer Science:  
Select one of the following series:  2  
Series A  
Introduction to ObjectOriented Programming and Computer Science and Introduction to Algorithms and Data Structures  
Series B  
Computer Science: An Integrated Introduction and Computer Science: An Integrated Introduction  
Series C  
Accelerated Introduction to Computer Science (and an additional CS course not otherwise used to satisfy a concentration requirement; this course may be CSCI 0180, an intermediatelevel course, or an advanced course)  
Three intermediate courses from the following, of which one must be mathoriented and one must be systemsoriented:  3  
Introduction to Discrete Structures and Probability (math)  
Introduction to Software Engineering (systems)  
Introduction to Computer Systems (systems)  
Directions: The Matrix in Computer Science (math)  
Theory of Computation (math) ^{1}  
Probability and Computing (math)  
Four additional 1000level courses in computer science or related areas are required. 3 of the 4 courses must be in CS ^{2}  4  
Total Credits  9 
^{1}  CSCI 1010 may be used as either a mathoriented intermediate course or as an advanced course, but not as both. It was formerly known as CSCI 0510. 
^{2} 

Requirements for the Professional Track of the A.B. degree.
The requirements for the professional track include all those of the standard track, as well as the following:
Students must complete two twotofourmonth fulltime professional experiences, doing work that is related to their concentration programs. Such work is normally done within an industrial organization, but may also be at a university under the supervision of a faculty member.
On completion of each professional experience, the student must write and upload to ASK a reflective essay about the experience addressing the following prompts, to be approved by the student's concentration advisor:
 Which courses were put to use in your summer's work? Which topics, in particular, were important?
 In retrospect, which courses should you have taken before embarking on your summer experience? What are the topics from these courses that would have helped you over the summer if you had been more familiar with them?
 Are there topics you should have been familiar with in preparation for your summer experience, but are not taught at Brown? What are these topics?
 What did you learn from the experience that probably could not have been picked up from course work?
 Is the sort of work you did over the summer something you would like to continue doing once you graduate? Explain.
 Would you recommend your summer experience to other Brown students? Explain.