Photos of university / #brownu
The Brown University Computer Science Program offers a comprehensive and innovative curriculum designed to equip students with a strong foundation in fundamental concepts, practical skills, and cutting-edge developments in the field of computer science. Emphasizing interdisciplinary collaboration, critical thinking, and research-driven learning, the program prepares students for diverse careers in technology, academia, and industry. Students have the opportunity to explore core areas such as algorithms, data structures, programming languages, systems, and software engineering, while also engaging with emerging topics like artificial intelligence, machine learning, data science, cybersecurity, and human-computer interaction. The program fosters a collaborative academic environment through small class sizes, close faculty-student interaction, and participation in research projects. Students can tailor their academic journey by choosing from a variety of electives and specialized tracks, allowing for in-depth study in areas aligned with their interests and career goals. Brown’s open curriculum encourages academic exploration and flexibility, enabling students to combine computer science with other disciplines across campus to gain unique interdisciplinary insights. The program also promotes experiential learning through internships, cooperative education, and undergraduate research opportunities, preparing students to meet real-world challenges. Graduates of the program are well-equipped to pursue advanced degrees, leadership roles in the tech industry, or entrepreneurial endeavors, reflecting Brown’s commitment to fostering innovative and ethically responsible computer scientists. With state-of-the-art facilities, dedicated faculty, and a vibrant intellectual community, the Brown University Computer Science Program offers an excellent environment for aspiring computer scientists to develop their skills, contribute to technological advancements, and make meaningful impacts in society.
The requirements consist of a basic component and an advanced component. All courses must be at the 1000 level or higher. All courses must be completed with a grade of B or better.
The courses in student's program must be approved by the director of the Master's program (as well as by the student's advisor).
Basic Component
The basic component consists of six courses. None of these courses may be reading and research courses such as CSCI 1970 and CSCI 2980.
The six courses are chosen as follows:
- Two must be CS courses that form a coherent major. Examples of such pairs are listed at http://cs.brown.edu/degrees/undergrad/concentrations/approvedpairs/.
- One must be a CS course (the "breadth" course) that does not form a pair (according to the approved-pairs web page) with either of the courses chosen as the major.
- The three additional courses must be in CS or related areas.
Advanced Component
The advanced component requires the student to complete one of the following five options. Reading and research courses (such as CSCI 2980) may be used as part of options 1, 2, 3, and 4, but not as part of options 5 and 6. An “advanced course,” as used below, is either a 2000-level CS courses or a 1000-level CS courses that includes a Master's supplement. Master's supplement are nominally half-credit courses, but students may do the work of these courses without officially registering for them. Examples of such supplements are CSCI 1234 (supplementing 1230), CSCI 1690 (supplementing 1670), and 1729 (supplementing 1730).
“Internships”, as used below, must be approved by the student's advisor and are paid work in the area of the student's master's studies. They may be full, or part time. A full-time internship must last at least two months but no more than four months. A part-time internship must last at least four months but no more than six months. Normally the internship will be performed between the student's second and third semesters in the program.
The six options are:
- Complete a thesis supervised by her or his advisor and approved by a committee consisting of the advisor and at least one other faculty member.
- Complete a thesis supervised by her or his advisor and approved by a committee consisting of the advisor and at least one other faculty member, and complete an internship.
- Complete a project supervised and approved by her or his advisor.
- Complete a project supervised and approved by her or his advisor, and complete an internship.
- Complete two advanced courses.
- Complete two advanced courses and complete an internship.
Rationale
Students entering the Master's program typically have one of two goals: they intend to pursue research in Computer Science and are preparing themselves to enter Ph.D. programs, or they intend to become professional computer scientists and pursue careers in industry. In both cases, students should take collections of courses that not only give them strength in particular areas of Computer Science, but also include complementary areas that familiarize them with other ways of thinking about the field. For example, a student whose interests are in the practical aspects of designing computer systems should certainly take courses in this area, but should also be exposed to the mindset of theoretical computer science. In a rapidly changing discipline, there is much cross-fertilization among areas and students should have some experience in doing advanced work in areas not directly related to their own.
A student whose goal is a research career should become involved as quickly as possible with a research group as part of their Master's studies, and demonstrate and learn about research by participating in it. The resulting thesis or project report will serve to establish her or his suitability for entering a Ph.D. program.
A student whose goal is to be a professional computer scientist should have some professional experience as part of her or his preparation. A certain amount of coursework is required before a student can qualify for a pedagogically useful internship. Students with limited experience in Computer Science should take a few advanced Computer Science courses before embarking on an internship. Other students, particularly those whose undergraduate degrees were at Brown, will have had internship experiences while undergraduates. Internships provide insights for subsequent courses and project work at Brown. Students without such experiences are at a disadvantage with respect to their peers. Thus we strongly encourage students who have not had such experience to choose of of options 2, 4, and 6, for which internships are required.
Note that these internships are not courses and the work is not evaluated as it would be for a course. Students' advisors will assist them in choosing and obtaining internships, but it is up to students themselves to insure that they get as much benefit as possible from their experiences. They must be able to take advantage of these experiences while completing their Master's projects – we expect as high-quality work from them as we do from students who entered the program with prior internship experiences.
Some of our students are pursuing a Master's on a part-time basis while concurrently working in the computer industry. Such students often are working as part of teams in their companies on major projects and don't need additional project experience at Brown. What is most important for them is to take additional courses to extend their expertise in their areas of interest. These students, rather than complete a project at Brown, may elect to take two such courses instead.
A Master's degree normally requires three to four semesters of full-time study, depending upon one's preparation. One is considered a full-time student if one takes at least two courses one's first semester, two courses one's second semester, three courses one's third semester, and one course one's fourth semester.
Courses
CSCI0020 | (CS002) | The Digital World |
CSCI0030 | (CSCI0931) | Introduction to Computation for the Humanities and Social Sciences |
CSCI0040 | (CS004) | Introduction to Scientific Computing and Problem Solving |
CSCI0080 | A First Byte of Computer Science | |
CSCI0090-A | (CS009-3) | Building a Web Application |
CSCI0090-B | (CS009-1) | Computers and Human Values |
CSCI0090-C | (CS009-2) | Talking with Computers |
CSCI0100 | Data Fluency for All | |
CSCI0150 | (CS015) | Introduction to Object-Oriented Programming and Computer Science |
CSCI0160 | (CS016) | Introduction to Algorithms and Data Structures |
CSCI0170 | (CS017) | CS: An Integrated Introduction |
CSCI0180 | (CS018) | CS: An Integrated Introduction |
CSCI0190 | (CS019) | Accelerated Introduction to Computer Science |
CSCI0220 | (CS022) | Introduction to Discrete Structures and Probability |
CSCI0310 | (CS031) | Introduction to Computer Systems |
CSCI0320 | (CS032) | Introduction to Software Engineering |
CSCI0330 | Introduction to Computer Systems | |
CSCI0360 | (CS036) | Introduction to Systems Programming |
CSCI0450 | Introduction to Probability and Computing | |
CSCI0510 | (CS051) | Models of Computation |
CSCI0530 | Directions: The Matrix in Computer Science | |
CSCI0920 | (CS092) | Educational Software Seminar |
CSCI0931 | Introduction to Computation for the Humanities and Social Sciences | |
CSCI1010 | (CSCI0510) | Theory of Computation |
CSCI1230 | (CS123) | Computer Graphics |
CSCI1234 | Computer Graphics Lab | |
CSCI1250 | (CS125) | Introduction to Computer Animation |
CSCI1260 | (CS126) | Compilers and Program Analysis |
CSCI1270 | (CS127) | Database Management Systems |
CSCI1280 | (CS128) | Intermediate 3D Computer Animation |
CSCI1290 | (CSCI1950-G) | Computational Photography |
CSCI1300 | User Interfaces and User Experience | |
CSCI1310 | (CSCI1950-S) | Fundamentals of Computer Systems |
CSCI1320 | Creating Modern Web Applications | |
CSCI1340 | (CS196-2) | Innovating Game Development |
CSCI1370 | (CS137) | Virtual Reality Design for Science |
CSCI1380 | (CS138) | Distributed Computer Systems |
CSCI1410 | (CS141) | Applied Artifical Intelligence |
CSCI1420 | (CSCI1950-F) | Machine Learning |
CSCI1430 | (CS143) | Computer Vision |
CSCI1450 | (CSCI0450) | Probability and Computing |
CSCI1460 | (CS146) | Computational Linguistics |
CSCI1480 | (CS148) | Building Intelligent Robots |
CSCI1490 | (CS149) | Introduction to Combinatorial Optimization |
CSCI1510 | (CS151) | Introduction to Cryptography and Computer Security |
CSCI1550 | (CS155) | Probabilistic Methods in Computer Science |
CSCI1570 | (CS157) | Design and Analysis of Algorithms |
CSCI1580 | Information Retrieval and Web Search | |
CSCI1590 | (CS159) | Introduction to Computational Complexity |
CSCI1600 | (CS160) | Real-time and Embedded Software |
CSCI1610 | (CS161) | Building High-Performance Servers |
CSCI1620 | Computer Systems Security Lab | |
CSCI1660 | (CS166) | Computer Systems Security |
CSCI1670 | (CS167) | Operating Systems |
CSCI1680 | (CS168) | Computer Networks |
CSCI1690 | (CS169) | Operating Systems Laboratory |
CSCI1729 | Programming Languages Lab | |
CSCI1730 | (CS173) | Design and Implementation of Programming Languages |
CSCI1760 | (CS176) | Multiprocessor Synchronization |
CSCI1780 | (CS178) | Parallel and Distributed Programming |
CSCI1800 | (CSCI1950-P) | Cybersecurity and International Relations |
CSCI1810 | (CS181) | Computational Molecular Biology |
CSCI1820 | (CSCI1950-L) | Algorithmic Foundations of Computational Biology |
CSCI1850 | (CS185) | Information Theory |
CSCI1900 | (CS190) | csciStartup |
CSCI1950-C | Advanced Programming for Digital Art and Literature | |
CSCI1950-E | Human-Robot Interaction Seminar | |
CSCI1950-F | (CS195-5) | Intro. to Machine Learning |
CSCI1950-G | (CS195-G) | Computational Photography |
CSCI1950-H | Computational Topology | |
CSCI1950-I | Designing, Developing and Evaluating User Interfaces | |
CSCI1950-J | Introduction to Computational Geometry | |
CSCI1950-L | (CS196-1) | Algorithmic Foundations of Computational Biology |
CSCI1950-N | 2D Game Engines | |
CSCI1950-P | Cybersecurity and International Relations | |
CSCI1950-Q | Programming for the Humanities and Social Sciences | |
CSCI1950-R | (CS195R) | Compiler Practice |
CSCI1950-S | Fundamentals of Computer Systems | |
CSCI1950-T | Advanced Animation Production | |
CSCI1950-U | Topics in 3D Game Engine Development | |
CSCI1950-V | Advanced GPU Programming | |
CSCI1950-W | Topics in Data Science | |
CSCI1950-X | Software Foundations | |
CSCI1950-Y | Logic for Systems | |
CSCI1950-Z | Computational Methods for Biology | |
CSCI1951-A | Data Science | |
CSCI1951-B | Virtual Citizens or Subjects? The Global Battle Over Governing Your Internet | |
CSCI1951-C | Designing Humanity Centered Robots | |
CSCI1951-E | Computer Systems Security: Principles and Practice | |
CSCI1951-F | Computers, Freedom and Privacy: Current Topics in Law and Policy | |
CSCI1951-G | Optimization Methods in Finance | |
CSCI1951-H | Software Security and Exploitation | |
CSCI1951-J | Interdisciplinary Scientific Visualization | |
CSCI1970 | (CS193/4) | Individual Independent Study |
CSCI1970-17 | (CS194-17) | Software Transactional Memory |
CSCI1971 | (CSCI1950N) | Independent Study in 2D Game Engines |
CSCI1972 | (CSCI1950-U) | Topics in 3D Game Engine Development |
CSCI2240 | (CS224) | Interactive Computer Graphics |
CSCI2270 | (CS227) | Topics in Database Management |
CSCI2300 | (CSCI2951-L) | Human-Computer Interaction Seminar |
CSCI2310 | (CS231) | Human Factors and User Interface Design |
CSCI2330 | (CS233) | Programming Environments |
CSCI2340 | (CS234) | Software Engineering |
CSCI2370 | (CS237) | Interdisciplinary Scientific Visualization |
CSCI2410 | (CS241) | Statistical Models in Natural-Language Understanding |
CSCI2420 | Probabilistic Graphical Models | |
CSCI2440 | (CS244) | Topics in Game-Theoretic Artificial Intelligence |
CSCI2500-A | (CS250) | Advanced Algorithms |
CSCI2500-B | (CS250) | Optimization Algorithms for Planar Graphs |
CSCI2510 | (CS251) | Approximation Algorithms |
CSCI2520 | (CS252) | Computational Geometry |
CSCI2531 | Internet and Web Algorithms | |
CSCI2540 | (CS254) | Advanced Probabilistic Methods in Computer Science |
CSCI2550 | (CS255) | Parallel Computation: Models, Algorithms, Limits |
CSCI2560 | (CS256) | Advanced Complexity |
CSCI2570 | (CS257) | Introduction to Nanocomputing |
CSCI2580 | (CS258) | Solving Hard Problems in Combinatorial Optimization: Theory and Systems |
CSCI2590 | (New) | Advanced Topics in Cryptography |
CSCI2730 | (CS273) | Programming Language Theory |
CSCI2750 | (CS275) | Topics in Parallel & Distributed Computing |
CSCI2820 | (CSCI2950-L) | Medical Bioinformatics |
CSCI2950-C | (CS296-5) | Algorithms for Cancer Genomics |
CSCI2950-E | (CS296-9) | Stochastic Optimization |
CSCI2950-G | (CS296-2) | Large-Scale Networked Systems |
CSCI2950-J | Cognition, Human-Computer Interaction and Visual Analysis | |
CSCI2950-K | Special Topics in Computational Linguistics | |
CSCI2950-L | (CS295-2) | Medical Bioinformatics: Disease Associations, Protein Folding and Immunogenomics |
CSCI2950-O | (CS295-7) | Topics in Brain-Computer Interfaces |
CSCI2950-P | Special Topics in Machine Learning | |
CSCI2950-Q | (CS296-4) | Topics in Computer Vision |
CSCI2950-R | Special Topics in Advanced Algorithms | |
CSCI2950-T | (CS295-11) | Topics in Distributed Databases & Systems |
CSCI2950-U | Special Topics on Networking and Distributed Systems | |
CSCI2950-V | Topics in Applied Cryptography | |
CSCI2950-W | Online Algorithms | |
CSCI2950-X | (CS296-1) | Topics in Programming Languages & Systems |
CSCI2950-Z | (CS296-3) | Robot Learning and Autonomy |
CSCI2951-A | Robots for Education | |
CSCI2951-B | Data-Driven Vision and Graphics | |
CSCI2951-C | Autonomous Agents and Computational Market Design | |
CSCI2951-D | Topics in Information Retrieval and Web Search | |
CSCI2951-E | Topics in Computer System Security | |
CSCI2951-F | Learning and Sequential Decision Making | |
CSCI2951-G | Computational Protein Folding | |
CSCI2951-H | Algorithms for Big Data | |
CSCI2951-I | Computer Vision for Graphics and Interaction | |
CSCI2951-J | Topics in Advanced Algorithmics: Algorithmic Game Theory, 3D Computational Geometry, Quantum Computing | |
CSCI2951-K | Topics in Grounded Language for Robotics | |
CSCI2951-L | Human-Computer Interaction Seminar | |
CSCI2951-M | Advanced Algorithms Seminar | |
CSCI2951-N | Advanced Algorithms in Computational Biology | |
CSCI2951-O | Foundations of Prescriptive Analytics | |
CSCI2951-P | Human-Robot Interaction Seminar | |
CSCI2951-Q | Topics in Advanced Algorithms | |
CSCI2951-R | Personal Informatics Seminar | |
CSCI2951-S | Distributed Computing through Combinatorial Topology | |
CSCI2951-T | Data-Drive Computer Vision | |
CSCI2951-U | Topics in Software Security | |
CSCI2951-V | Systems for Interactive Data Exploration | |
CSCI2951-Y | Special Topics in Formal Semantics and Notional Machines | |
CSCI2955 | The Design and Analysis of Trading Agents | |
CSCI2956-F | Machine Learning Reading Group | |
CSCI2980 | (CS297/8) | Reading and Research |
ENGN2502 | 3D Photography | |
ENGN2520 | (CSCI1950-F) | Pattern Recognition and Machine Learning |
XList BIOL 1430 | Computational Theory of Molecular Evolution | |
XList ENGN 0931 | Internet of Everything | |
XList ENGN2911-I | 3D Photography and Geometry Processing |
Requirements
- Personal Statement
- Transcripts
- 3 Letters of Recommendation
- GRE
- TOEFL/IELTS
- A non-refundable fee of $75 is charged for processing each application received by the Graduate School. This fee must be paid when the application is submitted.
- Graduates of non-U.S. colleges and universities who have completed the equivalent of a U.S. bachelor's degree may apply for admission to the Brown University Graduate School. Along with the application, international applicants must provide the Graduate School with original documents or official certified copies indicating the nature and scope of their educational program.
The Brown University Computer Science undergraduate program offers a range of financing options to support students throughout their studies. Tuition fees for the academic year are approximately $63,350, with additional costs for housing, meals, and personal expenses. Brown University is committed to making education accessible and affordable, providing comprehensive financial aid programs. The university's financial aid policy is need-blind for domestic students, meaning that admission decisions are made without regard to financial need, and the university meets 100% of demonstrated financial need for admitted students. Students are encouraged to complete the Free Application for Federal Student Aid (FAFSA) and the College Scholarship Service (CSS) Profile to be considered for need-based aid. Many students receive grants and scholarships that do not require repayment, significantly reducing the overall cost of education. Brown also offers merit-based scholarships for exceptional applicants, which are awarded based on academic achievement and extracurricular accomplishments. Additionally, students have access to federal and state grants, loans, and work-study opportunities to finance their studies. The university provides comprehensive financial advising services to help students plan and understand their options, including loan counseling and budgeting resources. Graduate students pursuing advanced degrees in computer science can also apply for fellowships, research assistantships, and teaching assistantships that provide tuition remission and stipends. Brown's commitment to affordability extends to internal funding sources, including endowed scholarships and emergency aid programs, ensuring students can focus on their academic pursuits without undue financial stress. Overall, the financial support system at Brown aims to make a world-class computer science education accessible to all qualified students, fostering diversity and inclusion within the campus community.
The Bachelor of Arts (A.B.) degree in Computer Science at Brown University offers students a comprehensive foundation in the principles and practices of computer science, combined with the flexibility to explore interdisciplinary interests. The program emphasizes critical thinking, problem-solving skills, and the development of technical expertise essential for careers in technology, research, and academia. Students engaged in this major have opportunities to study algorithms, data structures, programming languages, software development, and computational theory, alongside courses that explore the social and ethical implications of technology. Brown’s open curriculum allows students to customize their educational experience, blending computer science with fields such as mathematics, engineering, cognitive science, and economics. The department encourages undergraduate research, providing access to faculty-led projects and cutting-edge technology labs. Graduates of the program are well-prepared for employment in software development, data analysis, cybersecurity, and other high-demand areas, or for further study in graduate programs. The program's design fosters a collaborative environment with small class sizes and active faculty mentorship, ensuring personalized academic advising and support. Overall, Brown’s Computer Science A.B. program combines rigorous technical training with interdisciplinary exploration, promoting innovation, critical inquiry, and ethical responsibility in technological development.