April 9, 2013
A PDF version of this guidebook is also available.
- Financial Aid
- M.S. Degree Requirements
- Ph.D. Degree Requirements
- I. Breadth Requirement
- II. Qualifying Depth Examination
- III. Preliminary Examination
- IV. Minor Field
- V. Dissertation
- VI. Final Oral Examination
- Program Planning
- I. Starting Out Right and Maintaining Acceptable Progress
- II. Leave of Absence
- III. Sources of Advice
- IV. The Normal Schedule for a Computer Sciences Graduate Student
- V. Transfer of Credits Toward the Master’s Degree
- VI. Maintenance of Student Records
- VII. Approved Courses
- VIII. Scheduling Courses in Particular Areas
- Satisfactory Academic Progress
- I. Definitions
- II. Satisfactory Academic Progress Criteria
- III. Dismissal
- IV. Financial Support
- V. Appeal Procedure
- Computing Facilities
- Additional Information
The Department of Computer Sciences at the University of Wisconsin–Madison strives to maintain the highest standards in education and research. Through our educational programs and our research we have made significant contributions to the field of computer science. Our faculty and students have earned high regard nationally and internationally for their achievements. In both education and research, we stress both theoretical and experimental methods for solving fundamental as well as practical problems.
The Department offers graduate programs leading to the Master of Science degree and Doctor of Philosophy degree in Computer Sciences. This guidebook is intended for Computer Sciences graduate students who are developing programs leading to one of these degrees. The Graduate School Catalog and the Graduate Student Academic Guidelines provide additional, essential information regarding general University requirements. The information in this guidebook should also be supplemented by individual consultation with the Graduate Advising Committee so that both individual needs and interests, and all degree requirements, are met.
Applications for admission are accepted from students with undergraduate majors in many different fields, including computer science, mathematics, engineering, psychology, linguistics, economics, physics, philosophy, and business. Minimally, the student should have had some programming experience (including courses in data structures and machine organization) and should have had a year of college-level mathematics at the level of calculus or above. If the intention is to concentrate in numerical areas, the student should have substantially more background in mathematics. Good students can sometimes be admitted to graduate work in computer science without having had programming experience or mathematics courses as described, but they will have to make up the deficiencies.
Professional computer scientists who wish to enter the Department to pursue graduate work in their field will be given special consideration. In some cases work experience at a high professional level can be substituted for certain formal academic requirements.
Departmental requirements for admission are more stringent than those of the Graduate School. These additional requirements, to which there can be no exceptions, are listed below. Applications are normally accepted for fall semester admission only. Completed applications are due no later than December 15.
- Letters of Recommendation
All applicants, whether requesting financial aid or not, must have three letters of recommendation. Recommendations are submitted online to the Graduate School as part of the application process.
- GRE Scores
All applicants must submit Graduate Record Examination (GRE) scores for the general examination. An applicant should sign up to take GRE’s at the earliest possible date. Processing of scores takes approximately six weeks. The GRE is offered by the Educational Testing Service.
- Official School Records
Official transcripts are required from each institution where the applicant did prior academic work. If an institution does not issue official transcripts, a letter from an administrator of the institution should be sent including: (a) year of admission, (b) number of years enrolled at the institution, (c) reference to quality of work (analysis of grading system), (d) evidence that examinations were passed, (e) diploma certifying degree, class, and year, and (f) General Certificate of Education or equivalent.
- TOEFL Scores (Foreign Students only)
Foreign applicants whose native language is not English are required to take the Test of English as a Foreign Language (TOEFL). The TOEFL is also offered by the Educational Testing Service.
Financial aid is available to graduate students in the form of teaching assistantships, research assistantships, University fellowships, National Science Foundation fellowships, and research assistantships or fellowships sponsored by various companies. The University has online information about graduate-student financial support. All applications, whether or not they involve requests for financial aid, can be for the fall semester only and must be completed by December 15.
Outstanding students are strongly encouraged to apply to the National Science Foundation for an NSF Graduate Fellowship before the November deadline. For information, write National Science Foundation, Forms and Publication Unit, Room P15, 4201 Wilson Blvd., Arlington, VA 22230.
Most teaching assistantships are awarded at approximately the same time that a student is admitted into the Department. Occasionally, there are last minute temporary appointments also available. Students interested in such temporary appointments should contact the department’s Instructional Program Director.
To receive a new or renewal appointment as a research assistant (RA) or teaching assistant (TA), a student must be making satisfactory academic progress (SAP) in the Department. See the chapter below on SAP requirements for details.
It is often possible for a Computer Sciences graduate student to find, after arrival on campus, a part-time job which pays well enough to support the student while in graduate school. A wide variety of departments and projects on the campus need help with both programming and administering computational resources. There is no one way to find out about all of these related jobs. Students should also consider contacting the Division of Information Technology (DoIT) and individual departments on campus for information.
In addition to the requirements of the Graduate School — see their publication Expecting Your Master’s Degree? — and the University in general, the Computer Sciences Department has the following requirements for the M.S. degree:
The student must receive at least 24 credits in CS courses numbered 400 or above, with an average grade of at least B in these courses. Fifteen of these credits must be received for core courses: CS courses numbered 700-889 (excluding 790, 799, 837, 838, and 880, which are special cases). No courses — including CS 837, 838, and 880 — may be counted more than once; however, up to six credits of CS 790 may be counted as core credit if a Master’s thesis or project is filed with the Department (see next section). The Graduate Advising Committee (GAC) may declare an individual section of CS 837, 838, or 880 exempt from the repetition restriction; however, this is rare. All sections of CS 837, 838 and 880 will be considered non-core courses, unless their instructor designates them as a core section. Other than CS 790, a qualifying core course for which a grade of S is received may be counted only for non-core credit. Non-core courses will not be counted if a grade of S is received. CS 799 (nor CS 699, CS 899, and CS 999) cannot be used to fulfill any credit requirements towards a Master’s degree.
Students may choose to write a Master’s thesis or project report. A maximum of three hours of CS 790 (Master’s thesis) may be used to satisfy the M.S. requirements provided that a Master’s project report is filed with the Department and approved by one Computer Sciences faculty member. A maximum of six hours of CS 790 may be used to satisfy the M.S. requirements provided that the thesis is approved by two Computer Sciences faculty members. CS 790 with a grade of S can be counted as core credit provided that the advisor agrees to this via an email or letter to the department office. The responsibility for finding a thesis or project advisor is solely that of the student; the Department does not guarantee that an advisor will be provided.
There are no rules about the form of a Master’s thesis, but it is expected to be a substantial piece of work, for example, a comprehensive survey of a particular area. The difference between an M.S. thesis and a Ph.D. thesis is that the former need not contain original research work. An M.S. thesis might well serve as a basis and major first step toward subsequent Ph.D. research. A Master’s project can be somewhat less formal than a Master’s thesis, describing a project carried out under the supervision of a faculty advisor. Students who write an M.S. thesis should consult the Graduate School publication A Guide to Preparing Your Master’s Thesis.
During registration week of the first semester of the student’s full- or part-time graduate tenure in the Department, the student must, in consultation with GAC, file with the Department a formal proposal of a course plan leading to the Master’s degree. This plan must be continually updated for accuracy, substitute courses being noted prior to the end of the semester or summer session during which they are taken.
A course taken outside the Department which is to be counted toward degree requirements must be formally approved in writing by GAC by the end of the semester or summer session during which the course is taken. Such courses can only be used for non-core credit. Students from other departments admitted as “Masters only” cannot use non-CS courses for their Computer Science Degree. Credits transferred from other educational institutions will not count toward the M.S. degree requirements.
A student wishing to obtain a Master’s degree should submit a completed application form, available from the Graduate Coordinator, not less than one month before the end of the semester when the degree is desired.
The requirements for a Ph.D. in Computer Sciences include satisfying the general University residency and minor field requirements, satisfying the Department’s breadth requirement, passing the Department’s qualifying, preliminary, and final oral examinations, and writing a dissertation. The student will be formally admitted to candidacy for the Ph.D. only when he or she has satisfied requirements I, II, and III below. A student who has satisfied requirements I, II, III, and IV below, and has satisfied the Graduate School’s residence requirement, is officially a dissertator in Computer Sciences. Details of the Graduate School’s requirements can be found in the Graduate School Catalog.
Requirements I and II comprise the Department’s qualifying process. The student must pass the qualifying process by the end of the sixth semester. Students who received 8 or more Master’s credits for courses taken before their first semester in our graduate program are allowed only five semesters to complete the qualifying process, and only four semesters if 16 or more credits were received. Those entering with a Master’s degree in Computer Science are allowed only four semesters. Students who believe their situation warrants additional time should consult with the GAC chair during the first semester after entry. After this time, the time limit can be changed only by a written appeal to the GAC chair.
To fulfill the Breadth Requirement for the Ph.D. degree, a student must take at least one course from each of the bands 1, 2 and 3; the courses must all be outside of the student’s qualifying exam depth area. The student may either take three courses, all at the 700 level, or four courses, two at the 700 level and two at or above the 500 level. All grades must be at the AB level or above.
- Band 1:
Computer Architecture and VLSI: 552, 752, 755, 757, 758
Operating Systems: 537, 642, 736, 739
Networking: 640, 707, 740
Programming Languages and Compilers: 536, 538, 701, 703, 704, 706
- Band 2:
Artificial Intelligence: 534, 540, 545, 731, 760, 761, 766, 769
Bioinformatics: 576, 776
Computer Graphics: 559, 679, 777, 779
Database Systems: 564, 764, 784
Human Computer Interaction: 570, 770
- Band 3:
Theory of Computing: 520, 577, 710, 787, 880
Modeling and Analysis of Computer Systems: 547, 737, 747
Optimization: 525, 635, 719, 720, 726, 730
Numerical Analysis: 513, 514, 515, 717
Only courses taken after receiving a Bachelor’s degree may be used to fulfill the breadth requirement. (Note that courses taken at UW–Madison as a Special Student do count, as long as the student has a Bachelor’s degree from some college or university.)
Students must pass a demanding depth examination in one of the main research areas of the Department. Every semester, the Department offers a four-hour written depth exam in each of the following areas:
- Artificial Intelligence
- Computer Architecture and VLSI
- Computer Graphics
- Database Systems
- Human-Computer Interaction
- Numerical Analysis
- Operating Systems
- Programming Languages and Compilers
- Theory of Computing
A student is allowed at most two chances to pass any area’s depth exam. Each exam is graded on a scale of P+ (high pass), P (pass), P- (near pass), or F (fail). A grade of P+ or P is required to pass the Depth Examination Requirement.
A syllabus is published in advance of the exams listing the topics to be covered in each exam. Depth exams are designed to test the preparation of students intending to do Ph.D. research in a given area. These exams cover topics included in courses, as well as additional papers and publications. Copies of previous exams are available on-line.
Qualifying examinations are currently offered early in each regular semester. Students are required to register with the Graduate Coordinator in advance for these exams. Registration deadlines and qualifying exam dates are announced in advance. Registration dates are strictly enforced.
To pass this oral examination, the student is expected to display depth of knowledge in the area of specialization in which research for the dissertation will be conducted. Students should plan for the examination, and determine when they are ready to take it, in consultation with the major professor. Students requiring longer than one year beyond the deadline for completing the qualifying exam must have a major professor certify that progress is being made toward the exam. In any case, the preliminary exam must be taken within two years after the deadline for completing the qualifying exam.
The preliminary examination committee consists of three members. The composition of the committee will be suggested by the student’s major professor in consultation with the student and must be approved by the Chair of the Department. The student should approach each proposed member of the committee, secure agreement to serve, and then discuss a program for preparing for the examination. It is advisable for the student to do this about a semester before the examination is to be scheduled.
At least three weeks before their preliminary examination, students need to obtain a request for a warrant from the Department’s Graduate Coordinator. Students should be sure to check the Graduate School’s calendar to see the cutoff dates by which the exam needs to be completed in order to be eligible for dissertator status (becoming a dissertator has the added benefit of substantially lowering one’s tuition).
The Graduate School determines the requirements for fulfilling the minor field requirement for a Ph.D. There are two methods of fulfilling this requirement. The more common option (Option A) is to fulfill the minor field requirement as specified by a department other than Computer Sciences. Students should contact the individual department for details. Computer Sciences graduate students minoring in mathematics should note that special regulations apply to the use, for satisfying minor requirements, of courses cross-listed in both Computer Sciences and Mathematics.
A second option (Option B) is available under which the Computer Sciences Department can arrange special minors for Computer Sciences graduate students who require a program not covered by an orthodox choice of courses in some other single department. For Computer Sciences graduate students, the requirements for an interdepartmental minor are:
- Approval by the Department of the use of the
Option B minor and of the content of the minor course program.
This approval must occur no later than half-way through the minor course
- Completion of at least 9 graduate credits in two or more departments other than Computer Sciences, in related courses selected for their relevance to a particular area of concentration, with an average grade no lower than B, and with no individual grade lower than BC. One course cross-listed with Computer Sciences may be included in this program if it is staffed by another department and is not applicable to requirements of the student’s major program.
Students selecting Option B to satisfy their minor requirement should:
- Consult with the major professor early in the degree program, and decide on a
proposed Option B set of courses. Complete a form provided by the
Graduate Coordinator, and have it signed by the major professor and the
Department Chair. This constitutes Departmental approval of the proposed
courses for satisfying the minor requirement.
- File the approved Minor Agreement Form with the
Graduate Coordinator before starting the third minor course.
- After completing the program, bring the preliminary examination warrant to the Graduate Coordinator. The warrant will then be signed by the Department Chair to certify completion of the minor program, and will be returned to the student.
Students who do not yet have a major professor and who want some advice on the kinds of programs likely to be approved may speak with the minor advisor or a member of GAC.
The student must conduct a substantial piece of original research in computer science and report it in a dissertation that meets the highest standards of scholarship.
The initiative in selection of a research supervisor (or advisor) is entirely with the student. A professor should be approached for this purpose at as early a stage in the student’s graduate work as possible, though usually not until after the student has taken some of the professor’s courses or has worked for and demonstrated ability to the professor in some way.
The Graduate School publishes several relevant documents:
In a final oral examination, the student must explain and defend the contents of the dissertation and exhibit detailed knowledge of the general area in which the reported research falls.
The final oral examination and defense of the dissertation will take place before a committee of five. The composition of the committee will be suggested by the student’s major professor and approved by the Chair of the Department. At least one of the five members must have a faculty appointment in some department other than Computer Sciences.
As with the preliminary exam, students need to obtain a request for a warrant from the Graduate Coordinator at least three weeks in advance.
Graduate students who have half-time jobs (or less) are generally advised to take three courses per regular semester. However, it is permissible to take four. Beginning graduate students should select 400-, 500- or 700-level courses depending on their undergraduate background. Students with little or no programming background are encouraged to acquire programming skills prior to beginning their regular graduate studies. Most graduate courses offered by the Department require at least a minimal level of programming skills. Students who are accepted for admission, but who lack basic computer science prerequisites (CS 354 and 367), should contact the Graduate Advising Committee (GAC) well in advance of beginning their first semester.
All entering students should consult with GAC no later than the beginning of registration week to discuss the planning of their schedules. GAC must formally approve all graduate schedules each semester. Students who have completed the Master’s degree requirements or the qualifying process and who have an official doctoral major professor may have their schedules approved by that professor.
It is important that the student maintain satisfactory academic progress (SAP). Unsatisfactory academic progress (USAP) leads to ineligibility for financial support through teaching assistantships and, if continued for a second semester, results in dismissal from the Department. Initially, failure to complete an adequate course load is the only reason for USAP. Students who are doing badly enough that USAP is possible should immediately discuss the problem with a member of GAC.
Any graduate student may apply to GAC for a one-year leave of absence. The year away does count against your guaranteed support unless you are granted an extension on that by the Admissions Committee. GAC will automatically extend the student’s deadlines (qualifying deadline and prelim deadline) when a leave of absence is granted. Students who do not register and are not on probation may resume their studies up to one year later without re-applying for admission. Note that this policy does not apply to students who have achieved dissertator status since they are expected to maintain continuous enrollment until completion of the doctoral degree.
- Members of GAC are available during regular
with special hours during registration periods. They will give advice
and must also formally approve proposed courses of study.
- An informal advising service is run by graduate students
during registration periods.
This is an excellent source of information about the pros
and cons of courses and professors.
- Particular questions about a course can often best be resolved by
contacting the course instructor.
- The University provides counseling services
for help with personal
- Master’s degree
Most full-time students obtain this degree in three or four semesters. Students are encouraged to obtain their Master’s degree when they fulfill the requirements even if they plan on continuing through the Ph.D. program.
- Breadth-courses requirement
Upon arrival, students should plan a course of study that will satisfy their breadth-courses requirement during the period allotted. It is important to check the prerequisites of 700-level classes, as well as the schedule of course offerings. Many 700-level classes are offered only once a year, and some are only offered every third or fourth semester.
- Doctoral qualifying examination
Students generally take their qualifying examination during their second or third year as a graduate student, but should begin preparing for their qualifying examination well in advance. Qualifying examinations are difficult; failure is quite possible without thorough preparation. Topic and reading lists for the various areas are available on-line. Also, students may find the on-line archive of previous examinations useful in determining what will be expected of them. In general, the qualifying examination (a) requires a broad and unified knowledge of an area, (b) is closed-book, (c) is written under time constraints, and (d) often contains questions that require essay answers. It is a good idea for a student to discuss preparation for the qualifying examination with appropriate faculty members once the area of specialization has been decided.
- Doctoral preliminary examination
This should be taken within two semesters after the qualifying examination deadline has been passed. Before taking it, the student should have satisfied the minor requirement and should have worked on some project for his or her major professor.
- Oral defense of Ph.D. dissertation
Students may reach this final step as early as four years (eight semesters) after entry.
Students who do not maintain a schedule reasonably close to these recommendations may not receive continued financial support from the Department.
- Other UW Departments and UW Special Students
Computer Sciences students who were previously special students or students in other departments may be able to apply some of their previous courses at the University toward a CS Master’s degree, subject to the following restrictions:
- A course must either be a Computer Sciences course or it must
satisfy the criteria for “approved” courses (see
part VII below). In either case, the course must be
entered on the student’s GAC file, and be initialed as approved by a
- At most, one-fourth of the courses applied toward one graduate
degree may be applied toward a second graduate degree. Courses
applied toward an undergraduate degree or certificate may not be
applied toward a graduate degree.
- For courses taken at UW as a special student, no more than six
credits may be applied toward a Master’s degree.
- A course must either be a Computer Sciences course or it must satisfy the criteria for “approved” courses (see part VII below). In either case, the course must be entered on the student’s GAC file, and be initialed as approved by a GAC member.
- Other Universities
Courses taken at other universities may not be counted toward the Master’s degree.
GAC maintains two types of records about each student. These records are stored in the Graduate Coordinator’s offices, and are available for inspection and verification by the student. It is the responsibility of the student to see that these records are correct and up-to-date.
- The Master’s Degree/Qualifying Examination Course Plan
The course plan must be prepared, in consultation with GAC and the student’s personal faculty adviser, during registration week of the student’s first semester as a graduate student. The purpose of the course plan is to ensure that the student understands Department regulations and is pursuing a suitable course of study. The course plan may be changed at any time in consultation with GAC and the student’s personal faculty adviser. For most students the course plan represents a course of study leading to a Master’s degree. For graduate students not pursuing a Master’s degree, the course plan represents a course of study preparing for the doctoral qualifying examination.
- The Course-History Record
The course history record card contains a record of all courses completed or being taken. This record must be brought up to date during each registration week.
Courses taken outside the Department that are to be counted, either toward satisfactory academic progress or toward a Master’s degree, must be approved by GAC. Approval must be obtained before the course has been taken. Usually approval is given during the registration period, but approval can be requested at an earlier stage if a student wishes to plan ahead.
To be approved, a course must materially contribute to the specific computer science education for which the student is working. In doubtful cases, GAC will require a note from a Department faculty member supporting the request for approval. Only CS courses are approved for students from other departments enrolled in the “Masters only” degree program.
- Artificial Intelligence
The Department’s standard course offerings in Artificial Intelligence include a senior-level survey of the field, CS 540; two graduate-level survey courses of the field, CS 760 and 731; and a series of 700-level courses each covering one sub-area of the field. The sub-areas and the primary courses covering them are Advanced Machine Learning (CS 761), Computer Vision (CS 766), Natural Language Processing (CS 769), and Advanced Bioinformatics (CS 776). Each of these courses has CS 540, 760, 576, or 731 as a prerequisite. Note that staff shortages may make it impossible for the Department to regularly offer CS 731. Students will be prepared for the Ph.D. qualifying exam in AI if they have mastered the material presented in CS 540 (or 731), 760, and in one of 761, 766, 769, and 776.
- Computer Architecture and VLSI
There are three main courses in computer architecture, one in VLSI design, and one in current topics in computer architecture. Most are cross-listed as Electrical and Computer Engineering courses with the same number. CS 552 is the basic course. CS 752 and 757 cover advanced topics in computer architecture, CS 755 covers advance topics in VLSI design, and CS 758 covers current topics in designing and programming microprocessors. CS 752 is offered every semester either by the Computer Sciences Department or the ECE Department. CS 757 is usually offered in the Spring either by the Computer Sciences Department or ECE Department. CS 755 is usually offered in the fall under the auspices of the ECE Department. The content offered in CS 758 may vary significantly based on the instructor. The Ph.D. qualifying exam requires knowledge of material covered in CS 552, 752, and 757 and some extra readings.
- Computer Graphics
Students interested in graphics research should begin with CS 559, the primary advanced undergraduate graphics course. Students who already have an undergraduate graphics background should consult with faculty. Students may then take graduate courses in graphics, which are not currently taught on a regular schedule. Students should also consider CS 679, which covers interactive virtual environments in the context of game development. All of these courses assume knowledge of linear algebra and calculus. CS 559 is taught at least once a year, while the other courses may be taught less frequently. Other courses of relevance to graphics include CS 533 (image processing), CS 540 (artificial intelligence), CS 558 (computational geometry) and CS 766 (computer vision). Several courses taught in the Department of Mechanical Engineering are also related to graphics research. Material for the qualifying exam in graphics is covered in CS 559 and the graduate level graphics and vision classes, although additional reading is also required.
- Database Systems
At the present time three courses for graduate students are offered in the area of database systems. CS 564 provides a systems-oriented introduction to databases and their implementation. Students with an interest in more advanced topics and current research directions in the area, such as students preparing for the database Ph.D. qualifying exam, should take CS 764 and 784 after completing CS 564. Those students who are planning on taking the database Ph.D. qualifying exam are expected to complete their preparation for the exam independently. In addition, students interested in pursuing research in the database systems area are advised to consider taking courses in the related areas of operating systems, performance evaluation, and artificial intelligence to prepare for their work in this relatively broad area.
- Human Computer Interaction
Two courses are offered in the area of human-computer interaction (HCI): CS 570 and CS 770. Students with interests in doctoral study in HCI or in applying HCI principles or techniques to other areas of research should begin with CS 770 (typically offered in the fall). CS 770 covers a comprehensive overview of research topics and prior work, an introduction to human subjects research methods, and a semester-long research project. Students interested in the practical aspects of HCI should take CS 570 (typically offered in the spring). CS 570 covers applications of HCI in designing software products, including techniques to understand user needs, develop design alternatives, and evaluate usability; CS 570 involves month-long group projects to apply HCI techniques to real-world software design problems. Students may take CS 570 and CS 770 in any order. Students with prior background in HCI or interested in taking supplemental courses from other areas or departments should discuss their plan with faculty. The PhD qualifying exam in HCI includes material from CS 570 and CS 770.
Three courses are offered in the area of computer networking. CS 640 introduces the subject, provides basic understanding of networking architecture, protocols and systems by examining popular mechanisms widely used in the Internet including Ethernet and 802.11, BGP, TCP/IP, HTTP, etc. There are several large programming assignments in the course that give students experience with building networking applications and protocols. CS 740 is an advanced course, often run as a seminar, which discusses a selection of advanced topics across all areas of networking. CS 707 is another advanced course, also often run as a seminar, which focuses on mobile and wireless networking systems. Both the advanced courses have a large project associated with them. CS 640 is a prerequisite for CS 740 and CS 707. The Ph.D. qualifying exam in networking is based primarily on the concepts covered in CS 640 and 740 but also can include some material from CS 707.
- Numerical Analysis
Numerical analysis is a broad field and Ph.D. students usually take several courses in mathematics as well as independent reading courses. Prospective Ph.D. students should consult with numerical analysis faculty about their course of study.
- Operating Systems
Three courses are offered in the area of operating systems. CS 537 introduces the subject, providing hands-on experience with building parts of operating systems in simple environments; there are several large programming assignments. CS 736 is an advanced course, often run as a seminar, which discusses a selection of advanced topics. This course often has a large project associated with it. CS 739 takes up where CS 736 leaves off. It covers distributed systems in greater depth, studying a wide variety of systems and examining issues such as replication, fault tolerance, load balancing, and security. The Ph.D. qualifying exam covers material in CS 537 and 736 and advanced material from CS 739.
Students interested in optimization should first take CS 525 and CS 635. After completing a good linear programming and optimization modeling course, students may take CS 719 or CS 720 (which emphasize combinatorial optimization) without further prerequisites, and students with a background in basic mathematical analysis may take CS 726, CS 727, or CS 730 (which emphasize continuous, nonlinear optimization). (Note that CS 525 and CS 635 are not prerequisites for CS 726, 727 or 730.) All of the 700-level courses may be taken independently of each other. Ph.D. students planning on taking their qualifying examination in this area should be familiar with the material in CS 525 and CS 635 and at least three courses from 719, 720, 726, 727, 730. Master’s and Ph.D. students minoring in optimization should take CS 525 or 635 and at least one of the 700-level courses in the area.
- Programming Languages and Compilers
Students interested in the area of programming languages should first take CS 536 and 538 (when offered). The former provides an introduction to compilers and to programming-language implementation techniques. The latter provides an introduction to the theory and design of programming languages. The graduate courses in the area are CS 701, 703, 704, and 706. CS 701 is the graduate compiler course. It covers program analysis, optimization, and code generation. CS 704 covers graduate-level topics in the theory of programming languages, including lambda calculus, functional languages, semantics, type theory, and abstract interpretation. CS 706 covers analysis of software-engineering artifacts that arise through specification, implementation, testing, debugging, and maintenance. Occasionally, CS 703 or a section of CS 838 will be offered to cover a selection of advanced topics. For the Ph.D. qualifying exam, CS 536, 701, 704, and 706 are recommended.
- Theory of Computing
Students preparing for the Ph.D. exam in theory should take CS 710 and 787, and are encouraged to take courses from the following list: CS 809, CS 812, CS 830, and CS 880. CS 787, CS 809, and CS 812 focus on algorithms for specific problems; CS 710 and CS 830 study models of computation and complexity classes. Students are advised to take both types of courses in their program. All students interested in theory are encouraged to take CS 880, a special-topics course, when offered.
Each graduate student is responsible for planning and carrying out a program of study that continually meets with the approval of the Department. Students should meet with a member of the Graduate Advising Committee (GAC) every semester, usually during the registration period, to get approval for the plan for the following semester. The record of approvals and future plans is maintained in a file that is available at any time for the student to inspect. Any exceptions to rules that have been granted to the student are also recorded in this file. A student who wants to drop or add a course during the semester should get the change approved by a member of GAC.
The rules enforced by the Department for satisfactory progress are distinct from the rules used by the Graduate School. The student must satisfy both sets of rules. Here we concentrate on the rules of the Department.
- Full-load and Part-load
Part-load students do not have to take as many credits during a semester as full-load students. (The specific rule is discussed below.) All students are considered to be full-load students unless they have been granted part-load status by the GAC chair. Part-load status is granted semester by semester to students who have full-time jobs, non-academic duties, or substantial family responsibilities. Such students should apply in writing to the GAC chair at the beginning of each semester for which they want part-load status. They will be notified in writing whether their request has been approved.
The department’s requirements for part-load and full-load students are as follows.
Part-load students take 3 credits. Dissertators take 3 credits. Full-load students who are TAs or PAs take at least 6 credits. Research assistants and fellows take at least 8 credits.
It is very important to note that full-load status is distinct from full-time status as determined by the Graduate School for residence credit. Because of Graduate School rules, students may need to take more credits than indicated above. It is essential for foreign students and students receiving V.A. benefits to be full-load students. Foreign students should check with the Graduate School and International Student Services to ensure that they are satisfying residence, visa, and other requirements.
- Regular Semester
In the following requirements, regular semester denotes either fall or spring semester of an academic year; it does not include summer session.
- Approved Courses
Approved courses are courses that have been approved by GAC as appropriate for a student’s studies. For students who have neither obtained a Master’s degree in Computer Science nor passed the qualifying process, GAC usually approves only courses leading toward the Master’s degree.
Courses are approved only if they fall into one of the following categories:
- Courses from other departments that GAC considers to be an
important part of the student’s program.
These courses will usually be numbered 400 or above. To comply
with current Graduate School requirements, except as noted below
in point 2, no course numbered less than 300 will be approved.
- CS 302, 352,
354, and 367, and Math 221, 222,
and 223, provided that the student has been admitted with
deficiencies that are being removed by taking these courses.
- All University of Wisconsin–Madison CS courses numbered 400
and above (and courses cross-listed with such CS courses)
taken by a student and not applied to any other degree.
- Courses from other departments that GAC considers to be an important part of the student’s program. These courses will usually be numbered 400 or above. To comply with current Graduate School requirements, except as noted below in point 2, no course numbered less than 300 will be approved.
- Satisfactory Completion of Courses
Courses taken for credit and passed with letter grades A, AB, B, BC, C, S, and P are satisfactorily completed. These criteria determine satisfactory completion for the Department. The Graduate School has its own rules, and they should be consulted if any question arises.
The terms qualifying examination process, preliminary examination and final oral examination designate the procedures and/or examinations of those names supervised by the Department of Computer Sciences. The requirements for the Ph.D. include time limits for their completion.
A graduate student in Computer Sciences shall be considered to have made satisfactory academic progress (SAP) at the end of any regular semester only if, at the end of the semester, the following conditions are all satisfied:
- Before achieving dissertator status: the student has
satisfactorily completed at least six (if full load) or three (if
part load) credits of approved courses during the semester.
- After achieving dissertator status: the student has satisfactorily completed at least three credits of courses approved by the student’s major professor.
- Before achieving dissertator status: the student has satisfactorily completed at least six (if full load) or three (if part load) credits of approved courses during the semester.
- The student has removed all incomplete grades from any previous
regular semester or summer session.
- The student has passed any required exams and
procedures within designated time limits.
Any graduate student who fails to make SAP during two consecutive regular semesters (fall and spring, or spring and fall) will be dismissed from the Department at the end of the subsequent summer session. Any student who fails to make SAP because of criterion II.3 above will be dismissed from the Department at the end of the subsequent summer session.
To be eligible for financial support from sources controlled by the Computer Sciences Department a student must be making SAP in the Department.
Any graduate student may appeal any aspect of the SAP rules, provided that the appeal is made in a timely way. In particular, appealing a decision that a student did not make SAP must be initiated not later than the end of the fourth week of the subsequent regular semester.
To appeal, the student should write a letter to the Chair of GAC stating the basis for the appeal. This letter should explain clearly the reasons for the appeal, and should be accompanied by appropriate documents such as a medical certificate if the appeal is on the grounds of ill health or such as a supporting letter from a Computer Sciences faculty member if the appeal concerns an unusual combination of courses. It will often be useful for the student to discuss the problem with a member of GAC or with the student’s personal faculty advisor before putting the appeal into writing.
GAC will consider every such written appeal and will notify the student of its decision at the earliest opportunity, normally within four working weeks. A student who is not satisfied with the decision by GAC may submit a further appeal in writing to the Chair of the Department. The Chair will place the appeal on the agenda of a regular faculty meeting, will circulate the letter of appeal and accompanying documentation, and will give the student written notification of the meeting. The meeting will be scheduled at the earliest opportunity, normally within four working weeks after receipt of the letter to the Chair. The student and any of the student’s advisors may attend the meeting to present the appeal, provided that the Chair of the Department is advised in writing before the start of the meeting. In accordance with Wisconsin law, the meeting will begin in open session, but the Chair will move that the meeting convene in closed session before the appeal is considered.
The University of Wisconsin–Madison Computer Science Department has a large variety of computing resources to support both its research and instructional missions. The Computer Systems Laboratory (CSL) maintains the computing infrastructure and provides technical assistance, support, planning and expertise to the Department and its research projects. The CSL is continuously upgrading and enhancing its systems to offer the most up-to-date computing resources possible.
A locally-developed software package called Condor provides substantial computing power by automatically locating computers that are idle and transfers jobs to them. The jobs are periodically check-pointed and migrate from machine to machine until completion. In the CS department alone, Condor manages thousands of cores.
To obtain a graduate minor in Computer Sciences, a student must earn at least 12 credit hours in Computer Sciences courses, meeting the following requirements:
- The courses presented for a minor must form a coherent plan of study,
approved by the Computer Sciences Department’s external advisor, who should
be consulted for further details.
- With the exception of CS 367, all courses must be numbered
400 and above. “Topics” courses, CS 837,
838, and 880, must be graded in the usual
- At least one of the courses must involve a significant amount of
programming in a structured language, such as C++, C, or Java. CS 367 will
meet this requirement, as will many of the Systems and AI courses which
have CS 367 has a prerequisite.
- At least one of the courses must be numbered 700 or above (not including CS 900), and
passed with a grade of at least a B. If this course is
cross-listed with another department, the course must be taught
by a regular CS Department faculty member. If an exception is necessary,
advance approval is required.
- The average grade in all Computer Sciences courses presented for a
minor must be at least B.
Students planning to minor in Computer Sciences should consult with the Department’s external advisor early in their graduate program to ensure acceptance of the minor program. A Minor Agreement form must be filed with their home Department. A copy of the form should be filed with the CS graduate coordinator.
The Computer Sciences Department will consider applications from graduate students, with uniformly excellent graduate records in CS courses, for addition of the CS major — for the Master’s Degree only. (Students intending to get a Ph.D. in Computer Sciences or seeking long-term TA support must submit a standard admissions application, which requires a subject GRE test and, for non-native speakers, a TSE score.)
Students who wish to apply for admission to this program must meet the following conditions:
- Be very near completion of a Graduate Degree from the UW in their
We require a letter from the major department attesting to the fact that the student will receive a Master’s degree shortly or has attained dissertator status.
Note: A student in dissertator status who is admitted to this program loses his or her dissertator status. This is a Graduate School rule that is enforced by the Graduate School.
- Have obtained grades of AB or better in at least three CS
courses numbered 500 or above in three different
areas of computer science. At least one of these courses must be
at the 700 level (not including CS 900). All of these courses must
have been taught by a member of the CS Department faculty.
- Have two letters of recommendation from CS Department faculty members.
- At least one of the courses meeting requirement 2 must have a
significant amount of programming in a structured language.
This requirement is waived for those students who have also taken
(which cannot be counted toward the Master’s degree in CS).
Note: Meeting these requirements guarantees that your application will be considered for admission to the program. However, it does not guarantee admission.
Students should also check the Graduate School requirements for a double degree. Note that obtaining an M.S. in Computer Sciences requires completing 24 credits and fulfilling the requirements stated previously in this document.
Over 1000 technical reports, dealing with various aspects of computer science, and written by faculty members and graduate students, have been published by the Department. A listing of the most recent reports is available online.
The Department has an Alumni Group, which publishes a newsletter, Badger Bytes, and an annual alumni directory. More information is available by emailing firstname.lastname@example.org or via the Alumni Group’s web page.
The student chapter of the Association of Computing Machinery (SACM) provides numerous services for members of the Department, including: running an orientation for new graduate students; providing partial financial support to students attending conferences; organizing picnics each semester and a potluck dinner in the spring; organizing trips to the theater and sporting events; maintaining the Department’s photo board; and running the Department’s Coffee Club.
The following people direct departmental activities that are relevant to CS graduate students:
- Department Chair
- Associate Chair
- Graduate Admissions and Graduate Coordinator
- Instructional Program Director (supervises TAs)
- Graduate Advising Committee (GAC) Chair
- External (Ph.D. Minor) Advisor
- SACM President
- Department Manager
- Payroll and Benefits Coordinator (has copies of insurance forms, etc.)
- Computer Systems Laboratory
- Technical Reports
- Travel Reimbursement
- General Information