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 | ||

or MATH 0170 | Single Variable Calculus, Part II (Accelerated) | |

or MATH 0190 | 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 | ||

or MATH 1001 | The Art of Writing Mathematics | |

or MATH 1530 | Abstract Algebra | |

Theory of Computation | ||

Mathematics | ||

Coding the Matrix: An Introduction to Linear Algebra for Computer Science | ||

or MATH 0520 | Linear Algebra | |

or MATH 0540 | Linear Algebra With Theory | |

Advanced Introduction to Probability for Computing and Data Science | ||

or APMA 1650 | Statistical Inference I | |

or APMA 1655 | Honors Statistical Inference I | |

Multivariable Calculus | ||

or MATH 0200 | Multivariable Calculus (Physics/Engineering) | |

or MATH 0350 | Multivariable Calculus With Theory | |

Systems | ||

Introduction to Software Engineering | ||

Introduction to Computer Systems | ||

or CSCI 0300 | 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 | ||

or CSCI 1670 | Operating Systems | |

or CSCI 1680 | Computer Networks | |

Related Courses | ||

Compilers and Program Analysis | ||

Database Management Systems | ||

or CSCI 1320 | Creating Modern Web & Mobile Applications | |

or CSCI 1600 | Real-Time and Embedded Software | |

or CSCI 1650 | Software Security and Exploitation | |

or CSCI 1660 | Introduction to Computer Systems Security | |

or CSCI 1710 | Logic for Systems | |

or CSCI 1730 | Design and Implementation of Programming Languages | |

or CSCI 1760 | Multiprocessor Synchronization | |

or ENGN 1640 | Design of Computing Systems | |

Intermediate Courses | ||

Fundamentals of Computer Systems | ||

or CSCI 0330 | 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 | ||

or CSCI 1320 | Creating Modern Web & Mobile Applications | |

or CSCI 1600 | Real-Time and Embedded Software | |

or CSCI 1710 | Logic for Systems | |

or CSCI 1730 | Design and Implementation of Programming Languages | |

Related Courses | ||

Database Management Systems | ||

or CSCI 1380 | Distributed Computer Systems | |

or CSCI 1650 | Software Security and Exploitation | |

or CSCI 1680 | Computer Networks | |

or CSCI 1951I | CS for Social Change | |

or CSCI 1951T | Surveying VR Data Visualization Software for Research | |

or CSCI 1951X | Formal Proof and Verification | |

Intermediate Courses | ||

Introduction to Discrete Structures and Probability | ||

Introduction to Software Engineering | ||

Introduction to Computer Systems (Data) | ||

or CSCI 0300 | Fundamentals of Computer Systems | |

DATA: Studies the management and use of large data collections | ||

Core Courses | ||

Database Management Systems | ||

or CSCI 1420 | Machine Learning | |

or CSCI 1951A | Data Science | |

Related Courses | ||

Probabilistic Methods in Computer Science | ||

Intermediate Courses | ||

Introduction to Software Engineering | ||

or CSCI 0330 | Introduction to Computer Systems | |

or CSCI 0300 | Fundamentals of Computer Systems | |

Linear Algebra | ||

or MATH 0540 | Linear Algebra With Theory | |

or CSCI 0530 | Coding the Matrix: An Introduction to Linear Algebra for Computer Science | |

Advanced Introduction to Probability for Computing and Data Science | ||

or APMA 1650 | Statistical Inference I | |

or APMA 1655 | 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 | ||

or CSCI 1420 | Machine Learning | |

or CSCI 1430 | Computer Vision | |

or CSCI 1460 | Computational Linguistics | |

or CSCI 1470 | Deep Learning | |

or CSCI 1850 | Deep Learning in Genomics | |

or CSCI 1951R | Introduction to Robotics | |

Related Courses | ||

Algorithmic Game Theory | ||

or CSCI 1550 | Probabilistic Methods in Computer Science | |

or CSCI 1951A | Data Science | |

or CSCI 1951C | Designing Humanity Centered Technology | |

or APMA 1740 | Recent Applications of Probability and Statistics | |

or ENGN 1610 | Image Understanding | |

Intermediate Courses | ||

Advanced Introduction to Probability for Computing and Data Science | ||

or APMA 1650 | Statistical Inference I | |

or APMA 1655 | Honors Statistical Inference I | |

Linear Algebra | ||

or MATH 0540 | Linear Algebra With Theory | |

or CSCI 0530 | 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 | ||

or CSCI 1550 | Probabilistic Methods in Computer Science | |

or CSCI 1570 | Design and Analysis of Algorithms | |

or CSCI 1760 | Multiprocessor Synchronization | |

or CSCI 1951W | Sublinear Algorithms for Big Data | |

or CSCI 1951X | Formal Proof and Verification | |

Related Courses | ||

Algorithmic Game Theory | ||

or CSCI 1550 | Probabilistic Methods in Computer Science | |

or CSCI 1710 | Logic for Systems | |

or CSCI 1810 | Computational Molecular Biology | |

or CSCI 1820 | Algorithmic Foundations of Computational Biology | |

or CSCI 1950H | Computational Topology | |

or CSCI 1951G | Optimization Methods in Finance | |

Introduction to Computational Complexity | ||

or CSCI 1710 | Logic for Systems | |

or CSCI 1810 | Computational Molecular Biology | |

or CSCI 1820 | Algorithmic Foundations of Computational Biology | |

or CSCI 1950H | Computational Topology | |

or CSCI 1951G | Optimization Methods in Finance | |

Intermediate Courses | ||

Theory of Computation | ||

Advanced Introduction to Probability for Computing and Data Science | ||

or APMA 1650 | Statistical Inference I | |

