Computer Sciences Graduate Guidebook

2002 - 2003

University of Wisconsin - Madison

Madison, Wisconsin

Created May 2002

postscript version of this guidebook is also available.

World-Wide Web sites at the University of Wisconsin are undergoing a rapid evolution. Please report any mistakes in this document's hyperlinks, as well as useful additions, to strikwerda@cs.wisc.edu.
 

Contents

Introduction

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. TheGraduate School Catalog and theGraduate Student Handbook 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.

Additional information is available via theDepartment's World-Wide Web (WWW) page. Students may also wish to consult theGraduate School's WWW page. Foreign students may find useful the Graduate School document Essential Information for Newly Admitted International Students.

Admission

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 theGraduate 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 31.

Letters of Recommendation

All applicants, whether requesting financial aid or not, must have forwarded to the Department three letters of recommendation.
GRE Scores

All applicants must submit Graduate Record Examination (GRE) scores for the general (verbal and quantitative examinations) and for the advanced examination in any field in which they have majored or are otherwise specially qualified. An applicant should sign up to take GRE's at the earliest possible date. To make arrangements to take a GRE, applicants should write to: Educational Testing Service, Box 955, Princeton, New Jersey 08540. Processing of scores takes approximately six weeks. The date when GRE's were taken or when they will be taken should be indicated on the top of the application for graduate study.
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 and TSE 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) and the Test of Spoken English (TSE). Since the GRE, TOEFL and TSE are all offered by the Educational Testing Service, one letter to the Service should suffice to inquire about all required examinations.

Financial Aid

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. TheGraduate School has placed on the World-Wide Web 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 31.

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 Assistant to the Chair.

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. There are several thousand computers on the Madison campus, and many of them require programmers. These computers are owned and operated by a wide variety of departments and projects on the campus, and the kind of programmer needed varies greatly. There is no one way to find out about all of these jobs. Students should also consider contacting the Division of Information Technology(DoIT) and individual departments on campus for information.

M.S. Degree Requirements

In addition to the requirements of the Graduate School -- see their publicationExpecting Your Master's Degree? V.I.P. -- and the University in general, the Computer Sciences Department has the following requirements for the M.S. degree:

I. Courses

The student must receive at least 24 credits in courses numbered 400 or above, with an average grade of at least B in these courses (the grade average enforced for admissions starting after January 1, 1997). Fifteen of these credits must be received for core courses: CS courses numbered 700-889 (excluding  799). No courses - including CS 837, 838, and 880 - may be counted more than once, though up to six credits of CS 790 may be counted if a Master's thesis or project is filed with the Department (see next section). A qualifying core course for which a grade of S is received may be counted only for non-core credit. Also, all sections of CS 837, 838 and 880 will be considered non-core courses, unless designated as a core section by their instructor. Non-core courses will not be counted if a grade of S is received. At its discretion, the Graduate Advising Committee (GAC) may declare an individual section of CS 837, 838, or 880 exempt from the repetition restriction.

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.

II. Thesis or Project (Optional)

Students may choose to write a Master's thesis or project report. A maximum of six hours of CS 790 (Master's thesis) may be used to satisfy the M.S. requirements provided that the thesis is approved by two Computer Sciences faculty members. A maximum of three hours of CS 790 may be used to satisfy the M.S. requirements provided that a Master's project report is filed with the Department. Note that CS 790 can be counted as core credit. 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.

Only a few Master's theses have been written in the Department, but this option is worth considering. 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.

Ph.D. Degree Requirements

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 theGraduate School's residence requirement, is officially a dissertator in Computer Sciences. Details of the Graduate School's requirements can be found in theGraduate 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 being admitted as a Master's degree candidate 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 GAC.

Students who do not register and are not on probation may resume their studies up to one year later without re-applying for admission. No additional time will be permitted for passing the qualifying process without written approval from the chair of GAC.

I. Breadth Requirement

To fulfill the Breadth Requirement for the Ph.D. degree, a student must meet the following:
  1. Satisfy a three-course requirement: Complete one 700-level or 800-level Computer Sciences course in each of three distinct areas other than the depth area.
  2. or
    Satisfy a four-course requirement: Complete one Computer Sciences course in each of four distinct areas other than the depth area, two at the 700- or 800-level and two at the 500- or 600-level.
  3. All grades in these courses must be AB or higher.
  4. Only the following UW-Madison Computer Sciences Department courses can be used to fulfill the breadth requirement:
  5. 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.)

II. Qualifying Depth Examination

Students must pass a demanding depth examination in one of the main research areas of the Department. Every semester, the Department offer a four-hour written depth exam in each of the following areas: 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 on the Department bulletin board. Registration dates are strictly enforced.

III. Preliminary Examination

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.

Before the preliminary examination, students need to get a warrant from the Graduate School. The Department's Graduate Coordinator can provide assistance. 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).

IV. Minor Field

The Graduate School determines the requirements for fulfilling the minor field requirement for a Ph.D. There are two methods of fulfilling this requirement. One option (Option A) is to fulfill the minor field requirement as specified by another 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:

  1. 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 sequence.
  2. Completion of at least 12 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: Students who do not yet have a major professor and who want some preliminary advice on the kinds of programs likely to be approved may speak with the minor advisor or a member of GAC.

V. Dissertation

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 (major professor) 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:

A Guide To Preparing Your Doctoral Dissertation
The 3-D's: Deadlines, Defending, Depositing
Doctoral Dissertation and Degree Completion Requirements
Everything You Wanted To Know About Dissertator Status But Were Afraid To Ask

 

VI. Final Oral Examination

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, three of whom will constitute the reading subcommittee. 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 warrant from the Graduate School. The Department's Graduate Coordinator will also help students obtain this document.

Program Planning

I. Starting Out Right and Maintaining Acceptable Progress

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. The beginning graduate student should select 400-, 500- or 700-level courses depending on his or her 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 so that USAP is possible should immediately discuss the problem with a member of GAC.

II. Sources of Advice

III. The Normal Schedule for a Computer Sciences Graduate Student

Master's degree

Most full-time students obtain this degree in three or four semesters.
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. They are stiff examinations which many students fail. Topic and reading lists for the various areas are available from the Graduate Coordinator. Also, students may find the on-line collection 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

In ideal circumstances, the student will be at this final step four years (eight semesters) after entry; the student should certainly be here by the tenth or eleventh semester as a graduate student.
Students who do not maintain a schedule reasonably close to these recommendations should not expect continued financial support from the Department.

IV. Scheduling Courses in Particular Areas

Artificial Intelligence

The Department's standard course offerings in Artificial Intelligence include a senior-level survey of the field, CS 540; a graduate-level survey of the field, CS 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 Machine Learning (CS 760), Deductive Problem Solving and Logic Programming (CS 761), and Computer Vision (CS 766). Each of the 700-level courses has CS 540 (or 731) as a prerequisite. Staff shortages may make it impossible for the Department to regularly offer CS 731. When it is offered in a semester appropriate for their course scheduling, graduate students should take CS 731 instead of 540. Students will be prepared for the Ph.D. qualifying exam in AI if they have mastered the material presented in CS 540 (or 731) and in two of CS 760, 761, and 766.

