Department of Computer Science (GRAD)

Department of Computer Science

Kevin Jeffay, Chair

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

  • big data
  • bioinformatics and computational biology
  • cloud computing
  • computer architecture
  • computer graphics
  • computer-supported collaborative work
  • computer vision
  • databases and data mining
  • geometric computing
  • high-performance computing
  • human-computer interaction
  • machine learning
  • medical image analysis
  • networking
  • real-time systems
  • robotics
  • security
  • software engineering
  • theory

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


The Department of Computer Science is housed in two adjacent buildings, the Frederick P. Brooks Jr. Computer Science Building and J. Carlyle Sitterson Hall. These two buildings are connected by hallways on all floors so that they function as a single, larger building.

The Brooks Building was dedicated in 2008 and named for the department's founding chair, Frederick P. Brooks Jr. It opened up 32,000 square feet of new research space, offices, and classrooms. These include a 50-seat classroom; the Stephen F. Weiss Seminar Room, with seating for 20 around a table; the Registrar's classroom, with theater seating for 80; and the Faculty Conference Room, which seats 50 at tiers of curved desktops. Meetings or discussion groups take place in the chair's conference room and in five smaller meeting areas, each with projectors. Perhaps the most striking area of the building is the new noise-controlled graphics laboratory, which is divided into three areas by floor-to-ceiling blackout curtains for light and sound suppression. It has 11-foot ceilings and a unistrut mounting grid to mount hardware as needed.

Sitterson Hall, which opened in 1987 and is named for former University Chancellor J. Carlyle Sitterson, provides 74,000 square feet of sophisticated, state-of-the-art research facilities and office space. It is organized in clusters to create research communities featuring shared laboratories and open conference areas to facilitate interaction among students and faculty. Included are the 60-seat C. Hugh Holman video teleclassroom, named for the former provost and dean of The Graduate School who was instrumental in establishing this department; a 125-seat auditorium; the Lib Moore Jones Classroom, named for the department's first secretary; 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's computing environment includes over 1,000 computers, ranging from older systems used for generating network traffic for simulated Internet experiments to state-of-the-art workstations and clusters for graphics- and compute-intensive research. Departmental servers provide compute service, disk space, e-mail, CVS (version control software), Web service, database services, backups, and many other services. All systems are integrated by means of high-speed networks and are supported by a highly skilled technical staff that provides a consistent computing environment throughout the department. The data network provides connections at either 100 Mbps, 1Gbps, or 10 Gbps. Most students are assigned to a two- or three-person office, though some larger offices can hold more students. Each student is assigned a computer, with computer assignments based on the students' research or teaching assignments and their seniority within the department. In addition to the departmental servers and office systems, our research laboratories contain a variety of specialized equipment and facilities.

General computing systems include 800+ Intel-based computers as well as about 50 Macintosh systems. The department's most powerful system is the Biomedical Analysis and Simulation Supercomputer (BASS, pronounced like "base"), which consists of 452 CPUs tightly coupled to each other and to 180 GPU computing processors that function as image and geometry calculation accelerators, providing the equivalent computing power of more than 13,000 processors for image-intensive applications.

Our systems primarily run the Windows 7 operating system, and a smaller number of systems, including many of the servers, run Ubuntu or Red Hat Linux. We use the AFS file system for central file storage. Languages most commonly used include J++, C++, Java, and C. Document preparation is usually accomplished with standard applications on PC systems. Our extensive software holdings are continually evolving.


Students have access to the entire University library system, which includes a major academic affairs library and numerous satellite libraries containing more than 6,000,000 books and periodicals, as well as access to libraries at North Carolina State, Duke, and North Carolina Central Universities with a unified online searching capability. The Kenan Science Library, located in Venable Hall, and the Science Library Annex, located in Wilson Library, are libraries with extensive holdings in computer science, mathematics, operations research, physics, and statistics.

Admissions and Financial Aid

Admission to the department is highly competitive, and preference is given to applicants who are solidly prepared. 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. Students who are admitted but who have not completed all the requirements must complete them after admission. For more in-depth information on the admissions process see the department's and The Graduate School's Web sites.


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


Applicants for fall admission are encouraged to submit all application materials, complete with a personal statement, all transcripts, and recommendations, to The Graduate School by early January. 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, send electronic mail to Interested persons are encouraged to visit the department's Web site.

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 chosen from theory and formal thinking, systems and hardware, and applications 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 (with the exception of some introductory courses), 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 Department of Computer Science. A candidate must also satisfy the program product requirement and must demonstrate the ability to write a professional-quality technical document. A comprehensive exam (written or oral) is required for degree completion. For more in-depth information see the department's Web site. 

Doctor of Philosophy

