Computer Science (CS)

https://ceps.unh.edu/computer-science/

Degrees Offered: Ph.D., M.S. 

This program is offered in Durham.

The Department of Computer Science offers both the M.S. and the Ph.D. in computer science.

The M.S. program is designed to help students increase the breadth and depth of their computer science knowledge, strengthen their software development skills, and build their research skills.

The Ph.D. program is designed to develop a student's ability to carry out advanced research, as well as ensure the breadth and depth of computer science knowledge required to obtain a faculty position in academia or a research position in industry or at a national laboratory.

Admission Requirements

The computer science graduate program is designed for students with a B.S. degree in computer science. However, applications from students whose undergraduate degree is not in computer science are also welcome. In this case, a well­-defined set of undergraduate prerequisites must be completed as part of the M.S. program of study. The prerequisites include an introduction to computer science, object-­oriented programming, data structures, machine organization, operating systems, and computer science theory.

These prerequisites can be satisfied at UNH by the following undergraduate courses:

CS 415Introduction to Computer Science I4
CS 416Introduction to Computer Science II4
CS 515Data Structures and Introduction to Algorithms4
CS 520Computer Organization and System-Level Programming4
CS 620Operating System Fundamentals4
CS 659Introduction to the Theory of Computation4

Some students may need to take additional mathematics classes.

Students without a B.S. or M.S. in computer science are not normally admitted directly into the Ph.D. program, but it is possible to transfer from the M.S. program to the Ph.D. program.

Applicants must submit current scores (within five years) for the general test of the GRE. Students who have taken computer science courses at UNH can request a waiver of this requirement.

Computer Science (CS)

CS 800 - Internship

Credits: 1

Provides an opportunity to apply academic experience in settings associated with future professional employment. A written proposal for the internship must be approved by the department chair. The proposal must specify what the student will learn from the internship, why the student is properly prepared for the internship, and what supervision will be available to the student during the internship. A mid-semester report and a final report are required.

Repeat Rule: May be repeated for a maximum of 3 credits.

Grade Mode: Graduate Credit/Fail grading

CS 812 - Compiler Design

Credits: 4

Formal languages and formal techniques for syntax analysis and parsing; organization of the compiler and its data structures; code generation. LL and LR parsing; automatic generation of scanners and parsers from high-level descriptions. Implementation of features from imperative and object-oriented languages. Students are required to design and implement a compiler for a simple language. Students are expected to have background in computer organization.

Grade Mode: Letter Grading

CS 820 - Systems Programming

Credits: 4

Study and simulation of various types of systems that include assemblers, linkers, memory management, concurrency and other resource management techniques. Students are expected to have background in Computer Organization, Operating Systems Fundamentals or equivalent.

Grade Mode: Letter Grading

CS 822 - Cloud Computing Systems

Credits: 4

The course covers a variety of topics in cloud computing systems, or more precisely, distributed systems that enable modern cloud computing. The topics include virtualization and its impact on system design, cloud-scale storage, cloud data processing and machine learning systems, and cloud configuration management. The course also covers the latest advancements in cloud computing/systems, IoT, edge, and fog computing. Students are expected to have background in operating systems fundamentals.

Grade Mode: Letter Grading

CS 823 - Performance Evaluation of Computer Systems

Credits: 4

This class introduces the main concepts, techniques, and tools needed to evaluate the performance of computer systems under various configurations and workloads. The techniques allow one to perform capacity planning based on quality of service requirements of users and workload characteristics. The course is mainly based on the use of analytic queuing network models of computer systems. The performance techniques are applied to study the performance of centralized, distributed, parallel, and client/server systems. The course also discusses performance measuring tools for operating systems such as Unix and Windows NT. Students are expected to have background in operating systems fundamentals.

Grade Mode: Letter Grading

CS 825 - Computer Networks

Credits: 4

Introduction to fundamental concepts of computer networks and exploration of widely-used networking technologies. Topics include principles of congestion and error control; network routing; local, wireless and access networks; application protocol design; and network programming. In-depth discussion of the Internet suite of protocols.

Grade Mode: Letter Grading

CS 827 - Software Security

Credits: 4

Mechanisms and implementation of techniques in software security. Various fundamental security topics include cryptography, access control, protocols, software vulnerabilities, and reverse engineering. Students are expected to have background in Computer Organization, Assembly Language, Fundamentals of Cybersecurity.

Grade Mode: Letter Grading

CS 830 - Introduction to Artificial Intelligence

Credits: 4

In-depth introduction to artificial intelligence concentrating on aspects of intelligent problem-solving. Topics include situated agents, advanced search techniques, knowledge representations, logical reasoning techniques, reasoning under uncertainty, advanced planning and control, and learning. Students are expected to have background in data structures.

Grade Mode: Letter Grading

CS 831 - Planning for Robots

Credits: 4