The AI qualifying exam is designed to test for both a general ``breadth'' knowledge of AI, plus a deeper specialized knowledge of one particular sub-area within AI. Students are required to specify their sub-area when they sign up for the exam, and then answer corresponding questions in that sub-area. Specifically, the exam will consist of questions in nine separate sections. There will be two ``general'' AI questions (in section G540/731), two ``basic'' questions in each of the three sub-areas (in sections B760, B761, and B766), and two ``advanced'' questions in each of the three sub-areas (in sections A760, A761, and A766). To pass the examination, students will have to answer satisfactorily one of the two questions in section G540/731; both of the questions in one of the A sections; both of the questions in the B section for the same sub-area; and two additional questions from any of the other B sections. The two additional questions can be but do not have to be from the same section. The A section chosen must correspond to the sub-area for which the student is signed up.

Computer Architecture and VLSI

There are three main courses in computer architecture, one in VLSI design, and one in design tools for VLSI. All 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 756 covers design tools for VLSI. CS 752 is usually offered by the Computer Sciences Department in the fall and by the ECE Department in the spring. CS 755 and 757 are usually offered in the fall under the auspices of the ECE Department and in the spring under the Computer Sciences Department. Though the same basic course, the emphasis in CS 755 varies considerably, and CS graduate students who do not have an undergraduate engineering degree usually experience difficulty with the course as offered by ECE. The Ph.D. qualifying exam requires knowledge of material covered in CS 552 and 752 and some extra readings, most of which are covered in CS 757.
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 sub-areas of graphics: CS 777 covering animation, and CS 779, which discusses rendering. 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, preferably multi-variate for CS 779. 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, CS 777 and CS 779, 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 364, which provides a general introduction to database systems, is for undergraduates only). 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.
Optimization

Students should first take CS 525 unless they have had a thorough introductory course in linear programming. After completing a good linear programming course, students may take CS 719 or 720 (which emphasize combinatorial optimization) without further prerequisites, and students with a background in basic mathematical analysis may take CS 726, 727, or 730 (which emphasize continuous, nonlinear optimization). (Note that CS 525 is not a prerequisite for CS 726, 727 or 730.) Some background in probability is recommended for CS 723, which is not taught every year. 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 719, 720, 726, 727, 730 and optionally 723. Master's and Ph.D. students minoring in math programming should take CS 525 and at least one of the 700-level courses in the area.
Modeling and Analysis of Computer Systems

The various techniques for performance modeling and analysis of computer systems constitute the topics in the MA area. Three courses, CS 547, 737, and 747, are currently offered in this area. CS 547, which introduces analytic modeling methods and some elementary queuing theory results, is offered in the Fall semester each year. Students enrolling in CS 547 are expected to have some background in operating systems, databases, or computer architecture, which provide some of the systems analysis questions that are used as examples in the course. Students with little or no background in probability theory should audit or enroll in Math 431 prior to or concurrently with CS 547. Both CS 737 and 747 are usually offered in the spring semester each year. CS 747 covers additional and more advanced analytical modeling methods, while CS 737 covers performance-simulation methods. CS 547 is a pre-requisite for CS 737 and 747. CS 547 and 747, plus additional reading on the reading list, are required for the Ph.D. qualifying exam in MA.
Numerical Analysis

The two-course sequence CS 513-514 provides the basic introduction to numerical analysis. Students planning to take the Ph.D. qualifying exam in numerical analysis should also take the course sequence: CS 717, 712 and 713. This sequence also serves as the starting point for the more advanced courses, CS 883, 884, 887, 718, 881, 882, and 885. 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 and 640 (computer networks).
Programming Languages and Compilers

Students interested in the area of programming languages should first take CS 536 and 538. 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, and 704. CS 701 is the graduate compiler course. It covers program analysis, optimization, and code generation. CS 703 covers a selection of advanced topics, such as alternative parsing methods and dataflow analysis. CS 704 covers graduate-level topics in the theory of programming languages, including the study of functional languages and formal language semantics. Occasionally, a section of CS 838 deals with issues in programming language design; this course is extremely valuable for students intending to do Ph.D. work in programming languages. For the Ph.D. qualifying exam, CS 536, 538, 701, and 704 are required and CS 703 is recommended.
Theory of Computing

The basic concepts in the theory of computation are introduced in the undergraduate theory courses, CS 520 and 577. Students preparing for the Ph.D. exam in theory should take CS 810 and 787, and should study topics from at least two courses in the following list: CS 709, 767, 812, 820, 830. CS 709, 767, 787 and 812 focus on algorithms for specific problems, and CS 810, 820 and 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.

V. Transfer of Credits Toward the Master's Degree

Other UW Departments and UW Special Students

Computer Sciences students who were previously special students or students in other departments may apply some or all of their previous courses at the University toward a Computer Sciences Master's degree, subject to the following restrictions:
  1. 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.
  2. 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 may not be applied toward a graduate degree.

  3.  
Other Universities

Courses taken at other universities may not be counted toward the Master's degree.

VI. Maintenance of Student Records

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.
In addition to the above records, a student wishing to obtain a Master's degree should submit a completed application form, available from the Department office, not less than one month before the end of the semester when the degree is desired.

VII. Approved Courses

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.

Satisfactory Academic Progress

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. We will concentrate here primarily on the rules of the Department.

I. Definitions

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

Full-load status is distinct from full-time status as determined by the Graduate School for residence credit. Because of Graduate School rules, students often need to take 8 instead of 6 credits during a semester. The combined effect of the various rules is this:

Part-load dissertators take 1 credit. Part-load students and dissertators take 3 credits. Full-load students who are TAs, PAs, or unsupported by the Department take at least 6 credits. Research assistants and fellows take at least 8 credits.
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 the Office for Foreign Students 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:

  1. 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.
  2. 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.
  3. 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.

  4.  
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.
Examinations

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.

II. Satisfactory Academic Progress Criteria

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:
  1. (a) 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.

  2. (b) After achieving dissertator status: the student has satisfactorily completed at least three credits of courses approved by the student's major professor.
  3. The student has removed all incomplete grades from any previous regular semester or summer session.
  4. The student has passed any required exams and procedures within designated time limits.

  5.  

III. Dismissal

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.

IV. Financial Support

To be eligible for financial support from sources controlled by the Computer Sciences Department a student must be making SAP in the Department.

V. Appeal Procedure

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.

Computer Sciences Courses

General Information about Courses

Courses numbered 399 and below may be taken for undergraduate credit only. Courses numbered 400 through 699 may be taken by either undergraduate or graduate students. Courses numbered 700 or above are intended only for graduate students. Undergraduates are allowed to take courses numbered 700 or above, but only if permission is obtained from the dean's office.

