You're logged in as |

Computer Science

Computer science is now a critical tool for pursuing an ever-broadening range of topics, from outer space to the workings of the human mind. In most areas of science and in many liberal arts fields, cutting-edge 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.

Our requirements are built on a collection of pathways, each representing a well-defined area within computer science.  Concentrators interested in particular areas can choose the courses included in particular pathways.  Conversely, concentrators who are unsure of their area of interest but who have particularly enjoyed certain courses can choose pathways that include these concentrations.  Students may not use more than two CSCI 1970 courses to complete the requirements for the Sc.B. and one CSCI 1970 course for the A.B. requirements.

For up-to-date information on our concentration requirements please see https://cs.brown.edu/degrees/undergrad/concentrating-in-cs/concentration-requirements-2020/new-scb-requirements/ for ScB requirements and https://cs.brown.edu/degrees/undergrad/concentrating-in-cs/concentration-requirements-2020/new-ab-requirements/ for AB requirements. Please see https://cs.brown.edu/degrees/undergrad/concentrating-in-cs/concentration-handbook/ for further discussion regarding our concentration requirements.

Requirements for the Standard Track of the Sc.B. degree

Prerequisites (0-3 courses)
Calculus prerequisite: students must complete or place out of second semester calculus.0-3
Single Variable Calculus, Part II
Single Variable Calculus, Part II (Accelerated)
Single Variable Calculus, Part II (Physics/Engineering)
Concentration Requirements
Core-Computer Science:
Select one of the following introductory course Series:2
Series A
Introduction to Object-Oriented Programming and Computer Science
and Program Design with Data Structures and Algorithms
Series B
Computer Science: An Integrated Introduction
and Program Design with Data Structures and Algorithms
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 0200, an intermediate-level course, or an advanced course)
Series D 1
Computing Foundations: Data
and Computing Foundations: Program Organization
and Program Design with Data Structures and Algorithms
Thirteen more advanced courses.13
♦︎ Two complete pathways (at least one core course from each)
⚬ Each requires two 1000-level courses as well as one-to-three intermediate courses
⚬ One of the courses used in one pathway must be a capstone course (defined below) 2
⚬ The core and related courses used in one pathway may not overlap with those used in another
⚬ 2000-level courses beyond those explicitly mentioned may also be used toward the concentration. They will be considered to be part of the same pathway as their thematically-related 1000-level courses
♦︎ Additional intermediate courses so that a total of five are taken, with at least one from each of the three categories
♦︎ One additional 1000-level course that is neither a core nor a related nor a graduate course for the pathways used above
♦︎ No more than four arts, humanities, and social science oriented CS courses (currently CSCI 1250, 1280, 1370, 1800, 1805, and 1870) may be used for concentration credit.
Intermediate Courses
ScB students must take at least one course from each intermediate course category to ensure they span all areas. In addition, they must take whatever intermediate courses they haven't yet taken that are required for their pathways.
Foundations
Introduction to Discrete Structures and Probability
The Art of Writing Mathematics
Abstract Algebra
Theory of Computation
Mathematics
Coding the Matrix: An Introduction to Linear Algebra for Computer Science
Linear Algebra
Linear Algebra With Theory
Advanced Introduction to Probability for Computing and Data Science
Statistical Inference I
Honors Statistical Inference I
Multivariable Calculus
Multivariable Calculus (Physics/Engineering)
Multivariable Calculus With Theory
Systems
Introduction to Software Engineering
Introduction to Computer Systems
Fundamentals of Computer Systems
Pathways
Completing a pathway entails taking two courses in the pathway of which at least one is a core course for the pathway. One must also take the intermediate courses specified as part of the pathway. Certain graduate courses can also satisfy pathway requirements, see the CS Pathway page for more info:http://cs.brown.edu/degrees/undergrad/concentrating-in-cs/concentration-handbook/
SYSTEMS: studies the design, construction, and analysis of modern, multi-faceted computing systems
Core Courses
Distributed Computer Systems
Operating Systems
Computer Networks
Related Courses
Compilers and Program Analysis
Database Management Systems
Creating Modern Web & Mobile Applications
Real-Time and Embedded Software
Software Security and Exploitation
Introduction to Computer Systems Security
Logic for Systems
Design and Implementation of Programming Languages
Multiprocessor Synchronization
Design of Computing Systems
Intermediate Courses
Fundamentals of Computer Systems
Introduction to Computer Systems
Introduction to Discrete Structures and Probability
SOFTWARE PRINCIPLES: studies the design, construction, and analysis of modern software systems
Core Courses
Compilers and Program Analysis
Creating Modern Web & Mobile Applications
Real-Time and Embedded Software
Logic for Systems
Design and Implementation of Programming Languages
Related Courses
Database Management Systems
Distributed Computer Systems
Software Security and Exploitation
Computer Networks
CS for Social Change
Surveying VR Data Visualization Software for Research
Formal Proof and Verification
Intermediate Courses
Introduction to Discrete Structures and Probability
Introduction to Software Engineering
Introduction to Computer Systems (Data)
Fundamentals of Computer Systems
DATA: Studies the management and use of large data collections
Core Courses
Database Management Systems
Machine Learning
Data Science
Related Courses
Probabilistic Methods in Computer Science
Intermediate Courses
Introduction to Software Engineering
Introduction to Computer Systems
Fundamentals of Computer Systems
Linear Algebra
Linear Algebra With Theory
Coding the Matrix: An Introduction to Linear Algebra for Computer Science
Advanced Introduction to Probability for Computing and Data Science
Statistical Inference I
Honors Statistical Inference I
ARTIFICIAL INTELLIGENCE / MACHINE LEARNING: studies the theory and application of algorithms for making decisions and inferences from rules and data
Core Courses
Artificial Intelligence
Machine Learning
Computer Vision
Computational Linguistics
Deep Learning
Deep Learning in Genomics
Introduction to Robotics
Related Courses
Algorithmic Game Theory
Probabilistic Methods in Computer Science
Data Science
Designing Humanity Centered Technology
Recent Applications of Probability and Statistics
Image Understanding
Intermediate Courses
Advanced Introduction to Probability for Computing and Data Science
Statistical Inference I
Honors Statistical Inference I
Linear Algebra
Linear Algebra With Theory
Coding the Matrix: An Introduction to Linear Algebra for Computer Science
THEORY: students the foundations of models and algorithms for computing in various contexts
Core Courses
Introduction to Cryptography and Computer Security
Probabilistic Methods in Computer Science
Design and Analysis of Algorithms
Multiprocessor Synchronization
Sublinear Algorithms for Big Data
Formal Proof and Verification
Related Courses
Algorithmic Game Theory
Probabilistic Methods in Computer Science
Logic for Systems
Computational Molecular Biology
Algorithmic Foundations of Computational Biology
Computational Topology
Optimization Methods in Finance
Introduction to Computational Complexity
Logic for Systems
Computational Molecular Biology
Algorithmic Foundations of Computational Biology
Computational Topology
Optimization Methods in Finance
Intermediate Courses
Theory of Computation
Advanced Introduction to Probability for Computing and Data Science
Statistical Inference I
Honors Statistical Inference I
Linear Algebra
Linear Algebra With Theory
Coding the Matrix: An Introduction to Linear Algebra for Computer Science
SECURITY: studies the design, construction, analysis, and defense of techniques to protect systems, data, and communications
Core Courses
Introduction to Cryptography and Computer Security
Software Security and Exploitation
Introduction to Computer Systems Security
Related Courses
Creating Modern Web & Mobile Applications
Distributed Computer Systems
Operating Systems
Computer Networks
Logic for Systems
Design and Implementation of Programming Languages
Cybersecurity and International Relations
Computers, Freedom and Privacy
Blockchains and Cryptocurrencies
Intermediate Courses
Introduction to Computer Systems
Fundamentals of Computer Systems
Introduction to Discrete Structures and Probability (Or Probability and Statistics (see options below))
Advanced Introduction to Probability for Computing and Data Science
Statistical Inference I
Honors Statistical Inference I
VISUAL COMPUTING: studies the creation, interaction, and analysis of images and visual information, including animation and games
Core Courses
Introduction to Computer Graphics
Introduction to Computer Animation
Intermediate 3D Computer Animation
Computational Photography
User Interfaces and User Experience
Virtual Reality Design for Science
Computer Vision
Advanced Animation Production
Surveying VR Data Visualization Software for Research
Related Courses
2D Game Engines
Deep Learning
2D Game Engines
Topics in 3D Game Engine Development
Hypertext/Hypermedia: The Web Was Not the Beginning and the Web Is Not the End
Computational Vision
Intermediate Courses
Introduction to Software Engineering
Introduction to Computer Systems
Linear Algebra
Linear Algebra With Theory
Coding the Matrix: An Introduction to Linear Algebra for Computer Science
COMPUTER ARCHITECTURE: studies the design, construction, and analysis of computer architecture and hardware
Core Courses
Digital Electronics Systems Design
Design of Computing Systems
Embedded Microprocessor Design
Related Courses
Real-Time and Embedded Software
Multiprocessor Synchronization
Design and Implementation of Digital Integrated Circuits
Intermediate Course
Introduction to Computer Systems
Fundamentals of Computer Systems
COMPUTATIONAL BIOLOGY: studies the foundations and applications of algorithms for analyzing biological data and processes
Core Courses
Computational Molecular Biology
Algorithmic Foundations of Computational Biology
Deep Learning in Genomics
Related Courses
Machine Learning
Computer Vision
Deep Learning
Data Science
Computational Vision
Intermediate Courses
Introduction to Discrete Structures and Probability
Theory of Computation
Advanced Introduction to Probability for Computing and Data Science
Statistical Inference I
Honors Statistical Inference I
DESIGN: studies the design, construction, and analysis of processes at the interface between humans and systems
Core Courses
User Interfaces and User Experience
Virtual Reality Design for Science
Designing Humanity Centered Technology
Related Courses
Introduction to Computer Graphics
Creating Modern Web & Mobile Applications
Human Factors in Cybersecurity
Real-Time and Embedded Software
Data Science
CS for Social Change
Surveying VR Data Visualization Software for Research
Hypertext/Hypermedia: The Web Was Not the Beginning and the Web Is Not the End
Responsible Computer Science in Practice
Design of Robotic Systems
Physical Computing
Intermediate Courses
Fundamentals of Computer Systems
Introduction to Software Engineering
Introduction to Computer Systems
Advanced Introduction to Probability for Computing and Data Science
Statistical Inference I
Honors Statistical Inference I
SELF-DESIGNED: This pathway is modeled after the Brown programs for designing one’s own concentration. Students electing this pathway must write a proposal for their pathway and have it approved by an advisor and the director of undergraduate studies. The proposal must meet the breadth and overall course requirements. This must be done by the end of shopping period of the student’s seventh semester.

