Computer Science |
CS 401 - Computer Applications
Credits:
4.00
Use of computers to manage and analyze information across a
variety of settings and disciplines. Introduction to major
categories of software for large and small computer systems
and discussion of the computer's role in today's society. No
prior computer experience required. Significant hands-on
work in campus clusters required. Not open to students who
have completed DCE 491 or 492. Not open to CS majors. CEPS
students should check with their major department for
approval.
CS 401H - Honors/Computer Applications
Credits:
4.00
See description for CS 401.
CS 402 - Survey of Computer Science
Credits:
4.00
Exploration of the core concepts of computer science,
including computer architecture, operating systems,
relationship between hardware and software, communications
and networks, and data representation. Programming languages
and concepts, algorithm analysis, database systems, graphics
and ethics will also be discussed. Not open to CS majors.
CS 403 - Online Network Exploration
Credits:
4.00
Introductory course covering basic topics relating to the
Internet. Subjects discussed include e-mail, newsgroups,
mailing lists, file transfer, telnet, the World Wide Web,
Web browsers, search engines, and hypertext markup
language (HTML). A large portion of the course focuses on
Web publishing. Security and privacy issues, and commerce
and legal issues are also discussed. Students are expected
to have no previous experience with HTML. They will acquire
new skills as well as broad understanding of the technical
possibilities of living and working in an online society and
its implications.
CS 405 - Introduction to Applications Programming with Visual Basic
Credits:
4.00
Introduction to 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 407 - Introduction to Computer Programming with Java
Credits:
4.00
Introduction to the concepts and techniques of computer
programming, including basic data structures such as lists,
stacks, and queues. The topics include control structures,
file manipulation, recursion, and an introduction to graphic
user interface design. Introduces object-oriented design and
analysis, including class definition and use, inheritance,
and polymorphism. Good programming style is stressed.
Significant out-of-class programming required. Not open to
students who have had CS 410, 412, 415, or the equivalent.
CS 410 - Introduction to Scientific Programming
Credits:
4.00
Introduction to 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 504 - Web Design and Development
Credits:
4.00
Advanced course covering topics related to the design
and implementation of complex, interactive presentations for
the World Wide Web. Students are expected to have a working
knowledge of some programming language. Students will learn
how to apply their knowledge of HTML in order to design more
effective presentations and how to build upon this knowledge
to utilize advanced Web development techniques such as
cascading style sheets (CSS), dynamic HTML (DHTML),
client-side scripting, and server-side programming. New and
emerging Web-related technologies will also be discussed.
Prereq: CS 403 and programming course, or permission of the
instructor.
CS 505 - Database Programming
Credits:
4.00
Introduction to database programming in the microcomputer
environment. Students use a procedural programming language
such as Visual Basic to manipulate data managed by a
database management system. Emphasis is on the relational
database model. Topics include connections, queries
(including use of SQL), relations, constraints, transaction
processing, concurrency issues, exception handling, and
report generation. Prereq: a programming course.
CS 506 - Intermediate Applications Programming with Visual Basic
Credits:
4.00
Introduction to advanced Visual Basic data structures,
objects, and classes, focusing on the component Object Model
(COM) and database objects. Topics include fundamentals of
relational databases, VB data interface tools, and the SQL
database language, as well as the manipulation of objects
from other applications and the creation of
programmer-defined classes and objects. Prereq: CS 405.
CS 508 - Introduction to Data Structures with C++
Credits:
4.00
Introduction to basic data structures including strings,
stacks, queues, lists, files, and binary search trees;
emphasis on abstract data type (ADT) design and programming
techniques. Basic introduction to C++ including
nonhierarchical classes, operator overloading, template
functions, and template classes. (Not offered for credit if
credits received for CS 416.) Prereq: CS 410 (or 407).
CS 509 - Network/System Administration
Credits:
4.00
Introduction to the central issues in administration of a
networked computer system. Topics include the client-server
model (including support of mail, FTP, Telnet, the Web),
disk and file systems, backup and recovery, and security.
Privacy and other legal/social issues will be discussed.
Prereq: CS 402 and a programming course, or permission of
the instructor.
CS 515 - Data Structures
Credits:
4.00
Review of 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 exisiting software systems.
Prereq: CS 515.
CS 611 - 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 soft-ware and software on hardware. Historical
perspectives. Prereq: CS 515.
CS 620 - Operating System Fundamentals
Credits:
4.00
Introduction to operating system concepts and design. Job,
process, and resource management; scheduling; file systems;
interprocess communication. Prereq: CS 515 and CS 611 or
ECE 612.
CS #658 - Analysis of Algorithms
Credits:
4.00
Introduction to use of basic mathematics in design and
analysis of computer algorithms. Topics include O-notation,
divide and conquer, the greedy method, dynamic programming,
and NP-completeness. Prereq: MATH 531 and 532; CS 515.
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
and 532; CS 515.
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 nonimperative 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.
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:
3.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 topdown 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. Pre- or Coreq: CS 671.
CS #718 - Software Engineering
Credits:
4.00
Design approaches, implementation methodologies, and
management techniques required to develop large, reliable
software systems, including applications-oriented systems.
Team programming projects. Prereq: CS 515 or permission.
CS 719 - Object-Oriented Methodology
Credits:
4.00
Object-oriented system design and programming. Languages
for object-oriented programming. Prereq: CS 671 or
permission. 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 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: 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 #722 - Advanced Systems Programming
Credits:
4.00
Topics in systems programming. Organization and
implementation of typical POSIX 1003.2 utilities and tools.
Emphasis on file handling, text processing, pattern
matching, and portability. Prereq: CS 620.
CS 724 - Distributed Operating Systems
Credits:
4.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. Prereq:
CS 620.
CS 725 - Computer Networks
Credits:
4.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. Prereq: CS 620.
CS #727 - Computer Communications Software Design
Credits:
4.00
Telecommunications software; error detection algorithms;
asynchronous and synchronous communications software;
network architectures; protocol definition and
implementation; links through a local area network; timing
considerations. Selected communications software will be
implemented. Prereq: CS 620.
CS 730 - Introduction to Artificial Intelligence
Credits:
4.00
In-depth introduction to artifical 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 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 620, 611 or ECE 612; or
permission. Writing intensive.
CS 745 - Formal Specifications and Verification of Software Systems
Credits:
4.00
Mathematical reasoning can be applied to study the behavior
of software systems, an approach that is particularly
relevant to safety critical systems. This can be achieved
through the description of those systems along with their
properties in formally defined, logically based languages.
This course introduces techniques relevant to the
application of formal specification and verification
methods, including formal logic and proof techniques related
to program correctness. Prereq: CS 515, MATH 531, 532.
CS #746 - Introduction to Programming Semantics
Credits:
4.00
Informal, nonmathematical introduction to descriptive
techniques of denotational semantics. Provides framework
needed to formally describe programming languages such as
PASCAL. No previous knowledge of the theory of computation
or of any particular programming language is assumed.
Prereq: CS seniors only or instructor's permission.
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 620.
Writing intensive.
CS 765 - Introduction to Computational Linguistics
Credits:
4.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 analysis methods as
motivated by examples of potential input texts. Topics
include parsing, formal grammars, representation of
knowledge and memory, inference, and interpretation of
nonliteral language. Prereq: elementary knowledge of LISP or
instructor's permission. 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 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; three-dimensional image
synthesis techniques. Prereq: CS 515.
CS 770W - Computer Graphics
Credits:
4.00
See description for CS 770. Writing intensive.
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 515, MATH 531.
CS 780 - Topics
Credits:
4.00
Material not normally covered in regular course offerings.
May be repeated for credit.