Master's Program Requirements

The requirements for a Master’s of Science (ScM) degree in Computer Science consist of a basic component and an advanced component. All courses (with one exception listed below) must be at the 1000-level or higher. All courses must be completed with a grade of B or better. The courses in your program must be approved by the Director of Graduate Studies (Master’s) as well as by your advisor. You can find the Master's contract Icon here (123.4 KB) .

Basic Component          

The basic component consists of six courses. None of these courses may be reading and research courses (in particular, they can’t be CSCI 2980).

The six courses are chosen as follows:

  • Two must be CS courses that form a pathway (see the explanation of pathways here).

  • 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 areas, 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 you to complete one of the following four 2-course options. No more than one Reading and Research course (CSCI 2980) may be used in options 3 and 4. An “advanced course,” as used below, is either a 2000-level CS course or a 1000-level CS course that includes a Master’s supplement. Master’s supplements are nominally half-credit courses, but you may do the work of these courses without officially registering for them (since doing so would require you to pay extra tuition). Examples of such supplements are CSCI 1234 (supplementing 1230), CSCI 1690 (supplementing 1670), and CSCI 1620 (supplementing 1660).

“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 and are explained further below.

The four options are:

  1. Complete a research project supervised and approved by your research advisor.

  2. Complete a research project supervised and approved by your research advisor, and complete an internship.

  3. Complete two advanced courses.

  4. Complete two advanced courses and complete an internship.

Note that options 2 and 4 are known as the professional track. Current students can consult the Master's Program Handbook (login required) for more details.


Students entering the Master’s program typically have one of two goals: they intend to pursue research careers in computer science and are preparing themselves to enter PhD 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.

Students whose goals are research careers should become involved as quickly as possible with research groups as part of their Master’s studies, and demonstrate and learn about research by participating in it. The resulting research reports will serve to establish their suitability for entering PhD programs.

Students whose goals are to be professional computer scientists should have some professional experience as part of their preparation. A certain amount of basic 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 likely 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 one of options 2 or 4, 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.