Courses
| 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; 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. This course is implementation-intensive. Prereq: Machine Organization;
Theory of Computation.
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 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 Specification 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 851 - System Requirements Engineering
Credits: 3.00
This course focuses on the skills required to
identify, analyze, synthesize, and manage system requirements. It addressed the
key requirements gathering and analysis tasks throughout the system life cycle.
Participants learn about the requirements process, explore what constitutes good
requirements, and understand how requirements are documented. A case study
provides practice and feedback on key skills of the requirements process.
Techniques and models are introduced that must be considered in defining systems
that achieve higher customer satisfaction within constraints. Interpersonal
skills critical to interacting with stakeholders (e.g., customers and users) are
emphasized coequally with technical issues.
CS 852 - Software Architecture Concepts
Credits: 3.00
A software architecture concerns the top-level
structures of a software system, the externally visible properties of those
structures, and their interrelationships. This course examines the role of
architecture in satisfying an organization's business requirements. The hard
choices that must be made by the architect to fulfill the often conflicting
needs of performance , availability, security, interoperability, and
modifiability are highlighted. Other topics include representations of
architectures, case studies, and the role of architecture in product lines.
CS 853 - Software Project Management
Credits: 3.00
This course addresses an advanced set of software
project management essentials that can affect the bottom line of project
technical and business performance. The focus is on larger scale complex
projects that a student is likely to encounter in the workplace after 3-5 years
of experience. These essentials are termed "best practices, " and those
addressed are: formal risk management, agreement on interfaces, metrics based
scheduling/tracking, frequent binary completion milestones, incremental
development, people aware management style, and change management. The emphasis
is on software intensive projects; however, the basic principles are pertinent
to a wider class of project domains that involve intellectual product
development where problem discovery is a main characteristic.
CS 858 - Algorithms
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: 1.00 to
4.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