Requirements for the Standard Track of the A.B. degree

Prerequisites (0-3 courses)0-3
Students must complete or place out of second semester calculus.
Single Variable Calculus, Part II
Single Variable Calculus, Part II (Accelerated)
Single Variable Calculus, Part II (Physics/Engineering)
Concentration Requirements (9 courses)
Core Computer Science:
Select one of the following series:2
Series A
Introduction to Object-Oriented Programming and Computer Science
and Program Design with Data Structures and Algorithms
Series B
Computer Science: An Integrated Introduction
and Program Design with Data Structures and Algorithms
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 0200, an intermediate-level course, or an advanced course)
Series D 1
Computing Foundations: Data
and Computing Foundations: Program Organization
and Program Design with Data Structures and Algorithms
Seven more advanced courses. 7
♦︎ One complete pathway (see ScB for pathways)
Requires two 1000-level courses as well as one-to-three intermediate courses
♦︎ Additional intermediate courses so that a total of three are taken with at least one in each of two different intermediate-course categories (see the ScB requirements for a listing of these categories)
♦︎ One additional 1000-level course that is neither a core nor a related course for the pathways used above
♦︎ Of the remaining two courses, at least one must be at the 1000-level or higher (i.e., one may be an intermediate course not otherwise used as part of the concentration). One course may be an approved 1000-level course from another department. Unless explicitly stated in a pathway, such non-CS courses may not be used as part of pathways.
♦︎ No more than two arts, humanities, and social science oriented CS courses (currently CSCI 1250, 1280, 1370, 1800, 1805, and 1870) may be used for concentration credit.

Requirements for the Professional Track of the both the Sc. B. and A.B. degrees.

The requirements for the professional track include all those of the standard track, as well as the following:

Students must complete full-time professional experiences doing work that is related to their concentration programs, totaling 2-6 months, whereby each internship must be at least one month in duration in cases where students choose to do more than one internship experience. Such work is normally done at a company, but may also be at a university under the supervision of a faculty member. Internships that take place between the end of the fall and the start of the spring semesters cannot be used to fulfill this requirement.

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.

Honors

Honors candidates must have earned A's or S-with-distinction in 2/3 (rounding up) of the courses used towards the concentration, excluding introductory-sequence courses (CS courses numbered 0200 or below) and the calculus prerequisite (unless that course is also used as an intermediate math course in CS requirements).