Department of Computer Science

www.cs.unc.edu

JAN F. PRINS, Chair

Professors

James Anderson (62) Distributed and Concurrent Algorithms, Real-Time Systems, Fault-Tolerant Computing, Formal Methods

Sanjoy K. Baruah (78) Scheduling Theory, Real-Time and Safety-Critical System Design, Computer Networks, Resource Allocation and Sharing in Distributed Computing Environments

Gary Bishop (39) Hardware and Software for Man-Machine Interaction, 3D Interactive Computer Graphics, Virtual Environments, Tracking Technologies, Image-Based Rendering

Frederick P. Brooks Jr. (9) 3D Interactive Computer Graphics, Human-Computer Interaction, Virtual Worlds, Computer Architecture, the Design Process

Prasun Dewan (63) User Interfaces, Distributed Collaboration, Software Engineering Environments, Object-Oriented Databases, Mobile Computing

Henry Fuchs (11) High-Performance Graphics Hardware, 3D Medical Imaging, Head-Mounted Displays, Virtual Environments

John H. Halton (26) Applications of Combinatorial and Probabilistic Methods and of Scientific and Mathematical Analysis to Computational, Scientific, and Engineering Problems

Kevin Jeffay (40) Real-Time Systems, Operating Systems, Distributed Systems, Multimedia Networking, Computer-Supported Cooperative Work, Performance Evaluation

Anselmo A. Lastra (52) Interactive 3D Computer Graphics, Hardware Architectures for Computer Graphics

Ming C. Lin (72) Physically-Based and Geometric Modeling, Applied Computational Geometry, Robotics, Distributed Interactive Simulation, Virtual Environments, Algorithm Analysis

Dinesh Manocha (58) Geometric and Solid Modeling, Physically-Based Modeling, Computer Graphics, Simulation-Based Design, Symbolic and Scientific Computation, Computational Geometry

Fabian Monrose (99) Computer and Network Security, Biometrics and Techniques for Strong User Authentication

Stephen M. Pizer (6) Image Analysis and Display, Human and Computer Vision, Graphics, Numerical Computing, Medical Imaging

David A. Plaisted (28) Mechanical Theorem Proving, Term Rewriting Systems, Logic Programming, Algorithms

Jan F. Prins (33) Parallel Algorithms, Languages, and Architectures; Computational Biology and Bioinformatics; High-Level Programming Languages; Compilers; Computer-Based Assistive Technologies

Daniel A. Reed (92) Design of Very High-Speed Computers, Providing New Computing Capabilities for Scholars in Science, Medicine, Engineering and the Humanities; Tools and Techniques for Capturing and Analyzing the Performance of Parallel Systems; Collaborative Virtual Environments for Real-Time Performance Analysis

