Computer Science (CS)
Course numbers with the # symbol included (e.g. #400) have not been taught in the last 3 years.
CS 800 - Internship
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. Permission required. Computer Science majors only. May be repeated up to a maximum of 3 credits. Cr/F.
CS 812 - Compiler Design
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. Prereq: Machine Organization.
CS 819 - Advanced Programming with Object-Oriented Design
Advanced problem solving using software design, development and testing techniques that follow the software development life cycle. Object-oriented programming and design. Advanced data structures and algorithm analysis. Prereq: strong prog. skills, exp. with C/C++, match org.
CS #820 - Operating System Programming
Detailed discussion of operating system concepts and features. Practical examples and exercises that utilize advanced operating system features, including inter-process communication, synchronization, client-server communication, shared memory, threads, remote procedure calls, and device-level I/O. Discussion of POSIX 1003.1 Part I Standards. Prereq: operating system fundamentals or equivalent.
CS 823 - Performance Evaluation of Computer Systems
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. Prereq: operating systems fundamentals or equivalent.
CS 825 - Computer Networks
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.
CS 830 - Introduction to Artificial Intelligence
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. Prereq: data structures.
CS 833 - Mobile Robotics
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. Prereq: Programming or permission of instructor.
CS 835 - Introduction to Parallel and Distributed Programming
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. Prereq: Undergraduate course in operating systems fundamentals and computer organization; or permission.
CS 845 - Formal Specification and Verification of Software Systems
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). Prereq: 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.
CS 850 - Machine Learning
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. Prereq: Statistics, Programming or permission of instructor.
CS 853 - Information Retrieval
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. Prereq: Data Structures.
CS #854 - System/Software Test and Evaluation
This course identifies an integrated software test and evaluation process framework that emphasizes a "systems engineering" approach: the validation and viability of customer/user needs statements, verification of system design, full exercise of developmental testing, system integration/test dovetailing on the prior validations, plus evaluation of system quality attributes. This system engineering approach is intended to contain major problems, including interface issues, to phases preceding system test.
CS 857 - Mathematical Optimization for Applications
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. Prereq: MATH 426; Programming proficiency in MATLAB, R, Java, C, Python, or equivalent.
CS 858 - Algorithms
An introduction to important concepts in the design and analysis of algorithms and data structures, including implementation, complexity, analysis, and proofs of correctness. Prereq: understanding of basic data structures, familiarity with proof methods and basic concepts from discrete mathematics and the ability to program with recursion.
CS 860 - Introduction to Human-Computer Interaction
Human-computer interaction is a discipline concerned with the design, evaluation and implementation of interactive computing systems for human use and with the study of major phenomena surrounding them. Prereq: operating systems fundamentals.
CS #867 - Interactive Data Visualization
Detailed discussion of how an understanding of human perception can help us design better interactive displays of data. Topics include: color, space perception, object perception and interactive techniques. Students write interactive programs, give presentations and undertake a project designing and evaluating a novel display technique. Prereq: Introductory level C or C++ programming course. (Also listed as OE 867.)
CS 870 - Computer Graphics
Input-output and representation of pictures from hardware and software points of view; interactive techniques and their applications; three-dimensional image synthesis techniques. Prereq: data structures.
CS 871 - Web Programming Paradigms
CS 875 - Database Systems
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. Prereq: data structures; mathematical proof.
CS 880 - Topics
Material not normally covered in regular course offerings. May be repeated.
CS 898 - Master's Project
CS 899 - Master's Thesis
May be repeated up to a maximum of 6 credits. Cr/F.
CS 900 - Graduate Seminar
Regularly scheduled seminars presented by outside speakers, UNH faculty, and graduate students. Topics include reports of research ideas, progress, and results. Cr/F.
CS 920 - Advanced Operating Systems
This course covers techniques for formally analyzing various fundamental concepts and mechanisms which form the basis of the design of advanced operating systems, including distributed, database, and multiprocessor operating systems. Topics covered include synchronization, mutual exclusion, distributed algorithms, security, fault-tolerance, and distributed resource management. Prereq: operating system fundamentals or equivalent.
CS 925 - Advanced Computer Networks
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. Prereq: CS 825 or equivalent.
CS 933 - Human Robot Interaction
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. Prereq: CS 830 or CS 833 or CS 850 or instructor's permission.
CS 950 - Advanced Machine Learning
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. Prereq: instructor's permission.
CS 953 - Data Science for Knowledge Graphs and Text
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. Prereq: CS 853 or Permission of Instructor.
CS 980 - Advanced Topics
CS 981 - Advanced Topics in Database Systems
CS 986 - Advanced Topics in Formal Specification and Verification
This course explores more thoroughly some of the material introduced in CS 845. It focuses on concurrent and reactive systems and on temporal logics. Topics include safety and liveness properties, asynchronous communication, and compositional reasoning. Support tools, like interactive theorem provers and model-checkers, are presented and used in class. Prereq: introduction to formal specification and verification. May be repeated up to a maximum of 6 credits.
CS 988 - Advanced Topics in Computer Graphics
CS 989 - Advanced Topics in Algorithms
CS 998 - Independent Study
CS 999 - Doctoral Research