* Academics

Graduate Program

M.S. Requirements


The Master of Science degree in Computer Science at Rensselaer is a technical degree from which students may advance to positions of responsibility in the computing field with a solid foundation of knowledge to serve them. A number of students will continue into PhD study similarly well prepared.

The program requirements, detailed below, provide a broad program at a high level, yet permit a modest degree of specialization. A significant requirement of the program is the six-credit Master's Thesis based on original research. The Master's Thesis should demonstrate a student's skill in problem-solving and application of software engineering principles such as algorithm and data-structure design, programming language and software systems usage, program testing and debugging, and software documentation.


Students with significant prior computer science experience are encouraged to apply for admission to the program. To be considered, an applicant must have a bachelor's degree in a technical field, preferably related to Computer Science. Applicants must know how to program in at least three higher-level languages, and must have a thorough working knowledge of computer organization and data structures. The applicant also must have substantial mathematics background at the college level, including a year of calculus and knowledge of linear algebra and discrete mathematics.

Application materials are available from the Rensselaer Admissions Office. A complete application file consists of the application itself, plus official scores for the Graduate Record Examination General Test (waived for Rensselaer undergraduate CS majors), transcripts from all prior undergraduate and graduate work, a statement of background and goals, and letters of recommendation. International applicants are also required to include official scores for the Test Of English as a Foreign Language (TOEFL) examination. The Computer Science Subject Exam that is an optional part of the Graduate Record Examination is not required.

Applicants should clearly indicate, both in their personal statements and on the application form where requested, their main area or areas of interest in computer science research, relating them if possible to the faculty research interests as listed in the document Research Groups at Rensselaer Computer Science Department. An important factor in evaluation and selection of applicants is potential for conducting original research, so students who have already participated in a significant research project should emphasize their experience and achievements in the project. In most cases admission and financial aid awards will be by research groups rather than by the department as a whole, so that students become associated with a research group and begin research immediately upon entering the program.

The application deadline for the Fall semester is the preceding January 1, and for the Spring semester is the preceding August 15.


CSCI-6050 Computability and Complexity. Students should take this course as early as possible in their degree program. A student who has had an equivalent course prior to entering the graduate program may take CSCI-6480 Theory of Compiler Design instead. If Theory of Compiler Design is used to replace CSCI-6050, it may not also count toward the theory requirement.

CSCI-6140 Computer Operating Systems. Students should take this course as early as possible in their degree program. Students who have not had an operating systems course prior to joining the program may replace CSCI-6140 with CSCI-4210 with the permission of their advisor.

CSCI-6990 Master's Research. The Master's Thesis is six credits, supervised by a faculty advisor, graded on a satisfactory/unsatisfactory basis, and submitted to the Office of Graduate Education. The student may work with a research supervisor who is not a CS faculty member, but the work must be overseen by an advisor who is a member of the Computer Science Department faculty. The thesis should present an original research contribution, which is also the subject of a paper submitted for publication with the advisor as co-author. For details, see the document Guidelines for Computer Science Master's Theses.

Most students should be involved in research each semester, taking at least one CSCI-6990 Master's Research credit under supervision of their faculty advisor.

Additional courses. Students must take at least one additional course in systems and at least one additional course in theory. If a course is listed in both groups, the student may use it to fulfill the requirement for either one of the groups, but not both. This requirement may not be fulfilled with readings courses (i.e., courses with number XXXX-4940 and XXXX-6940).

Students should advance their knowledge in each area beyond what it was when they entered the degree program. However, a student entering the program with an exceptionally strong preparation in one of these areas may request a waiver of the requirement in that area from the chair of the Graduate Curriculum Committee.

A. Systems

Catalog courses

CSCI-4220 Network Programming
CSCI-4250 Computer Architectures
CSCI-4320 Parallel Programming
CSCI-4430 Programming Languages
CSCI-4440 Software Design and Documentation
CSCI-4650 Networking Laboratory I
CSCI-4660 Networking Laboratory II
CSCI-6090 Generic Software Design
CSCI-6130 Distributed Operating Systems
CSCI-6140 Computer Operating Systems (Can only be used by students who have used CSCI-4210 to fulfill their operating systems requirement.)
CSCI-6360 Parallel Computing
CSCI-6480 Theory of Compiler Design
CISH-6230 Network Management
ECSE-4670 Computer Communication Networks
ECSE-4690 Experimental and Simulation Techniques for Computer Networking
ECSE-4760 Computer Applications Laboratory
ECSE-4770 Computer Hardware Design
ECSE-4780 Advanced Computer Hardware Design
ECSE-4790 Microprocessor Systems
ECSE-6600 Internet Protocols
ECSE-6660 Broadband and Optical Networking
ECSE-6670 Local Computer Networks and Multiaccess Communication
ECSE-6730 Fault-Tolerant Digital Systems
ECSE-6740 Introduction to Parallel Computation
ECSE-6770 Software Engineering I
ECSE-6780 Software Engineering II

Special topics courses (course number subject to change each semester)

