| Computer Science |
CS 400 - Introduction to Computer Science
Credits:
1.00
Initial exploration of computing, including comparison of
the various subfields. A wide range of issues, including
fundamental concepts, selected current topics and the role
of both computing and computing professionals in
organizations and in society are also discussed. Cr/F.
CS 401 - Computers and Their Applications
Credits:
4.00
Use of computers to manage and analyze information across
a variety of settings and disciplines. Introduces major
categories of computer software, including word processing,
spreadsheets and database systems. Covers basic computer
concepts and the computer's role in today's society.
Significant hands-on work required outside of the class.
Not open to CS majors. CEPS students should check with
their major department for approval.
CS 401H - Honors/Computers & Their Appl
Credits:
4.00
See description for CS 401.
CS 403 - Weaving the Web: Creating Content for the World Wide Web
Credits:
4.00
Introductory course exploring the World Wide Web and its
role in modern society. Students develop an understanding
of the Web's underlying technologies and learn how to
utilize them as contributing members of the online
community. Students become proficient with creating and
publishing Web pages using XHTML and CSS. Additional
subjects include the security of computer communications
and the various social implications of a networked world.
No prior knowledge or experience is assumed. No credit if
credit earned for CIS 405 (Note: CIS 405 is offered at UNH
Manchester, and is not related to CS 405 at UNH Durham.)
CS 405 - Introduction to Applications Programming with Visual Basic
Credits:
4.00
Introduces the concepts and techniques of microcomputer
windows programming. Students use the Visual Basic
language to develop modular, event-driven
programs/applications. Topics include: forms, properties,
controls, variables, decision structures, and built-in and
user-defined functions and subroutines. CEPS students
should check with their major department for approval. Not
open to CS majors.
CS 410 - Introduction to Scientific Programming
Credits:
4.00
Introduces the concepts and techniques of computer
programming. Particular emphasis on computer programming
as a problem-solving technique in science and engineering
applications. The C language is taught and used for
assignments. Good programming style is stressed.
Significant out-of-class programming required. Not open to
students who have completed CS 407, 415, or the equivalent.
Pre- or Coreq: MATH 425.
CS 415 - Introduction to Computer Science I
Credits:
4.00
Theory and practice of computer science. Algorithm
development and analysis; data abstraction techniques;
elementary data structures; dynamic memory manipulation;
debugging; and program design issues. Computer systems and
applications. Intended for CS majors.
CS 416 - Introduction to Computer Science II
Credits:
4.00
See description for CS 415.
CS 444 - Computer Technology: Balancing Risks Against Reward
Credits:
4.00
Computet technology permeates life in our modern world, for
better and for worse. Its rewards to individuals and
society are unprecedented. Yet so are its risks. This
course examines computer technology's role in modern
society and endeavors to assess its impact - both
beneficial and detrimental. Problems are evaluated from a
variety of perspectives, including technological, societal,
legal, commercial and ethical.
CS 503 - Introduction to Web Programming
Credits:
4.00
Introduces the concepts and techniques of client-side
development for the World Wide Web. Students will be
taught the basics of programming and how to apply that
knowledge to enhance Web pages. Topics include variables,
control structures, functions, events, objects, user
feedback, form handling, and the Document Object Model.
Significant out-of-class programming required. Prereq: CS
403.
CS 515 - Data Structures
Credits:
4.00
Reviews basic data structures; advanced data structures
such as graphs, B-trees, and AVL trees; abstract data
structure design and programming techniques; use of data
abstraction language. Introduction to algorithm analysis.
Prereq: CS 416.
CS 516 - Introduction to Software Design and Development
Credits:
4.00
Principles of problem analysis and solution design applied
to the development cycle of a software system (i.e., from
system requirements specifications to design,
implementation, and system test). Experience in
understanding and debugging existing software systems.
Prereq: CS 416.
CS 520 - Assembly Language Programming and Machine Organization
Credits:
4.00
Assembly language programming and machine organization:
program and data representation; registers, instructions,
and addressing modes; assemblers and linkers. Impact of
hardware on software and software on hardware. Historical
perspectives. Prereq: CS 515.
CS 595 - Professional Ethics and Communication in Computer Science
Credits:
2.00
A seminar course intended to improve both reasoning and
ability to communicate effectively in front of an
audience. Students learn basic forms of ethical argument,
they read about ethical situations in which technology and
technology professions play a key role, and they
participate in student-led discussions about the reading.
Students also make oral presentations about both ethical
and technical topics, and evaluate each others'
presentations in order to improve their sense for what
makes a good presentation.
CS 600 - Internship
Credits:
1.00
Provides 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.
Prereq: permission. May be repeated up to a maximum of 4
credits. Cr/F.
CS 620 - Operating System Fundamentals
Credits:
4.00
Introduces operating system concepts and design. Job,
process, and resource management; scheduling; file
systems; inter-process communication. Prereq: CS 515 and CS
520 or ECE 562.
CS 645 - Introduction to Formal Specification and Verification
Credits:
4.00
Mathematical reasoning can be applied to study the
behavior of software systems, an approach that is
particularly relevant to critical systems. This can be
achieved through the description of those systems along
with their properties in formally-defined, logically-based
languages. Introduces techniques relevant to the
application of formal specification and verification
methods, including symbolic logic and proof techniques
related to program correctness. Prereq: CS 515, MATH 531,
MATH 532.
CS 659 - Introduction to the Theory of Computation
Credits:
4.00
Review of sets, relations, and languages. Induction and
diagonalization. Finite automata, context-free languages,
pushdown automata. Basic complexity theory. Prereq: MATH 531
CS 671 - Programming Language Concepts and Features
Credits:
4.00
Explores the main features of modern, high-level, general
purpose programming languages from the user (programmer)
point of view. Provides students with an opportunity to use
non-imperative programming paradigms, such as
object-oriented, functional, and logical, and to learn how
specific features of such languages can be used efficiently
in solving programming problems. Prereq: CS 516.
CS 696 - Independent Study
Credits:
1.00 to 6.00
Individual projects developed and conducted under the
supervision of a faculty member. Prereq: permission of
faculty supervisor and department chairperson. May be
repeated for credit.
CS 696W - Independent Study
Credits:
1.00 to 6.00
See description for CS 696. Writing intensive.
CS 712 - Compiler Design
Credits:
4.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 compiler compilers. Students required to define a
simple, nontrivial programming language and to design and
implement its compiler. Prereq: CS 520 and CS 671.
CS 719 - Object-Oriented Methodology
Credits:
4.00
Object-oriented system design and programming. Languages
for object-oriented programming. Design intensive. Prereq:
CS 671 or permission.
CS 719W - Object-Oriented Methodology
Credits:
4.00
See description for CS 719. Writing intensive.
CS 720 - Operating System Programming
Credits:
4.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: CS 516 and CS 620.
CS 721 - Operating System Kernel Design
Credits:
4.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. Course is project-oriented, and requires
the student to make modifications and additions to the
LINUX kernel. Prereq: CS 720 or permission.
CS 723 - Performance Evaluation of Computer Systems
Credits:
4.00
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.
Course is mainly based on the use of analytic queuing
network models of computers 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: CS 620 or equivalent.
CS 725 - Computer Networks
Credits:
4.00
Introduces local, metropolitan, and wide area networks
using the standard OSI Reference Model as a framework.
Introduces the Internet protocol suite and network tools
and programming. Discusses various networking technologies.
Prereq: CS 516 and CS 620.
CS 730 - Introduction to Artificial Intelligence
Credits:
4.00
In-depth introduction to artificial intelligence,
concentrating on aspects of intelligent problem-solving.
Topics include situated agents, advanced search techniques,
knowledge representation, logical reasoning techniques,
reasoning under uncertainty, advanced planning and control,
and learning. Prereq: CS 671.
CS 730W - Introduction to Artificial Intelligence
Credits:
4.00
See description for CS 730. Writing intensive.
CS 735 - Introduction to Parallel and Distributed Programming
Credits:
4.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: CS 516 and CS 620.
CS 758 - Algorithms
Credits:
4.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: CS 659.
CS 760 - Introduction to Human-Computer Interaction
Credits:
4.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: CS 516 and CS 620.
CS 760W - Introduction to Human-Computer Interaction
Credits:
4.00
See description for CS 760. Writing intensive.
CS #765 - Introduction to Computational Linguistics
Credits:
4.00
Introduces 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 analysis methods as
motivated by examples of potential input texts. Topics
include parsing, formal grammars, representation of
knowledge and memory, inference, and interpretation of
non-literal language. Prereq: elementary knowledge of LISP
or instructor's permission.
CS #765W - Introduction to Computational Linguistics
Credits:
4.00
See description for CS 765. Writing intensive.
CS 767 - Interactive Data Visualization
Credits:
4.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: instructor's permission.
CS 767W - Interactive Data Visualization
Credits:
4.00
See description for CS 767. Writing intensive.
CS 770 - Computer Graphics
Credits:
4.00
Input-output and representation of pictures from hardware
and software points of view; interactive techniques and
their applications; three-dimensional image synthesis
techniques and their applications. Prereq: CS 671.
CS 770W - Computer Graphics
Credits:
4.00
See description for CS 770. Writing intensive.
CS 771 - Web Programming Paradigms
Credits:
4.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 an
understanding of how the design of these multi-paradigm
dynamic languages support the process of developing Web
applications. Prereq: CS 671.
CS 775 - Database Systems
Credits:
4.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: CS 671 and MATH 531.
CS 780 - Topics
Credits:
1.00 to 4.00
Material not normally covered in regular course offerings.
May be repeated for credit.