COMPUTER
SCIENCE
COURSES
OFFERED
FOUNDATION
COURSES
CSC 3645
Introduction to Graphics
3 credits
Workstations will be used to introduce elementary two-dimensional
and three-dimensional graphic techniques.
Plotting of points, lines, and curves; two-dimensional animation
and planar transformations; windows;
viewports and clipping; three-dimensional viewing techniques
including projection; three-dimensional space
transformations; hidden lines and surfaces; color, shading and
elementary lighting models.
Prerequisite:
CSC 3805.
CSC 3675
Discrete Structures
3 credits
An introduction to the basic concepts of discrete mathematics
essential to Computer Science. Topics include
logic, sets, relations, functions, recurrence, equations,
combinatorics, techniques of mathematical proof.
Carries
no credit toward M.S. in Computer Science.
CSC 3805
Data Structures
3 credits
The implementation of abstract data types (lists, trees, graphs,
tables) with applications to searching, sorting,
and pattern matching. Analysis of the space complexity of the data
structure and of the time complexity
of the associated algorithms and the trade off between them.
Students will implement the various
data structures in a series of programming assignments. Prerequisites:
CSC 1621, CSC 3675. Carries
no credit toward M.S. in Computer Science.
CSC 3835
Systems Programming and Networks
3 credits
The process model of computation; the producer consumer problem.
System Calls and Interprocess communication.
The OSI network model. sockets and remote procedure calls. Prerequisite:
CSC 3805. Carries
no credit toward M.S. in Computer Science.
CSC 3875
Formal Languages and Compiler Construction
3 credits
Introduction to formal languages and abstract machines, i.e.
finite automata and regular sets; context-free grammars
and pushdown automata. Application of these ideas to the
construction of compilers and other language
translation software. The course will include programming projects
that will illustrate the major features
of compiler construction. Prerequisite:
CSC 3805.
CSC 3955
Principles of Programming Languages
3 credits
The general principles underlying programming languages, including
such topics as syntax and its specification,
data types, data abstraction, sequence control, and storage
management. Examples drawn from
a variety of programming languages, including procedural,
functional, and logical ones. Prerequisite: CSC
3805.
CORE
COURSES
CSC 4015
Design and Analysis of Algorithms
3 credits
Concepts of program complexity; basic approaches to complexity
reduction: data structures and techniques;
worst cases and expected complexity—applications to sorting; set
manipulation, graph algorithms,
matrix multiplication, and finite Fourier transforms; polynomial
arithmetic, and pattern matching.
Prerequisite:
CSC 3805.
CSC 4025
Operating Systems Design
3 credits
Introduction to different types of operating systems; overview of
operating system architecture, processes, operations
on processes; shared resources; protection; memory management;
resource allocation; scheduling;
deadlocks, and file management. Prerequisites:
CSC 3835, CSC 4055.
CSC 4055
Modern Computer Architecture
3 credits
Performance measurements; CPU: CISC vs RISC; memory system design:
cache and virtual memory; pipeline
design techniques: design and efficiency; characteristics of
numerical applications; vector computers;
multiprocessors: small and large scale, cache coherence;
multiprocessor algorithms: synchronization
and examples.
CSC 4085
Introduction to Software Engineering
3 credits
The opportunity to work in small groups on the development of a
software package. A language based on modern
language design principles is used. Prerequisite:
CSC 3805.
CSC 4135
Theory of Computation: Automata and Formal Languages
3 credits
Formal languages, formal grammars, abstract machines and their
interrelationships. Includes finite automata
and regular languages; context free grammars and languages; Turing
machines. Prerequisite: CSC 3675.
CSC 4145
Theory of Computation: Computability and Decideability
3 credits
Models of computation (Post-Turing, Turing and Random Access
Machines); recursive functions; recursively
enumerable sets; undecideability and noncomputability. Prerequisite:
CSC 3675.
ADVANCED
COURSES
CSC 5065
Database Systems
3 credits
The architecture and use of database systems: data models
(entity-relationship, relational, and object-oriented). SQL,
normalization, storage structures, query optimization, database
security and integrity. Prerequisite:
CSC 3805.
CSC 5075
Elements of Artificial Intelligence
3 credits
LISP or Prolog and some elementary applications to games,
problems, and search spaces; depth-first, breadth-first,
and best-first search; logical basis of expert systems; elements
of game theory. Prerequisites: CSC
4015, CSC 3675.
CSC 5125
Theory of Programs and Program Verification
3 credits
Symbolic logic and mechanized deduction; program specification;
loop invariants; the proof methods of Floyd
and Hoare; parallel computations; program semantics. Prerequisite:
CSC 4015.
CSC 5135
Combinatorial Algorithms
3 credits
The course is organized around the central question of how one can
generate combinatorial objects sequentially
or uniformly at random. Topics include generating subsets, k
subsets, permutations, set partitions,
and integer partitions; Gray codes; prefabs; and combinatorial
family graphs. Prerequisite: CSC 3675.
CSC 5145
Parallel Algorithms
3 credits
Parallel algorithms for a wide range of problems (sorting, graph
algorithms, numerical algorithms, matrix algorithms)
for a variety of models of parallel computation are considered.
The focus is on the design and analysis
of such algorithms; architecture and language issues are dealt
with only peripherally. Prerequisite: CSC
4015.
CSC 5215
Distributed Systems
3 credits
The ISO Network model, TCP/IP, Client server, sockets, remote
procedure call, XML, Distributed Computation
and process migration, Security in distributed systems. Prerequisite
CSC 4025.
CSC 5235
Data Communications
3 credits
Topics include mathematical foundations of data communications,
logical and physical organizations of computer
networks, the ISO model, communication protocols, TCP/IP, circuit
and packet switching, internetworking,
LAN/MAN/WAN technologies and data encryption/decryption. Prerequisite:
CSC 3805.
CSC 5315
Advanced Computer Architecture
3 credits
A study of techniques for the design of high performance computers
and the associated algorithms. Cache and
virtual memory, pipelines, vector computers, multiprocessors,
current trends. Prerequisite:
CSC 4055.
CSC 5415
Complexity of Computation
3 credits
P and NP problems; NP-complete classes; concrete complexity and
the P class of combinatorial problems; complexity
reduction on graph and string problems; complexity of algebraic
computations. Prerequisite: CSC
4135 or CSC 4145.
CSC 5515
Advanced Database Systems
3 credits
Cocurrency control, recovery, distributed databases, transaction
management. Other topics will vary— e.g.,
data mining, data warehousing, benchmarking, object-oriented
database systems, deductive databases,
multi-attribute indexing. The course includes a programming
project. Prerequisite:
CSC 5065.
CSC 5655
Advanced Graphics
3 credits
Three-dimensional modeling and advanced rendering techniques:
hidden line and hidden surface removal
including z-buffer, shading models including Gouraud and Phong
shading, illumination models including
shadows, diffuse and specular reflections via ray tracing and
radiosity, antialiasing, and curve and
surface drawing. Students are expected to be proficient in the C
programming language and to have had
some background in three-dimensional graphics techniques. Prerequisite:
CCS 3645 or permission of the
instructor.
CSC 5715
Theory of Intelligent Systems
3 credits
Mathematical definition of problems and problem solving strategy;
classes of search-reducing heuristics and
their properties; games and strategies; logical descriptions of
heuristics; induction; learning from examples;
linguistic and statistical issues. Prerequisite:
CSC 5075.
CSC 5735
Natural Language Processing
3 credits
Languages for natural language processing, finite state
techniques, transition networks, parsing, ambiguity,
semantics, question answering and inference. Prerequisite:
CSC 5075.
CSC 5815
Numerical Algorithms
3 credits
Exposition and analysis of numerical methods for modern computers;
review of basic concepts in linear algebra;
direct and interactive methods for solving linear and nonlinear
problems in numerical algebra; basic
problems in approximation theory, numerical differentiation and
integration; numerical solutions of differential
equations; forward and backward error analysis of algorithms;
criteria for comparing the efficiency
and suitability of numerical methods. Prerequisite:
MAT 1391 or MAT 1461.
CSC 5825
Information Theory and Coding
3 credits
Data encoding and transmission; variable length coding; the Kraft
inequality for noiseless transmission channels;
channel capacity; noisy channels and channel capacity; the Shannon
coding theorems; and algebraic
coding schemes. Prerequisite:
MAT 2221 or equivalent.
CSC 5835
Discrete Simulation
3 credits
Simulation modeling is used to evaluate the performance of
existing or proposed systems under various scenarios.
This course introduces students to basic queueing models, methods
of statistical analysis, pseudo-random
generators and simulation languages. The methodologies of discrete
simulation will be developed
through the applications to the design and operation of complex
systems found in business management
and network communication. Prerequisite:
MAT 2221 or equivalent.
CSC 5845
Parallel Computing
3 credits
General: classifications, measures of performance, significant
problems requiring parallel solutions. Hardware:
study of the various topologies of processors, interconnection
schemes, and the consequences of
using shared-memory, distributed-memory, data-flow data
management. Software: algorithms for new and
old problems based on the various configurations discussed under
hardware. Prerequisite:
CSC 4015.
CSC 5855 The
Design of User Interfaces
3 credits
User models: conceptual, semantic and syntactic considerations;
forms based interfaces; direct manipulation;
the model, view controller architecture; windowing systems;
widgets and toolkits. Implementations
and their architectures. Students will use toolkits to design a
GUI. Prerequisite: CSC 3835.
CSC 6015
Research Project
3 credits
CSC 6025
Research Project
3 credits
CSC 6035
Research Project
6 credits
INQUIRIES
Gary Laison, Ph.D., Director
Graduate Computer
Science Program
Barbelin 231
(610) 660-1570, (610) 660-1540
|