Michael K. Reiter (95 Computer and Network Security, Distributed Systems, Applied Cryptography

John B. Smith (25) Computer-Supported Cooperative Work, Hypermedia Systems, World Wide Web Architecture and Programming, Java Object Storage and Access

Jack S. Snoeyink (79) Computational Geometry, Algorithms for Geographical Information Systems and Computational Biology, Geometric Modeling and Computation, Theory of Computation

David Stotts (59) Computer-Supported Cooperative Work, Hypermedia, Software Engineering and Formal Methods, Programming Languages and Concurrency, Interoperable Distributed Systems

Stephen F. Weiss (10) Information Storage and Retrieval, Natural Language Processing, Communications and Distributed Systems, Computer-Supported Cooperative Work

Associate Professors

Kye S. Hedlund (22) Computer-Aided Design, Computer Architecture, Algorithm Design and Analysis, Parallel Processing

Ketan Mayer-Patel (80) Multimedia Systems, Networking, Multicast Applications

Leonard McMillan (87) Computer Graphics, Image Processing, Computer Vision, Multimedia, Microelectronics, Computer Organization

Marc Pollefeys (89) Computer Vision, Image-Based Modeling and Rendering, Image and Video Analysis, Multi-View Geometry

Montek Singh (84), High-Performance and Low-Power Digital Systems, Asynchronous Circuits and Systems, System-on-a-Chip Design, VLSI CAD

Wei Wang (90) Data Mining, Database Systems, Bioinformatics

Assistant Professors

Jasleen Kaur (88) Design of Networks and Operating Systems, Specifically, Resource Management for Providing Service Guarantees, Internet Measurements, Overlay and Peer-to-Peer Networks, Router Architectures

Svetlana Lazebnik (96) Computer Vision and Object Recognition

Marc Niethammer (98) Quantitative Image Analysis, Cellular Imaging, Shape Analysis, Visual Tracking and Estimation Theory

Research Professors

F. Donelson Smith (42) Computer Networks, Operating Systems, Distributed Systems, Multimedia, Computer-Supported Cooperative Work

Russell M. Taylor II (69) 3D Interactive Computer Graphics, Virtual Worlds, Distributed Computing, Scientific Visualization, Human-Computer Interaction

Research Associate Professors

Gregory F. Welch (71) Human-Machine Interaction, 3D Interactive Computer Graphics, Virtual/Augmented Environment Tracking Systems, Shared Virtual Environments and Telecollaboration

Mary C. Whitton (81) Virtual and Augmented Reality Systems for Data Visualization, Computer Graphics System Architectures

Research Assistant Professor

Jan-Michael Frahm (97) Computer vision, Image-based Modeling, Image and Video Analysis, Multi-view Geometry, Geometric and Photometric Camera Calibration, Markerless Augmented Reality

Lecturers

Timothy L. Quigg (83) Intellectual Property Rights, Industrial Relations, Contract Management, Research Administration

Leandra Vicci (35) Information Processing Hardware: Theory, Practice, Systems, and Applications

Jeannie M. Walsh (56) Computer Education; Social, Legal, and Ethical Issues Concerning Information Technology

Adjunct Professors

Elizabeth Bullitt (111), Computer-Aided Surgery, Computer-Aided Diagnosis

Rob Fowler (110) High Performance Computing

Guido Gerig (75) Image Analysis, Shape-Based Object Recognition, 3D Object Representation and Quantitative Analysis, Medical Image Processing

M. Gail Jones, (113) Science Education, Gender and Science, High-Stakes Assessment, Nanotechnology Education, Haptics and Learning

J. Stephen Marron (114) Smoothing Methods for Curve Estimation

Diane Pozefsky (93) Computer-Supported Cooperative Work, Distributed Systems, Mobile Computing, Networking, Software Engineering and Environments

Julian Rosenman (112) Computer Graphics for Treatment of Cancer Patients, Contrast Enhancement for X-Rays

Richard Superfine(115) Condensed Matter Physics, Biophysics, Microscopy

Sean Washburn (116) Condensed Matter Physics, Materials Science

Adjunct Associate Professors

Stephen R. Aylward (109) Computer-Aided Diagnosis, Computer-Aided Surgical Planning, Statistical Pattern Recognition, Image Processing, Neural Networks

Chris Healey (105) Computer graphics, Scientific Visualization, Perception and Cognitive Vision, Color, Texture, Databases, and Computational Geometry

Sarang C. Joshi (101) Image Analysis, Medical Image Processing, Computer Vision, Computational Anatomy

Frank Mueller (121) Embedded/Real-Time Systems, Parallel / Distributed Systems, Compilers/Code Optimization

Steven E. Molnar (108) Architectures for Real-Time Computer Graphics, VLSI-Based System Design, Parallel Rendering Algorithms

Andrew B. Nobel (107) Statistical Analysis of Microarrays, Analysis of Internet Traffic, Nonparametric Inference, Pattern Recognition: Clustering and Classification

Diane H. Sonnenwald (106) Collaboration among Multidisciplinary, Cross-Organizational Teams; Collaboration; Human Information Behavior; Digital Libraries

Adjunct Assistant Professors

Hye-Chung (Monica) Kum (103) Program Evaluation, Management of Human Services Agencies, Social Welfare Policy and Program Analysis Using KDD (Knowledge Discovery in Databases), Technology on Social Welfare Administrative Data, Research Methods

Maria Papadopouli (102) Applications for Mobile, Wireless, Ad Hoc, and Sensor Networks; Pervasive Computing

Adjunct Research Professors

Nicholas England (119) Systems Architectures for Graphics and Imaging, Scientific Visualization, Volume Rendering, Interactive Surface Modeling

John Poulton (120) Graphics Architectures, VLSI-Based System Design, Design Tools, Rapid System Prototyping

Adjunct Research Associate Professor

Lars Nyland (117) High Performance Computing, Hardware Systems, Computer Graphics and Image Analysis, Geometric Modeling and Computation

Adjunct Research Assistant Professors

Mark Foskey (118) Computer-Aided Surgical Planning, Computer-Aided Diagnosis, Geometric Computation

Martin Styner (94) Medical Image Analysis, 3D Object Shape Representation and Quantitative Shape Analysis, Image Processing

Professors Emeriti

Peter Calingaert

Gyula A. Magó

Donald F. Stanat

The Department of Computer Science at UNC-Chapel Hill, established in 1964, was one of the first independent computer science departments in the United States. Its primary missions are research and graduate and undergraduate teaching. Research particularly emphasizes

• algorithms and complexity theory

• bioinformatics and computational biology

• collaborative systems

• computer graphics and image analysis

• computer vision

• databases and data mining

• distributed systems

• geometric modeling and computation

• haptics

• hardware systems and design

• high-performance and parallel computing

• medical imaging

• multimedia systems

• networking

• operating systems

• real-time systems

• scientific computing

• security

• software engineering methods and environments and

• user interfaces

The M.S. and Ph.D. curricula are oriented toward the design and application of real computer systems and toward that portion of theory that guides and supports practice. The Ph.D. program prepares teachers and researchers for positions with universities, government research laboratories and industry. Academic employment ranges from four-year colleges, where teaching is the primary focus, to positions at major research universities. The M.S. program prepares highly competent and broadly skilled practitioners. A majority of the master's graduates work in industry, in companies ranging from small start-up operations to government labs and large research and development corporations.

Most of the department's approximately 150 graduate students are full-time. Students contribute to nearly every aspect of the department's operation. In addition to taking a wide variety of courses, they participate in groundbreaking research, teach, attend research group meetings and can serve on committees that affect all aspects of life in the department.

The Computer Science Students Association sponsors both professional and social events and represents the students in departmental matters. Its president is a voting member at faculty meetings.

Facilities

Sitterson Hall, opened in 1987, provides 74,000 square feet of sophisticated, state-of-the-art research facilities and office space for all members of the department. The building is organized in "clusters" to create research communities featuring shared laboratories and open conference areas to facilitate interaction among students and faculty. The building contains the 60-seat C. Hugh Holman video teleclassroom, a 125-seat auditorium; the Lib Moore Jones Faculty Conference Room; a reading room; and various research laboratories, conference areas and study areas.

Graduate students have access to all of the department's research and teaching facilities, including specialized research laboratories for graphics and image processing, computer building and design, and collaborative, distributed and parallel systems. The laboratories, offices, conference areas and classrooms are bound together by the department's fully integrated, distributed computing environment.

General Computing Environment

The department maintains a rich and varied computing environment ranging from standard IBM and Dell PCs (running Windows XP, Linux or FreeBSD), Macs (running OS/X), a few Suns (Solaris) and one big SGI (IRIX) to specialized research equipment. These are interconnected by a high-speed data network with gigabit switches. A full infrastructure (including desktop computers with 100Mb switched connections, AFS file system and backups, in an office with fiber, voice and video) is provided for all students. The department's open lab structure means that all specialized equipment is available to all students.

Sitterson Hall has wireless connectivity throughout the building, and holds the Campus Internet II connection. The network is connected to the North Carolina Research and Education Network (NC-REN), a statewide network that links research and educational institutions. All classrooms and many offices are equipped with projectors. A two-way video classroom and teleconference room allow connection to any institution served by the network, including all of the University of North Carolina system's 16 campuses, Duke University, Wake Forest University and other public and non-profit institutions.

Libraries

Students have access to the entire University library system, which includes a major academic affairs library and numerous satellite libraries containing more than 5,000,000 books and periodicals, and access to libraries at North Carolina State and Duke universities with a unified on-line searching capability. The Brauer Library, located in adjacent Phillips Hall, is a satellite library with extensive holdings in computer science, mathematics, operations research, physics and statistics.

Degree Requirements

Graduate Curriculum

A flexible course of study for the M.S. and Ph.D. degrees focuses on areas of choice and accommodates differences in students' backgrounds. The two degree programs share a basic distribution requirement of four courses chosen from theoretical, systems and applied subject areas. The Ph.D. program includes work in specialized areas, preparation for teaching and active involvement in advanced research.

Master of Science

An M.S. candidate must earn 30 semester hours of credit in courses numbered 400 or higher, of which up to six hours may be transferred from another institution or graduate program, and of which 18 hours must be completed in the Computer Science Department. Satisfactory completion of the distribution requirement provides 12 hours of credit. The remaining credits are earned in areas of specific interest, and may include course work, as needed, to address the following requirements:

• The technical writing requirement may be satisfied in one of three ways: 1) by taking the technical writing course, COMP 911, 2) by writing a thesis or 3) by writing a technical document in either academic or nonacademic work that has been reviewed and accepted (this may include a previously written thesis or dissertation).

