Department of Computer Science (GRAD)

The Department of Computer Science at UNC–Chapel Hill, established in 1964, was only the second independent university computer science department in the United States. Its primary missions are research and graduate and undergraduate teaching. Research particularly emphasizes:

  • bioinformatics and computational biology
  • cloud computing
  • computer architecture
  • computer graphics
  • computer-supported collaborative work
  • computer vision
  • cyber-physical systems
  • data science
  • deep learning
  • geometric computing
  • high-performance computing
  • human-computer interaction
  • machine learning
  • medical image analysis
  • natural language processing
  • 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 Student Association sponsors both professional and social events and represents the students in departmental matters. Its president is a voting member at faculty meetings.

Facilities

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. The robotics lab has high bay ceilings for aerial drone research as well as a number of terrestrial based robot platforms ranging from single arms to quadrupeds.  

Sitterson Hall, which opened in 1987, provides 74,000 square feet of offices and a variety of dedicated lab spaces for different research focuses. This includes hardware engineering labs which house equipment for rapid prototyping, machining, electronics, optics and chemistry. There are also computer vision and embedded systems labs outfitted with cameras, tracking systems, radar systems and AR/VR headsets. The largest space is a newly renovated AI lab that has been outfitted with new furniture featuring 30 standing desks and chairs matched with widescreen monitors and high speed desktop machines.

Graduate students have access to all of the department's research and teaching facilities, including specialized research laboratories for graphics and image processing, robotics, 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 1000 computers, ranging from older systems used for generating network traffic for simulated Internet experiments to state-of-the-art GPU workstations and clusters for graphics and compute-intensive research. Departmental servers provide computing services, disk space, email, source code repositories, web services, database services, backups, in addition to other services. All systems are integrated by means of high-speed networks, described below, and are supported by highly skilled technical staff who provide a consistent computing environment throughout the department.

The network infrastructure available to Computer Science is extensive. In the Frederick P. Brooks, Jr. Building and Sitterson Hall every office and common space is equipped with category 6 or better twisted pair cable. All offices in Sitterson also have coaxial and fiber optic cable. All data connections in the both buildings support 1 Gigabit per second, and we have a growing number of systems using 10 Gigabit connections. Extensive riser connections enable the department to create multiple separate physical networks between any points in the two buildings.

Wifi networks are available throughout both buildings. A 10 Gigabit link connects the department’s network to the UNC-CH campus network and the North Carolina Research and Education Network (NC-REN), allowing users to access the National LambdaRail/Internet 2 network and commodity Internet. We also have a 10 gigabit connection through the Renaissance Computing Institute (RENCI) to the Global Environment for Network Innovations (GENI) project. The department’s network is connected to the North Carolina Research and Education Network (NC-REN), a statewide network that links research and educational institutions.

In addition to the departmental servers, our research laboratories contain a wide variety of specialized equipment. We also have an extensive virtual machine infrastructure spanning two machine rooms. Most of our systems, including servers, run Linux-based operating systems, while a smaller number of systems run Windows. Programming languages most used in the department include Python, C, C++, and Java.

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.

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

Deadlines

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 info@cs.unc.edu. Interested persons are encouraged to visit the department's Web site.

Computer Science, Master's Degree (M.S.)

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.

Course Requirements

Core Courses 1
Computer Science Courses 218
Breadth Requirement9
Each student must take one course in each of the following categories to fulfill a breadth requirement. 3
Thesis/Substitute or Dissertation
COMP 992Master's (Non-Thesis) 43
or COMP 993 Master's Research and Thesis
Minimum Hours30
1

Courses numbered 400 or higher must be taken (excluding COMP 495, COMP 496, COMP 691H, COMP 692H, and COMP 990).

2

Of the minimum 30 hours, at least 18 hours must be taken in Computer Science (designated COMP in the catalog) numbered 400-890. At least 3 credit hours of COMP 992 or COMP 993 is required by The Graduate School. The remaining 9 credit hours, if outside COMP, should support M.S. graduate work (e.g., STAT courses for students focused on A.I.) and must be approved by the academic advisor in advance.

3

At most one course in the set can be at the 500 level or COMP 455. The other courses must be at the 600 level or above. Courses taken at UNC as a graduate student for the breadth requirement will be accepted automatically. The Graduate Studies Committee will consider courses taken at another graduate program, or equivalent professional experience, and/or graduate courses taken during undergraduate study, on a case by case basis. A section of COMP 790 may be used to satisfy any of the three categories; each 790 instance is assigned a category here.

4

No more than 6 credits of COMP 991 and no more than 6 credits of COMP 992/COMP 993 can be used towards the MS credit hour requirement.

Breadth Requirement Electives
Theory and Formal Methods
Models of Languages and Computation
Cryptography H
Bioalgorithms
Mathematics for Image Computing
Computational Geometry
Scientific Computation II
Scientific Computation II
Deep Learning
Distributed and Concurrent Algorithms
Real-Time Systems
Algorithm Analysis
Machine Learning
Visual Solid Shape
Optimal Estimation in Image Analysis
Systems and Hardware
Compilers
IDEAs in Action General Education logo Software Engineering Laboratory
Operating Systems H
Introduction to Computer Security
IDEAs in Action General Education logo Digital Logic and Computer Design
Operating System Implementation
Networked and Distributed Systems
Parallel and Distributed Computing
Wireless and Mobile Communications
Compilers
Software Design and Implementation
Operating Systems
Distributed Systems
Computer Architecture and Implementation
Multimedia Networking
Applications
Artificial Intelligence
Computational Photography
Introduction to Robotics H
Computational Biology
Computer Graphics
Image Processing and Analysis
Computer Vision in our 3D World
Robotics
Motion Planning in Physical and Virtual Worlds
Exploring Virtual Worlds
Recent Advances in Image Analysis
Introduction to Machine Learning H
H