Courses offered less than once every two years are marked as ``infrequently offered;'' students should not count on taking these classes when planning their schedules. Tentative timetables for upcoming semesters are available.

World-Wide Web pages for the current semester's offerings of many Computer Sciences courses are available. Additional information about many cross-listed courses can be found via the College of Engineering's and theDepartment of Mathematics' WWW home pages.

200 A Taste of Computer Science 1 cr.

Computer Science is much more than programming! Learn about interesting research and applications of computer science principles and practices from faculty and leading technologists from industry. This course is recommended for potential CS majors; no programming experience required. Prereq: Limited to freshmen and sophomores. Not a prereq for any other CS course. Can be taken before, after, or at the same time as, CS 302. Grading: credit/no credit.

240 Introduction to Discrete Mathematics 3 cr. (also Math)

Basic concepts of logic, sets, partial order and other relations, and functions. Fundamental principles of counting. Basic algebraic structures: modulo arithmetic, group, ring, and field structures, Boolean algebra. Introduction to graph theory: trees, depth first search, matching, max-flow min-cut, and other optimization algorithms. Applications. Prereq: Math 221.

302 Introduction to Programming 3 cr.

Instruction and experience in the use of an object-oriented programming language. Program design; development of good programming style; preparation for other Computer Science courses. Prereq: Problem solving skills such as those acquired in a statistics, logic, or advanced high school algebra course; or consent of instructor. Open to Fr. Students who take both CS 110 and CS302 will receive a total of 3 credits for the two courses.

310 Problem Solving using Computers 3 cr.

Gives engineering students an introduction to computer and analytical skills to use in their subsequent course work and professional development. Discusses several methods of using computers to solve problems, including elementary Fortran and C programming techniques, the use of spreadsheets, symbolic manipulation languages, and software packages. Techniques will be illustrated using sample problems drawn from elementary engineering. Emphasis on introduction of algorithms with the use of specific tools to illustrate the methods. Prereq: Math 222 and an elementary knowledge of Fortran or C or Pascal.

352 Digital Systems Fundamentals 4 cr. (also ECE)

Logic components, Boolean algebra, combinational logic analysis and synthesis, synchronous and asynchronous sequential logic analysis and design, digital subsystems, computer organization and design. Prereq: CS 302 or equivalent. Not open to students with EGR classification.

354 Machine Organization and Basic Systems 4 cr. (also ECE)

An introduction to current system structures of control, communication, memories, processors and I-O devices. Projects involve detailed study and use of a specific small computer hardware and software system. Prereq: CS 302 or consent of instructor. Open to Fr.

364 Introduction to Database Management Systems 3 cr.

Design, use, and application of database management systems. Role of a database management system as a corporate decision-making tool. The Entity-Relationship and Relational data models for database design. File structures, data independence, integrity, privacy, security, application development, and the role of the database administrator. Students use several database management systems. Students may not receive credit for both CS 364 and 564. Prereq: CS 302 or consent of instructor. (Last taught: Spring 96)

367 Introduction to Data Structures 3 cr.

Study of data structures (including stacks, queues, trees, graphs, and hash tables) and their applications. Development, implementation, and analysis of efficient data structures and algorithms (including sorting and searching). Experience in use of an object-oriented programming language. Prereq: CS 302 or consent of instructor. Students are strongly encouraged to take CS 367 within two semesters of having taken CS 302.

368 Learning a New Programming Language1 cr.

This course is for students who are familiar with at least one programming language and are interested in learning a new language. Different sections will teach different languages. Prereq: CS 302 or consent of instructor. Some experience with data structures is required, so students are strongly advised to have completed at least 5 weeks of  CS 367 (or an equivalent data structures course at another university). Students may receive credit for a particular language only once. Students will not receive credit for both CS 302 and CS 368 in the same language, or for both CS 367 and CS 368 in the same language.

371 Technology of Computer-Based Business Systems 3 cr. (also Info Sys)

Overview of computers, their attendant technology, and the implications of this technology for large-scale, computer-based information systems. Topics include hardware, system software, program development, files, and data communications. Prereq: Bus 370 and CS 302, or equivalent experience with consent of instructor.

412 Introduction to Numerical Methods 3 cr.

Interpolation, solution of linear and nonlinear systems of equations, approximate integration and differentiation, numerical solution of ordinary differential equations. Prereq: Math 223/234, CS 302, or equivalent and knowledge of matrix algebra. 

425 Introduction to Combinatorial Optimization 3 cr. (also Math & IE)

Exact and heuristic methods for key combinatorial optimization problems such as: shortest path, maximum flow problems, and the traveling salesman problem. Techniques include problem-specific methods and general approaches such as branch-and-bound, genetic algorithms, simulated annealing, and neural networks. Prereq: Math 221 or CS 302 or consent of instructor.

435 Introduction to Cryptography 3 cr. (also Math & ECE)

Cryptography is the art and science of transmitting digital information in a secure manner. This course will provide an introduction to its technical aspects. Prereq: Math 320 or 340 or consent of instructor.

460 Artificial Intelligence Programming Languages and Tools 3 cr.

Symbolic computation; Lisp programming; Prolog programming; knowledge representation languages based on logic, objects, frames, rules; symbolic pattern matching; automatic inferencing and reasoning techniques; special-purpose languages and computer architectures for artificial intelligence applications. Prereq: CS 367. (Last taught: Spring 92)

475 Introduction to Combinatorics 3 cr. (also Math & Stat)

Problems of enumeration, distribution and arrangement. Inclusion-exclusion principle. Generating functions and linear recurrence relations. Combinatorial identities. Graph coloring problems. Finite designs. Systems of distinct representatives and matching problems in graphs. Potential applications in the social, biological, and physical sciences. Puzzles. Emphasis on problem solving. Prereq: Math 320 or 340 and consent of instructor.

509 Mathematics for Computer Science 3 cr.

Program correctness and termination, invariants, pre- and post-conditions, axiomatic semantics. Representing time and space requirements of programs by summations, recurrences, and generating functions. Exact and asymptotic solutions. Analysis of algorithms for sorting, searching, and data structure traversal. Prereq: CS 367 and Math 222, or consent of instructor. (Last taught: Fall 87)

513 Numerical Linear Algebra 3 cr. (also Math)

Direct and iterative solution of linear and nonlinear systems and of eigenproblems. LU and symmetric LU factorization. Complexity, stability, and conditioning. Nonlinear systems. Iterative methods for linear systems. QR-factorization and least squares. Eigenproblems: local and global methods. Prereq: Math 340 or equivalent; CS 302 or equivalent.

514 Numerical Analysis 3 cr. (also Math)