How do self-driving cars figure out what to do? In this seminar-style class, students read scientific papers and perform a research project pertaining to algorithms for planning and decision-making, with an emphasis on autonomous systems. Students outside Computer Science are welcome with permission of the instructor. Students from prior years are welcome to take the class again and either extend their previous work or choose a new topic.

Repeat Rule: May be repeated for a maximum of 12 credits. May be repeated up to 2 times.

Grade Mode: Letter Grading

CS 833 - Mobile Robotics

Credits: 4

An introduction to the foundational theory and practices in mobile robotics. Topics include Kinematics of wheeled mobile robots. Seniors for mobile robots, robot navigation and perception, robot vision, localization and mapping of mobile robots. Hands-on experience directed towards implementation with a real robot. Students are expected to have background in programming.

Grade Mode: Letter Grading

CS 835 - Introduction to Parallel and Distributed Programming

Credits: 4

Programming with multiple processes and threads on distributed and parallel computer systems. Introduces programming tools and techniques for building applications on such platforms. Course requirements consist primarily of programming assignments. Students are expected to have background in operating systems fundamentals and computer organization.

Grade Mode: Letter Grading

CS 845 - Formal Specification and Verification of Software Systems

Credits: 4

Course focuses on the formal specification and verification of reactive systems, most notably concurrent and distributed systems. Topics relevant to these systems, such as non-determinism, safety and liveness properties, asynchronous communication or compositional reasoning, are discussed. We rely on a notation (T LA+, the Temporal Logic of Actions) and a support tool (TLC, the TLA+ Model Checker). Students are expected to be knowledgeable in logic and to be able to write symbolic proofs in predicate calculus. A basic understanding of the notions of assertion, precondition, and post-condition is also assumed.

Grade Mode: Letter Grading

CS 850 - Machine Learning

Credits: 4

An introduction to fundamental concepts and common methods in machine learning. In addition to theoretical topics, the course involves hands-on experience in making predictions using synthetic and real-world datasets. Students are expected to have background in statistics and programming.

Grade Mode: Letter Grading

CS 851A - Reinforcement Learning

Credits: 4

Reinforcement learning studies how agents can learn to act to achieve goals in complex, stochastic environments. This course introduces students to fundamental theoretical concepts of reinforcement learning, standard algorithms, and practical techniques. In addition to theoretical topics, the course involves implementing basic algorithms in a high-level programming language. Programming and statistics required prior to taking this course.

Grade Mode: Letter Grading

CS 852 - Foundations of Neural Networks

Credits: 4

Neural networks are a class of machine learning models which have recently revolutionized many applied machine learning domains such as natural language understanding, image/video processing, bioinformatics, time series analysis. This course teaches students to develop new neural network architectures from scratch and customize them. The course covers all necessary foundations of neural networks including gradient descent optimization and vector calculus. Students will learn how to design models using idioms such as observed variables, latent variables, gate variables and different functions as well as a wide range of state-of-the-art architectures as design examples. Students are expected to have background in data structures.

Grade Mode: Letter Grading

CS 853 - Information Retrieval

Credits: 4

Fundamental algorithms and techniques for text processing and text-based information retrieval systems. Topics include how to build an end-to-end information retrieval system, such as a Web search engine. Students are expected to have background in data structures.

Grade Mode: Letter Grading

CS 855 - Computer Vision

Credits: 4

Studying techniques that make a machine 'see' and 'understand' the world in a human-like fashion. The course discusses the theory behind common computer vision techniques and trains students on designing their own algorithms for understanding image or video. Students are expected to have background in statistics and programming.

Grade Mode: Letter Grading

CS 857 - Mathematical Optimization for Applications

Credits: 4

This course introduces the foundations of mathematical optimization and reinforces them via applications. The content includes convex optimization, first and second-order methods, constrained problems, duality, linear and quadratic programming, as well as discrete and non-convex optimization. Applications will focus on machine learning methods but also include problems from engineering and operations research. Students are required to have a mastery of Calculus II and programming proficiency in MATLAB, R, Java, C, Python, or equivalent.

Equivalent(s): MATH 857

Grade Mode: Letter Grading

CS 858 - Algorithms

Credits: 4

An introduction to important concepts in the design and analysis of algorithms and data structures, including implementation, complexity, analysis, and proofs of correctness. Understanding of basic data structures, familiarity with proof methods and basic concepts from discrete mathematics and the ability to program with recursion.

Grade Mode: Letter Grading

CS 859A - Natural Language Processing

Credits: 4

This class covers natural language processing, including both methods and well-known applications. Methods discussed will range from classical probabilistic methods such as Naive Bayes and Hidden Markov Models, to contemporary neural network methods, including word vector models, recurrent neural networks, and Transformer-based models. Applications discussed will include text classification, machine translation, and conversation systems. Data structures and statistics required prior to taking this course.

Grade Mode: Letter Grading

CS 861 - Programming Language Concepts and Features

Credits: 4