Admission to the doctoral program is by a vote of the department faculty and is determined by performance on the preliminary research presentation and exam, course grades, admissions information, accomplishment on assistantships, and other testimony from the faculty. Admission is normally considered following the research presentation and exam. Students who have been major contributors to a paper submitted to a well-known, refereed conference or journal may apply for a waiver of the admissions exam. 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 candidate must also satisfy the program product requirement, 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. For more in-depth information see the department's Web site.

Following the faculty member's name is a section number that students should use when registering for independent studies, reading, research, and thesis and dissertation courses with that particular professor.


Stanley Ahalt (82), Director of the Renaissance Computing Institute (RENCI); Signal, Image, and Video Processing; High-Performance Scientific and Industrial Computing; Pattern Recognition Applied to National Security Problems; High-Productivity, Domain-Specific Languages
James Anderson (62), Real-Time Systems, Distributed and Concurrent Algorithms, Multicore Computing, Operating Systems
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, Assistive Technology, 3D Interactive Computer Graphics, Virtual Environments, Image-Based Rendering
Frederick P. Brooks Jr. (9), 3-D Interactive Computer Graphics, Human-Computer Interaction, Virtual Worlds, Computer Architecture, the Design Process
Prasun Dewan (63), User Interfaces, Distributed Collaboration, Software Engineering Environments, Mobile Computing, Access Control
Henry Fuchs (11), Virtual Environments, Telepresence, Future Office Environments, 3-D Medical Imaging, Computer Vision and Robotics
Kevin Jeffay (40), Computer Networking, Operating Systems, Real-Time Systems, Multimedia Networking, Performance Evaluation
Anselmo A. Lastra (52), Interactive 3-D 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, Many-Core Computing
Dinesh Manocha (58), Interactive Computer Graphics, Geometric and Solid Modeling, Robotics Motion Planning, Many-Core Algorithms
Fabian Monrose (91), Computer and Network Security, Biometrics and User Authentication
Stephen M. Pizer (6), Image Display and Analysis, Medical Imaging, Human and Computer Vision, Graphics
David A. Plaisted (28), Mechanical Theorem Proving, Term Rewriting Systems, Logic Programming, Algorithms
Jan F. Prins (33), High Performance Computing: Parallel Algorithms, Programming Languages, Compilers, and Architectures; Scientific Computing with Focus on Computational Biology and Bioinformatics
Michael K. Reiter (95), Computer and Network Security, Distributed Systems, Applied Cryptography
Jack S. Snoeyink (79), Computational Geometry, Algorithms for Geographical Information Systems and Structural Biology, Geometric Modeling and Computation, Algorithms and Data Structures, Theory of Computation
David Stotts (59), Computer-Supported Cooperative Work, Especially Collaborative User Interfaces; Software Engineering, Design Patterns and Formal Methods; Hypermedia and Web Technology

Associate Professors

Ron Alterovitz (99), Medical Robotics, Motion Planning, Physically Based Simulation, Assistive Robotics, Medical Image Analysis
Tamara Berg (48), Computer Vision, Natural Language Processing, Visual Recognition and Retrieval, Visual Social Media and Socio-Identity, Human-In-The-Loop Recognition, Gaze Pattern Analysis, Image Description Generation, Clothing Recognition
Jan-Michael Frahm (97), Structure from Motion, Camera Self-Calibration, Camera Sensor Systems, Multi-Camera Systems, Multi-View Stereo, Robust Estimation, Fast Tracking of Salient Features in Images and Video, Computer Vision, Active Vision for Model Improvement, Markerless Augmented Reality
Jasleen Kaur (88), Design and Analysis of Networks and Distributed Systems, High-Speed Congestion Control, Resource Management, Internet Measurements, and Transport Protocols
Ketan Mayer-Patel (80), Multimedia Systems, Networking, Multicast Applications
Leonard McMillan (87), Computational Biology, Genetics, Genomics, Bioinformatics, Information Visualization, Data-Driven Modeling, Image Processing, Imaging Technologies, Computer Graphics
Marc Niethammer (98), Quantitative Image Analysis, Shape Analysis, Image Segmentation, Deformable Registration, Image-Based Estimation Methods
Montek Singh (84), High-Performance and Low-Power Digital Systems, Asynchronous and Mixed-Timing Circuits and Systems, VLSI CAD Tools, Energy-Efficient Graphics Hardware, Applications to Computer Security, Emerging Computing Technologies

Assistant Professors

Alexander Berg (46), Computer Vision, Machine Learning, Recognition, Detection, Large-Scale Learning for Computer Vision, Machine Learning Analysis of fMRI
Vladimir Jojic (124), Bioinformatics, Computational Biology, Machine Learning
Shahriar Nirjon (137), Mobile Computing, Embedded Sensor Systems, Wireless Networks, Data Analytics for Mobile Systems
Cynthia Sturton (132), Computer and Hardware Security, Applied Formal Methods for Software Security

