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.

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)
Series D 1
Computing Foundations: Data
and Computing Foundations: Program Organization
and Computer Science: An Integrated Introduction
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) 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 my 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 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
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 for Computing and 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
Fundamentals of 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. 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
Database Management Systems
Related Courses
Fundamentals of Computer Systems
Creating Modern Web & Mobile 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
Fundamentals of 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 & Mobile 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
Computer Networks
CS for Social Change
Surveying VR Data Visualization Software for Research
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
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 for Computing and 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
Deep Learning
Introduction to Robotics
Related Courses
Probabilistic Methods in Computer Science
Data Science
Designing Humanity Centered Robots
Algorithmic Game Theory
Image Understanding
Intermediate Courses
Probability for Computing and Data Analysis
Statistical Inference I
Statistical Inference I
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 for Computing and 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 & Mobile Applications
Distributed Computer Systems
Operating Systems
Computer Networks
Design and Implementation of Programming Languages
Cybersecurity and International Relations
Computers, Freedom and Privacy
Logic for Systems
Intermediate Courses
Introduction to Computer Systems
Fundamentals of Computer Systems
Introduction to Discrete Structures and Probability (Or Probability and Statistics (see options below))
Probability for Computing and Data Analysis
Statistical Inference I
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
Related Courses
2D Game Engines
Deep Learning
Topics in 3D Game Engine Development
Image Understanding
Computational Vision
Reality Remix - Experimental VR
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 Digital Integrated Circuits
Design of Robotic Systems
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
CSCI 1850
Deep Learning in Genomics
Related Courses
Machine Learning
Computer Vision
Data Science
Computational Vision
Intermediate Courses
Introduction to Discrete Structures and Probability
Theory of Computation
Probability for Computing and 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 & Mobile Applications
Real-Time and Embedded Software
csciStartup
Data Science
CS for Social Change
Design of Robotic Systems
Surveying VR Data Visualization Software for Research
Hypertext/Hypermedia Seminar: The Web Was Not the Beginning and the Web Is Not the End
Design of Robotic Systems
Physical Computing
Intermediate Courses
Introduction to Software Engineering
Introduction to Computer Systems
Probability for Computing and 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 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)
Series D 1
Computing Foundations: Data
and Computing Foundations: Program Organization
and Computer Science: An Integrated Introduction
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.
♦︎ No more than four arts, humanities, and social science oriented CS courses (currently CSCI 1250, 128No 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.

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.

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.