• The program product requirement may be satisfied by taking the software engineering course, COMP 523, or by presenting satisfactory documentation of previous experience with the development of a significant software system.

• The background preparation requirement reflects the body of material that is prerequisite to the department's graduate courses. Courses needed, if any, to satisfy this requirement are decided in consultation with the candidate's advisor, course instructors and the graduate studies committee.

A thesis is optional; if one is written, it counts for six hours. A comprehensive exam is required and has two possible forms: 1) satisfactory completion of a comprehensive paper or 2) an oral exam covering material from the courses in the candidate's program of study. While either exam is sufficient for the M.S. program, a comprehensive paper is required for the Ph.D. program. A student with an assistantship generally completes the M.S. degree in four semesters or fewer.

Doctor of Philosophy

Admission to the Ph.D. program is by oral qualifying examination and recommendation of the faculty. There is no credit hour requirement for the Ph.D. program, but a Ph.D. candidate must complete courses to satisfy the distribution requirement and any needed background preparation, and must write a comprehensive paper. A Ph.D. candidate proposes an individual program of study, typically 15 to 18 hours. The program of study includes a primary and secondary concentration in computer science, training in mathematics and a supporting program of external courses or a foreign language. Previous course work can be used to satisfy much of the program of study. A candidate must also satisfy the program product requirement, teach a course, participate in the technical communication seminar, pass an oral examination in the proposed dissertation area and submit and defend a dissertation that presents an original contribution to knowledge. The normal time needed to complete the degree by a full-time student with an assistantship is five years.

Breadth Requirement

A Ph.D. student fulfills the breadth requirement by satisfactory completion of six courses from the list below, with at least one course from each area, and a M.S. student fulfills the breadth requirement by satisfactory completion of three courses. Grades earned in these courses must satisfy additional requirements according to the degree program (M.S. or Ph.D.).

Theory and Formal Thinking

455 Models of Languages and Computation

651 Computational Geometry

662 Scientific Computation

735 Distributed and Concurrent Algorithms

737 Real-Time Systems

750 Algorithm Analysis

752 Mechanized Mathematical Inference

764 Monte Carlo Method

766 Visual Solid Shape

767 Geometric and Solid Modeling

790–006 Medial Representations

790–078 Real-Time Scheduling Theory

790–090 Data Mining

790–090 Bioalgorithms

Systems and Hardware

431 Internet Services and Protocols

520 Compilers

523 Software Engineering Laboratory

530 Operating Systems

541 Digital Logic and Computer Design

631 Computer Networks

633 Parallel and Distributed Computing

720 Compilers

723 Software Design and Implementation

730 Operating Systems

734 Distributed Systems

740 Computer Architecture and Implementation

741 Elements of Hardware Systems

744 VLSI Systems Design

831 Internet Architecture and Performance

832 Multimedia Networking

841 Advanced Computer Architecture

790–042 OS Implementation

790–052 Graphics Hardware Architectures

790–058 GPGP

790–062 Real Time Operating Systems

790–084 Clockless Computing

790–088 Research Topics in Networking

790–095 Computer Security

Applications

665 Images, Graphics and Vision

715 Visualization in the Sciences

768 Physically Based Modeling and Simulation

770 Computer Graphics

775 Image Processing and Analysis

776 Computer Vision in our 3D World

870 Advanced Image Synthesis

872 Exploring Virtual Worlds

875 Recent Advances in Image Analysis

790–058 Dynamic Datasets

790–058 Robot Motion Planning

790–063 Collaborative Systems

790–072 Haptics

790–087 Xbox Science

790–089 3D Urban Modeling

790–093 Serious Games

790–096 Computer Vision and the Web

Approved Courses Outside of Computer Science

BIOS 600 Principles of Statistical Inference

MATH 662 Scientific Computation II

STOR 555 Mathematical Statistics

Comprehensive Paper