Honors version available. An honors course fulfills the same requirements as the nonhonors version of that course. Enrollment and GPA restrictions may apply.

Milestones

The following list of milestones (non-course degree requirements) must be completed; view this list of standard milestone definitions for more information.

  • Master's Committee
  • ​Master's Oral Exam/Approved Exam Substitute
  • Master's Written Exam/Approved Exam Substitute
  • Thesis Substitute
  • Thesis/Substitute Defense
  • Approved Master's Thesis
  • Residence Credit
  • Master's Exit Survey
  • ​Program Product Requirement

Computer Science,  Doctoral Program (Ph.D.)

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.

Course Requirements

Core Courses
COMP 915Technical Communication in Computer Science3
Primary Concentration 19
Breadth Requirement18
Each student must take an additional 6 courses to fulfill a breadth requirement. Courses are classified into 4 categories. View elective course options below.
Thesis/Substitute or Dissertation
COMP 994Doctoral Research and Dissertation 23
Minimum Hours36
1

At least 3 three-hour graduate courses, of which at least two support the specific dissertation topic in depth, and at least one more broadly supports the area of computer science in which the dissertation topic falls. These courses can be taken at another university or as an undergraduate, and may have been counted toward an undergraduate degree.

2

Students must take COMP 994 twice for a minimum of 6 credit hours.

Breadth Requirement Electives
Theory and Formal Thinking
Models of Languages and Computation
Cryptography H
Bioalgorithms
Introduction to Machine Learning H
Mathematics for Image Computing
Computational Geometry
Scientific Computation II
Scientific Computation II
Deep Learning
Distributed and Concurrent Algorithms
Real-Time Systems
Algorithm Analysis
Machine Learning
Visual Solid Shape
Optimal Estimation in Image Analysis
Sytems and Hardware
Compilers
IDEAs in Action General Education logo Software Engineering Laboratory
Operating Systems H
Introduction to Computer Security
IDEAs in Action General Education logo Digital Logic and Computer Design
Operating System Implementation
Networked and Distributed Systems
Parallel and Distributed Computing
Wireless and Mobile Communications
Compilers
Software Design and Implementation
Operating Systems
Distributed Systems
Computer Architecture and Implementation
Applications
Artificial Intelligence
Computational Photography
Introduction to Robotics H
Computational Biology
Computer Graphics
Image Processing and Analysis
Computer Vision in our 3D World
Robotics
Motion Planning in Physical and Virtual Worlds
Exploring Virtual Worlds
Recent Advances in Image Analysis
Approved Courses Outside of Computer Science
Principles of Statistical Inference
Mathematical Statistics
H

Honors version available. An honors course fulfills the same requirements as the nonhonors version of that course. Enrollment and GPA restrictions may apply.

The set of six breadth courses must meet the following criteria.

  1. At least one course in each of the 3 CS categories, and at the 600 level or above.
  2. Normally no more than 2 courses in any category but students may petition to apply 3 in a category outside of their thesis research area(s).
  3. All 6 courses must have been taken as a graduate student. Courses taken at UNC that satisfy the guidelines for the set of breadth courses will be accepted automatically. The Graduate Studies Committee will consider courses taken at another graduate program, or equivalent professional experience, and/or graduate courses taken during undergraduate study, on a case by case basis (course waiver forms must be submitted for consideration).
  4. PhD Computer Science graduate students that have a non-CS background can petition GSC (with justification) in order to consider exceptions for the breadth requirement.
  5. At most 1 CS course in the set of 6 courses can be at the 500 level or COMP 455. (We may consider 2, by petition to the Grad Studies Committee, for students with non-CS backgrounds doing interdisciplinary research.) COMP 550 is not allowed to be in the set.
  6. The non-CS courses must support either the dissertation research or the field of computer science, and be at the 400 level or above. If the course is not on the standard list, it must be approved by the Graduate Studies Committee.

Milestones

The following list of milestones (non-course degree requirements) must be completed; view this list of standard milestone definitions for more information.

  • Doctoral Committee
  • Doctoral Oral Comprehensive Exam
  • Doctoral Written Exam (PRP)
  • Prospectus Oral Exam
  • Dissertation Defense
  • Doctoral Dissertation Approved/Format Accepted
  • Residence Credit
  • Doctoral Exit Survey
  • Program Product Requirement

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.

Professors

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
Ron Alterovitz (99), Medical Robotics, Motion Planning, Physically Based Simulation, Assistive Robotics, Medical Image Analysis
James Anderson (62), Real-Time Systems, Distributed and Concurrent Algorithms, Multicore Computing, Operating Systems
Mohit Bansal (139), Statistical Natural Language Processing and Machine Learning
Samarjit Chakraborty (148), Distributed Embedded Systems, Hardware/Software Co-Design, Embedded Control Systems, Low-Power Systems, Energy Storage Systems, Electromobility, and Sensor Network-Based Information Processing
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
Stephen M. Pizer (6), Image Display and Analysis, Medical Imaging, Human and Computer Vision, Graphics
Donald Porter (138), Operating systems, Virtualization, File Systems, Security, Concurrent Programming
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

