You're logged in as |

Computer Science

The department of Computer Science offers two graduate degrees in computer science. The Master of Science (Sc.M.) degree for those who wish to improve their professional competence in computer science or to prepare for further graduate study, and the Doctor of Philosophy (Ph.D) degree.

For more information on admission, please visit the following website:

Ph.D. Requirements

Requirements for the Ph.D. program can be found at

Requirements for the Masters Degree

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

The six courses are chosen as follows:

  • Two must be CS courses that form a pathway (see the explanation of pathways at
  • One must be a CS course in an area that’s not listed in the chosen pathway (it must not be a core course, must not be a grad course, and must not be a related course of the pathway).
  • The three additional courses must be in CS or related and must be approved by your advisor or the director of graduate studies (master’s). Getting this approval will require you to show that the courses are relevant to your CS interests. In general, the more non-CS courses you wish to take, the stronger your justification must be. 

Advanced Component

The advanced component requires the student to complete one of the following six 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 CSCI 1230), CSCI 1690 (supplementing CSCI 1670), and CSCI 1729 (supplementing CSCI 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:

  1. 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.
  2. 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.
  3. Complete a project supervised and approved by her or his advisor.
  4. Complete a project supervised and approved by her or his advisor, and complete an internship.
  5. Complete two advanced courses.
  6. Complete two advanced courses and complete an internship.


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

A Master's degree normally requires three to four semesters of full-time study, depending upon one's preparation. 

CSCI 1010Theory of Computation1
CSCI 1230Introduction to Computer Graphics *1
CSCI 1250Introduction to Computer Animation1
CSCI 1260Compilers and Program Analysis1
CSCI 1270Database Management Systems1
CSCI 1280Intermediate 3D Computer Animation1
CSCI 1290Computational Photography1
CSCI 1300User Interfaces and User Experience1
CSCI 1310Fundamentals of Computer Systems1
CSCI 1320Creating Modern Web & Mobile Applications1
CSCI 1330Computer Systems1
CSCI 1360Human Factors in Cybersecurity1
CSCI 1370Virtual Reality Design for Science1
CSCI 1380Distributed Computer Systems1
CSCI 1410Artificial Intelligence1
CSCI 1420Machine Learning1
CSCI 1430Computer Vision1
CSCI 1440Algorithmic Game Theory1
CSCI 1450Advanced Introduction to Probability for Computing and Data Science1
CSCI 1460Computational Linguistics1
CSCI 1470Deep Learning1
CSCI 1510Introduction to Cryptography and Computer Security1
CSCI 1550Probabilistic Methods in Computer Science1
CSCI 1570Design and Analysis of Algorithms1
CSCI 1590Introduction to Computational Complexity1
CSCI 1600Real-Time and Embedded Software1
CSCI 1610Building High-Performance Servers1
CSCI 1650Software Security and Exploitation1
CSCI 1660Introduction to Computer Systems Security *1
CSCI 1670Operating Systems *1
CSCI 1680Computer Networks1
CSCI 1710Logic for Systems1
CSCI 1730Design and Implementation of Programming Languages1
CSCI 1760Multiprocessor Synchronization1
CSCI 1780Parallel and Distributed Programming1
CSCI 1800Cybersecurity and International Relations1
CSCI 1805Computers, Freedom and Privacy1
CSCI 1810Computational Molecular Biology1
CSCI 1820Algorithmic Foundations of Computational Biology1
CSCI 1850Deep Learning in Genomics1
CSCI 1860Cybersecurity Law and Policy1
CSCI 1870Cybersecurity Ethics1
CSCI 1880Introduction to Computer Security1
CSCI 1900csciStartup1
CSCI 1950N2D Game Engines1
CSCI 1950TAdvanced Animation Production1
CSCI 1950UTopics in 3D Game Engine Development1
CSCI 1950XSoftware Foundations1
CSCI 1950ZComputational Methods for Biology1
CSCI 1951AData Science1
CSCI 1951CDesigning Humanity Centered Technology1
CSCI 1951GOptimization Methods in Finance1
CSCI 1951ICS for Social Change1
CSCI 1951JInterdisciplinary Scientific Visualization1
CSCI 1951LBlockchains and Cryptocurrencies1
CSCI 1951NVR+X, The Potential of Virtual Reality to Transform Nearly Everything1
CSCI 1951PDesign of Robotic Systems (ENGN 1931I)0
CSCI 2240Advanced Computer Graphics1
CSCI 1951RIntroduction to Robotics1
CSCI 1951TSurveying VR Data Visualization Software for Research1
CSCI 1951VHypertext/Hypermedia: The Web Was Not the Beginning and the Web Is Not the End1
CSCI 1951WSublinear Algorithms for Big Data1
CSCI 1951XFormal Proof and Verification1
CSCI 1952VAlgorithms for the People1
CSCI 2270Topics in Database Management1
CSCI 2300Human-­Computer Interaction Seminar1
CSCI 2310Human Factors and User Interface Design1
CSCI 2330Programming Environments1
CSCI 2340Software Engineering1
CSCI 2370Interdisciplinary Scientific Visualization1
CSCI 2390Privacy-Conscious Computer Systems1
CSCI 2410Statistical Models in Natural-Language Understanding1
CSCI 2420Probabilistic Graphical Models1
CSCI 2440Advanced Algorithmic Game Theory1
CSCI 2470Deep Learning1
CSCI 2500AAdvanced Algorithms1
CSCI 2500BOptimization Algorithms for Planar Graphs1
CSCI 2510Approximation Algorithms1
CSCI 2520Computational Geometry1
CSCI 2530Design and Analysis of Communication Networks1
CSCI 2531Internet and Web Algorithms1
CSCI 2540Advanced Probabilistic Methods in Computer Science1
CSCI 2550Parallel Computation: Models, Algorithms, Limits1
CSCI 2590Advanced Topics in Cryptography1
CSCI 2730Programming Language Theory1
CSCI 2750Topics in Parallel and Distributed Computing1
CSCI 2840Advanced Algorithms in Computational Biology and Medical Bioinformatics1
CSCI 2950EStochastic Optimization1
CSCI 2950GLarge-Scale Networked Systems1
CSCI 2950JCognition, Human-Computer Interaction and Visual Analysis1
CSCI 2950KSpecial Topics in Computational Linguistics1
CSCI 2950RSpecial Topics in Advanced Algorithms1
CSCI 2950TTopics in Distributed Databases and Systems1
CSCI 2950USpecial Topics on Networking and Distributed Systems1
CSCI 2950VTopics in Applied Cryptography1
CSCI 2950WOnline Algorithms1
CSCI 2950XTopics in Programming Languages and Systems1
CSCI 2951BData-Driven Vision and Graphics1
CSCI 2951ETopics in Computer Systems Security1
CSCI 2951FLearning and Sequential Decision Making1
CSCI 2951IComputer Vision for Graphics and Interaction1
CSCI 2951KTopics in Collaborative Robotics1
CSCI 2951MAdvanced Algorithms Seminar1
CSCI 2951NAdvanced Algorithms in Computational Biology1
CSCI 2951OFoundations of Prescriptive Analytics1
CSCI 2951SDistributed Computing through Combinatorial Topology1
CSCI 2951TData-Driven Computer Vision1
CSCI 2951UTopics in Software Security1
CSCI 2951XReintegrating AI1
CSCI 2952BTopics in Computer Science Education Research1
CSCI 2952CLearning with Limited Labeled Data1
CSCI 2952FDistributed Systems at Scale: Microservices Management1
CSCI 2952GDeep Learning in Genomics1
CSCI 2952KTopics in 3D Computer Vision and Deep Learning1
* Students may arrange with the instructor to receive 2000 level credit for additional coursework in CSCI 1230, 1660 or 1670

Concurrent ScB (NUS) and ScM in Computational Biology (Brown University)

The School of Computing at National University of Singapore and The Department of Computer Science at Brown have established a concurrent Bachelor’s and Master’s degree program in Computational Biology. After having first completed four years of under- graduate study at National University of Singapore (NUS), qualified students will attend Brown University to complete their fifth and final year of study in computational biology. After the successful completion of requirements set forth by both universities, the students will simultaneously earn both their Sc.B. and Sc.M. degrees. The Sc.B will be awarded by the National University of Singapore, while the Sc.M. is awarded by Brown University.