| Computer Science |
CS 800 - Internship
Credits:
1.00
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. May be repeated up to a maximum of 3
credits. Cr/F.
CS 812 - Compiler Design
Credits:
3.00
Formal languages and formal techniques for syntax analysis
and parsing; organization of the compiler and its data
structures; problems presented by error recovery and code
generation. Classical top-down and bottom-up techniques
currently in wide spread use, general discussion of LL (k)
and LR (k) parsers; automatic methods of compiler
generation and compilers. Students required to define a
simple, nontrivial programming language and to design and
implement its compiler. Prereq: assembly language
programming and machine organization; and programming
language concepts and features.
CS 818 - Software Systems Engineering Process
Credits:
3.00
Contemporary software-intensive systems are distinguished
by their complex intellectual content, evolving and
changing requirements, difficult technical and
organizational interfaces, multiple stakeholders with
differing perspectives on project objectives, integration
intensity, and high customer expectations for system
robustness. To meet these formidable challenges, this
course addresses an interdisciplinary set of processes
across the full life-cycle (from concepts to deployment and
enhancement) that balances competing technical/management
parameters toward a design solution meeting stakeholder
needs. Prereq: permission of instructor.
CS 819 - Object-Oriented Methodology
Credits:
3.00
Object-oriented system design. Object-oriented
programming. Languages for object-oriented programming.
Prereq: strong programming skills; experience with C
programming is highly desirable.
CS 820 - Operating System Programming
Credits:
3.00
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 821 - Operating System Kernel Design
Credits:
3.00
Design and implementation of an operating system kernel,
using LINUX as an example. Detailed discussion of the data
structures and algorithms used in the kernel to handle
interrupts, schedule processes, manage memory, access
files, deal with network protocols, and perform
device-level I/O. The course is project-oriented, and
requires the student to make modifications and additions to
the LINUX kernel. Prereq: CS 820, or permission.
CS 823 - Performance Evaluation of Computer Systems
Credits:
3.00
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
Credits:
3.00
Introduction to local, metropolitan, and wide area
networks using the standard OSI reference model as a
framework. Introduction to the Internet protocol suite and
to network tools and programming. Discussion of various
networking technologies.
CS 830 - Introduction to Artificial Intelligence
Credits:
3.00
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 845 - Formal Specifications and Verification of Software Systems
Credits:
3.00
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 858 - Alogrithms
Credits:
3.00
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 859 - Theory of Computation
Credits:
3.00
Models of computation, Church's thesis, completeness,
undecidability. Time and space complexity of Turing
machines. Savitch's theorem and hierarchy theorems.
NP-completeness and Cook's theorem. Prereq: introduction to
the theory of computation.
CS 860 - Introduction to Human-Computer Interaction
Credits:
3.00
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 865 - Introduction to Computational Linguistics
Credits:
3.00
Introduction to computational analysis of natural
language, with a focus on semantic representations and the
resolution of ambiguity. Provides an elementary working
knowledge of linguistic and artificial intelligence methods
as motivated by examples of potential input text. Topics
include parsing, formal grammars, representation of
knowledge and memory, inference, and interpretation of
non-literal language. Prereq: elementary knowledge of LISP
or permission.
CS 867 - Interactive Data Visualization
Credits:
3.00
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
Credits:
3.00
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
Credits:
3.00
In this course you will learn languages to program the Web.
Languages integrated into browsers, like Javascript, and
languages invoked on the server, like Ruby. You will also
learn about frameworks, like Rails, and various techniques
used to support the programming process. In addition, you
will learn languages you will need to create, modify and
process Web documents. Although we will learn how to read
and write in these languages, our primary goal will be on
understanding how the design of these multi-paradigm
dynamic languages support the process of delveoping Web
applications. Prereq: programming lnaguage concepts or
permission.
CS 875 - Database Systems
Credits:
3.00
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
Credits:
3.00
Material not normally covered in regular course offerings.
May be repeated.
CS 898 - Master's Project
Credits:
3.00
CS 899 - Master's Thesis
Credits:
1.00 to 6.00
May be repeated up to a maximum of 6 credits. Cr/F.
CS 900 - Graduate Seminar
Credits:
1.00
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
Credits:
3.00
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
Credits:
3.00
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 931 - Combinatorial Search and Heuristic Optimization
Credits:
3.00
The goal of this class is to teach you how to cope with
intractable combinatorial optimization problems. Focuses
on techniques from artificial intelligence that attempts to
combat intractability by exploiting as much available
information as possible. Covers concepts and algorithms for
solving shortest-path, constraint satisfaction, and
combinatorial optimization problems, and their application
in areas such as planning, robotics, and bioinformatics.
Emphasis on important or recent papers in the field.
Prereq: Introduction to Artificial Intelligence.
CS 975 - Object-Oriented Database Systems
Credits:
3.00
Introduction to object-oriented database systems, concepts
and design; object-oriented data models and languages;
implementation issues and mechanisms. Prereq: CS 875.
CS 980 - Advanced Topics
Credits:
3.00
CS 981 - Advanced Topics in Database Systems
Credits:
3.00
CS 986 - Advanced Topics in Formal Specification and Verification
Credits:
3.00
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
Credits:
3.00
CS 989 - Advanced Topics in Algorithms
Credits:
3.00
CS 998 - Independent Study
Credits:
1.00 to 6.00
CS 999 - Doctoral Research
Credits:
Cr/F.