Snigdha Chaturvedi (158), Natural Language Understanding, Applications of Machine Learning and Natural Language Processing
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
Shahriar Nirjon (137), Mobile Computing, Embedded Sensor Systems, Wireless Networks, Data Analytics for Mobile Systems
Junier Oliva (142), Machine Learning, Artificial Intelligence, Nonparametric Statistics, Deep Learning, Statistical Data Mining, Signal Processing, Graphical Models, Generative Models, Kernel Methods, Scalability, Complex Datasets, Optimization, Density Estimation
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
Cynthia Sturton (132), Computer and Hardware Security, Applied Formal Methods for Software Security
Daniel Szafir (172), Human-Robot Interaction, Human-Computer Interaction, Virtual/Augmented/Mixed Reality, User-Centered Design, Human-Centered Computing, Aerial Robotics
Danielle Szafir (173), Visualization, Data Analytics, Computer Graphics, Virtual and Augmented Reality

Assistant Professors

Benjamin Berg (178), Performance Modeling, Scheduling, Resource Allocation, Caching
Gedas Bertasius (170), Video Understanding, First-Person Vision, Human Behavior Modeling, Multi-Modal Deep Learning, Transfer Learning
Praneeth Chakravarthula (175), Computational Displays and Imaging, Holographic/3D Displays, Augmented and Virtual Reality, Diffractive Optics, Artificial Intelligence, Human-Computer Interaction
Tianlong Chen (187), Machine Learning Problems: Sparsity, Robustness, Learning to Optimize, Graph Learning, Diffusion Models
Zhun Deng, Machine Learning, Statistics, Theoretical Computer Science
Mingyu Ding (190), Robotics, Robot Learning, Embodied AI, Manipulation, Computer Vision, 3D/Multimodal Learning, Mechanical Design, Human-Robot Interaction
Parasara Sridhar Duggirala (144), Cyber-Physical Systems, Formal Methods, Control Theory, Hybrid Systems, Autonomy, Embedded and Real-Time Systems, Probabilistic Systems
Saba Eskandarian (171), Applied Cryptography, Security, Privacy
Andrew Kwong (184), Security, Applied Cryptography
Julia Len, Applied Cryptography, Computer Security
Raghavendra Pothukuchi, Computer Architecture and Systems, Brain-Computer Interfaces, Quantum Computing, Brain-Inspired AI Hardware, Cognitive Modeling, Formal Control, Energy and Power Efficiency, Security, Machine Learning
Roni Sengupta (177), Computer Vision, Graphics, Computational Photography, 3D Vision, Inverse Graphics, Inverse Rendering, Democratizing VFX, Next-Generation Video Communication
Shashank Srivastava (157), Topics in Natural Language Processing, AI, Machine Learning and Their Applications; Focus on Language Grounding and Pragmatics, Neuro-symbolic Methods, Text Analysis, Latent Variable Models
Natalie Stanley (166), Single-Cell Bioinformatics, Computational and Systems Immunology, Algorithms for Representing and Understanding Graph-Based Data
Huaxiu Yao (183), Generalizable, Well-Aligned, and Agentic Foundation Models (LLMs, VLMs, Diffusion Models)

Research 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
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
Ashok Krishnamurthy (137), Data Science, Health Informatics and Applications
David Luebke (156), Computer Graphics, Display Technology, Ray Tracing, Virtual and Augmented Reality
Dinesh Manocha (58), Interactive Computer Graphics, Geometric and Solid Modeling, Robotics Motion Planning, Many-Core Algorithms
David A. Plaisted (28), Mechanical Theorem Proving, Term Rewriting Systems, Logic Programming, Algorithms
Diane Pozefsky (93), Software Engineering and Environments, Computer Education, Serious Games Design and Development, Social, Legal and Ethical Issues Concerning Information Technology
Michael K. Reiter (95), Computer and Network Security, Distributed Systems, Applied Cryptography
F. Donelson Smith (42), Computer Networks, Operating Systems, Distributed Systems, Multimedia
P.S. Thiagarajan (180)
Mary C. Whitton (81), Developing and Evaluating Technology for Virtual and Augmented Reality Systems, Virtual Locomotion, Tools for Serious Games

Research Associate Professor

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

Teaching Professor

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

Teaching Associate Professor

Sayeed Ghani (179), Applications of Artificial Intelligence and Deep Learning in Health/IoT and Wireless Sensor Networks
Brent Munsell (159), Medical Image Analysis, Shape Modeling, Brain Connectivity, Machine Learning, Computational Medicine

Teaching Assistant Professors

Prairie Rose Goodwin (188), Data Modeling, Real-Time Analytics, Human-Computer Interaction
Isabella Hinks, Machine Learning, Remote Sensing, Statistics, Causal Inference
Alyssa Lytle (182), Formal Methods, Human-Robot Interaction
Connor McMahon, Computer Science Education
Jorge Silva (161)
Kevin Sun, Online Algorithms, Combinatorial Optimization, Computer Science Education

