---

* Academics

Graduate Program

M.S. Requirements

FUNCTIONAL PHILOSOPHY

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.

ADMISSION

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.

DEGREE REQUIREMENTS

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

Breadth Requirement. At least two courses must be taken from group A below, and at least one must be taken from each of groups B and C below. If a course is listed in more than one group, 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 breadth requirement in that area from the chair of the Graduate Curriculum Committee.

A. Systems (Choose two.)

Catalog courses

CSCI-4220 Network Programming
CSCI-4250 Computer Architectures
CSCI-4320 Parallel Programming
CSCI-4430 Programming Languages
CSCI-6090 Generic Software Design
CSCI-6130 Distributed Operating Systems
CSCI-6140 Computer Operating Systems (Can only be used for the breadth requirement 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-4961 Network Flows (may be Systems or Theory, depending on project. See instructor for details.)
CSCI-4961 Network Engineering I
CSCI-4962 Network Engineering II
CSCI-4966 Software Construction
CSCI-4968 Software Architecture
CSCI-6961 Network Programming
CSCI-6962 Distributed Computing over Internet
CSCI-6963 Network Security
CSCI-6963 Building Large C++ Systems
CSCI-6963 Cryptography and Network Security
CSCI-6964 High Performance Parallel and Distributed Computing
CSCI-6964 Distributed Software Components
CSCI-6964 Object Oriented User Interface Development
CSCI-6965 Algorithms for Compiler Construction
CSCI-6967 Program Analysis for Software Tools and Engineering
CSCI-6969 Object Oriented Programming and Design

B. Theory of Computation (Choose one.)

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
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-4961 Network Flows (may be Systems or Theory, depending on project. See instructor for details.)
CSCI-4964 Algorithms in Computational Molecular Biology
CSCI-6961 Geometric Optimization for Robotics
CSCI-6961 Distributed Algorithms and Systems
CSCI-6961 Computational Finance
CSCI-6962 Randomized Algorithms
CSCI-6962 Geometric Algorithms
CSCI-6963 Cryptography and Network Security
CSCI-6963 Network Security
CSCI-6963 Random Graphs and the Web Graph
CSCI-6963 Term Rewriting
CSCI-6963 Recursion Theory
CSCI-6964 Advanced Algorithm Design
CSCI-6965 Stochastic Modeling and Probabilistic Algorithms
CSCI-6965 Computational Learning
CSCI-6965 Algorithms for Compiler Construction
CSCI-6966 Distributed Computing Algorithms
CSCI-6966 Learning Algorithms

C. Applications (Choose one.)

Catalog courses

CSCI-4020 Computer Algorithms
CSCI-4100, 6100 Machine and Computational Learning
CSCI-4150 Introduction to Artificial Intelligence
CSCI-4190 Introduction to Robotic Algorithms
CSCI-4380 Database Systems
CSCI-4600 The Human-Computer Interface
CSCI-4800 Numerical Computing
CSCI-4820 Introduction to Numerical Methods for Differential Equations
CSCI-6150 Artificial Intelligence & Heuristics
CSCI-6270 Computational Vision
CSCI-6280 Mobile Robotics
CSCI-4290, 6290 Robot Motion Planning
CSCI-4390, 6390 Database Mining
CSCI-6460 Advanced Database Management Topics
CSCI-6470 Database Systems for Engineering Applications
CSCI-6800 Computational Linear Algebra
CSCI-6820 Numerical Solution of Ordinary Differential Equations
CSCI-6840 Numerical Solution of Partial Differential Equations
CSCI-6860 Finite Element Analysis
ECSE-4490 Fundamentals of Robotics
ECSE-4710 Interactive Computer-Aided Design
ECSE-4750 Computer Graphics
ECSE-6610 Pattern Recognition ECSE-6630 Digital Image and Video Processing
ECSE-6640 Digital Picture Processing
ECSE-6650 Computer Vision
ECSE-6710 Fuzzy Sets and Expert Systems
ECSE-6720 Neural Network Computing
ECSE-6740 Introduction to Parallel Computation
ECSE-6790 Computational Geometry
ECSE-6800 Advanced 3-D Computer Graphics and Visualization

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

CSCI-4961 Computer Security
CSCI-4961 Advanced Robotics
CSCI-4961, 6961 Emergent Computation
CSCI-4962 Three Dimensional Computer Graphics
CSCI-4963 Multimedia Information Systems
CSCI-4964 Bioinformatics
CSCI-4965 Genetic Algorithms
CSCI-4965/6966 Logic and Connectionism in AI
CSCI-4966 Computer Network Security
CSCI-4966 Algorithms in Computational Molecular Biology
CSCI-4967/6966 Mathematical Techniques for Vision and Graphics
CSCI-4968/6967 General Finite Element Methods
CSCI-4969/6965 Robotic Manipulation
CSCI-6961 Geometric Optimization for Robotics
CSCI-6961 Object Oriented Programming and Design
CSCI-6961 Computational Finance
CSCI-6962 Multiscale Multiphysics Computational Science
CSCI-6962 The Semantic Web
CSCI-6962 Soft Computing
CSCI-6963 Advanced Computer Graphics
CSCI-6963 Random Graphs and the Web Graph
CSCI-6963 Advanced Robotics
CSCI-6963 Building Large C++ Systems
CSCI-6963 Multimedia Database Systems
CSCI-6965 Logic and Artificial Intelligence
CSCI-6965 Parallel and Distributed Simulation
CSCI-6966 Robotics II
CSCI-6966 Object Oriented Database Systems
CSCI-6966 Distributed Database Systems
CSCI-6967 Information Integration
CSCI-6967 Computational Science and Engineering
CSCI-6967 Web Database Management Systems
CSCI-6968 Distributed Database Systems
ECSE-6963 Applied Cryptography

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 falls into more than one breadth area may be used to fulfill the requirement for only one breadth area.

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 one of two systems courses, and those who have passed the CSCI-4020 Computer Algorithms oral exam do not have to take a 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: At least 18 credits (including CSCI-6990) of the 30 required for the degree must be at the graduate (6000) 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. Students in their first two years in the graduate program must attend at least 50% of Computer Science Colloquia. Part-time students may attend 25% in their first four years. (This requirement is not applicable to students registered in absentia.)

RECOMMENDED ELECTIVE COURSES

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.

OTHER ISSUES

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.

In most years one or more special topics courses are offered under the numbers CSCI-496x and CSCI-696x. These courses may be used, with advisement, to fulfill a breadth requirement category or free elective requirement as appropriate.

* Return to main Graduate Program page


---

---