Polynomial forms, divided differences. Polynomial interpolation. Polynomial approximation: uniform approximation and Chebyshev polynomials, least-squares approximation and orthogonal polynomials. Splines, B-splines and spline approximation. Numerical differentiation and integration. Numerical methods for solving initial and boundary value problems for ordinary differential equations. Prereq: Math 340 or equivalent; CS 302 or equivalent.

520 Introduction to Theoretical Computer Science 3 cr.

Survey of the basic concepts of theory, including context-free and context-sensitive languages, regular sets, finite and pushdown automata, Turing machines, undecidable problems, complexity with respect to time and space, NP-completeness, and reducibilities. Prereq: CS 367 and Math 222, or consent of instructor.

525 Linear Programming Methods 3 cr. (also IE, Math, & Stat)

Real linear algebra over polyhedral cones, theorems of the alternative for matrices. Formulation of linear programs. Duality theory and solvability. The simplex method and related methods for efficient computer solution. Perturbation and sensitivity analysis. Applications and extensions, such as game theory, linear economic models and quadratic programming. Prereq: Math 443 or 320 or 340 or consent of instructor.

526 Advanced Linear Programming 4 cr. ugrad, 3 cr. grad (also IE)

Review of linear programming. Polynomial time methods for linear programming. Quadratic programs and linear complementarity problems and related solution techniques. Solution sets and their continuity properties. Error bounds for linear inequalities and programs. Parallel algorithms for linear and quadratic programs. Prereq: CS 525 or equivalent, CS 302 or equivalent, or consent of instructor. (Last taught: Spring 92)

532 Theory and Applications of Pattern Recognition 3 cr. (also ECEME)

Pattern recognition systems and components; decision theories and classification; discriminant functions; supervised and unsupervised training; clustering; feature extraction and dimensional reduction; sequential and hierarchical classification; applications of training, feature extraction, and decision rules to engineering problems. Prereq: ECE 331 or Math 431 or consent of instructor.

533 Image Processing 3 cr. (also ECE)

Mathematical representation of continuous and digital images; models of image degradation; picture enhancement, restoration, segmentation, and coding; pattern recognition, tomography. Prereq: ECE 330 or consent of instructor; Math 320 or 340 or equiv. recommended.

536 Introduction to Programming Languages and Compilers
4 cr. ugrad, 3 cr. grad.

Introduction to the theory and practice of compiler design. Comparison of features of several programming languages and their implications for implementation techniques. Several programming projects required. Prereq: CS 367 and either CS 354 or 552.

537 Introduction to Operating Systems 4 cr. ugrad, 3 cr. grad.

Input-output hardware, interrupt handling, properties of magnetic tapes, discs and drums, associative memories and virtual address translation techniques. Batch processing, time sharing and real-time systems, scheduling resource allocation, modular software systems, performance measurement and system evaluation. Prereq: CS 367 and 354.

538 Introduction to the Theory and Design of Programming Languages 3 cr.

Design and theory of programming languages: procedural, object-oriented, functional and logic paradigms. Serial and concurrent programming. Execution models and formal specification techniques. Prereq: CS 354 and 367.

539 Introduction to Artificial Neural Network and Fuzzy Systems 3 cr. (also ECE, ME)

Theory and applications of artificial neural networks and fuzzy logic: multi-layer perceptrons, self-organizing maps, radial basis networks, Hopfield networks, recurrent networks, fuzzy-set theory, fuzzy logic control, adaptive fuzzy neural networks, genetic algorithms, and evolutionary computing. Applications to control, pattern recognition, nonlinear system modeling, speech and image processing. Prereq: CS 302, or 310, or knowledge of C.

540 Introduction to Artificial Intelligence 4 cr. ugrad, 3 cr. grad.

Principles of knowledge-based search techniques; automatic deduction; knowledge representation using predicate logic, semantic networks, connectionist networks, frames, rules; Applications in problem solving, expert systems, game playing, vision, natural language understanding, learning, robotics; Lisp programming. Prereq: CS 367.

545 Natural Language and the Computer 3 cr.

The course covers basic techniques and tools in natural language processing: generative grammars, parsing, dictionary construction, semantic networks, generation of text from a knowledge base, natural language interfaces, and machine translation. Prereq: CS 536 or 537 or 564 or consent of instructor.

547 Computer Systems Modeling Fundamentals 3 cr.

An introduction to basic tools and applications for modeling and analysis of computer systems. Fundamentals of network flow graphs, graph models of computation and stochastic models of computer system performance. Network delay analysis and capacity planning, reachability analysis for deadlock detection in distributed systems, Markov chains, elementary queueing theory, basic concepts of queueing network models and associated analyses. Prereq: Math 223, CS 367 and 354.

550 Computers and Society 3 cr. (also Social Studies)

The effect of scientific and technological change on social and economic organization. Historical examples. Comparison, with these examples, of the computer and its effect. Consideration of possible uses of computer systems, social change which they would influence, and the choices they present. Prereq: Junior standing. (Last taught: Fall 90)

552 Introduction to Computer Architecture 3 cr. (also ECE)

The design of computer systems and components. Processor design, instruction set design, and addressing; control structures and microprogramming; memory management, caches, and memory hierarchies; interrupts and I/O structures. Prereq: ECE/CS 352 and CS/ECE 354; co-req: CS 367.

558 Introduction to Computational Geometry 3 cr. (also ME and IE)

Introduction to fundamental geometric computations and algorithms, and their use for solving engineering and scientific problems. Computer representations of simple geometric objects and paradigms for algorithm design. Applications from areas of engineering analysis, design and manufacturing, biology, statistics, and other sciences. Prereq: CS 367 or equivalent, Math 223 or equivalent, or consent of instructor.

559 Computer Graphics 3 cr.

Survey of computer graphics. Image representation, formation, presentation, composition and manipulation. Modeling, transformation, and display of geometric objects in 2 and 3 dimensions. Representation of curves and surfaces. Rendering, animation, multi-media and visualization. Prereq: Math 320 or 340 (linear algebra), and CS 367.

562 Expert Systems: Design and Implementation 3 cr.

Design of expert knowledge bases: choice of appropriate representation, knowledge base structure, connection with databases. Knowledge acquisition: possible knowledge sources, logical analysis and formalization, consistency and adequate checking. Inference engine construction and tailoring: choice and control of inferencing strategies, handling uncertain knowledge, achieving efficiency. Display and dialog design. Implementation of explanation capabilities. Evaluation of knowledge engineering environments and languages. Prereq: CS 460 or 540. (Last taught: Spring 90)

564 Database Management Systems: Design and Implementation
4 cr. ugrad, 3 cr. grad.

What a database management system is; different data models currently used to structure the logical view of the database: relational, hierarchical, and network. Hands-on experience with relational and network-based database systems. Implementation techniques for database systems. File organization, query processing, concurrency control, rollback and recovery, integrity and consistency, and view implementation. Prereq: CS 367 and 354.

576 Introduction to Bioinformatics 3 cr (also BMI).