Professors of the Practice

Kris Jordan (140), Educational Technology, Distributed Systems, Entrepreneurship
Richard Marks, Augmented and Virtual Reality, Computer Vision, Signal Processing, Machine Learning
Michael Reed (143)

Adjunct Professors

J. Stephen Marron (114), Smoothing Methods for Curve Estimation
Marc Niethammer (98), Medical Image Analysis; Shape Analysis, Image Segmentation, Deformable Registration, Image-Based Estimation Methods
Julian Rosenman (112), Computer Graphics for Treatment of Cancer Patients, Contrast Enhancement for X-rays
Dinggang Shen (104)
Alexander Tropsha (111)
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
Hongtu Zhu

Adjunct Associate Professors

Jaime Arguello, Information Retrieval, Aggregated Search Systems and Evaluation, Search Behavior, Text Data Mining, Machine Learning
Stephen R. Aylward (109), Computer-Aided Diagnosis, Computer-Aided Surgical Planning, Statistical Pattern Recognition, Image Processing, Neural Networks
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
David Gotz (151)
Guorong Wu (167)
Pew-Thian Yap (164)

Adjunct Assistant Professors

Neil Gaikwad, AI Ethics, Human-AI Value Alignment, Human-Computer Interaction, Computational Sustainability, AI Policy and Governance
Harlin Lee (185), Data Science, Machine Learning, Signal Processing
Yun Li (128)
Beatriz Paniagua (51), Advanced Computer Vision Techniques Applied to Quality Control Industrial Environments
Quoc Tran-Dinh, Numerical Optimization

Adjunct Research Professor

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

Professors Emeriti

Gary Bishop
Peter Calingaert
John H. Halton
Anselmo Lastra
Ming C. Lin
John B. Smith
Donald F. Stanat
Stephen F. Weiss
William V. Wright

COMP

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. Students may not receive credit for this course after receiving credit for COMP 301. Honors version available.

Rules & Requirements  
Requisites: Prerequisite, MATH 231 or MATH 241; a grade of C or better is required.  
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. Students may not receive credit for this course after receiving credit for COMP 210.

Rules & Requirements  
Requisites: Prerequisites, MATH 231 or 241, and COMP 401; a grade of C or better is required in all prerequisite courses.  
Grading Status: Letter grade.  
COMP 411.  Computer Organization.  4 Credits.  

Digital logic, circuit components. Data representation, computer architecture and implementation, assembly language programming. Students may not receive credit for this course after receiving credit for COMP 311.

Rules & Requirements  
Requisites: Prerequisite, MATH 231 or 241,and COMP 401; a grade of C or better is required in all prerequisite courses.  
Grading Status: Letter grade.  
COMP 421.  Files and Databases.  3 Credits.  

Placement of data on secondary storage. File organization. Database history, practice, major models, system structure and design. Previously offered as COMP 521.

Rules & Requirements  
Requisites: Prerequisites, COMP 210, 211, and 301; or COMP 401, 410, and 411; a grade of C or better is required in all prerequisite courses.  
Grading Status: Letter grade.  
IDEAs in Action General Education logoCOMP 423.  Foundations of Software Engineering.  3 Credits.  

This course introduces students to the fundamentals of Software Engineering. Students gain experience with design thinking and processes, technical communication, team collaboration, project management methodology, the software development lifecycle, and more, with an emphasis on today's best industrial practices.

Rules & Requirements  
IDEAs in Action General Education logo IDEAs in Action Gen Ed: FC-CREATE.
Requisites: Prerequisites, C or better in both COMP 211 and COMP 301.  
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.

Rules & Requirements  
Requisites: Prerequisites, COMP 211 and 301; or COMP 401 and 410; a grade of C or better is required in all prerequisite courses.  
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.

Rules & Requirements  
Requisites: Prerequisites, COMP 210, 211, and 301; or COMP 401, 410, and 411; a grade of C or better is required in all prerequisite courses.  
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.).

Rules & Requirements  
Requisites: Prerequisites, COMP 210, 211, and 301; or COMP 401, 410, and 411; a grade of C or better is required in all prerequisite courses.  
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.

Rules & Requirements  
Requisites: Prerequisites, COMP 210, 211, and 301; or COMP 401, 410, and 411; a grade of C or better is required in all prerequisite courses.  
Grading Status: Letter grade.  
COMP 447.  Quantum Computing.  3 Credits.  

Recommended preparation, some knowledge of basic linear algebra. An introduction to quantum computing. Basic math and quantum mechanics necessary to understand the operation of quantum bits. Quantum gates, circuits, and algorithms, including Shor's algorithm for factoring and Grover's search algorithm. Entanglement and error correction. Quantum encryption, annealing, and simulation. Brief discussion of technologies.

Rules & Requirements  
Requisites: Prerequisites, MATH 232, and PHYS 116 or 118.  
Grading Status: Letter grade.  
Same as: PHYS 447.  
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.

Rules & Requirements  
Requisites: Prerequisites, COMP 210 or 410 and COMP 283 or MATH 381 or STOR 315; a grade of C or better in all prerequisite courses is required.  
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.

Rules & Requirements  
Requisites: Prerequisites, COMP 210, 211, and 301; or COMP 401, 410, and 411; a grade of C or better is required in all prerequisite courses.  
Grading Status: Letter grade.  
COMP 486.  Applications of Natural Language Processing.  3 Credits.  

