| 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
midsemester report and a final report are required.
Permission required. 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 Engineering
Credits:
3.00
Design approaches, implementation methodologies, and
management techniques required to develop large, reliable
software systems including applications-oriented systems.
Team programming projects. Prereq: data structures.
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 interprocess
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 824 - Distributed Operating Systems
Credits:
3.00
Fundamental concepts, algorithms, and design principles that
form the basis of distributed and multiprocessor operating
systems. Architectural overview, design, and implementation
methodology of several real distributed systems.
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 artifical 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 835 - Introduction to Parallel and Distributed Programming
Credits:
3.00
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 Specifications and Verfication of Software Systems
Credits:
3.00
Functional and non-functional properties of software systems
can be specified and verified using formal techniques and
logically based description languages. Course focuses
on assertional reasoning and presents different notions
(Hoare logic, behavioral specifications, temporal logic)
for different classes of systems (transformational,
object-oriented, reactive). 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
postcondition is also assumed.
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 nonliteral 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 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
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 #912 - Advanced Compiler Design
Credits:
3.00
In-depth study of automatically generated syntactic error
recovery, intermediate representation, machine independent
and machine dependent optimization, code generation,
register allocation. Tools for generating code generators
and Graham-Glanville style instruction selectors. Examples
of production code generators. Prereq: CS 812 or equivalent.
CS #920 - Advanced Operating Systems
Credits:
3.00
Study of the design and analysis of advanced operating
systems, including distributed and multiprocessor operating
systems. Lectures focus on the principles used in the design
of operating systems, algorithms and data structures used in
their implementation, and techniques for evaluating them.
The topics covered include synchronization, mutual
exclusion, distributed algorithms, security,
fault-tolerance, modeling and performance, and distributed
resource management. Prereq: operating systems 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 #929 - Collaborative Computing
Credits:
3.00
The goal of collaborative computing is to assist groups in
communicating, in collaborating, and in coordinating their
activities. Study of computer-based systems that support
groups of people engaged in a common task (or goal) and that
provide an interface to a shared environment. Investigation
of several sample collaborative applications, like the
World-Wide Web, virtual reality, video conferencing and
work flow systems, along with related protocols and
languages. Prereq: CS 825 and CS 860. Credit/Fail.
CS #930 - Artificial Intelligence
Credits:
3.00
Current approaches to machine intelligence and the
simulation of human cognitive processes, including an
introduction to recursive functions and programming with the
LISP language. Heuristic programming, programs for game
playing and natural language understanding, elementary
theory of computability. Individual computer project
required. Prereq: programming experience.
CS #934 - Logic Programming
Credits:
3.00
Introduction to the foundation, implementations, and
application of logic programming. Emphasis on the study
of example applications. Application areas include
compilers, databases, and expert systems.
CS 941 - Design and Analysis of Algorithms
Credits:
3.00
Principles of design of efficient algorithms. Methods
studied include recursion, divide and conquer, dynamic
programming, greedy techniques, and data structure
selection. Correctness and analysis of algorithms. Examples
are drawn from problems in the areas of graphs, sorting,
searching, pattern matching, and polynomials. Prereq:
introduction to theory of computation.
CS 970 - Advanced Computer Graphics
Credits:
3.00
Advanced image synthesis techniques and photorealism. Ray
tracing. Complex shading and lighting models. Antialiasing.
Texture mapping. Surface generation and display.
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 #982 - Advanced Topics in Computer Networks
Credits:
3.00
CS #983 - Advanced Topics in Artificial Intelligence
Credits:
3.00
CS #984 - Advanced Topics in Computer Science Theory
Credits:
3.00
CS #985 - Advanced Topics in Operating 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.
CS #987 - Advanced Topics in Computational Linguistics
Credits:
3.00
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.