Research Professors

Diane Pozefsky (93), Software Engineering and Environments, Computer Education, Serious Games Design and Development, Social, Legal and Ethical Issues Concerning Information Technology
F. Donelson Smith (42), Computer Networks, Operating Systems, Distributed Systems, Multimedia

Research Associate Professors

Martin Styner (94), Medical Image Processing and Analysis Including Anatomical Structure and Tissue Segmentation, Morphometry Using Shape Analysis, Modeling and Atlas Building, Intra and Inter-Modality Registration
Mary C. Whitton (81), Developing and Evaluating Technology for Virtual and Augmented Reality Systems, Virtual Locomotion, Tools for Serious Games

Research Assistant Professors

Jay Aikat (126), Experimental Methods and Models in Networking Research and Education, Measurement and Modeling of Internet Traffic, Protocol Benchmarking, Internet Traffic Generation, Wireless Networks, Congestion Control and Active Queue Management
Enrique Dunn-Rivera (131), View Planning for Autonomous 3-D Model Acquisition, Evolutionary Computation for Multi-Objective Opimization

Senior Lecturer

Tessa Joseph Nicholas (86), New Media Arts and Poetics, Digital Communities, Digital-Age Ethics


Kris Jordan, Educational Technology, Distributed Systems, Entrepreneurship

Adjunct Professors

Rob Fowler (110), High-Performance Computing
Guido Gerig (75), Image Analysis, Shape-Based Object Recognition, 3-D Object Representation and Quantitative Analysis, Medical Image Processing
Ashok Krishnamurthy, Data Science, Health Informatics and Applications
J. Stephen Marron (114), Smoothing Methods for Curve Estimation
John McHugh (129), Computer and Network Security
Steven E. Molnar (108), Architectures for Real-Time Computer Graphics, VLSI-Based System Design, Parallel Rendering Algorithms
Marc Pollefeys (89), Computer Vision, Image-Based Modeling and Rendering, Image and Video Analysis, Multi-View Geometry
John Poulton (120), Graphics Architectures, VLSI-Based System Design, Design Tools, Rapid System Prototyping
Julian Rosenman (112), Computer Graphics for Treatment of Cancer Patients, Contrast Enhancement for X-Rays
Richard Superfine (115), Condensed Matter Physics, Biophysics, Microscopy
Alexander Tropsha (111), Computer-Assisted Drug Design, Computational Toxicology, Cheminformatics, Structural Bioinformatics
Wei Wang (90), Bioinformatics and Computational Biology, Data Mining, Database Systems
Sean Washburn (116), Condensed Matter Physics, Materials Science
Gregory F. Welch (71), Human Motion Tracking Systems, 3-D Telepresence, Projector-Based Graphics, Computer Vision and View Synthesis, Medical Applications of Computers
Turner Whitted (122), Algorithms, Architectures, Displays for Graphics Applications including Virtual and Augmented Reality

Adjunct Associate Professors

Stephen R. Aylward (109), Computer-Aided Diagnosis, Computer-Aided Surgical Planning, Statistical Pattern Recognition, Image Processing, Neural Networks
Shawn Gomez (102), Bioinformatics, Computational Biology, Systems Biology
Chris Healey (105), Computer Graphics, Scientific Visualization, Perception and Cognitive Vision, Color, Texture, Databases, and Computational Geometry
Hye-Chung Kum (103), Social Welfare Intelligence and Informatics, Health Informatics, Government Informatics, Data Mining, KDD (Knowledge Discovery in Databases), Government Administrative Data
Lars Nyland (117), High Performance Computing, Hardware Systems, Computer Graphics and Image Analysis, Geometric Modeling and Computation
Allan Porterfield, High Performance Computing, Compilers, Run-Time Systems
Dinggang Shen (104), Medical Image Analysis, Computer Vision, Pattern Recognition

Adjunct Assistant Professors

Brad Davis (107), Image Analysis, Shape Analysis, Image Processing, Statistical Methods in Nonlinear Spaces, Medical Applications, Visualization, Software Engineering
Mark Foskey (118), Medical Image Analysis, Especially in Cancer Therapy, Geometric Computation
Svetlana Lazebnik (96), Object Recognition and Scene Interpretation, Internet Photo Collections, Reconstruction of 3-D Objects from Photos/Video, Machine Learning Techniques for Visual Recognition Problems, Clustering and Vector Quantization, Nonlinear Dimensionality Reduction and Manifold Learning
Yun Li (128), Statistical Genetics
Ben Major, Bioinformatics, Proteomics, Mass Spectrometry, Network Analysis, Signal Transduction
Ipek Oguz (125), Medical Image Analysis
Beatriz Paniagua (51), Advanced Computer Vision Techniques Applied to Quality Control Industrial Environments
William Valdar (130), Mapping of Complex Disease Loci in Animal Models, Statistical Genetics