Natural language processing (NLP) uses mathematics, machine learning, linguistics, and computer science to make language computationally accessible and analyzable. In this course, you will learn to do essential NLP tasks using Python and survey a selection of NLP applications to describe the problems or tasks each addresses, the materials and methods used, and how the applications are evaluated. At least a semester of Python or equivalent practical experience is highly recommended.

Rules & Requirements  
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.

Rules & Requirements  
Grading Status: Letter grade.  
Same as: INLS 509.  
COMP 488.  Data Science in the Business World.  3 Credits.  

Business and Computer Science students join forces in this course to create data-driven business insights. We transgress the data science pipeline using cloud computing, artificial intelligence, and real-world datasets. Students acquire hands-on skills in acquiring data, wrangling vast unstructured data, building advanced models, and telling compelling stories with data that managers can understand.

Rules & Requirements  
Grading Status: Letter grade.  
Same as: BUSI 488.  
IDEAs in Action General Education logoCOMP 495.  Mentored Research in Computer Science.  3 Credits.  

Independent research conducted under the direct mentorship of a computer science faculty member. If repeated, the repeated course can not be counted for the major. For computer science majors only. Permission of instructor required.

Rules & Requirements  
IDEAs in Action General Education logo IDEAs in Action Gen Ed: 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.  3 Credits.  

Permission of the department. 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.

Rules & Requirements  
Repeat Rules: May be repeated for credit. 6 total credits. 2 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.

Rules & Requirements  
Requisites: Prerequisites, COMP 301, 311, and 455 or COMP 410, 411, and 455; a grade of C or better is required in all prerequisite courses.  
Grading Status: Letter grade.  
IDEAs in Action General Education logoCOMP 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.

Rules & Requirements  
IDEAs in Action General Education logo IDEAs in Action Gen Ed: FC-CREATE.
Requisites: Prerequisites, COMP 301 and 311; or COMP 401, 410, and 411; as well as at least two chosen from COMP 421, 426, 431, 433, 520, 530, 535, 575, 580, 590.  
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.

Rules & Requirements  
Requisites: Prerequisite, COMP 301 or COMP 401; a grade of C or better is required in all prerequisite courses.  
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.

Rules & Requirements  
Requisites: Prerequisites, COMP 301 and 311; or COMP 401, 410, and 411; a grade of C or better is required in all prerequisite courses.  
Grading Status: Letter grade.  
COMP 533.  Distributed Systems and Concurrent Programming.  3 Credits.  

Distributed systems, concurrent programming, 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.

Rules & Requirements  
Requisites: Prerequisite, COMP 301; a grade of C or better is required.  
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.

Rules & Requirements  
Requisites: Prerequisites, COMP 301 and 311; or COMP 401, 410, and 411; as well as COMP 550, and COMP 283 or MATH 381 or STOR 315; a grade of C or better is required in all prerequisites.  
Grading Status: Letter grade.  
COMP 537.  Cryptography.  3 Credits.  

Introduces both the applied and theoretical sides of cryptography. Main focus will be on the inner workings of cryptographic primitives and how to use them correctly. Begins with standard cryptographic tools such as symmetric and public-key encryption, message authentication, key exchange, and digital signatures before moving on to more advanced topics. Potential advanced topics include elliptic curves, post-quantum cryptography, and zero-knowledge proofs. Honors version available.

Rules & Requirements  
Requisites: Prerequisites, COMP 211 and COMP 301; permission of the instructor for students lacking the prerequisites.  
Grading Status: Letter grade.  
IDEAs in Action General Education logoCOMP 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.

Rules & Requirements  
IDEAs in Action General Education logo IDEAs in Action Gen Ed: FC-CREATE.
Requisites: Prerequisites, COMP 301 and 311; or COMP 401, 410, and 411; a grade of C or better is required in all prerequisite courses.  
Grading Status: Letter grade.  
COMP 545.  Programming Intelligent Physical Systems.  3 Credits.  

Introduction to programming embedded control systems that lie at the heart of robots, drones, and autonomous vehicles. Topics will include modeling physical systems, designing feedback controllers, timing analysis of embedded systems and software, software implementations of controllers on distributed embedded platforms and their verification. Honors version available.

Rules & Requirements  
Requisites: Prerequisites, COMP 301 and COMP 311; or COMP 411; a C or better is required in all pre-requisites.  
Grading Status: Letter grade.  
IDEAs in Action General Education logoCOMP 550.  Algorithms and Analysis.  3 Credits.  

Formal specification and verification of programs. Techniques of algorithm analysis. Problem-solving paradigms. Survey of selected algorithms.

Rules & Requirements  
IDEAs in Action General Education logo IDEAs in Action Gen Ed: FC-QUANT.
Requisites: Prerequisites, COMP 211 and 301; or COMP 410; a grade of C or better is required in all prerequisite courses.  
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.

Rules & Requirements  
Requisites: Prerequisites, COMP 210, and 211; or COMP 401, and 410; and MATH 231, or 241; or BIOL 452; or MATH 553; or BIOL 525; a grade of C or better is required in all prerequisite courses.  
Grading Status: Letter grade.  
Same as: BCB 555.  
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.