Algorithms for computational problems in molecular biology. The course will study algorithms for problems such as: genome sequencing and mapping, pairwise and multiple sequence alignment, modeling sequence classes and features, phylogenetic tree construction, and gene-expression data analysis. Prereq: CS 367 and Math 222.

577 Introduction to Algorithms 3 cr.

Survey of important and useful algorithms for sorting, searching, pattern-matching, graph manipulation, geometry, and cryptography. Paradigms for algorithm design. Techniques for efficient implementation. Prereq: CS 367 and Math 222, or consent of instructor.

635 Tools and Environments for Optimization 3 cr. (also IE)

Formulation and modeling of applications from computer sciences, operations research, business, science and engineering involving optimization and equilibrium models. Survey and appropriate usage of software tools for solving such problems, including modeling language use, automatic differentiation, subroutine libraries and web-based optimization tools and environments. Prereq: CS 302, Math 340 or equivalent.

638 Undergraduate Topics in Computing 3 cr.

Prereq: Consent of instructor.

640 Introduction to Computer Networks 3 cr.

Architecture and components of computer communications networks; protocol concepts and standards; OSI Reference Model; network/protocol architecture examples: Internet, ISO/CCITT, SNA, DECNET, public data networks; local area networks-gateways, internetworking, transport and application protocols. Prereq: CS 537.

679 Computer Game Technology 3 cr.

Survey of software technology important to computer games and other forms of interactive technology: Real-time image generation, managing complex geometric models, creating virtual characters, simulating physical phenomenon, networking technology for distributed virtual environments. Prereq: CS 559.

681-682 Senior Honors Thesis 3 cr. per sem.

Prereq: Honors candidacy and consent of instructor.

691-692 Senior Thesis 2-3 cr. per sem.