Professors Emeriti

Fred Brooks
Peter Calingaert
John H. Halton
Gyula A. Magó
John B. Smith
Donald F. Stanat
Stephen F. Weiss

Research Professor Emeritus

William V. Wright

Lecturer Emeritus

Leandra Vicci


Advanced Undergraduate and Graduate-level Courses

COMP 401. Foundation of Programming. 4 Credits.

Required preparation, a first formal course in computer programming (e.g., COMP 110, COMP 116). Advanced programming: object-oriented design, classes, interfaces, packages, inheritance, delegation, observers, MVC (model view controller), exceptions, assertions. Honors version available
Gen Ed: QR.
Grading status: Letter grade.

COMP 410. Data Structures. 3 Credits.

The analysis of data structures and their associated algorithms. Abstract data types, lists, stacks, queues, trees, and graphs. Sorting, searching, hashing.
Requisites: Prerequisite, COMP 401.
Grading status: Letter grade.

COMP 411. Computer Organization. 4 Credits.

Digital logic, circuit components. Data representation, computer architecture and implementation, assembly language programming.
Requisites: Prerequisite, COMP 401.
Grading status: Letter grade.

COMP 426. Modern Web Programming. 3 Credits.

Developing applications for the World Wide Web including both client-side and server-side programming. Emphasis on Model-View-Controller architecture, AJAX, RESTful Web services, and database interaction.
Requisites: Prerequisites, COMP 401 and 410.
Grading status: Letter grade.

COMP 431. Internet Services and Protocols. 3 Credits.

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.
Requisites: Prerequisites, COMP 401, 410, and 411.
Grading status: Letter grade.

COMP 433. Mobile Computing Systems. 3 Credits.

Principles of mobile applications, mobile OS, mobile networks, and embedded sensor systems. Coursework includes programming assignments, reading from recent research literature, and a semester long project on a mobile computing platform (e.g., Android, Arduino, iOS, etc.).
Requisites: Prerequisites, COMP 401, 410, and 411.
Grading status: Letter grade.

COMP 435. Computer Security Concepts. 3 Credits.

Introduction to topics in computer security including confidentiality, integrity, availability, authentication policies, basic cryptography and cryptographic protocols, ethics, and privacy. A student may not receive credit for this course after receiving credit for COMP 535.
Requisites: Prerequisites, COMP 401, 410, and 411.
Grading status: Letter grade.

COMP 455. Models of Languages and Computation. 3 Credits.

Introduction to the theory of computation. Finite automata, regular languages, pushdown automata, context-free languages, and Turing machines. Undecidable problems.
Requisites: Prerequisites, COMP 110 or 401, and COMP 283 or MATH 381.
Grading status: Letter grade.

COMP 475. 2D Computer Graphics. 3 Credits.

Fundamentals of modern software 2D graphics; geometric primitives, scan conversion, clipping, transformations, compositing, texture sampling. Advanced topics may include gradients, antialiasing, filtering, parametric curves, and geometric stroking.
Requisites: Prerequisites, COMP 401, 410, 411, and MATH 547.
Grading status: Letter grade.

COMP 486. Applications of Natural Language Processing. 3 Credits.

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.
Requisites: Prerequisite, COMP 110, 116, or 121.
Grading status: Letter grade
Same as: INLS 512.

COMP 487. Information Retrieval. 3 Credits.

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.
Grading status: Letter grade
Same as: INLS 509.

COMP 495. Mentored Research in Computer Science. 3 Credits.

Independent research conducted under the direct mentorship of a computer science faculty member. This course cannot be counted toward the completion of the major or minor. For computer science majors only.
Gen Ed: EE-Mentored Research.
Repeat rules: May be repeated for credit. 6 total credits. 2 total completions.
Grading status: Letter grade.

COMP 496. Independent Study in Computer Science. 1-3 Credits.

Permission of the director of undergraduate studies. Computer science majors only. For advanced majors in computer science who wish to conduct an independent study or research project with a faculty supervisor. May be taken repeatedly for up to a total of six credit hours.
Repeat rules: May be repeated for credit; may be repeated in the same term for different topics; 6 total credits. 6 total completions.
Grading status: Letter grade.

COMP 520. Compilers. 3 Credits.

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.
Requisites: Prerequisites, COMP 401, 410, 411, and 455.
Grading status: Letter grade.

COMP 521. Files and Databases. 3 Credits.

Placement of data on secondary storage. File organization. Database history, practice, major models, system structure and design.
Requisites: Prerequisites, COMP 401, 410, and 411.
Grading status: Letter grade.