Rules & Requirements  
Requisites: Prerequisites, COMP 211 and 301; or COMP 401 and 410; as well as MATH 231; a grade of C or better is required in all prerequisite courses.  
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. Honors version available.

Rules & Requirements  
Requisites: Prerequisites, COMP 211 and 301; or COMP 401 and 410; as well as MATH 233, 347, and STOR 435 or STOR 535 or BIOS 650; a grade of C or better is required in all prerequisite courses; 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.

Rules & Requirements  
Requisites: Prerequisites, COMP 301; or COMP 401 and 410; as well as MATH 347 or 577; a grade of C or better is required in all prerequisite courses.  
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.

Rules & Requirements  
Requisites: Prerequisites, COMP 301 and 311; or COMP 401, 410 and 411; as well as MATH 347 or MATH 577; a grade of C or better is required in all prerequisite courses.  
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.

Rules & Requirements  
Requisites: Prerequisites, COMP 116 or 210 or 401, and MATH 233; a grade of C or better is required in all prerequisites.  
Grading Status: Letter grade.  
Same as: BMME 576.  
COMP 577.  Introduction to Computer Vision.  3 Credits.  

Fundamentals of Computer Vision and overview of recent research problems in Computer Vision. This course attempts to answer the following questions: (a) How do we capture and process an image? (b) How do we develop machine perception that recognizes, detects, and segments objects? (c) How do we connect the 3D world to 2D images and reconstruct 3D from images? We also explore some Computer Vision algorithms' potential to introduce bias and cause harm, particularly among members of underrepresented communities, and consider the ways in which we as researchers and practitioners can do better.

Rules & Requirements  
Requisites: Pre- or corequisites, COMP 211, COMP 301, and MATH 347; permission of the instructor for students lacking the prerequisites.  
Grading Status: Letter grade.  
COMP 581.  Introduction to Robotics.  3 Credits.  

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.

Rules & Requirements  
Requisites: Prerequisites, COMP 301 and 311; or COMP 401, 410, and 411; a grade of C or better is required in all prerequisite courses.  
Grading Status: Letter grade.  
COMP 586.  Natural Language Processing.  3 Credits.  

Through this course, students will develop an understanding of the general field of Natural Language Processing with an emphasis on state-of-the-art solutions for classic NLP problems. Topics include: text representation and classification, parts-of-speech tagging, parsing, translation, and language modeling.

Rules & Requirements  
Requisites: Prerequisites, COMP 301, COMP 311, and COMP 562 or COMP 755 or STOR 565 or equivalent machine learning course; a grade of C or better is required in all prerequisite courses.  
Grading Status: Letter grade.  
COMP 590.  Topics in Computer Science.  3 Credits.  

This course has variable content and may be taken multiple times for credit. Different sections may be taken in the same semester. Honors version available.

Rules & Requirements  
Requisites: Prerequisites, COMP 211 and COMP 301.  
Repeat Rules: May be repeated for credit; may be repeated in the same term for different topics; 12 total credits. 4 total completions.  
Grading Status: Letter grade.  
COMP 616.  Information Visualization.  3 Credits.  

Data is everywhere. Charts, graphs, and other types of information visualizations help people to make sense of data. This course explores the design, development, and evaluation of these visualizations. By combining aspects of design, computer graphics, HCI, and data science, you will gain hands-on experience with creating visualizations, using exploratory tools, and architecting data narratives. Topics include interactive systems, user-centered design, graphical perception and cognition, data storytelling, and insight building. Throughout this course, you will work directly with stakeholders to analyze data from a variety of domains and applications.

Rules & Requirements  
Grading Status: Letter grade.  
COMP 617.  Visualization Design Methods.  3 Credits.  

Data visualization combines computational, design, and cognitive principles to help people explore, communicate, and analyze large datasets. Developing effective visualizations often requires working closely with interdisciplinary teams to authentically reflect the needs of a data problem. This course will provide a hands-on introduction to common design methods for creating visualizations in different domains and problem constraints. Students will work with a variety of datasets to generate visualization solutions leveraging various design methodologies and media. Topics will include data sketching and crafting, user-centered design, task-driven design, cognitively-driven design, quantitative and qualitative experimental methods, and workshop methods.

Rules & Requirements  
Grading Status: Letter grade.  
COMP 630.  Operating System Implementation.  3 Credits.  

Students will learn how to write OS kernel code in C and a small amount of assembly. Students will implement major components of the OS kernel, such as page tables, scheduling, and program loading.

Rules & Requirements  
Requisites: Prerequisite, COMP 530; a grade of B+ or better is required; permission of the instructor for students lacking the prerequisite.  
Grading Status: Letter grade.  
COMP 631.  Networked and Distributed Systems.  3 Credits.  

Topics in designing global-scale computer networks (link layer, switching, IP, TCP, congestion control) and large-scale distributed systems (data centers, distributed hash tables, peer-to-peer infrastructures, name systems).

Rules & Requirements  
Requisites: Prerequisites, COMP 431 and COMP 530; a grade of C or better is required in all prerequisite courses; Permission of the instructor for students lacking the prerequisites.  
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.

Rules & Requirements  
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.

Rules & Requirements  
Requisites: Prerequisite, COMP 431.  
Grading Status: Letter grade.  
COMP 636.  Distributed Collaborative Systems.  3 Credits.  