CSCI-49xx Cryptography and Network Security I
CSCI-49xx Cryptography and Network Security II
CSCI-496x Network Flows (may be Systems or Theory, depending on project. See instructor for details.)
CSCI-496x Digital Manufacturing
CSCI-496x Software Construction
CSCI-496x Open Source Software
CSCI-496x Software Architecture
CSCI-696x Digital Manufacturing
CSCI-696x Program Obfuscation
CSCI-696x Network Programming
CSCI-696x Distributed Computing over Internet
CSCI-696x Network Security
CSCI-696x Building Large C++ Systems
CSCI-696x Cryptography and Network Security I
CSCI-696x Cryptography and Network Security II
CSCI-696x High Performance Parallel and Distributed Computing
CSCI-696x Software Engineering II
CSCI-696x Distributed Software Components
CSCI-696x Object Oriented User Interface Development
CSCI-696x Algorithms for Compiler Construction
CSCI-696x Program Analysis for Software Tools and Engineering
CSCI-696x Object Oriented Programming and Design

B. Theory of Computation

Catalog courses

CSCI-4020 Computer Algorithms
CSCI-4100, 6100 Machine and Computational Learning
CSCI-4260 Graph Theory
CSCI-6210 Design and Analysis of Algorithms
CSCI-6220 Parallel Algorithm Design
CSCI-6390 Database Mining
ECSE-6530 Information Theory and Coding
ECSE-6620 Digital Signal Processing
ECSE-6750 Finite State Machine Theory

Special topics courses (course number subject to change each semester)

CSCI-49xx Cryptography and Network Security I
CSCI-49xx Cryptography and Network Security II
CSCI-496x Network Flows (may be Systems or Theory, depending on project. See instructor for details.)
CSCI-496x Intro. To Quantum Computing
CSCI-496x Algorithms in Computational Molecular Biology
CSCI-696x The Web Graph
CSCI-696x Geometric Optimization for Robotics
CSCI-696x Distributed Algorithms and Systems
CSCI-696x Computational Finance
CSCI-696x Open Problems in Graph Theory
CSCI-696x Randomized Algorithms
CSCI-696x Geometric Algorithms
CSCI-696x Algorithmic Game Theory
CSCI-696x Cryptography and Network Security I
CSCI-696x Cryptography and Network Security II
CSCI-696x Network Security
CSCI-696x Random Graphs and the Web Graph
CSCI-696x Term Rewriting
CSCI-696x Recursion Theory
CSCI-696x E-Commerce, Social Networks and Collective Intelligence
CSCI-696x Advanced Algorithm Design
CSCI-696x Stochastic Modeling and Probabilistic Algorithms
CSCI-696x Computational Learning
CSCI-696x Algorithms for Compiler Construction
CSCI-696x Distributed Computing Algorithms
CSCI-696x Approximation Algorithms
CSCI-696x Learning Algorithms

Double Counting Courses. A course may only be used to fulfill one requirement. Thus, students may only use CSCI-6140 for the systems requirement if they used CSCI-4210 for the operating systems requirement, and any course that is classified as both systems and theory may only be counted for one of the two.

PhD Oral Qualifying Exams. Students who have passed the PhD oral qualifying exam for CSCI-6050 Computability and Complexity or CSCI-6140 Computer Operating Systems may have that course waived for the MS program. Students who have passed the PhD oral qualifying exam for CSCI-4430 Programming Languages may waive the additional systems courses, and those who have passed the CSCI-4020 Computer Algorithms oral exam may waive the additional theory course. Students still have to take 30 credits for the MS, so when a course is waived due to an oral qualifying exam pass, the student must substitute another course.

Elective Courses. The student must select additional courses with the approval of the student's academic advisor to constitute an overall coherent plan of study and to bring the total number of credits in the degree program up to 30 (subject to the constraints below). The selection of courses should reflect the student's goals and interests in obtaining a MS degree in Computer Science.

These courses must be at the 4000 or 6000 level. Not all of the courses need to be courses offered by the Computer Science Department. Independent study courses (e.g., CSCI-4940 and CSCI-6940, Readings in Computer Science) can be used as elective courses. Several recommended elective courses in computer science and related fields are listed below.

Course Credit Constraints: No more than 12 credits of the 30 required for the degree may be at the undergraduate (4000) level. At least half of the 30 credits required for the MS degree must come from courses offered by the Computer Science Department (i.e., courses numbered CSCI-xxxx).

Computer Science Colloquia. Full-time students must attend at least 8 colloquia for each semester they are enrolled (up to a maximum of four semesters). More details are available at http://www.cs.rpi.edu/academics/grad/colloquium.html. (This requirement is not applicable to students registered in absentia.)


A good foundation in mathematics is important for the computer scientist. The following courses are especially recommended for consideration. Courses chosen should complement the computer science interests of the student.

MATH-4010 Abstract Algebra
MATH-4020 Introduction to Number Theory
MATH-4100 Linear Algebra
MATH-4200,4210 Mathematical Analysis I, II
MATP-4600 Probability Theory and Applications
MATP-4620 Mathematical Statistics
MATP-4700 Mathematical Models of Operations Research
MATP-6600 Nonlinear Programming
MATP-6620 Combinatorial Optimization and Integer Programming
MATP-6640 Linear Programming
DSES-6050 Stochastic Processes
DSES-6820 Queuing Systems and Applications

Other courses especially suited for the Master of Science student are CSCI-xxxx courses at the 4000-6000 level.


Each student must submit a Plan of Study for his or her degree program during the first semester of study. This plan is drawn up with the advice and approval of the student's academic advisor and is to be a coherent, thoughtful plan reflecting the student's professional goals. If necessary, changes can be made to this plan at any time with the approval of the academic advisor.

In special circumstances it may be possible to have one or more of the degree requirements waived. To request a waiver, students should submit a request to the Graduate Curriculum Committee Chair, who will make the decision in consultation with faculty who teach in the appropriate area.

* Return to main Graduate Program page