or APMA 1655 | Honors Statistical Inference I | |

Linear Algebra | ||

or MATH 0540 | Linear Algebra With Theory | |

or CSCI 0530 | 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 | ||

or CSCI 1650 | Software Security and Exploitation | |

or CSCI 1660 | Introduction to Computer Systems Security | |

Related Courses | ||

Creating Modern Web & Mobile Applications | ||

or CSCI 1380 | Distributed Computer Systems | |

or CSCI 1670 | Operating Systems | |

or CSCI 1680 | Computer Networks | |

or CSCI 1710 | Logic for Systems | |

or CSCI 1730 | Design and Implementation of Programming Languages | |

or CSCI 1800 | Cybersecurity and International Relations | |

or CSCI 1805 | Computers, Freedom and Privacy | |

or CSCI 1951L | Blockchains and Cryptocurrencies | |

Intermediate Courses | ||

Introduction to Computer Systems | ||

or CSCI 0300 | Fundamentals of Computer Systems | |

Introduction to Discrete Structures and Probability (Or Probability and Statistics (see options below)) | ||

or CSCI 1450 | Advanced Introduction to Probability for Computing and Data Science | |

or APMA 1650 | Statistical Inference I | |

or APMA 1655 | 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 | ||

or CSCI 1250 | Introduction to Computer Animation | |

or CSCI 1280 | Intermediate 3D Computer Animation | |

or CSCI 1290 | Computational Photography | |

or CSCI 1300 | User Interfaces and User Experience | |

or CSCI 1370 | Virtual Reality Design for Science | |

or CSCI 1430 | Computer Vision | |

or CSCI 1950T | Advanced Animation Production | |

or CSCI 1951T | Surveying VR Data Visualization Software for Research | |

Related Courses | ||

2D Game Engines | ||

or CSCI 1470 | Deep Learning | |

or CSCI 1950N | 2D Game Engines | |

or CSCI 1950U | Topics in 3D Game Engine Development | |

or CSCI 1951V | Hypertext/Hypermedia: The Web Was Not the Beginning and the Web Is Not the End | |

or CLPS 1520 | Computational Vision | |

Intermediate Courses | ||

Introduction to Software Engineering | ||

or CSCI 0330 | Introduction to Computer Systems | |

Linear Algebra | ||

or MATH 0540 | Linear Algebra With Theory | |

or CSCI 0530 | 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 | ||

or ENGN 1640 | Design of Computing Systems | |

or ENGN 1650 | Embedded Microprocessor Design | |

Related Courses | ||

Real-Time and Embedded Software | ||

or CSCI 1760 | Multiprocessor Synchronization | |

or ENGN 1600 | Design and Implementation of Digital Integrated Circuits | |

Intermediate Course | ||

Introduction to Computer Systems | ||

or CSCI 0300 | Fundamentals of Computer Systems | |

COMPUTATIONAL BIOLOGY: studies the foundations and applications of algorithms for analyzing biological data and processes | ||

Core Courses | ||

Computational Molecular Biology | ||

or CSCI 1820 | Algorithmic Foundations of Computational Biology | |

or CSCI 1850 | Deep Learning in Genomics | |

Related Courses | ||

Machine Learning | ||

or CSCI 1430 | Computer Vision | |

or CSCI 1470 | Deep Learning | |

or CSCI 1951A | Data Science | |

or CLPS 1520 | Computational Vision | |

Intermediate Courses | ||

Introduction to Discrete Structures and Probability | ||

Theory of Computation | ||

Advanced Introduction to Probability for Computing and Data Science | ||

or APMA 1650 | Statistical Inference I | |

or APMA 1655 | 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 | ||

or CSCI 1370 | Virtual Reality Design for Science | |

or CSCI 1951C | Designing Humanity Centered Technology | |

Related Courses | ||

Introduction to Computer Graphics | ||

or CSCI 1320 | Creating Modern Web & Mobile Applications | |

or CSCI 1360 | Human Factors in Cybersecurity | |

or CSCI 1600 | Real-Time and Embedded Software | |

or CSCI 1951A | Data Science | |

or CSCI 1951I | CS for Social Change | |

or CSCI 1951T | Surveying VR Data Visualization Software for Research | |

or CSCI 1951V | Hypertext/Hypermedia: The Web Was Not the Beginning and the Web Is Not the End | |

or CSCI 1952B | Responsible Computer Science in Practice | |

or ENGN 1931I | Design of Robotic Systems | |

or VISA 1720 | Physical Computing | |

Intermediate Courses | ||

Fundamentals of Computer Systems | ||

or CSCI 0320 | Introduction to Software Engineering | |

or CSCI 0330 | Introduction to Computer Systems | |

Advanced Introduction to Probability for Computing and Data Science | ||

or APMA 1650 | Statistical Inference I | |

or APMA 1655 | 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. |

^{1} | Students wishing to go directly from CSCI 0111 to CSCI 0200 (without CSCI 0112) will need to successfully complete additional exercises to receive an instructor override code for CSCI 0200. |

^{2} | Capstone: a one-semester course, 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. |

^{3} | Certain 1000-level courses may be used to fill the additional 1000-level course requirements for both the AB and ScB. No more than one such course may be used for the AB concentration and no more than three for the ScB concentration. A list of approved non-CS courses is on our web page. Unless explicitly stated on our web page, such non-CS courses may not be used as part of pathways. |

### 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 | ||

or MATH 0170 | Single Variable Calculus, Part II (Accelerated) | |

or MATH 0190 | 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. |

^{1} | Students wishing to go directly from CSCI 0111 to CSCI 0200 (without CSCI 0112) will need to successfully complete additional exercises to receive an instructor override code for CSCI 0200. |

### 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).