A comprehensive paper is a survey of three or more technical papers that span multiple subfields of computer science and have a common thread. The comprehensive paper is written in one semester and is organized as an issue-based survey of approximately 5,000 words, emphasizing the integration of concepts found in the subject papers. Faculty members can suggest suitable collections of papers, but students may propose a collection of subject papers as well. Two faculty members must agree to read the comprehensive paper for style and content. The student follows a schedule of milestones for drafts and revisions. Both faculty members must accept the final revision for the comprehensive paper requirement to be satisfied. Concurrent registration in the technical writing class, COMP 911, is recommended but not required. The satisfactory completion of a comprehensive paper satisfies the technical writing requirement.

Admissions and Financial Aid

Admission to the department is highly competitive. Although the department welcomes promising students from all disciplines, entering students must have a substantial background in both mathematics and computer science. This background normally includes at least six semester courses in mathematics and six in computer science. The department considers knowledge of the following subjects to be essential preparation for the graduate program:

• Differential and integral calculus

• Discrete mathematics: sets, relations, functions, algebra

• Linear algebra or matrix theory

• Mathematical probability, preferably calculus-based

• Structured programming techniques

• Data structures and abstract data types and

• Computer organization

Most entering students have studied all but two or three of the following subjects, which are required preparation for the graduate program:

• Design and analysis of algorithms

• Formal languages and automata theory

• Databases

• Operating systems

• Compilers

• Digital logic techniques

• Numerical computing methods

• Programming languages and

• Software engineering

Students who are admitted but who have not completed all the requirements must complete them after admission. Preference is given to applicants who are solidly prepared, especially in mathematics.

Previous Degrees. A baccalaureate degree is required, with a grade point average of at least B (3.0/4.0); most entering students have a GPA of more than 3.5.