(A year's course must be taken to get credit.) Prereq: Consent of instructor.

699 Directed Study 1-6 cr.

Prereq: Junior or senior standing and consent of instructor.

701 Programming Languages and Compilers 3 cr.

Design and implementation of compilers for modern programming languages. Emphasis on tools for compiler construction. Prereq: CS 536.

702 Compiler Construction 3 cr.

Techniques for the implementation of compilers for sophisticated programming languages. Prereq: CS 536; co-req: CS 701 or consent of instructor. (Last taught: Spring 93)

703 Advanced Topics in Programming Languages and Compilers 3 cr.

Advanced topics in compiling and programming languages design. Advanced parsing techniques; automatic syntactic error correction; local and global code optimization; attribute grammars; programming language design issues (data and control abstractions, specification and verification of high level languages). Prereq: CS 701.

704 Principles of Programming Languages 3 cr.

Introduction to principles of advanced programming languages and programming-language theory. Topics include: lambda-calculus, functional languages, polymorphic functions, type inference, structural induction, lazy evaluation, operational semantics, denotational semantics, and axiomatic semantics. Prereq: CS 536 or consent of instructor.

709 Mathematical Techniques for Analysis of Algorithms 3 cr.

Techniques for quantitative analysis of algorithms. Charging arguments, amortization, probabilistic methods. Adversary and information lower bounds. Use of methods from combinatorics, complex analysis, and asymptotics in obtaining precise analyses of quicksort, chained hashing, and other algorithms. Prereq: CS 577, knowledge of complex variables at the level of Math 321. (Last taught: Spring 96)

712 Finite Difference Methods 3 cr.

Development of finite difference methods for initial and boundary value problems for hyperbolic, parabolic, and elliptic partial differential equations. Analysis of accuracy and stability of difference schemes. Direct and iterative methods for solving elliptic difference schemes. Applications from science and engineering. Prereq: CS 302, 412, Math 419 or equivalent, or consent of instructor.

713 Numerical Analysis of Differential Equations 3 cr. (also Math)

Analysis of numerical methods for ordinary differential equations. Single step and multistep methods. Stiff equations. Introduction to Galerkin methods; collocation, least squares, etc. Analysis of methods for the solution of large sparse systems of boundary value problems. Prereq: Graduate standing and consent of instructor.

717(-718) Numerical Functional Analysis 3 cr. per sem. (also Math)

Fundamentals of normed spaces and linear operators; analysis of nonlinear operators; existence of, and iterative methods for, solutions of linear and nonlinear operator equations, error estimation; variational theory and minimization problems; monotonicity theory. Development of abstract tools and application of them to the general analysis of numerical methods for such problems as differential and integral equations. Prereq: CS 513, 514 and Math 234 or consent of instructor. (CS 718 is infrequently offered.)

719 Network Flows 3 cr. (also IE)

Optimization problems and techniques for networks, including single and multi-commodity network flow, critical path, and facilities location problems. The theory of totally unimodular matrices and its relationship to network optimization. Prereq: CS 525 or consent of instructor.

720 Integer Programming 3 cr. (also IE)

Formulation of integer programming problems and the characterization of optimization problems representable as integer and mixed-integer programs. The degree of difficulty of classes of integer programs and its relation to the structure of their feasible sets. Optimality conditions. Branch-and-bound, cutting plane, and decomposition methods for obtaining solutions or approximating solutions. Prereq: CS 525 or consent of instructor.

723 Dynamic Programming and Associated Topics 3 cr. (also IE)

A generalized optimization model; discrete and continuous state spaces; deterministic and stochastic transition functions. Multistage decision processes. Functional equations and successive approximation in function and policy spaces. Relationship to linear programming and acyclic networks. Markovian decision processes. Solution methods and computational problems. Associated topics and applications such as calculus of variations; feedback control processes; and optimal trajectories, inventory and maintenance policies, and stopping rules. Prereq: CS 525 or IE 623; Math 521 or CS 726; Math 431 and computer programming, or consent of instructor. (Last taught: Spring 83)

726 Nonlinear Programming Theory and Applications 3 cr. (also IE & Stat)

Separation theorems and other properties of convex sets in finite-dimensional spaces. Formulation of nonlinear programming problems. Saddle-point (Lagrangian) optimality criteria for convex nonlinear programs. Duality theorems for convex programs. First, and second-order Kuhn-Tucker stationary-point theory for differentiable non-convex programs. Perturbation and sensitivity analysis. Applications and extensions. Prereq: Familiarity with basic mathematical analysis (e.g., Math 521) and either Math. 443 or 320, or consent of instructor.

727 Advanced Nonlinear Programming 3 cr. (also IE)

Conjugate convex functions and Fenchel-Rockafellar duality. Monotone operators and subdifferentials. Advanced methods for nonconvex problems, such as variational principles, generalized gradients, degree and index arguments, and multivalued ordinary differential equations. Applications to economics and operations research. Prereq: CS 726 or consent of instructor.

730 Nonlinear Programming Algorithms 3 cr. (also IE)

Rigorous description, and convergence proofs of various nonlinear programming algorithms. Emphasis on algorithms that are important, can be proved to converge and are practical. Unification of classes of algorithms and convergence rates. Each student will code and test one of the algorithms described in the course. Prereq: Consent of instructor.

731 Advanced Artificial Intelligence 3 cr.

Learning and hypothesis formation; knowledge acquisition; deductive and inductive inference systems; reasoning techniques involving time, nonmonotonic reasoning, spatial reasoning, truth maintenance systems; planning strategies. Prereq: CS 540. (Last taught: Spring 92)

732 Topics in Artificial Intelligence 3 cr.

Advanced topics in artificial intelligence. A variable content course which may be repeated any number of times for credit. Prereq: Consent of instructor. (Last taught: Fall 89)

733 Computational Methods for Large Sparse Systems
3 cr. (also Math & ECE)

Sparse matrices in engineering and science. Sparsity preservation. Numerical error control. Transversal algorithms, Tarjan's algorithm, Tinney's algorithms, minimum degree, banding, nested dissection, frontal methods. Linear and nonlinear equation solving. Compensation. Sparse vector methods. Iterative methods. ODE and PDE applications. Prereq: CS 367 and (ECE334 or ( 412 and Math 340)); or consent of instructor.

736 Advanced Operating Systems 3 cr.

Advanced topics in operating systems, including process communication, resource allocation, multiprocess and network operating systems, kernel philosophies, fault-tolerant systems, virtual machines, high-level language systems, verifiability and proof techniques. Prereq: CS 537 or consent of instructor.

737 Computer System Performance Evaluation and Modeling 3 cr.

Statistical techniques of computer system performance evaluation and measurement. System selection and tuning strategies. Deterministic and probabilistic models of process scheduling and resource allocation. Analytic and simulation models of computer systems. Systematic study of system architectures. Prereq: Math 222, CS 537 or 736, or consent of instructor.

739 Distributed Systems 3 cr.

Basic concepts, distributed programming; distributed file systems; atomic actions; fault tolerance, transactions, program & data replication, recovery; distributed machine architectures; security and authentication; load balancing and process migration; distributed debugging; distributed performance measurement; distributed simulation techniques; distributed applications; correctness considerations and proof systems. Prereq: CS 736 or consent of instructor. (Infrequently offered.)

740 Advanced Computer Networks 3 cr.

Advanced topics in computer communications networks: Congestion and flow control; Routing; Rate-based protocols; High-speed interfaces and technologies; Metropolitan area networks; Fast packet switching technologies; Advanced applications; Network services: name service, authentication, resource location. Prereq: CS 640.

747 Advanced Computer Systems Analysis Techniques 3 cr.

Advanced analytical modeling techniques for performance analysis of computer systems, including discrete-parameter (embedded) Markov Chains, M/G/1 queues, stochastic Petri nets, queueing networks, renewal theory, and sample path analysis. Application areas include high performance computer architectures, databases, and operating system resource allocation policies. Prereq: CS 547 or consent of instructor.

750 Real-Time Computing Systems 3cr. (also ECE)

Introduction to the unique issues in the design and analysis of computer systems for real-time applications. Hardware and software support for guaranteeing timeliness with and without failures. Resource management, time-constrained communication, scheduling and imprecise computations, real-time kernels and case studies. Prereq: CS 552 and 537 or consent of instructor.

752 Advanced Computer Architecture 3 cr. (also ECE)

Advanced techniques of computer design. Parallel processing and pipelining; multiprocessors, multi-computers and networks; high performance machines and special purpose processors; data flow architecture. Prereq: ECE/CS 552 and CS 537.

755 VLSI Systems Design 3 cr. (also ECE)

Overview of MOS devices and circuits; introduction to integrated circuit fabrication; topological design of data flow and control; interactive graphics layout; circuit simulation; system timing; organizational and architectural considerations; alternative implementation approaches; design project. Prereq: ECE 340, ECE/CS 352, and CS/ECE 552 or consent of instructor.

756 Computer-Aided Design for VLSI 3 cr. (also ECE)

Broad introduction to computer-aided design tools for VLSI, emphasizing implementation algorithms and data structures. Topics covered: design styles, layout editors, symbolic compaction, module generators, placement and routing, automatic synthesis, design-rule checking, circuit extraction, simulation and verification. Prereq: CS 367, good programming skills, CS 352; CS 755 strongly recommended. (Last taught: Spring 94)

757 Advanced Computer Architecture 3 cr. (also ECE)

Parallel algorithms, principles of parallelism detection and vectorizing compilers, interconnection networks, SIMD/MIMD machines, processor synchronization, data coherence, multis, dataflow machines, special purpose processors. Prereq: CS 752 or consent of instructor.

760 Machine Learning 3 cr.

Computational approaches to learning: including inductive inference, explanation-based learning, analogical learning, connectionism, and formal models. What it means to learn. Algorithms for learning. Comparison and evaluation of learning algorithms. Cognitive modeling and relevant psychological results. Prereq: CS 540.

761 Deduction and Problem Solving by Computer 3 cr.

Study and evaluation of programs that use automated deduction to solve problems. Variants of Prolog, such as constraint logic programming, parallel prologs, and deductive database systems. Resolution theorem provers. Verification systems, such as the Boyer-Moore prover. Prereq: CS 540.

762 Deduction and Problem Solving by Computer 3 cr.

Critical study and evaluation of programs and of human-computer interactive systems that play games such as chess, bridge, and GO; solve problems and puzzles; and prove theorems in various mathematical domains. Different kinds of languages, including natural language, usable for problem formulation and for solution planning and testing. Prereq: CS 540 or consent of instructor. (Last taught: Spring 92)

764 Topics in Database Management Systems 3 cr.

Implementation of database management systems, the impact of new technology on database management systems, back-end database computers, distributed database management systems, concurrency control and query execution in both distributed and centralized systems, implementation of multiple user views, roll-back and recovery mechanisms, database translation. Prereq: CS 564, 537, and 536 or consent of instructor.

765 Perceptual Recognition 3 cr.

High-level perceptual processing by computer; recognition of complex objects and scenes; advanced computer vision systems; relation to the living visual system; algorithm-structured multi-computer architectures for perception; binocular and multi-modal vision; recognition and tracking of moving objects; learning in perceptual systems; perceptual-motor control of robots. Prereq: CS 731 or consent of instructor. (Last taught: Fall 91)

766 Computer Vision 3 cr.

Fundamentals of image analysis and computer vision; image acquisition and geometry; image enhancement; recovery of physical scene characteristics; shape-from techniques; segmentation and perceptual organization; representation and description of two-dimensional and three-dimensional objects; shape analysis; texture analysis; goal-directed and model-based systems; parallel algorithms and special-purpose architectures. Prereq: CS 540.

767 Graph Theory 3 cr.

Theory of graphs, including adjacency and incidence matrices, planarity, hamiltonian circuits, Euler's formula, directed graphs, and trees. The efficiency of the known algorithms for performing various operations on graphs. Prereq: CS 367 and either CS 475 or 577, or consent of instructor. (Last taught: Spring 87)

771 Computational Linguistics 3 cr. (also Ling)

Tools, techniques and literature of computational linguistics with applications in artificial intelligence and cognitive science. Topics include syntactic and semantic parsing, natural language understanding, text generation, machine translation, and speech recognition and production. Prereq: CS 540 or 545 or Linguistics 530 or consent of instructor.

773-774 Problems in Computational Linguistics 3 cr. per sem. (also Ling)

Current research in computational linguistics, coupled with original directed research. Prereq: CS 545 or 771 or consent of instructor. 

776 Advanced Bioinformatics 3 cr (also BMI).

Advanced course covering computational problems in molecular biology. The course will study algorithms for problems such as: modeling sequence classes and features, phylogenetic tree construction, gene-expression data protein and RNA structure prediction, and whole-genome analysis and comparisons. Prereq: CS 576.

777 Computer Animation 3 cr.

Survey of technical issues in the creation of moving and dynamic computer imagery. Principles of animation. Manual motion specification and keyframing. Procedural and simulation-based motion synthesis. Motion capture processing, editing and use. Animation systems. Modeling, rendering and video issues relating to animation. Image-based animation methods and warping. Applications of animation such as games and virtual environments. Basic introduction to artistic issues in animation, such as cinematography. Special Effects for Film and Video. Prereq: CS 559.

779 Rendering Images with Computers 3 cr.

Survey of models and algorithms used in the computer generation of images. The physics of global illumination, the global illumination equation, approximations and techniques for solving them. Large database rendering. Image-based methods. Stylized rendering. Point-based (splatting) algorithms. Prereq: CS 559.

780 Robot Motion Planning 3 cr. (also ECE & ME)

A unified view on geometric, algorithmic, and computational issues of automatic motion planning of motion for mobile robots and arm manipulators in a complex environment. Planning with complete information - configuration space, connectivity graphs, computational complexity; with partial information - algorithm convergence, topological issues. Effect of system kinematics. Relation between sensing media and algorithm efficiency. Prereq: Math 340 or equivalent and consent of instructor.

784 Data Models and Languages 3 cr.

Study of database programming languages. Topics include: Logic based languages, embedded query languages, object-oriented languages. There will be coverage of types, persistence, inheritance, object identity, data models, implementation issues, and case studies of actual systems and languages. Prereq: CS 564 and 536 or consent of instructor.

787 Advanced Algorithms and Data Structures 3 cr.

Algorithms for graph manipulation, geometry, matrix multiplication, string processing, information retrieval, etc. Mathematical models and analyses. Lower bounds. Probabilistic, distributed, and parallel algorithms. Advanced data structures. Prereq: CS 577 or 509.

790 Master's Thesis 1-9 cr.

For students writing a Master's thesis or project. Prereq: Master's candidate.

799 Master's Research 1-9 cr.

For pre-Master's students doing research projects. Prereq: Master's candidate.

810 Models and Formalisms for Computation 3 cr.

Models of computation, Turing machines, recursive functions, Church's thesis, undecidable problems, degrees of unsolvability. Denotational semantics, logic of programs. Applications to automata, formal languages, program verification, programming languages, and complexity. Prereq: CS 520.

812 Arithmetic Algorithms 3 cr.

Design, implementation, and analysis of algorithms for exact arithmetic on arbitrarily large integers, Gaussian integers and rational numbers. Algorithms for modular arithmetic and internal arithmetic. Algorithms for integer greatest common divisor calculation and factorization. Classical and modern algorithms. Prereq: Math 541 and CS 367, or consent of instructor.

813-814 Algebraic Algorithms 3 cr. per sem. (also Math)

Algorithms for arithmetic operations on multivariate polynomials with integral, rational and finite field coefficients. Polynomials remainder sequences and subresultants. Algorithms for multivariate polynomial resultant and greatest common divisor calculation. Arithmetic operations on multivariate rational functions. Algorithms for exact linear algebra of systems with polynomial coefficients. Exact calculation of the real and complex zeros of polynomials. Algorithms for factorization of polynomials into irreducibles. Calculations with real algebraic numbers. Quantifier elimination for real closed fields. Operations on formal power series. Prereq: CS 812 and Math 541-542, or consent of instructor. (Last taught: Fall 84-Spring 85)

815 Transcendental Function Algorithms 3 cr. (also Math)

Formalism for function class representations; canonical and normal forms; diophantine sets and relation to recursively enumerable sets; Richardson's theorem; Lindemann theorems; canonical and normal form algorithms; fundamental operations on polynomials and rational functions with Gaussian integer coefficients; fundamental operations on various subclasses of the elementary transcendental functions; indefinite integration of rational functions; differential fields; Liouville integration theory; Risch integration algorithm. Prereq: CS 814 or consent of instructor. (Infrequently offered.)

820 Theory of Automata and Formal Languages 3 cr.

Advanced treatment of results concerning finite automata, regular sets, context-free and context-sensitive languages, Turing machines. Extensions of the models to multi-head, multi-tape, and probabilistic machines. Comparison of models. Applications to programming language design. Prereq: CS 520.

830 Abstract and Concrete Complexity Theory 3 cr.

Study of computation with limited resources (time, space, etc.). Complexity hierarchies, structure of P, NP, PSPACE, co-NP. Strong NP-completeness, isomorphism completeness, relativized complexity. Abstract complexity, probabilistic complexity. Lower bounds, time-space tradeoffs, pebbling, alternation. Prereq: CS 520. (Infrequently offered.)

837 Topics in Numerical Analysis 3 cr. (also Math)

Topic selected from advanced areas. A variable content course which may be repeated any number of times for credit. Prereq: Consent of instructor. (Infrequently offered.)

838 Topics in Computing 3 cr.

Topics selected from advanced areas. A variable content course which may be repeated any number of times for credit. Prereq: Consent of instructor. (Infrequently offered.)

880 Topics in Theoretical Computer Science 3 cr.

Advanced topics in algorithms, complexity, and models of computation, discussed in a seminar format. The exact topic varies. Prereq: consent of instructor. (Infrequently offered.)

881-882 Numerical Methods for Ordinary Differential Equations
3 cr. per sem. (also Math)

Initial-value problems and boundary value problems for systems of nonlinear ordinary differential equations; convergence and stability of computational procedures; some topics chosen from the design of general computer programs, variational problems. Prereq: CS 514 and Math 417, or consent of instructor. (Infrequently offered.)

883-884 Numerical Methods for Partial Differential Equations
3 cr. per sem. (also Math)

Initial-value problems for systems of partial differential equations; boundary value problems, stability and convergence; iterative methods; applications to the classical problems of mathematical physics. Prereq: CS 712 and 717, or consent of instructor. (Infrequently offered.)

885 Matrix Theory in Numerical Analysis 3 cr. (also Math)

Methods for determining exclusion and inclusion regions for the eigenvalues of an NxN matrix. Variational methods for eigenvalues. The QR and LR algorithms. The Perron-Frobenius theory of positive matrices. Error analysis of numerical methods for computations in linear algebra. Prereq: CS 717 or consent of instructor. (Infrequently offered.)

887 Approximation Theory 3 cr. (also Math)

Interpolation and approximation by means of interpolation; uniform approximation; best approximation; approximation in normed linear spaces; spline functions; orthogonal polynomials; degree of approximation; computational procedures. Prereq: Consent of instructor.

899 Pre-Dissertator Research 1-9 cr.

Prereq: Post-Master's, pre-dissertator status.

990 Dissertation 1-6 cr.

Prereq: Dissertator status.

999 Independent Study and Research 1-6 cr.

Prereq: Dissertator status.

Non-Credit Seminars

The nine research areas in the Department each run an advanced, non-credit seminar where graduate students, visitors, and faculty members from within and outside the Department present their latest research or discuss recently published papers. These seminars give graduate students the opportunity to learn about current research problems and to get valuable feedback on their own research.

Also, each year the Department runs a Distinguished Lecturer Series where 6-8 leading researchers in a subfield of computer science visit. The visitors give two lectures - one to a general computer science audience and a second, more specialized, talk targeted toward researchers in the given subfield. Recent topics have been programming languages, computing theory, operating systems, and machine learning.

Computing Facilities

The Department contains a large array of sophisticated computer hardware which supports both our research and instructional missions. This equipment is maintained by a central facility, the Computer Systems Laboratory. We are continuously upgrading and enhancing our systems to offer the most up-to-date computing resources possible. Much of the equipment was donated by our industrial affiliates; their support has been invaluable in enabling us to develop a first-rate computing environment.

All faculty, supported graduate students (i.e., TA's, RA's, and Fellows), and staff have high-performance workstations on their desks. These machines include various models of Sun, Intel based and AMD based workstations. Desktop workstations run one of Windows 2000, RedHat Linux or Solaris.

The Department is recognized as a national leader in research on parallel and distributed computing. Current work involves experimental design of both parallel algorithms and computer architectures in support of a wide range of projects, including mathematical programming, parallel-program debugging tools, performance modeling and analysis, computer vision, databases and many others. The Topaz and PRISM projects, funded by NSF Institutional Infrastructure grants, have enabled the Department to acquire parallel hardware to enhance this work. Components of our parallel computing environment include a cluster of 100 dual processor Xeon CPU's, a second cluster of 150 dual processor PIII's, a 16 node SP3, a 32 node Netra cluster and 6 SUN Enterprise servers used to perform simulations and experiments on large-scale parallel architectures and large-scale parallel computations.

A locally developed software package called Condor provides additional computing power for compute-bound tasks such as simulations. Condor automatically locates workstations which are idle and transfers jobs to them. The jobs are periodically checkpointed and migrate from machine to machine until completion. Studies of Condor showed that jobs submitted to Condor made use of over 180 CPU-days per week of otherwise wasted machine cycles.

All of our research and instructional facilities are connected to local area networks, each of which is connected to every other and to the Internet by routers. The network allows remote and automated use of departmental resources and information sharing. There are currently about 3 Terabytes of storage available to most of our machines through the AFS distributed file system. Much of the research information produced by the Department is made freely available to the world through our Web server.

In addition to the research facilities, the Department has a number of workstations to support work in undergraduate and graduate courses. These include 60 SPARCstation 20 workstations, 100 Intel PIII based workstations running Windows 2000, 40 Intel PIII based workstations running RedHat Linux. Our instructional laboratories support more than 2000 students each semester.

Additional Information

Requirements for a Ph.D. Minor in Computer Sciences

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:
  1. 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.
  2. 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 A-F manner.
  3. At least one of the courses must involve a significant amount of programming in a structured language, such as C++, C, or Lisp. CS 367 will meet this requirement, as will many of the Systems and AI courses which have CS 367 has a prerequisite.
  4. At least one of the courses must be numbered 700 or above, 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.
  5. 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.

Adding Computer Sciences as a Second Major (M.S. only)

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:

  1. Be very near completion of a Graduate Degree from the U.W. in their major department.

  2. 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.
  3. Have obtained grades of AB or better in at least three CS courses numbered 500 or above. At least one of these courses must be at the 700 level. All of these courses must have been taught by a member of the CS Department faculty.
  4. Have two letters of recommendation from CS Department faculty members.
  5. 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 CS 367 (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 publication Guidelines for Joint, Double, and Dual Master's Degrees.

Technical Reports

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 via theWorld-Wide Web.

Alumni Group

The Department has an Alumni Group, which publishes a newsletter, Badger Bytes, and an annual alumni directory. More information is available by emailing alumni@cs.wisc.edu or via theAlumni Group's World-Wide Web page.

SACM - Student ACM Chapter

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.

Key Contacts (2002-2003)

The following people are currently in charge of departmental activities that are relevant to CS graduate students:
Department Chair

David DeWitt (dewitt@cs.wisc.edu)
Associate Chair

John Strikwerda (strik@cs.wisc.edu)
Graduate Admissions

Lorene Webber (admissions@cs.wisc.edu)
Graduate Coordinator

Lorene Webber (lorene@cs.wisc.edu)
Assistant to the Chair (supervises TAs)

Bob Holloway (bobh@cs.wisc.edu)
Graduate Advising Committee (GAC) Chairs

Charles Fischer (fischer@cs.wisc.edu) and Miron Livny (miron@cs.wisc.edu)
SACM President

Mark Rich (sacm@cs.wisc.edu)
Head Department Secretary (has copies of insurance forms, etc.)

Marie Johnson (marie@cs.wisc.edu)
Director of the Computer Systems Laboratory

Paul Beebe (lab@cs.wisc.edu)
Technical Reports

Cathy Richard (tech-reports@cs.wisc.edu)
Travel Reimbursement

Cathy Richard (cathy@cs.wisc.edu)
General Information

email: cs@cs.wisc.edu
phone: (608) 262-1204
fax: (608) 262-9777
URL: http://www.cs.wisc.edu/
mailing address:
Computer Sciences Department
University of Wisconsin
1210 W. Dayton Street
Madison, WI 53706

 
 

This document was generated using the LaTeX2HTML translator Version 2002 (1.67)

Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

The command line arguments were:
latex2html -split 1 -t 'Graduate Guidebook - UW-Madison CS Dept' -no_navigation -dir /p/publications/pubs/public/html/grad-guidebook2002 -address 'This page was automatically created. Send comments to strikwerda@cs.wisc.edu' grad-guidebook.tex

The translation was initiated by John Strikwerda on 2002-07-22


This page was automatically created. Send comments to ron@cs.wisc.edu