COMP 523. Software Engineering Laboratory. 4 Credits.

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.
Requisites: Prerequisites, COMP 401, 410, 411, and at least two chosen from COMP 426, 431, 520, 521, 530, 535, 560, 562, 575, 580, 585.
Gen Ed: CI, EE-Mentored Research.
Grading status: Letter grade.

COMP 524. Programming Language Concepts. 3 Credits.

Concepts of high-level programming and their realization in specific languages. Data types, scope, control structures, procedural abstraction, classes, concurrency. Run-time implementation.
Requisites: Prerequisites, COMP 401 and 410.
Grading status: Letter grade.

COMP 530. Operating Systems. 3 Credits.

Types of operating systems. Concurrent programming. Management of storage, processes, devices. Scheduling, protection. Case study. Course includes a programming laboratory. Honors version available
Requisites: Prerequisites, COMP 401, 410, and 411.
Grading status: Letter grade.

COMP 533. Distributed Systems. 3 Credits.

Distributed systems and their goals; resource naming, synchronization of distributed processes; consistency and replication; fault tolerance; security and trust; distributed object-based systems; distributed file systems; distributed Web-based systems; and peer-to-peer systems.
Requisites: Prerequisite, COMP 431 or 530; permission of the instructor for students lacking the prerequisite.
Grading status: Letter grade.

COMP 535. Introduction to Computer Security. 3 Credits.

Principles of securing the creation, storage, and transmission of data and ensuring its integrity, confidentiality and availability. Topics include access control, cryptography and cryptographic protocols, network security, and online privacy.
Requisites: Prerequisites, COMP 401, 410, and COMP 283 or MATH 381.
Grading status: Letter grade.

COMP 541. Digital Logic and Computer Design. 4 Credits.

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.
Requisites: Prerequisites, COMP 401 and 411.
Grading status: Letter grade.

COMP 550. Algorithms and Analysis. 3 Credits.

Formal specification and verification of programs. Techniques of algorithm analysis. Problem-solving paradigms. Survey of selected algorithms.
Requisites: Prerequisites, COMP 410, and COMP 283 or MATH 381.
Grading status: Letter grade.

COMP 555. Bioalgorithms. 3 Credits.

Bioinformatics algorithms. Topics include DNA restriction mapping, finding regulatory motifs, genome rearrangements, sequence alignments, gene prediction, graph algorithms, DNA sequencing, protein sequencing, combinatorial pattern matching, approximate pattern matching, clustering and evolution, tree construction, Hidden Markov Models, randomized algorithms.
Requisites: Prerequisites, COMP 401, 410, and COMP 283 or MATH 381.
Grading status: Letter grade.

COMP 560. Artificial Intelligence. 3 Credits.

Introduction to techniques and applications of modern artificial intelligence. Combinatorial search, probabilistic models and reasoning, and applications to natural language understanding, robotics, and computer vision.
Requisites: Prerequisites, COMP 401, 410, and MATH 231.
Grading status: Letter grade.

COMP 562. Introduction to Machine Learning. 3 Credits.

Machine learning as applied to speech recognition, tracking, collaborative filtering and recommendation systems. Classification, regression, support vector machines, hidden Markov models, principal component analysis, and deep learning.
Requisites: Prerequisites, COMP 401, 410, MATH 233, and STOR 435; permission of the instructor for students lacking the prerequisites.
Grading status: Letter grade.

COMP 572. Computational Photography. 3 Credits.

The course provides a hands on introduction to techniques in computational photography--the process of digitally recording light and then performing computational manipulations on those measurements to produce an image or other representation. The course includes an introduction to relevant concepts in computer vision and computer graphics.
Requisites: Prerequisites, COMP 401, 410, and MATH 547 or 577.
Grading status: Letter grade.

COMP 575. Introduction to Computer Graphics. 3 Credits.

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.
Requisites: Prerequisites, COMP 401, 410, and MATH 547.
Grading status: Letter grade.

COMP 576. Mathematics for Image Computing. 3 Credits.

Mathematics relevant to image processing and analysis using real image computing objectives and provided by computer implementations.
Requisites: Prerequisites, COMP 116 or 401, and MATH 233.
Grading status: Letter grade
Same as: BMME 576.

COMP 580. Enabling Technologies. 3 Credits.

We will investigate ways computer technology can be used to mitigate the effects of disabilities and the sometimes surprising response of those we intended to help.
Requisites: Prerequisites, COMP 401 and 410.
Gen Ed: EE-Service Learning.
Grading status: Letter grade.

COMP 581. Introduction to Robotics. 3 Credits.

Instructor permission for students lacking the prerequisites. Hands-on introduction to robotics with a focus on the computational aspects. Students will build and program mobile robots. Topics include kinematics, actuation, sensing, configuration spaces, control, and motion planning. Applications include industrial, mobile, personal, and medical robots. Honors version available
Requisites: Prerequisites, COMP 401 and 410.
Grading status: Letter grade.