Design and implementation of distributed collaborative systems. Collaborative architectures, consistency of replicated objects, collaborative user-interfaces, application and system taxonomies, application-level multicast, performance, causality, operation transformation, and concurrency and access control.

Rules & Requirements  
Requisites: Prerequisite, COMP 431 or 530; permission of the instructor for students lacking the prerequisite.  
Grading Status: Letter grade.  
COMP 637.  Formal Methods for System Security.  3 Credits.  

Formal methods provide a rigorous, mathematically grounded analysis of a system. Used as part of a security analysis, formal methods can provide verification that a system meets its security requirements. In this course students will learn about and gain experience using a variety of techniques, including symbolic execution, model checking, and proofs of equivalence and refinement. Students will develop an understanding of different specification logics and what can and cannot be expressed in each. Topics include assertion-based verification, simulation relations, linear temporal logic, information flow analysis, and hyperproperties.

Rules & Requirements  
Requisites: Prerequisites, Graduate status or undergraduate status with a C or better in COMP 311 and COMP 455.  
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.

Rules & Requirements  
Requisites: Prerequisite, COMP 550.  
Grading Status: Letter grade.  
COMP 652.  Logical Foundations of Program Correctness.  3 Credits.  

This course is an upper-level undergraduate and graduate course about the use of mathematical proof techniques to verify the correctness of programs, algorithms and computer systems. The course will cover foundational concepts in logic, the theory of programming languages, and program verification. Students will learn about computer assisted theorem proving and will learn to use a proof assistant. Classes will be organized around problem sets and in-person lectures. In addition, students will work on a semester-long project developing a proof of correctness of a program or algorithms of their choosing.

Rules & Requirements  
Requisites: Prerequisites, Graduate students or undergraduate with a C or higher in COMP 283, COMP 210, COMP 211, COMP 301, and COMP 455.  
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.

Rules & Requirements  
Requisites: Prerequisite, MATH 661.  
Grading Status: Letter grade.  
Same as: MATH 662, ENVR 662.  
COMP 664.  Deep Learning.  3 Credits.  

Introduction to the field of deep learning and its applications. Basics of building and optimizing neural networks, including model architectures and training schemes.

Rules & Requirements  
Requisites: Prerequisites, COMP 562, COMP 755, or STOR 565 and MATH 201, 347, or 577 and MATH 233 or 522; permission of the instructor for student lacking the prerequisites.  
Grading Status: Letter grade.  
COMP 667.  Video Analysis with Deep Learning.  3 Credits.  

The course aims to provide a thorough overview of deep learning methods for video analysis. It will also teach students how to analyze and present research papers. Throughout the course, we will discuss fundamental video processing techniques, cover cutting edge research in video recognition and speculate about future research directions. Lastly, students will carry out a semester-long project, providing them with useful skills of how to work with video data and train various deep learning models on video datasets.

Rules & Requirements  
Requisites: Prerequisite, COMP 560, COMP 562, STOR 565, COMP 664, COMP 755, or COMP 776.  
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.

Rules & Requirements  
Requisites: Prerequisites, STOR 555 and 641.  
Grading Status: Letter grade.  
Same as: STOR 672.  
COMP 683.  Computational Biology.  3 Credits.  

Algorithms and data mining techniques used in modern biomedical data science and single-cell bioinformatics. Graph signal processing, graph diffusion, clustering, multimodal data integration.

Rules & Requirements  
Requisites: Prerequisite, MATH 577 or MATH 347; COMP 562 or STOR 520 or STOR 565; grade of C or better is required in all prerequisite courses.  
Grading Status: Letter grade.  
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.

Rules & Requirements  
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.  
IDEAs in Action General Education logoCOMP 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.

Rules & Requirements  
IDEAs in Action General Education logo IDEAs in Action Gen Ed: RESEARCH.
Grading Status: Letter grade.  
IDEAs in Action General Education logoCOMP 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.

Rules & Requirements  
IDEAs in Action General Education logo IDEAs in Action Gen Ed: RESEARCH.
Grading Status: Letter grade.  

Graduate-level Courses

COMP 720.  Compilers.  3 Credits.  

Tools and techniques of compiler construction. Lexical, syntactic, and semantic analysis. Emphasis on code generation and optimization.

Rules & Requirements  
Requisites: Prerequisites, COMP 455, 520, and 524.  
Grading Status: Letter grade.  
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.

Rules & Requirements  
Requisites: Prerequisites, COMP 521 and 550.  
Grading Status: Letter grade.  
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.

Rules & Requirements  
Requisites: Prerequisites, COMP 524 and 550.  
Grading Status: Letter grade.  
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.

Rules & Requirements  
Requisites: Prerequisites, COMP 455, 520, and 524.  
Grading Status: Letter grade.  
COMP 730.  Operating Systems.  3 Credits.  

Theory, structuring, and design of operating systems. Sequential and cooperating processes. Single processor, multiprocessor, and distributed operating systems.

Rules & Requirements  
Requisites: Prerequisite, COMP 530.  
Grading Status: Letter grade.  
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.

Rules & Requirements  
Requisites: Prerequisite, COMP 431; permission of the instructor for students lacking the prerequisite.  
Grading Status: Letter grade.  
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.

Rules & Requirements  
Requisites: Prerequisites, COMP 530 and 550.  
Grading Status: Letter grade.  
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.

