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

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
Introductory Calculus, Part II
Advanced Placement Calculus
Advanced Placement Calculus (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 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 intermediate-level course, or an advanced course)
Thirteen CS courses numbered 0220 or higher.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) 1
⚬ The core and related courses used in one pathway may not overlap with those used in another
♦︎ 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 course for the pathways used above
Intermediate Courses
Students must complete the intermediate courses defined for the pathway they choose. In addition, ScB students must take at least one course from each intermediate course category to ensure they span all areas. Taking additional courses beyond those listed for the pathway may be required.
Foundations
Introduction to Discrete Structures and Probability
Theory of Computation
Mathematics
Coding the Matrix: An Introduction to Linear Algebra for Computer Science
Linear Algebra
Honors Linear Algebra
Probability and Computing for Data Analysis
Statistical Inference I
Statistical Inference I
Intermediate Calculus
Intermediate Calculus (Physics/Engineering)
Honors Calculus
Systems
Introduction to Software Engineering
Introduction to Computer Systems
Pathways
Completing a pathway entails taking two courses in the pathway of which at least one is a course course for the pathway. One must also take the intermediate courses specified as part of the pathway.
SYSTEMS: studies the design, construction, and analysis of modern, multi-faceted computing systems
Core Courses
Distributed Computer Systems
Operating Systems
Computer Networks
Related Courses
Database Management Systems
Creating Modern Web Applications
Real-Time and Embedded Software
Software Security and Exploitation
Introduction to Computer Systems Security
Design and Implementation of Programming Languages
Multiprocessor Synchronization
Logic for Systems
Design of Computing Systems
Intermediate Courses
Introduction to Computer Systems
Introduction to Discrete Structures and Probability
Introduction to Software Engineering
SOFTWARE PRINCIPLES: studies the design, construction, and analysis of modern software systems
Core Courses
Compilers and Program Analysis
Creating Modern Web Applications
Real-Time and Embedded Software
Design and Implementation of Programming Languages
Logic for Systems
Related Courses
Database Management Systems
Distributed Computer Systems
Software Security and Exploitation
Intermediate Courses
Introduction to Discrete Structures and Probability
Introduction to Software Engineering
Introduction to Computer Systems (Data)
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
Information Retrieval and Web Search
Big Data
Intermediate Courses
Introduction to Software Engineering
Introduction to Computer Systems
Linear Algebra
Honors Linear Algebra
Coding the Matrix: An Introduction to Linear Algebra for Computer Science
Probability and Computing for Data Analysis
Statistical Inference I
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
Related Courses
Probabilistic Methods in Computer Science
Information Retrieval and Web Search
Data Science
Designing Humanity Centered Robots
Algorithmic Game Theory
Image Understanding
Intermediate Courses
Probability and Computing for Data Analysis
Statistical Inference I
Statistical Inference I
Intermediate Calculus
Intermediate Calculus (Physics/Engineering)
Honors Calculus
Linear Algebra
Honors Linear Algebra
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
Related Courses
Introduction to Computational Complexity
Computational Molecular Biology
Algorithmic Foundations of Computational Biology
Computational Topology
Logic for Systems
Optimization Methods in Finance
Algorithmic Game Theory
Intermediate Courses
Theory of Computation
Probability and Computing for Data Analysis
Statistical Inference I
Statistical Inference I
Linear Algebra
Honors Linear Algebra
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
Introduction to Computer Systems Security
Software Security and Exploitation
Related Courses
Creating Modern Web Applications
Distributed Computer Systems
Operating Systems
Design and Implementation of Programming Languages
Cybersecurity and International Relations
Logic for Systems
Virtual Citizens or Subjects? The Global Battle Over Governing Your Internet
Computers, Freedom and Privacy: Current Topics in Law and Policy
Intermediate Courses
Introduction to Computer Systems
Theory of Computation
Introduction to Discrete Structures and Probability
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
User Interfaces and User Experience
Virtual Reality Design for Science
Computer Vision
Advanced Animation Production
Interactive Computer Graphics
Related Courses
2D Game Engines
Topics in 3D Game Engine Development
Image Understanding
Computational Vision
Intermediate Courses
Introduction to Software Engineering
Introduction to Computer Systems
Linear Algebra
Honors Linear Algebra
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 VLSI Systems
Intermediate Course
Introduction to 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
Related Courses
Machine Learning
Data Science
Computational Vision
Intermediate Courses
Introduction to Discrete Structures and Probability
Theory of Computation
Probability and Computing for Data Analysis
Statistical Inference I
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 Robots
Related Courses
Introduction to Computer Graphics
Creating Modern Web Applications
Real-Time and Embedded Software
Data Science
csciStartup
Physical Computing
Intermediate Courses
Introduction to Software Engineering
Introduction to Computer Systems
Probability and Computing for Data Analysis
Statistical Inference I
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 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 two-to-four-month full-time 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 (0-3 courses)0-3
Students must complete or place out of second semester calculus.
Introductory Calculus, Part II
Advanced Placement Calculus
Advanced Placement Calculus (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 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 intermediate-level course, or an advanced course)
Seven CS courses numbered 0220 or higher7
♦︎ 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.

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 two-to-four-month full-time 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.