Explores the main features of modern, high-level, general-purpose programming languages from the user (programmer) standpoint. Students learn how specific features of programming languages can be used effectively in solving programming problems. The course is also an opportunity to use paradigms that expand on simple imperative programming, such as object-oriented, functional and concurrent programming. Students are expected to have background in operating systems fundamentals and Computer organization, and some knowledge of Java.

Grade Mode: Letter Grading

CS 870 - Computer Graphics

Credits: 4

Input-output and representation of pictures from hardware and software points of view; interactive techniques and their applications; three-dimensional image synthesis techniques. Students are expected to have background in Data Structures and Computer Organization.

Grade Mode: Letter Grading

CS 875 - Database Systems

Credits: 4

Database analysis, design, and implementation. Focus on the relational model. Data description and manipulation languages, schema design and normalization, file and index organizations, data integrity and reliability. Usage of selected DBMS. Students are expected to have background in data structures.

Grade Mode: Letter Grading

CS 880 - Topics

Credits: 4

Material not normally covered in regular course offerings. May be repeated.

Grade Mode: Letter Grading

CS 881 - Data Science for Knowledge Graphs and Text

Credits: 4

This course covers advanced text processing and machine learning algorithms and techniques for data science with knowledge graph and text data. This includes a wide range of algorithms for neural networks, machine learning, graph processing, text processing, and information retrieval with a focus of gaining insights into the knowledge stored in data. This an implementation-intensive research-oriented seminar, where a particular data science application will be developed by reading research publication and implementing a software prototype.

Prerequisite(s): CS 852 with a minimum grade of B- or CS 853 with a minimum grade of B- or CS 859A with a minimum grade of B-.

Grade Mode: Letter Grading

CS 898 - Master's Project

Credits: 3

Master's Project.

Grade Mode: Letter Grading

CS 899 - Master's Thesis

Credits: 1-6

Master's Thesis.

Repeat Rule: May be repeated for a maximum of 6 credits.

Grade Mode: Graduate Credit/Fail grading

CS 900 - Graduate Seminar

Credits: 1

Regularly scheduled seminars presented by outside speakers, UNH faculty, and graduate students. Topics include reports of research ideas, progress, and results.

Grade Mode: Graduate Credit/Fail grading

CS 920 - Distributed Systems and Algorithms

Credits: 3

Covers fundamental topics in distributed systems: time, global state, synchronization, election, consensus, distributed file systems, security. Also includes a study of several distributed applications. Students are expected to have background in operating system fundamentals.

Grade Mode: Letter Grading

CS 925 - Advanced Computer Networks

Credits: 3

Design and analysis of computer networks. Modeling and performance evaluation, queuing theory applied to computer networks. Traffic flow management and error control. Routing algorithms and protocols. Switch and router architectures. Selected issues in high-speed network design. Optical networks.

Prerequisite(s): CS 825 with a minimum grade of B-.

Grade Mode: Letter Grading

CS 927 - Software Security Analysis

Credits: 3

This course covers advanced research topics in software security. The main focus is automatic software analysis techniques, such as symbolic execution, taint analysis, and fuzz testing.

Grade Mode: Letter Grading

CS 933 - Human Robot Interaction

Credits: 3

Human robot interaction (HRI) is a multidisciplinary research domain that investigates the issues involved with smooth integration of robots in the human society. This course will discuss the evolution of HRI research over the past two decades with an emphasis on HRI algorithms that promote safe, meaningful, and goal-oriented human-robot interactions. Topics also include experimental design methodologies commonly used in HRI studies.

Prerequisite(s): CS 830 with a minimum grade of B- or CS 833 with a minimum grade of B- or CS 850 with a minimum grade of B-.

Repeat Rule: May be repeated for a maximum of 6 credits.

Grade Mode: Letter Grading

CS 950 - Advanced Machine Learning

Credits: 3

Course covers advanced machine learning techniques for making good decisions driven by data. The main focus areas are reinforcement learning, exploration-exploitation trade-off, mathematical optimization methods, and practical applications. Group-based Project on a selected topic.

Repeat Rule: May be repeated for a maximum of 9 credits.

Grade Mode: Letter Grading

CS #953 - Data Science for Knowledge Graphs and Text

Credits: 3

This course covers basic and advanced algorithms and techniques for data science with knowledge graph and text data. This includes a wide range of algorithms for graph processing, text processing, and information retrieval with a focus of knowledge graphs and text from knowledge articles.

Prerequisite(s): CS 853 with a minimum grade of B-.

Grade Mode: Letter Grading

CS 980 - Advanced Topics

Credits: 3

Advanced Topics.

Grade Mode: Letter Grading

CS 998 - Independent Study

Credits: 1-6

Independent Study.

Grade Mode: Letter Grading

CS 999 - Doctoral Research

Credits: 0

Doctoral Research.

Grade Mode: Graduate Credit/Fail grading

Special Fee: Yes