GRE. High scores on all three parts of the General Aptitude Test of the Graduate Record Examination (GRE) are also recommended. A minimum of 80th percentile on the verbal and 90th percentile on the quantitative and analytical sections is recommended (a score of 5 is recommended for the Writing Assessment). In recent years, most entering students have averaged in the 90th percentile or higher on each of the three sections. Allowances are made in interpreting the verbal test scores of applicants whose native language is not English. Although GRE Advanced Test scores are not required, applicants are encouraged to take the advanced test in computer science, mathematics, engineering or physics, as appropriate. Standardized test scores must be reported directly by the Educational Testing Service (ETS) and no more than five years old. If you did not specify the UNC-Chapel Hill Graduate School (institution code #5816) as a score recipient at the time of taking the test, or if your scores were sent more than one year ago, please contact the Educational Testing Service to request that your scores be sent to the department.

TOEFL. Applicants whose native language is not English must submit Test of English as a Foreign Language (TOEFL) scores. Applicants from Australia, the Bahamas, Canada (except Quebec), England, Ghana, Ireland, India, Jamaica, New Zealand, Nigeria, Scotland, St. Vincent and the Grenadines, Trinidad, Tobago and Wales are exempt from the TOEFL requirement and should not submit test scores. Also exempt from the TOEFL requirement are those who have received a degree from a university in the United States. The required minimum total score of 233 on the Computer-Based Test (equivalent to 575 on the Paper-Based Test or 90 on the Internet-Based Test). The department gives preference to applicants who score above 273 CBT (640 PBT; 111 IBT). Test scores, which can be no more than two years old, must be reported directly by ETS. If you did not specify the UNC-Chapel Hill Graduate School (institution code #5816) as a score recipient at the time of taking the test, or if your scores were sent more than one year ago, please contact the Educational Testing Service to request that your scores be sent to the department.

Personal Statement. Each applicant must submit a personal statement directly to the department. The statement, between a half page and two pages long, should include

• Objectives in pursuing graduate study

• Identification of fields within computer science in which the applicant has a particular interest

• Information that is relevant to the applicant's qualifications for graduate study but that has not been included already in the application (e.g., major academic projects, papers presented or published, and nonacademic computer experience)

• An informative title or a brief description of any course listed on the applicant's transcript without a title (or with a vague title such as "Mathematics II");

• A list of courses taken or planned that do not yet appear on a transcript and

• An e-mail address, if available

Recommendations. Three letters of recommendation must be submitted electronically. Letters written by an applicant's present or former professors are usually more informative than those written by employers or colleagues.

Sponsorship. Because of the large number of applicants, the department's faculty members are unable to provide individual assessments of an applicant's chances for admission. Applicants cannot improve their chances of admission by finding a faculty sponsor within the department, because all admissions decisions are made by a faculty committee that reviews all applications, ranks the applicants by overall merit, and makes decisions on admission and financial support based on the application material submitted. In particular, students are not admitted by research project directors; contacting individual faculty members whose research is of interest has no effect on one's chances of being admitted.

How to Apply. Admission is based solely on merit. The University of North Carolina at Chapel Hill is an affirmative action, equal opportunity institution. Prospective applicants who clearly surpass the minimum requirements are encouraged to apply. You can submit an electronic application or write for application materials to The Graduate School, CB# 4010, 200 Bynum Hall, UNC-Chapel Hill, Chapel Hill, N.C. 27599-4010. Telephone: (919) 966-2611. Web: gradschool.unc.edu/students_prospective.html. The Graduate School's Web site includes information on applying and online application forms. Domestic applicants (U.S. citizens and resident aliens) should check gradschool.unc.edu/applicant_dom.html. International applicants should refer to gradschool.unc.edu/applicant_intl.html.

Financial Support. During the academic year, most computer science students are supported by assistantships and fellowships. The stipend for research and teaching assistantships for the nine-month academic year 2008–2009 will be $16,600 (20 hours a week). Also, at no cost to them, students are covered by a comprehensive major medical insurance program, underwritten by Blue Cross/Blue Shield of North Carolina. Full-time summer employment on a research project is normally available to students who would like to receive support. The rate for summer 2009 will be $850 per week (40 hours) for 10 to 12 weeks. Alternatively, students may gain professional experience through summer internships with companies in the Research Triangle area or in other parts of the country. The combined annual financial package for our graduate assistants is approximately $26,800, depending on the type of summer support. Students with assistantships qualify for a Graduate Student Tuition Grant and pay no tuition. They are, however, responsible for paying student fees of approximately $800 per semester. Graduate Student Tuition grants typically cover M.S. students for four semesters of study and Ph.D. students for 10 semesters of study. Annual living costs for single graduate students in the Chapel Hill area are estimated to be $15,000 or higher. On-campus housing is available for both single and married students.

The department provides a $500 educational fund each semester to any student who receives a competitive fellowship not granted by UNC-Chapel Hill. The fund may be used for education-related expenses including books, journals, travel, computer supplies and accessories, and professional memberships. The department also awards a $1,500 supplement each semester to nonservice fellowship holders who join a research team.

To apply for an assistantship, the applicants should check the appropriate item on the admissions application form. Applicants for assistantships are automatically considered for all available fellowships. Students can expect continued support, contingent on satisfactory work performance and academic progress.

Students are assigned to specific research projects just prior to the start of each semester, after faculty members and students have had an opportunity to meet and to discuss their interests.

Deadlines. The fall semester runs from mid-August to mid-December; the spring semester from early January to early May. Applications for fall admission complete with a personal statement, all transcripts and recommendations should be received by The Graduate School no later than January 1. To ensure meeting that deadline, applicants are encouraged to take the Graduate Record Examination (GRE) no later than December 1. Early submission of applications is encouraged. International applicants should complete their applications earlier to allow time for processing financial and visa documents.

For more information, write to the Director of Graduate Admissions, Department of Computer Science, CB# 3175, Sitterson Hall, Chapel Hill, N.C. 27599-3175, or send electronic mail to admit@cs.unc.edu. Interested persons are encouraged to visit the department's Web site, www.cs.unc.edu.

Courses

401 [114] FOUNDATION OF PROGRAMMING (4). Prerequisite, a course in COMP 110–129. Advanced programming. Program specifications, preconditions, postconditions, loop invariants. Linear data structures, searching, and sorting. Algorithm paradigms and analysis. Fall and spring. Dewan, Weiss.

410 [121] DATA STRUCTURES (3). The analysis of data structures and their associated algorithms. Abstract data types, lists, stacks, queues, trees and graphs. Sorting, searching, hashing. Fall and spring. Hedlund, staff.

411 [120] COMPUTER ORGANIZATION (3). Digital logic, circuit components. Data representation, computer architecture and implementation, assembly language programming. Fall and spring. Bishop, Fuchs.

416 [117] INTRODUCTION TO WWW PROGRAMMING (3). Client-side programming in Java for the World Wide Web. Introduction to TCP/IP, HTTP and Web architecture. Emphasis on applet programming and component programming using threads, simple client-server applications, and XML. Fall. J. Smith, Mayer-Patel, Dewan.

426 [118] ADVANCED WWW PROGRAMMING (3). Prerequisite, COMP 416. Server-side programming in Java for the World Wide Web. Emphasis on servlet programming and distributed component programming using APIs for object serialization, remote method invocation, database connectivity and XML generation. Spring. J. Smith, Mayer-Patel, Dewan.

431 [123] INTERNET SERVICES AND PROTOCOLS (3). Prerequisites, COMP 410 and 411. Application-level protocols HTTP, SMTP, FTP, transport protocols TCP and UDP, and the network-level protocol IP. Internet architecture, naming, addressing, routing and DNS. Sockets programming. Physical-layer technologies. Ethernet, ATM and wireless. Spring. Jeffay, F. D. Smith.

455 [181] MODELS OF LANGUAGES AND COMPUTATION (3). Prerequisites, MATH 381 or other evidence of mathematical maturity, and COMP 110 or equivalent experience. Introduction to the theory of computation. Finite automata, regular languages, pushdown automata, context-free languages and Turing machines. Undecidable problems. Spring. Anderson, Halton, Plaisted, Weiss, Snoeyink, Prins.

486 [170] APPLICATIONS OF NATURAL LANGUAGE PROCESSING (INLS 512) (3). Prerequisite, COMP 110, 116 or 121, or graduate standing in information and library science. Study of applications of natural language processing techniques and the representations and processes needed to support them. Topics include interfaces, text retrieval, machine translation, speech processing and text generation.

487 [172] INFORMATION RETRIEVAL (INLS 509) (3). Prerequisites, COMP 110 or 121, and INLS 261. Study of information retrieval and question answering techniques, including document classification, retrieval and evaluation techniques, handling of large data collections and the use of feedback.

520 [140] COMPILERS (3). Prerequisites, COMP 410 and 411. Design and construction of compilers. Theory and pragmatics of lexical, syntactic and semantic analysis. Interpretation. Code generation for a modern architecture. Run-time environments. Includes a large compiler implementation project. Fall. (Alternate years.) Prins.

521 [130] FILES AND DATABASES (3). Prerequisites, COMP 410 and 411, MATH 381. Placement of data on secondary storage. File organization. Database history, practice, major models, system structure and design. Fall. Stotts, Weiss.

523 [145] SOFTWARE ENGINEERING LABORATORY (3). Prerequisites, COMP 410 and 411. Organization and scheduling of software engineering projects, structured programming and design. Each team designs, codes, and debugs program components and synthesizes them into a tested, documented program product. Spring. Stotts.

524 [144] PROGRAMMING LANGUAGE CONCEPTS (3). Prerequisite, COMP 410. Concepts of high-level programming and their realization in specific languages. Data types, scope, control structures, procedural abstraction, classes, concurrency. Run-time implementation. Spring. Staff.

530 [142] OPERATING SYSTEMS (3). Prerequisites, COMP 410 and 411. Types of operating systems. Concurrent programming. Management of storage, processes, devices. Scheduling, protection. Case study. Students implement significant components of a small operating system. Fall. (Alternate years.) Jeffay.

541 [160] DIGITAL LOGIC AND COMPUTER DESIGN (4). Prerequisite, COMP 411. This course is an introduction to digital logic as well as the structure and electronic design of modern processors. Students will implement a working computer during the laboratory sessions. Spring. Lastra, Singh, McMillan, Bishop.

550 [122] ALGORITHMS AND ANALYSIS (3). Prerequisites, COMP 410 and MATH 381. Formal specification and verification of programs. Techniques of algorithm analysis. Problem-solving paradigms. Survey of selected algorithms. Fall and spring. Anderson, Hedlund, Lin, Manocha, Plaisted.

575 [136] INTRODUCTION TO COMPUTER GRAPHICS (3). Prerequisites, COMP 410 and MATH 547. Hardware, software and algorithms for computer graphics. Scan conversion, 2-D and 3-D transformations, object hierarchies. Hidden surface removal, clipping, shading and antialiasing. Not for graduate computer science credit. Fall. Staff.

590 [190] TOPICS IN COMPUTER SCIENCE (1-21). Prerequisite, permission of the instructor. This course has variable content and may be taken multiple times for credit. Fall and spring. Staff.

631 [234] COMPUTER NETWORKS (3). Prerequisites, COMP 431, 530 and knowledge of probability and statistics. Topics in computer networks, including link layer protocols, switching, IP, TCP and congestion control. Additional topics may include peer-to-peer infrastructures, network security and multimedia applications. Fall. Kaur, Jeffay, F. D. Smith, Mayer-Patel, Papadopouli.

633 [203] PARALLEL AND DISTRIBUTED COMPUTING (3). Prerequisites, COMP 530 and 550. Principles and practices of parallel and distributed computing. Models of computation. Concurrent programming languages and systems. Architectures. Algorithms and applications. Practicum. Spring. Prins.

651 [281] COMPUTATIONAL GEOMETRY (3). Prerequisite, undergraduate analysis of algorithms course (e.g., COMP 550) or permission of the instructor. Design and analysis of algorithms and data structures for geometric problems. Applications in graphics, CAD/CAM, robotics, GIS and molecular biology. Fall. (Odd years.) Snoeyink, Lin.

662 [250] SCIENTIFIC COMPUTATION II (ENVR 662, MATH 662) (3). Prerequisite, MATH 661. Theory and practical issues arising in linear algebra problems derived from physical applications, e.g., discretization of ODEs and PDEs, linear systems, linear least squares, eigenvalue problems, singular value decomposition. Spring. Staff.

665 [235] IMAGES, GRAPHICS, AND VISION (3). Prerequisites, COMP 410 and MATH 383. Display devices and procedures. Scan conversion. Matrix algebra supporting viewing transformations in computer graphics. Basic differential geometry. Coordinate systems, Fourier analysis, FDFT algorithm. Human visual system, psychophysics, scale in vision. Fall. Pizer, Bishop, Brooks.

715 [215] VISUALIZATION IN THE SCIENCES (MTSC 715, PHYS 715) (3). Computational visualization applied in the natural sciences. For both computer science and natural science students. Available techniques and their characteristics, based on human perception, using software visualization toolkits. Project course. Fall. Taylor.

720 [240] COMPILERS (3). Prerequisites, COMP 455, 520, 524. Tools and techniques of compiler construction. Lexical, syntactic and semantic analysis. Emphasis on code generation and optimization. (Alternate years.) Prins.

721 [230] DATABASE MANAGEMENT SYSTEMS (3). Prerequisites, COMP 521, 550. Database management systems, implementation and theory. Query languages, query optimization, security, advanced physical storage methods and their analysis. (On demand.) Staff.

723 [204] SOFTWARE DESIGN AND IMPLEMENTATION (3). Prerequisites, COMP 524, 550. Principles and practices of software engineering. Object-oriented and functional approaches. Formal specification, implementation, verification and testing. Software design patterns. Practicum. Fall. Stotts, Dewan.

724 [244] PROGRAMMING LANGUAGES (3). Prerequisites, COMP 455, 520, 524. Selected topics in the design and implementation of modern programming languages. Formal semantics. Type theory. Inheritance. Design of virtual machines. Garbage collection. Principles of restructuring compilers. (On demand.) Prins.

730 [242] OPERATING SYSTEMS (3). Prerequisite, COMP 530. Theory, structuring and design of operating systems. Sequential and cooperating processes. Single processor, multiprocessor and distributed operating systems. Spring. Dewan, Jeffay, F. D. Smith, Mayer-Patel.

734 [243] DISTRIBUTED SYSTEMS (3). Prerequisite, COMP 431 or permission of the instructor. Design and implementation of distributed computing systems and services. Inter-process communication and protocols, naming and name resolution, security and authentication, scalability, high availability, replication, transactions, group communications, distributed storage systems. Fall. Dewan, Jeffay, F. D. Smith.

735 [247] DISTRIBUTED AND CONCURRENT ALGORITHMS (3). Prerequisites, COMP 633, 723. Verification of concurrent systems. Synchronization, mutual exclusion and related problems, barriers, rendezvous, nonblocking algorithms. Fault tolerance: consensus, Byzantine agreement, self-stabilization. Broadcast algorithms. Termination and deadlock detection. Clock synchronization. (Alternate years.) Anderson.

737 [232] REAL-TIME SYSTEMS (3). Prerequisite, COMP 530. Taxonomy and evolution of real-time systems. Timing constraints. Design, implementation and analysis of real-time systems. Theory of deterministic scheduling and resource allocation. Case studies and project. Spring. (Alternate years.) Jeffay, Anderson, Baruah.

740 [206] COMPUTER ARCHITECTURE AND IMPLEMENTATION (3). Prerequisites, COMP 411, PHYS 352. Architecture and implementation of modern single-processor computer systems. Performance measurement. Instruction set design. Pipelining. Instruction-level parallelism. Memory hierarchy. I/O system. Floating-point arithmetic. Case studies. Practicum. Fall. Bishop.

741 [261] ELEMENTS OF HARDWARE SYSTEMS (3). Prerequisite, COMP 411. Issues and practice of information processing hardware systems for computer scientists with little or no previous hardware background. System thinking, evaluating technology alternatives, basics of electronics, signals, sensors, noise and measurements. Spring. Bishop, Vicci.

744 [268] VLSI SYSTEMS DESIGN (3). Prerequisites, COMP 740, knowledge of digital logic techniques. Introduction to the design, implementation and realization of very large-scale integrated systems. Each student designs a complete digital circuit that will be fabricated and returned for testing and use. Spring. Hedlund.

750 [202] ALGORITHM ANALYSIS (3). Prerequisites, COMP 455, 550. Algorithm complexity. Lower bounds. The classes P, NP, PSPACE and co-NP; hard and complete problems. Pseudo-polynomial time algorithms. Advanced data structures. Graph-theoretic, number-theoretic, probabilistic and approximation algorithms. Fall. Anderson, Plaisted, Baruah, Snoeyink.

752 [282] MECHANIZED MATHEMATICAL INFERENCE (3). Prerequisite, COMP 825. Propositional calculus. Semantic tableaux. Davis-Putnam algorithm. Natural deduction. First-order logic. Completeness. Resolution. Problem representation. Abstraction. Equational systems and term rewriting. Specialized decision procedures. Nonresolution methods. (On demand.) Plaisted.

758 [288] INFORMATION THEORY (3).

759 [289] ERROR CORRECTING CODES (3).

761 [231] INTRODUCTORY COMPUTER GRAPHICS (1).

762 [233] DISCRETE EVENT SIMULATION (STOR 762) (3). Prerequisites, STAT 555 and OR 641, or the equivalent and familiarity with computer programming. Introduces students to modeling, programming and statistical concepts applicable to discrete event simulation on digital computers. Emphasizes statistical analysis of simulation output. Students model, program and run simulations. Fall. Tekin, Ziya.

763 [248] SEMANTICS AND PROGRAM CORRECTNESS (3). Prerequisite, COMP 724. Formal characterization of programs. Denotational semantics and fixed-point theories. Proof of program correctness and termination. Algebraic theories of abstract data types. Selected topics in the formalization of concurrent computation. (On demand.) Staff.

764 [252] MONTE CARLO METHOD (3). Prerequisites, MATH 233, 416, 418, STAT 435, COMP 110, or consent of the instructor. Relevant probability and statistics. General history. Variance reduction for sums and integrals. Solving linear and nonlinear equations. Random, pseudorandom generators; random trees. Sequential methods. Applications. (On demand.) Halton.

766 [257] VISUAL SOLID SHAPE (3). Prerequisites, MATH 233, 416. 3D differential geometry; local and global shape properties; visual aspects of surface shape. Taught largely through models and figures. Applicable to graphics, computer vision, human vision and biology. Fall. (Alternate years.) Pizer.

767 [258] GEOMETRIC AND SOLID MODELING (3). Prerequisites, COMP 575 or 770, and MATH 661. Curve and surface representations. Solid models. Constructive solid geometry and boundary representations. Robust and error-free geometric computations. Modeling with algebraic constraints. Applications to graphics, vision and robotics. (Alternate years.) Manocha.

768 [259] PHYSICALLY BASED MODELING AND SIMULATION (3). Prerequisites, COMP 665, or permission of the instructor. Geometric algorithms, computational methods, simulation techniques for modeling based on mechanics and its applications. (Alternate years.) Lin.

770 [236] COMPUTER GRAPHICS (3). Prerequisites, COMP 665, 761. Study of graphics hardware, software and applications. Data structures, graphics, languages, curve surface and solid representations, mapping, ray tracing and radiosity. Spring. Bishop, Brooks, Fuchs, Lin, Manocha.

775 [254] IMAGE PROCESSING AND ANALYSIS (BMME 775) (3). Prerequisites, COMP 665, MATH 547 and STAT 435. Approaches to analysis of digital images. Scale geometry, statistical pattern recognition, optimization. Segmentation, registration, shape analysis. Applications, software tools. Spring. Gerig, Pizer.

776 [256] COMPUTER VISION IN OUR 3D WORLD (3). Prerequisites, MATH 416, 566, COMP 550, 665, 775, or permission of the instructor. Fundamental problems of computer vision. Projective geometry. Camera models, camera calibration. Shape from stereo, epipolar geometry. Photometric stereo. Optical flow, tracking, motion. Range finders, structured light. Object recognition. Fall. (Odd years.) Gerig, Welch.

785 [273] NEURAL NETWORKS (3).

787 [277] VISUAL PERCEPTION (3). Prerequisites, COMP 665 (vision segment), PSYC 730, or equivalent. Surveys form, motion, depth, scale, color, brightness, texture and shape perception. Includes computational modeling of vision, experimental methods in visual psychophysics and neurobiology, recent research and open questions. Fall. (Alternate years.) Pizer.

788 [275] EXPERT SYSTEMS (3). Prerequisite, COMP 750. Languages for knowledge engineering. Rules, semantic nets and frames. Knowledge acquisition. Default logics. Uncertainties. Neural networks. (On demand.) Plaisted.

790 [290] TOPICS IN COMPUTER SCIENCE (1–21). Prerequisite, permission of the instructor. This course has variable content and may be taken multiple times for credit. Fall and spring. Staff.

822 [286] TOPICS IN DISCRETE OPTIMIZATION (STOR 822) (3). Prerequisites, OR 712 and permission of the instructor. Topics may include polynomial algorithms, computational complexity, matching and matroid problems, and the traveling salesman problem. (Alternate years.) Provan.

824 [245] FUNCTIONAL PROGRAMMING (3). Prerequisite, COMP 524. Programming with functional or applicative languages. Lambda calculus; combinators; higher-order functions; infinite objects. Least fixed points, semantics, evaluation orders. Sequential and parallel execution models. (On demand.) Prins, Plaisted.

825 [246] LOGIC PROGRAMMING (3). Prerequisite, COMP 524. Propositional calculus, Horn clauses, first-order logic, resolution. Prolog: operational semantics, relationship to resolution, denotational semantics, and nonlogical features. Programming and applications. Selected advanced topics. (On demand.) Plaisted.

831 [241] INTERNET ARCHITECTURE AND PERFORMANCE (3). Prerequisite, COMP 431 or permission of the instructor. Internet structure and architecture; traffic characterization and analysis; errors and error recovery; congestion and congestion control; services and their implementations; unicast and multicast routing. Spring. (Alternate years.) Jeffay, F. D. Smith, Mayer-Patel.

832 [249] MULTIMEDIA NETWORKING (3). Prerequisites, COMP 431 and 530. Audio/video coding and compression techniques and standards. Media streaming and adaptation. Multicast routing, congestion and error control. Internet protocols RSVP, RTP/RTCP. Integrated and differentiated services architecture for the Internet. Jeffay, Mayer-Patel.

841 [265] ADVANCED COMPUTER ARCHITECTURE (3). Prerequisite, COMP 740. Concepts and evolution of computer architecture, machine language syntax and semantics; data representation; naming and addressing; arithmetic; control structures; concurrency; input-output systems and devices. Milestone architectures. (Alternate years.) Brooks.

842 [267] ADVANCED COMPUTER IMPLEMENTATION (3). Prerequisites, COMP 740, knowledge of digital logic techniques. The application of digital logic to the design of computer hardware. Storage and switching technologies. Mechanisms for addressing, arithmetic, logic, input/output and storage. Microprogrammed and hardwired control. (On demand.) Staff.

844 [269] ADVANCED DESIGN OF VLSI SYSTEMS (3). Prerequisite, COMP 744. Advanced topics in the design of digital MOS systems. Students design, implement and test a large custom integrated circuit. Projects emphasize the use of advanced computer-aided design tools. (Alternate years.) Staff.

850 [228] ADVANCED ANALYSIS OF ALGORITHMS (3). Prerequisite, COMP 750. Design and analysis of computer algorithms. Time and space complexity; absolute and asymptotic optimality. Algorithms for searching, sorting, sets, graphs and pattern-matching. NP-complete problems and provably intractable problems. (Alternate years.) Staff.

870 [238] ADVANCED IMAGE SYNTHESIS (3). Prerequisite, COMP 770. Advanced topics in rendering, including global illumination, surface models, shadings, graphics hardware, image-based rendering and antialiasing techniques. Topics from the current research literature. Fall. (Alternate years.) Lastra.

872 [239] EXPLORING VIRTUAL WORLDS (3). Prerequisite, COMP 870. Project course, lecture, and seminar on real-time interactive 3D graphics systems in which the user is "immersed" in and interacts with a simulated 3D environment. Hardware, modeling, applications, multi-user systems. (Alternate years.) Fuchs, Brooks.

875 [255] RECENT ADVANCES IN IMAGE ANALYSIS (3). Prerequisite, COMP 775. Lecture and seminar on recent advances in image segmentation, registration, pattern recognition, display, restoration and enhancement. Spring. (Even-numbered years.) Pizer, Gerig.

892 [395] PRACTICUM (0.5). Prerequisite, permission of the instructor. Work experience in an area of computer science relevant to the student's research interests and pre-approved by the instructor. The grade, pass or fail only, will depend on a written report by the student and on a written evaluation by the employer. Staff.

910 [220] COMPUTER SCIENCE MODULE (0.5–21).

911 [291] PROFESSIONAL WRITING IN COMPUTER SCIENCE (3). Prerequisite, graduate major in computer science. Analysis of good and bad writing. Exercises in organization and composition. Each student also writes a thesis-quality short technical report on a previously approved project. Fall and spring. Halton, J. B. Smith, Snoeyink, Weiss.

915 [321] TECHNICAL COMMUNICATION IN COMPUTER SCIENCE (1). Prerequisite, graduate major in computer science or permission of the instructor. Seminar on teaching, short oral presentations and writing in computer science. Spring. Weiss, Brooks.

916 [322] SEMINAR IN PROFESSIONAL PRACTICE (1). Prerequisite, satisfaction of M.S. Computer Science program product requirement. The role and responsibilities of the computer scientist in a corporate environment, as an entrepreneur and as a consultant. Professional ethics. (Alternate years.) Brooks.

917 [323] SEMINAR IN RESEARCH (1). Prerequisite, graduate major in computer science. The purposes, strategies and techniques for conducting research in computer science and related disciplines. (On demand.) Staff.

918 [310] RESEARCH ADMINISTRATION FOR SCIENTISTS (1). Prerequisite, graduate status. Introduction to grantsmanship, research grants and contracts, intellectual property, technology transfer, conflict of interest policies. Course project: grant application in NSF FastLane. Spring. Quigg.

980 [324] COMPUTERS AND SOCIETY (1). Prerequisite, graduate major in computer science. Seminar on social and economic effects of computers on such matters as privacy, employment, power shifts, rigidity, dehumanization, dependence, quality of life. (On demand.) Staff.

990 [390] RESEARCH SEMINAR IN COMPUTER SCIENCE (1–21). Prerequisite, permission of the instructor. Seminars in various topics offered by members of the faculty. Fall and spring. Staff.

991 [391] READING AND RESEARCH (1–21). Prerequisite, permission of the instructor. Directed reading and research in selected advanced topics. Fall and spring. Staff.

993 [393] MASTER'S THESIS (3–6). Prerequisite, permission of staff. Fall and spring. Staff.

994 [394] DOCTORAL DISSERTATION (3–9). Prerequisite, permission of staff. Fall and spring. Staff.