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
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 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 404 - Do-It-Yourself Internet
Credits:
4.00
The objective of this course is to demystify the design
process that leads to the evolution of the Internet. In
doing so, we investigate the ways that technology changes
to meet the needs of society, how society changes in
response to these new technologies and how these societal
changes create pressures that produce needs for new
technologies.
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 408 - Living in a Networked World: The Good, the Bad, and the Ugly
Credits:
4.00
The objective of this course is to explore the implications
of living in a networked world. The course surveys the
fundamental technologies and practices that make up the
Internet and then ask the student to examine the
ramifications of using the technologies. Users of the
technologies should understand the technology in order to
make educated decisions about how to use it safely and
effectively. Students have the opportunity to self-publish
by using various current technologies including blogs,
discussion boards, email and creating web pages using xhtml.
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
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 444 - Computer Technology: Balancing Risks Against Reward
Credits:
4.00
Computer 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 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 619 - Introduction to Object-Oriented Design and Development
Credits:
4.00
Principles of problem analysis ans software design applied
to the development cycle of a software system (i.e. from
system requirements specification to design,
implementation, and system test). Design and implementation
using object-oriented principles, patterns, and tools.
Experience in understanding and debugging software systems.
Experience in working in groups. Prereq: CS 515.
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 619.
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
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. 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; 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 required to design
and implement a compiler for a simple language. This course
can be counted as either a theory elective or an
implementation-intensive elective, but not both. Prereq: CS
520 and CS 659.
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 619.
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 619.
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
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. 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 619.
CS 745 - Formal Specifications and Verification of Software Systems
Credits:
4.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 compoistional reasoning, as
discussed. We rely on a notation (TLA+, the Temporal Logic
of Actions) and a support tool (TLC, the TLA+ Model
Checker). Prereq: CS 659.
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 515 and 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 619.
CS 760W - 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.
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
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. 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
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. 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. No credit if credit earned for IT 775.
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.
CS 791 - Senior Project I
Credits:
2.00
The principal goal of CS 791 is to develop precise
functional specifications for the senior projects as well
as a complete software design specification. The course
will review and expand upon design concepts presented in
previous courses, including UML, and CRC approach, and
design patterns. Students apply these concepts to the
design of their own senior projects. A significant
component of the design includes specifications of the
testing methodology to be used. Prereq: CS 620 and CS 671.
CS 792 - Senior Project II
Credits:
2.00
Continuation of CS 791: Senior Project I. Students complete
the project by implementing their design. Students work in
teams. Successful completion of this course fulfills the
Capstone Experience requirement for Computer Science
majors. Prereq: CS 791.