Rules & Requirements  
Requisites: Prerequisite, COMP 530.  
Grading Status: Letter grade.  
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.

Rules & Requirements  
Requisites: Prerequisites, COMP 411 and PHYS 352.  
Grading Status: Letter grade.  
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.

Rules & Requirements  
Requisites: Prerequisites, COMP 455 and 550.  
Grading Status: Letter grade.  
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.

Rules & Requirements  
Requisites: Prerequisites, MATH 347/547, or 577, and STOR 435; a grade of C or better is required in all prerequisite courses.  
Grading Status: Letter grade.  
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.

Rules & Requirements  
Requisites: Prerequisite, COMP 724.  
Grading Status: Letter grade.  
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.

Rules & Requirements  
Requisites: Prerequisites, MATH 233.  
Grading Status: Letter grade.  
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.

Rules & Requirements  
Requisites: Prerequisites, COMP 665 and 761.  
Grading Status: Letter grade.  
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.

Rules & Requirements  
Requisites: Prerequisites, MATH 233, MATH 547/347, and STOR 435.  
Grading Status: Letter grade.  
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.

Rules & Requirements  
Requisites: Prerequisites, MATH 566, COMP 550, 665, and 775; permission of the instructor for students lacking the prerequisites.  
Grading Status: Letter grade.  
COMP 777.  Optimal Estimation in Image Analysis.  3 Credits.  

Formulation and numerical solution of optimization problems in image analysis.

Rules & Requirements  
Requisites: Prerequisites, MATH 233, MATH 347/547, and MATH 535 or STOR 435.  
Grading Status: Letter grade.  
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.

Rules & Requirements  
Requisites: Prerequisites, COMP 550 and MATH 347/547; Permission of the instructor for students lacking the prerequisites.  
Grading Status: Letter grade.  
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.

Rules & Requirements  
Requisites: Prerequisite, COMP 550; permission of the instructor for students lacking the prerequisite.  
Grading Status: Letter grade.  
COMP 786.  Natural Language Processing.  3 Credits.  

Artificial intelligence and machine learning field to build automatic models that can analyze, understand, and generate text. Topics include syntactic parsing, co-reference resolution, semantic parsing, question answering, document summarization, machine translation, dialogue models, and multi-modality.

Rules & Requirements  
Requisites: Prerequisite, COMP 562.  
Grading Status: Letter grade.  
COMP 790.  Topics in Computer Science.  3 Credits.  

Permission of the instructor. This course has variable content and may be taken multiple times for credit.

Rules & Requirements  
Repeat Rules: May be repeated for credit; may be repeated in the same term for different topics.  
Grading Status: Letter grade.  
COMP 822.  Topics in Discrete Optimization.  3 Credits.  

Topics may include polynomial algorithms, computational complexity, matching and matroid problems, and the traveling salesman problem.

Rules & Requirements  
Requisites: Prerequisite, STOR 712; Permission of the instructor for students lacking the prerequisite.  
Grading Status: Letter grade.  
Same as: STOR 822.  
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.

Rules & Requirements  
Requisites: Prerequisites, COMP 431 and 530.  
Grading Status: Letter grade.  
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.

Rules & Requirements  
Requisites: Prerequisite, COMP 870.  
Grading Status: Letter grade.  
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.

Rules & Requirements  
Requisites: Prerequisite, COMP 775.  
Grading Status: Letter grade.  
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.

Rules & Requirements  
Repeat Rules: May be repeated for credit.   
Grading Status: Letter grade.  
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.

Rules & Requirements  
Repeat Rules: May be repeated for credit; may be repeated in the same term for different topics.  
Grading Status: Letter grade.  
COMP 915.  Technical Communication in Computer Science.  3 Credits.  

This course for doctoral students covers aspects of written and oral technical communication in computer science, including public speaking, writing, posters, and social networking. The course frames all communication as a teaching exercise, and includes a short lesson and peer critiques of the lesson. The course also introduces students to the business and administrative aspects of building a teaching or research career, as well as how to navigate common interpersonal and organizational challenges in research.

Rules & Requirements  
Grading Status: Letter grade.  
COMP 990.  Research Seminar in Computer Science.  1-21 Credits.  

Permission of the instructor. Seminars in various topics offered by members of the faculty.

Rules & Requirements  
Repeat Rules: May be repeated for credit; may be repeated in the same term for different topics.  
Grading Status: Letter grade.  
COMP 991.  Reading and Research.  1-21 Credits.  

Permission of the instructor. Directed reading and research in selected advanced topics.

Rules & Requirements  
Repeat Rules: May be repeated for credit; may be repeated in the same term for different topics.  
Grading Status: Letter grade.  
COMP 992.  Master's (Non-Thesis).  3 Credits.  

Permission of the department.

Rules & Requirements  
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.

Rules & Requirements  
Repeat Rules: May be repeated for credit.   
COMP 994.  Doctoral Research and Dissertation.  3 Credits.  

Permission of the department.

Rules & Requirements  
Repeat Rules: May be repeated for credit.   

Department of Computer Science

Visit Program Website

Chair

James Anderson

anderson@cs.unc.edu

Director of Graduate Studies

Jasleen Kaur

jasleen@cs.unc.edu

Student Services Manager

Denise Kenney

kenney@cs.unc.edu