COMP 585. Serious Games. 3 Credits.

Concepts of computer game development and their application beyond entertainment to fields such as education, health, and business. Course includes team development of a game. Honors version available
Requisites: Prerequisites, COMP 401, 410, 411, and 426.
Gen Ed: EE-Field Work.
Grading status: Letter grade.

COMP 590. Topics in Computer Science. 3 Credits.

Permission of the instructor. This course has variable content and may be taken multiple times for credit. Honors version available
Repeat rules: May be repeated for credit. 12 total credits. 4 total completions.
Grading status: Letter grade.

COMP 631. Computer Networks. 3 Credits.

Required preparation, a first course in operating systems, a first course in networking (e.g., COMP 431 and 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.
Grading status: Letter grade.

COMP 633. Parallel and Distributed Computing. 3 Credits.

Required preparation, a first course in operating systems and a first course in algorithms (e.g., 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.
Grading status: Letter grade.

COMP 635. Wireless and Mobile Communications. 3 Credits.

This course builds an understanding of the core issues encountered in the design of wireless (vs. wired) networks. It also exposes students to fairly recent paradigms in wireless communication.
Requisites: Prerequisite, COMP 431.
Grading status: Letter grade.

COMP 651. Computational Geometry. 3 Credits.

Required preparation, a first course in algorithms (e.g., COMP 550). Design and analysis of algorithms and data structures for geometric problems. Applications in graphics, CAD/CAM, robotics, GIS, and molecular biology.
Grading status: Letter grade.

COMP 655. Cryptography. 3 Credits.

Instructor permission for students lacking prerequisites. Introduction to design and analysis of cryptographic algorithms. Topics include basis of abstract algebra and number theory, symmetric and asymmetric encryption algorithms, cryptographic hash functions, message authentication codes, digital signature schemes, elliptic curve algorithms, side-channel attacks, selected advanced topics
Requisites: Prerequisites, COMP 455 and STOR 435.
Grading status: Letter grade.

COMP 662. Scientific Computation II. 3 Credits.

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.
Requisites: Prerequisite, MATH 661.
Grading status: Letter grade
Same as: MATH 662, ENVR 662.

COMP 665. Images, Graphics, and Vision. 3 Credits.

Required preparation, a first course in data structures and a first course in discrete mathematics (e.g., 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.
Gen Ed: QI.
Grading status: Letter grade.

COMP 672. Simulation Modeling and Analysis. 3 Credits.

Introduces students to modeling, programming, and statistical analysis applicable to computer simulations. Emphasizes statistical analysis of simulation output for decision-making. Focuses on discrete-event simulations and discusses other simulation methodologies such as Monte Carlo and agent-based simulations. Students model, program, and run simulations using specialized software. Familiarity with computer programming recommended.
Requisites: Prerequisites, STOR 555 and 641.
Grading status: Letter grade
Same as: STOR 672.

COMP 690. Special Topics in Computer Science. 1-4 Credits.

This course has variable content and may be taken multiple times for credit. COMP 690 courses do not count toward the major or minor.
Repeat rules: May be repeated for credit; may be repeated in the same term for different topics; 8 total credits. 2 total completions.
Grading status: Letter grade.

COMP 691H. Honors Thesis in Computer Science. 3 Credits.

For computer science majors only and by permission of the department. Individual student research for students pursuing an honors thesis in computer science under the supervision of a departmental faculty adviser.
Gen Ed: EE-Mentored Research.
Grading status: Letter grade.

COMP 692H. Honors Thesis in Computer Science. 3 Credits.

Permission of the department. Required of all students in the honors program in computer science. The construction of a written honors thesis and an oral public presentation of the thesis are required.
Gen Ed: EE-Mentored Research.
Grading status: Letter grade.

Graduate-level Courses

COMP 715. Visualization in the Sciences. 3 Credits.

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.
Same as: MTSC 715, PHYS 715.

COMP 720. Compilers. 3 Credits.

Tools and techniques of compiler construction. Lexical, syntactic, and semantic analysis. Emphasis on code generation and optimization.
Requisites: Prerequisites, COMP 455, 520, and 524,.

COMP 721. Database Management Systems. 3 Credits.

Database management systems, implementation, and theory. Query languages, query optimization, security, advanced physical storage methods and their analysis.
Requisites: Prerequisites, COMP 521 and 550.

COMP 722. Data Mining. 3 Credits.

Data mining is the process of automatic discovery of patterns, changes, associations, and anomalies in massive databases. This course provides a survey of the main topics (including and not limited to classification, regression, clustering, association rules, feature selection, data cleaning, privacy, and security issues) and a wide spectrum of applications.
Requisites: Prerequisites, COMP 550 and STOR 435.

COMP 723. Software Design and Implementation. 3 Credits.

Principles and practices of software engineering. Object-oriented and functional approaches. Formal specification, implementation, verification, and testing. Software design patterns. Practicum.
Requisites: Prerequisites, COMP 524 and 550.

COMP 724. Programming Languages. 3 Credits.

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.
Requisites: Prerequisites, COMP 455, 520, and 524.

COMP 730. Operating Systems. 3 Credits.

Theory, structuring, and design of operating systems. Sequential and cooperating processes. Single processor, multiprocessor, and distributed operating systems.
Requisites: Prerequisite, COMP 530.

COMP 734. Distributed Systems. 3 Credits.

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.
Requisites: Prerequisite, COMP 431; permission of the instructor for students lacking the prerequisite.

COMP 735. Distributed and Concurrent Algorithms. 3 Credits.

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.
Requisites: Prerequisites, COMP 530 and 550.

COMP 737. Real-Time Systems. 3 Credits.

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.
Requisites: Prerequisite, COMP 530.

COMP 740. Computer Architecture and Implementation. 3 Credits.

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.
Requisites: Prerequisites, COMP 411 and PHYS 352.

COMP 741. Elements of Hardware Systems. 3 Credits.

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.
Requisites: Prerequisite, COMP 411.

COMP 744. VLSI Systems Design. 3 Credits.

Required preparation, 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.
Requisites: Prerequisite, COMP 740.

COMP 750. Algorithm Analysis. 3 Credits.

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.
Requisites: Prerequisites, COMP 455 and 550.

COMP 752. Mechanized Mathematical Inference. 3 Credits.

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.
Requisites: Prerequisite, COMP 825.

COMP 755. Machine Learning. 3 Credits.

Machine Learning methods are aimed at developing systems that learn from data. The course covers data representations suitable for learning, mathematical underpinnings of the learning methods and practical considerations in their implementations.
Requisites: Prerequisite, COMP 410 and MATH 233.

COMP 761. Introductory Computer Graphics. 1 Credit.

A computer graphics module course with one credit hour of specific COMP 665 content.

COMP 763. Semantics and Program Correctness. 3 Credits.

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.
Requisites: Prerequisite, COMP 724.

COMP 764. Monte Carlo Method. 3 Credits.

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.
Requisites: Prerequisites, COMP 110, MATH 233, 418, and STOR 435; permission of the instructor for students lacking the prerequisites.

COMP 766. Visual Solid Shape. 3 Credits.

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.
Requisites: Prerequisites, MATH 233.

COMP 767. Geometric and Solid Modeling. 3 Credits.

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.
Requisites: Prerequisites, COMP 575 or 770, and MATH 661.

COMP 768. Physically Based Modeling and Simulation. 3 Credits.

Geometric algorithms, computational methods, simulation techniques for modeling based on mechanics and its applications.
Requisites: Prerequisite, COMP 665; permission of the instructor for students lacking the prerequisite.

COMP 770. Computer Graphics. 3 Credits.

Study of graphics hardware, software, and applications. Data structures, graphics, languages, curve surface and solid representations, mapping, ray tracing and radiosity.
Requisites: Prerequisites, COMP 665 and 761.

COMP 775. Image Processing and Analysis. 3 Credits.

Approaches to analysis of digital images. Scale geometry, statistical pattern recognition, optimization. Segmentation, registration, shape analysis. Applications, software tools.
Requisites: Prerequisites, COMP 665, MATH 547, and STOR 435.
Same as: BMME 775.

COMP 776. Computer Vision in our 3D World. 3 Credits.

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.
Requisites: Prerequisites, MATH 566, COMP 550, 665, and 775; permission of the instructor for students lacking the prerequisites.

COMP 777. Optimal Estimation in Image Analysis. 3 Credits.

Formulation and numerical solution of optimization problems in image analysis.
Requisites: Prerequisite, MATH 233, MATH 547, and MATH 535 or STOR 435.

COMP 781. Robotics. 3 Credits.

Introduction to the design, programming, and control of robotic systems. Topics include kinematics, dynamics, sensing, actuation, control, robot learning, tele-operation, and motion planning. Applications will be discussed including industrial, mobile, assistive, personal, and medical robots.
Requisites: Prerequisites, COMP 550 and MATH 547; Permission of the instructor for students lacking the prerequisites.

COMP 782. Motion Planning in Physical and Virtual Worlds. 3 Credits.

Topics include path planning for autonomous agents, sensor-based planning, localization and mapping, navigation, learning from demonstration, motion planning with dynamic constraints, and planning motion of deformable bodies. Applications to robots and characters in physical and virtual worlds will be discussed.
Requisites: Prerequisite, COMP 550; permission of the instructor for students lacking the prerequisite.

COMP 787. Visual Perception. 3 Credits.

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.
Requisites: Prerequisites, COMP 665.

COMP 788. Expert Systems. 3 Credits.

Languages for knowledge engineering. Rules, semantic nets, and frames. Knowledge acquisition. Default logics. Uncertainties. Neural networks.
Requisites: Prerequisite, COMP 750.

COMP 790. Topics in Computer Science. 1-21 Credits.

Permission of the instructor. This course has variable content and may be taken multiple times for credit.
Repeat rules: May be repeated for credit; may be repeated in the same term for different topics.

COMP 822. Topics in Discrete Optimization. 3 Credits.

Topics may include polynomial algorithms, computational complexity, matching and matroid problems, and the traveling salesman problem.
Requisites: Prerequisite, STOR 712; Permission of the instructor for students lacking the prerequisite.
Same as: STOR 822.

COMP 824. Functional Programming. 3 Credits.

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.
Requisites: Prerequisite, COMP 524.

COMP 825. Logic Programming. 3 Credits.

Propositional calculus, Horn clauses, first-order logic, resolution. Prolog: operational semantics, relationship to resolution, denotational semantics, and non-logical features. Programming and applications. Selected advanced topics.
Requisites: Prerequisite, COMP 524.

COMP 831. Internet Architecture and Performance. 3 Credits.

Internet structure and architecture; traffic characterization and analysis; errors and error recovery; congestion and congestion control; services and their implementations; unicast and multicast routing.
Requisites: Prerequisite, COMP 431; permission of the instructor for students lacking the prerequisite.

COMP 832. Multimedia Networking. 3 Credits.

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.
Requisites: Prerequisites, COMP 431 and 530.

COMP 841. Advanced Computer Architecture. 3 Credits.

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.
Requisites: Prerequisite, COMP 740.

COMP 842. Advanced Computer Implementation. 3 Credits.

Required preparation, 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.
Requisites: Prerequisite, COMP 740.

COMP 844. Advanced Design of VLSI Systems. 3 Credits.

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.
Requisites: Prerequisite, COMP 744.

COMP 850. Advanced Analysis of Algorithms. 3 Credits.

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.
Requisites: Prerequisite, COMP 750.

COMP 870. Advanced Image Synthesis. 3 Credits.

Advanced topics in rendering, including global illumination, surface models, shadings, graphics hardware, image-based rendering, and antialiasing techniques. Topics from the current research literature.
Requisites: Prerequisite, COMP 770.

COMP 872. Exploring Virtual Worlds. 3 Credits.

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.
Requisites: Prerequisite, COMP 870.

COMP 875. Recent Advances in Image Analysis. 3 Credits.

Lecture and seminar on recent advances in image segmentation, registration, pattern recognition, display, restoration, and enhancement.
Requisites: Prerequisite, COMP 775.

COMP 892. Practicum. 0.5 Credits.

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.
Repeat rules: May be repeated for credit.

COMP 910. Computer Science Module. 0.5-21 Credits.

A variable-credit module course that can be used to configure a registration for a portion of a class.
Repeat rules: May be repeated for credit; may be repeated in the same term for different topics.

COMP 911. Professional Writing in Computer Science. 3 Credits.

Graduate computer science majors only. 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.

COMP 915. Technical Communication in Computer Science. 1 Credit.

Graduate computer science majors or permission of the instructor. Seminar on teaching, short oral presentations, and writing in computer science.

COMP 916. Seminar in Professional Practice. 1 Credit.

Required preparation, 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.

COMP 917. Seminar in Research. 1 Credit.

Graduate computer science majors only. The purposes, strategies, and techniques for conducting research in computer science and related disciplines.

COMP 918. Research Administration for Scientists. 3 Credits.

Graduate standing required. Introduction to grantsmanship, research grants and contracts, intellectual property, technology transfer, conflict of interest policies. Course project: grant application in NSF FastLane.

COMP 980. Computers and Society. 1 Credit.

Graduate computer science majors only. Seminar on social and economic effects of computers on such matters as privacy, employment, power shifts, rigidity, dehumanization, dependence, quality of life.

COMP 990. Research Seminar in Computer Science. 1-21 Credits.

Permission of the instructor. Seminars in various topics offered by members of the faculty.
Repeat rules: May be repeated for credit; may be repeated in the same term for different topics.

COMP 991. Reading and Research. 1-21 Credits.

Permission of the instructor. Directed reading and research in selected advanced topics.
Repeat rules: May be repeated for credit; may be repeated in the same term for different topics.

COMP 992. Master's (Non-Thesis). 3 Credits.

Permission of the department.
Repeat rules: May be repeated for credit; may be repeated in the same term for different topics.

COMP 993. Master's Research and Thesis. 3 Credits.

Permission of the department.
Repeat rules: May be repeated for credit.

COMP 994. Doctoral Research and Dissertation. 3 Credits.

Permission of the department.
Repeat rules: May be repeated for credit.