1010 Introduction
to Computers and the Internet (3)
Prerequisites: Same
as for Math 1020 and Math 1030. Covers basic concepts and components of a PC,
including microprocessor, disk, display, multimedia, printers, scanners,
backup; survey of popular applications including e-mail, personal information
managers, word processors, spreadsheets; brief discussion of computer
languages; networking, terminology, methods for accessing information on remote
computers; dialup access to computers including use of modems; overview of the
Internet, popular browsers, World Wide Web, search engines, FTP, utilities,
Hyper Text Markup Language, tools for Web page construction, security, privacy.
Credit not granted for both Cmp Sc 1010 and Bus Ad
1800.
1015 Web Structures
I (1)
Prerequisites: Cmp Sc 1010 and Math 1030 or equivalent. Introduction to Web page design and management using software such
as GoLive. Topics include graphical user
interfaces, page templates and dynamic Web page publishing.
1016 Web Structures
II (1)
Prerequisites: Cmp Sc 1015(or equivalent) Introduction to Java and Java
Script. This is a project oriented course using Java and software such as GoLive for Web page design and Internet programming.
1050 User Interface
Design and Event-Driven Programming with Visual Basic (3)
Prerequisite: Cmp Sc 1250 or knowledge of some programming language and
consent of the instructor. This course explores programming in Visual Basic for
event-driven applications. Design and implementation of graphical user
interfaces (GUI) are explored as primary examples. Additional topics may
include DDE, OLE, and interactions with databases.
1220 Computers and
Programming (3)
Prerequisite: Math
1800 or 1100, or a grade of at least B in Math 1030. An overview of a computer
system is presented. Structured design techniques are considered and applied to
the development of computer programs. Aspects of the FORTRAN language will be
studied including basic data types, subroutines and functions, arrays, and
files. Credit not granted for both Bus Ad 1804 and Cmp Sc 1220.
1250 Introduction
to Computing (3)
Prerequisite: Math
1800 or 1100, or a grade of at least B in Math 1030. An overview of a computer
system is presented. Structured design techniques are considered and applied to
the development of computer programs. Aspects of a high level language such as
Pascal or C will be studied, including elementary and advanced data types and
subprograms. Various features of the UNIX operating system will also be
discussed.
2010 An
Introduction to Java and Internet Programming (3)
Prerequisite: Math
1030. Introduces the Java programming language and its use in
Internet programming. This course will involve programming assignments
in Java and their interface with browsers using applets. Students will also be
exposed to the Java’s windows toolkit -- the AWT. A brief introduction to
object-oriented programming concepts will be provided. Other topics will
include threads, virtual machines, byte code, and the Java security model.
2210 The C
Programming Language (3)
Prerequisite: Cmp Sc 2250 or the equivalent. The C language is introduced
together with the associated tools which make up the UNIX C programming
environment. The course is project-oriented and a portion of the practical work
will involve UNIX systems programming. This course is intended for students who
have completed the equivalent of Cmp Sc 1250 and Cmp Sc 2250 but without the C language. It may not be taken
for credit if the student has taken Cmp Sc 2250 with
C.
2250 Programming
and Data Structures (3)
Prerequisite: Cmp Sc 1250. A continuation of Cmp Sc 1250. Advanced programming techniques
including recursion, divide-and-conquer, and backtracking will be considered. A
discussion of dynamic data structures such as lists, binary trees, stacks,
queues, and symbol tables will be presented. An introduction to modular
programming, program specification and verification, and analysis of algorithms
will be given.
2260 Object
Oriented Programming with C++ (3)
Prerequisite: Cmp Sc 2250. Introduces object-oriented
concepts, terminology, and notation. The C++ language is explored,
including topics such as dynamic memory, exception handling, function and class
templates, operator overloading, inheritance, polymorphism, and generic
programming with the standard template library. Additional topics may include
GUI libraries.
2700 Computer
Systems: Architecture and Organization (3)
Prerequisite: Cmp Sc 2250. Introduces details of
computer systems from architectural and organizational points of view.
Topics discussed may include data representation, digital logic and basic
circuits such as ALU, multiplexers, decoders, flip-flops, registers, RAM and
ROM memory, memory hierarchies, I/O devices, pipelining, parallel and RISC
architectures, etc.
2710 Computer
Systems: Programming (3)
Prerequisite: Cmp Sc 2700. Continues introduction of
computer systems, with assembly programming and its application. Topics
covered may include addressing modes, stack manipulations and applications for
reentrant and recursive modules, memory interfacing, I/O device interfacing,
and serial and parallel communication.
2750 Advanced
Programming with Unix (3)
Prerequisite: Cmp Sc 2250. Exploration of the Unix
operating system, including its tools and utilities for program development,
such as makefile, piping and redirection, shell
scripts, regular expressions, and symbolic debuggers. In addition, this course
explores advanced features of the C programming language, including various
file processing, command-line and variable arguments, exception handling and
generic interfacing.
3000 Discrete
Structures (3)
Prerequisites: Math
1900 or 1100, and Cmp Sc 1250 or equivalent. Same as Math 3000. Treats fundamental ideas in discrete
structures and serves as a foundation for subsequent course in both Mathematics
and Computer Science. Provides an introduction to techniques
of mathematical reasoning with examples derived from computer science.
Topics include logic, set algebra, equivalence relations and partitions,
functions, mathematical induction, elementary number theory, cardinality,
recurrence relations, basic combinatorial methods, trees and graphs. Credit not
granted for more than one of Cmp Sc 3000, Math 250,
and Math 3000
3010 Web
Programming Techniques (3)
Prerequisites: Cmp Sc 2750. A project-oriented course which provides a
survey of current technologies including markup languages (XHTML, CSS, XML),
scripting languages (Java Script), client/server computing CGI/PERL/PHP),
applets, Web protocols, session tracking, and other topics as time permits.
3130 Design and
Analysis of Algorithms (3)
Prerequisites: Cmp Sc 2250, Cmp Sc/Math 3000,
Math 2450 and Math 1320. Addresses the design and
mathematical analysis of fundamental algorithms in computer science.
Algorithms studied may involve search, sorting, data compression, string
manipulation, graph traversal and decomposition, and algebraic and numeric
manipulation.
4020 Java and
Internet Programming (3)
Prerequisites: Cmp Sc 3010 or consent of instructor. A project-oriented
course which examines core Java features and selected Internet applications,
such as networking, servlets, applets, AWT/SWING
graphics, database connectivity, and XML.
4040 Electronic
Commerce Protocols (3)
Prerequisites: Cmp Sc 2750 and Math 2450. Provides a
technical introduction to electronic commerce over the Internet, examining
topics such as electronic data interchange, digital currency, and electronic
catalogs. The course discusses technical issues such as
telecommunications infrastructure, data warehousing, software agents, and
storage retrieval of multimedia information. Other topics may include
cryptographic techniques as applicable to web-site development, management of
data in a secure manner, authentication and confidentiality, different levels
of security (transaction, network, and protocol), and digital signatures.
4050 User Interface
Development (3)
Prerequisites: Cmp Sc 2750. Focuses on user interface
design standards as a programming problem. It covers topics such as
functional vs. aesthetic concerns, elegance and simplicity, interference
between competing elements, visual variables, perceptual organization for
visual structure, grid-based design of module and program, semiotics with
images and representation.
4140 Theory of
Computation (3)
Prerequisites: Cmp Sc 3130. Covers finite state machines
and pushdown automata, and their relationship to regular and context-free
languages. Also covers minimization of automata, Turing machines, and undecidability. Other topics may include Church's Thesis, uncomputability, computational complexity, propositional
calculus and predicate calculus.
4250 Programming
Languages (3)
Prerequisites: Cmp Sc 2260. A study of the principles of
modern programming languages. The students perform a comparative study
of syntax, semantics, and pragmatics of high-level programming languages. Also
provides a discussion of list-processing, object-oriented, functional,
procedural, or other programming paradigms.
4280 Program Translation
Techniques (3)
Prerequisites: Cmp Sc 2700, Cmp Sc 2260, Cmp Sc/Math 3000, Math 2450. Looks at the
theory of programming languages as well as the theory of program translation as
a means for dealing with the conceptual gap introduced by the levels of
abstraction. Program translation mechanisms are studied as a means to
explore the tradeoff between language expressiveness, translation, and
execution effectiveness. Particular attention is paid to compilers, with
emphasis on constraints induced by syntax and semantics.
4300 Introduction
to Artificial Intelligence (3)
Prerequisites: Cmp Sc 2260, Cmp Sc 2750 and Cmp Sc 3130. An overview of AI applications is presented.
An AI programming language, such as Prolog or Lisp, is introduced. Fundamental
AI problem solving techniques are applied to heuristic search and game playing.
An introduction to knowledge representation and expert systems is given. Topics
such as theorem proving, neural networks, and natural
language processing may also be studied.
4410 Computer
Graphics (3)
Prerequisites: Cmp Sc 2260, Cmp Sc 2750 and Cmp Sc 3130. The basic architecture of various types of
graphics systems is presented. Also presents a detailed description of the
basic algorithms for 2-dimensional and 3-dimensional graphics systems.
Algorithms for shading, hidden line removal, and rendering in the 3-D systems
will be examined. The course involves significant project work.
4440
Digital Image Processing (3)
Prerequisites: Cmp Sc 2260, Cmp Sc 2750 and Cmp Sc 3130. Focuses on low-level image processing
data structures and algorithms for binary image processing, region and texture
analysis, image filtering, edge detection, and contour following. Other
topics include coding for storage, retrieval, transmission, and image restoration.
4500 Software
Engineering (3)
Prerequisites: Cmp Sc 2260 and Cmp Sc 2750.
Introduces software engineering as a discipline, discusses stages of software
lifecycle, compares development models such as waterfall, prototyping and
incremental/iterative, and compares structured and object-oriented methods. It
also discusses software documentation, both internal and external
verification/validation, quality assurance, testing methods, maintenance,
project management and team structure, metrics, and available tools.
4520
Object-Oriented Analysis and Design (3)
Prerequisites: Cmp Sc 4500. Concentrates on modeling
using a visual language such as UML, in the context of a generic
object-oriented development process. Discusses the
object world, analysis/design goals as the driving development force, different
system views, use cases, static and dynamic models, diagrams, modeling with
patterns, and principles of responsibility assignments. The course may
be supplemented with a CASE tool.
4540 Software
System Architectures (3)
Concerned with the
design, modeling, and evaluation of complex software systems at the
architectural level of abstraction. Covers basic principles of architectural
system design, and may cover topics such as multi-tiered and packaged architectures,
model-view and model-service separation, design supports for distributed and
client-server applications, design patterns, package interfaces, notation,
persistence, and GUI frameworks.
4560 Software
Development Processes (3)
Prerequisites: Cmp Sc 4500 or Cmp Sc 4520. This
course is an in-depth study of software development processes, in the context
of an actual project. Discussion includes object-oriented processes such as
Rational Unified Process, as well as process management issues such as scheduling,
risk-assessment, various metrics, and the selection of appropriate development
methodology and tools.
4610 Database
Management Systems (3)
Prerequisites: Cmp Sc 2750 and Cmp Sc 3130. Presents the foundations, concepts and principles of database design.
Various models of data representation are considered, including the
hierarchical and relational models. Also considers some of the implementation
issues for database systems.
4620 Information
Retrieval (3)
Prerequisites: Cmp Sc 2750 and Cmp Sc 3130. Presents deterministic models of information retrieval systems,
including conventional Boolean, fuzzy set theory, p-norm, and vector space
models. Other topics include probabilistic models, text analysis and
automatic indexing, automatic query formulation, system-user adaptation and
learning mechanisms, evaluation of retrieval, review of new theories and future
directions, and intelligent information retrieval.
4730 Computer
Networks and Communications (3)
Prerequisite: Cmp Sc 2750 and Math 1320. Communication systems will be
considered in the context of the ISO standard for systems interconnection.
Various types of networks will be studied including wide area networks, local
area networks, and fiber optic networks.
4740 Client-Server
Architectures (3)
Prerequisites: Cmp Sc 2750 and Math 2450. Studies
communications systems in the context of the ISO standard for systems
interconnection. There is hands-on exposure to development of
client-server applications.
4760 Operating
Systems (3)
Prerequisites: Cmp Sc 2750, Cmp Sc 2700, Math
1320 and Math 2450. Studies the structure of a generic
operating system, considering in detail the algorithms for interprocess
communication, process scheduling, resource management, memory management, file
systems, and device management. Topics in security may also be examined.
Examples from pertinent operating systems are presented throughout, and use of
the algorithms in modern operating systems is examined. Substantial practical
work, using the UNIX operating system is required.
4770 Operating
Systems for Telecommunications (3)
Prerequisites: Cmp Sc 4520 or MSIS 6806. The structure of a general
operating system will be studied. The various components, including the
interface with the underlying hardware, will be considered in detail. UNIX and
Windows/NT will be considered as case studies throughout the course. The course
will also emphasize hands on experience as a power user of at least one modern
operating system.
4780 Systems
Administration and Computer Security (3)
Prerequisites: Cmp Sc 2750. Identifies and studies major issues of
relevance to systems and networks management. Covers a wide
range of topics from a basic primer on networking topics from the systems
perspective to advanced technical issues of user authentication, encryption,
and mail privacy. Discusses the latest advances in network management
tools and computer security protocols.
4880 Individual
Studies (1-3)
Prerequisites: Cmp Sc 2750 and consent of instructor. Allows
a student to pursue individual studies under the supervision of a faculty
member. May include development of a software project.
May be repeated for credit.
4890 Topics in
Computer Science (3)
Prerequisite:
Consent of instructor. A seminar on special topics in
computer science to be determined by recent developments in the field and the
interests of the instructor. May be repeated for
credit with departmental consent.
5010 Advanced Java
Programming (3)
Prerequisites: Cmp Sc 4020 or consent of instructor. Coverage will
emphasize advanced Java topics and may include, J2EE, Beans/Enterprise Beans,
RMI/RPC, JDBC, Servlets/JSP, development tools such
as Ant, frameworks, such as Eclipse, and Java IDEs.
5130 Advanced Data
Structures and Algorithms (3)
Prerequisites: An
elementary course in analysis of algorithms or consent of the instructor. This
course covers analysis of time and space complexity of iterative and recursive
algorithms along with performance bounds, design of data structures for
efficient performance, sorting algorithms, probabilistic algorithms, divide and
conquer strategies, various algorithms on graphs, and NP completeness.
5320 Introduction
to Evolutionary Computation (3)
Prerequisite: Cmp Sc 4300 or consent of instructor. This course
introduces the concepts of nature-inspired problem solving population dynamics,
Darwinian selection, and inheritance. It discusses problems applicable to
evolutionary algorithms, overviews the existing models and instances, and
analyzes specific instances such as genetic algorithms and genetic programming.
5340 Introduction
to Machine Learning (3)
Prerequisite: Cmp Sc 4300 or consent of instructor. This course
introduces both symbolic and sub-symbolic approaches to machine intelligence.
Specific topics covered may include data mining, supervised learning such as
decision trees, and approximate methods such as fuzzy reasoning.
5360 Expert Systems
(3)
Prerequisites: Cmp Sc 4300 or consent of instructor. This course
concentrates on issues related to building expert systems mimicking human-level
expertise, including knowledge engineering processes leading to the design,
construction, and evaluation of systems, relevant languages, tools, and shells,
as well as representation, quality, and inference methods.
5380 Introduction
to Neural Networks (3)
Prerequisites: Cmp Sc 4300 or consent of instructor. This course
introduces the concepts of connectionism, along with algorithms for simulating
neural networks, discussion of alternative networks architectures and training
algorithms.
5400 Computer
Vision (3)
Prerequisites:
Graduate standing and consent of instructor. This course introduces
computational models of visual perception and their implementation on computer
systems. Topics include early visual processing, edge detection, segmentation,
intrinsic images, image modeling, representation of visual knowledge, and image
understanding.
5420 Visual Data
Processing (3)
Prerequisites:
Graduate standing and consent of instructor. This course introduces low-level
concepts and techniques used in image processing, including methods for image
capture, transformation, enhancement, restoration, and encoding.
5440 Pattern
Recognition (3)
Prerequisites:
Graduate standing and consent of instructor. This course provides an introduction
to statistical decision theory, adaptive classifiers, and supervised and
unsupervised learning. Different types of pattern recognition systems are
introduced, including transducers, feature extractor, and decision units.
Students are exposed to the application of the techniques to optical character
recognition, speech processing, and remote sensing.
5500 Software
Engineering (3)
Prerequisites:
Graduate standing and consent of the instructor. This course introduces
software engineering as a discipline, discusses stages of the software life
cycle, compares development models such as waterfall, prototyping and
incremental/iterative, covers requirements analysis, effort and cost
estimation, compares structured and object-oriented analysis and design methods.
It also discusses verification/validation, quality assurance, software
reliability, testing methods, maintenance, documentation, project management
and team structure, metrics, and available tools. Credit not granted for both Cmp Sc 4500 and Cmp Sc 5500.
5520 Object
Oriented Analysis and Design (3)
Prerequisites: Cmp Sc 4500, Cmp Sc 5500, or
consent of the instructor. This course concentrates on modeling using a visual
language such as UML, in the context of a generic object-oriented development
process. It introduces the object world, analysis/design goals as the driving
development force, different system views, use cases, static and dynamic
models, diagrams, modeling and patterns, and principles of responsibility
assignments. The course may be supplemented with a CASE tool. Topics are the
same as Cmp Sc 4520 but material is covered at a
greater depth and additional projects are required. Credit not granted for both
Cmp Sc 4520 and Cmp Sc
5520.
5540 Software
Systems Architectures (3)
Prerequisites: One
of the following: Cmp Sc 4500, Cmp
Sc 5500, Cmp Sc 4520, Cmp
Sc 5520, or consent of the instructor. This course is concerned with the
design, modeling, and evaluation of complex software systems at the
architectural level of abstraction. It covers basic principles of architectural
system design, and may cover topics such as multi-tiered and packaged
architectures, model-view and model-service separation, design support for
distributed and client-server applications, design patterns, package
interfaces, notation, persistence and GUI frameworks. Topics are the same as Cmp Sc 4540 but material is covered at a greater depth and
additional projects are required. Credit not granted for both Cmp Sc 4540 and Cmp Sc 5540).
5560 Software
Development Processes (3)
Prerequisites: One
of the following: Cmp Sc 4500, Cmp
Sc 5500, Cmp Sc 4520, Cmp
Sc 5520, or consent of the instructor. This course is an in-depth study of
software development processes, in the context of an actual project. Discussion
will include object-oriented processes such as the Rational Unified Process, as
well as process management issues such as scheduling, risk-assessment, various
metrics, and the selection of appropriate development methodology and tools.
Topics are the same as Cmp Sc 4560 but material is
covered at a greater depth and additional projects are required. Credit not
granted for both Cmp Sc 4560 and Cmp
Sc 5560.
5610 Advanced
Databases (3)
Prerequisites:
Graduate standing and consent of instructor. This course is an in-depth study
of database techniques, including normalization theory, object-oriented
databases, statistical databases, distributed databases, and failure recovery.
The course will also involve substantial readings from the current literature.
5620 Intelligent
Information Retrieval (3)
Prerequisites: Cmp Sc 4300 or consent of instructor. This course studies
the use of AI techniques for the development of adaptive information retrieval
systems. Techniques for analysis of information by statistical syntactical, and logical methods are also studied. Topics
related to multimedia information are also discussed.
5640 Multimedia
Information Systems (3)
Prerequisites: Cmp Sc 4410 or Cmp Sc 5400. This
course studies the technical and human issues related to the design,
construction, and use of computer programs that combine text, audio, video,
graphics, animation, and graphical user interfaces. It also surveys
applications and tools.
5700 Computer
Systems (3)
Prerequisites:
Background in computer organization or architecture or consent of instructor.
This course focuses on parallel computing architectures, including RISC,
pipelining, vector processing, SIMD, MIMD, and array processing. It introduces
different memory and I/O subsystems, hardware description languages, and it
demonstrates performance enhancement using different architectures studied.
5730 Client/Server
Computing (3)
Prerequisite: Cmp Sc 4770 or MSIS 6836. The course will study
communications systems in the context of ISO standards for systems
interconnection. There will be hands on exposure to development of
client-server applications.
5740 Parallel and
Distributed Computing (3)
Prerequisites:
Background in computer organization or architecture, or consent of instructor.
This course introduces the fundamentals of parallel computation and algorithm
design. It discusses general techniques for designing efficient parallel
algorithms for fixed-connection parallel network architectures such as arrays,
trees, and hypercubes.
5760 Advanced
Operating Systems and Network Management (3)
Prerequisites: Cmp Sc 4760 or consent of instructor. This course provides
a survey of contemporary operating systems principles, including overall design
strategies for operating systems. The course also discusses communication and
synchronization techniques for concurrent processes, and statistical analysis
of job scheduling, process scheduling, I/O scheduling, and memory management.
5780 Systems
Administration (3)
Prerequisite: Cmp Sc 4760 or 4770 and MSIS 6838. The course will identify
and study major issues of relevance to systems and networks management. It
covers a wide range of topics from a basic primer on networking topics from the
systems perspective to advanced technical issues of user authentication,
encryption, and mail privacy. The course will discuss the latest advances in
network management tools and computer security protocols.
5870 Computer
Science Seminar (1-3)
Prerequisites:
Graduate standing and consent of instructor. This is a seminar on various
topics. Substantial student reading and participation is expected. It may be
taken more than once for credit with the consent of the department.
5880 Computer
Science Independent Project (1-3)
Prerequisites:
Graduate standing and consent of instructor. This course offers the student an
opportunity to work on an adviser-supervised project, individually or in a
group. A student may repeat the course for up to 6 credit hours total, but at
most 6 hours can be accumulated for Cmp Sc 5880 and Cmp Sc 6900.
5890 Topics in
Computer Science (1-3)
Prerequisites:
Graduate standing and consent of instructor. This course offers various topics
not offered on a regular basis. It may be taken more than once for credit with
the consent of the department.
6320 Advances in
Evolutionary Computation (3)
Prerequisites: Cmp Sc 5320 or consent of instructor. This course focuses
on some advanced topics in Genetic and Evolutionary Computation, both
theoretical and practical. Topics may include competent genetic
algorithms, learning classifier systems, and Markov models. A substantial
part of the course will be based on recent literature. Projects may
involve literature research, developing specific applications or implementing a
specific model.
6340 Genetic
Programming (3)
Prerequisites: Cmp Sc 5320 or consent of instructor. This course
provides an in-depth exploration of Genetic Programming, including advanced
concepts such as scalability, evolution of modularity and regularity, and
constrained evolution with CGP, STGP, or CFG-based GP. It may be reading,
research, or application oriented.
6410 Topics in
Computer Graphics (3)
Prerequisites: Cmp Sc 4410 or consent of instructor. This course
covers various aspects of advanced graphics techniques, such as geometric
modeling, rendering, shading, texturing, and computer animation. The
course provides an in-depth study of recent advanced topics in computer
graphics.
6420 Topics in
Image Processing and Multimedia (3)
Prerequisites: Cmp Sc 5400, Cmp Sc 5420 or
consent of instructor. This course covers new developments in digital image
processing, computer vision, and multimedia. Topics to be covered may
include image databases, object tracking, and large-scale data visualization.
6900 Thesis (1-6)
Prerequisites:
Completion of at least 12 graduate credits and approval of research topic by
thesis adviser. This course is designed for those students intending to present
a thesis as part of their M.S. program. At most 6
hours can be accumulated for Cmp Sc 5880 and Cmp Sc 6900.

Department of Mathematics
and Computer Science
303 CCB