Course Offerings

COMPSCI – COMPUTER SCIENCE

COMPSCI 510 DATABASES
(4-0-4)(S). A study of the theoretical foundations of database management systems. Design and implementation of alternatives for various database models, including,
but not limited to, hierarchical, network, and relational models. Comparison of the reliability, security, and integrity of various database systems. Implementation of a simple systems. PREREQ: COMPSCI 242 or PERM/INST.

COMPSCI 512 ADVANCED TOPICS IN DATABASES (3-0-3)(F/S). Parallel and distributed database system architectures, distributed database design, client/server database systems. Selected topics from new developments in: extended relational databases, multimedia databases, information retrieval systems, object-oriented databases, temporal databases. PREREQ: COMPSCI 410 or COMPSCI 510 or PERM/INST.

COMPSCI 521 DESIGN AND ANALYSIS OF ALGORITHMS (3-0-3)(F/S). Design techniques such as amortized analysis, dynamic programming, and greedy algorithms. Computational geometry, graph algorithms, primality and other number-theoretic algorithms, specialized data structure techniques such as augmenting data structures, combinatorial graph reduction and functional repetition.
NP completeness and approximation algorithms. PREREQ: COMPSCI 242 or PERM/INST.

COMPSCI 525 NETWORK PROTOCOLS AND PROGRAMMING (3-0-3)(F/S). Applications and hands-on problems from TCP/IP in the Unix environment, augmented by examples from many different kinds of protocols and technologies. OSI layers, fault tolerance, sockets, streams, parallel processes, spooling, remote execution and clientserver models. PREREQ: MATH 361 and COMPSCI 453 or PERM/INST.

COMPSCI 530 PARALLEL COMPUTING (4-0-4)(F). Motivation for parallel computation and survey of different models. Fundamental techniques used in parallel algorithms. Implementation on parallel machines and simulations on clusters of workstations. Distributed computing versus parallel computing. Models for distributed computing. Examples of distributed programming environments. PREREQ: COMPSCI 242 or PERM/INST.

COMPSCI 531 ADVANCED PROGRAMMING LANGUAGES (3-0-3)(F/S). Advanced topics in programming-language theory, design, and implementation. Topics include: data types; binding, scope, and extent; abstraction, extensibility, and control mechanisms; formal semantics and program verification. Emphasis on alternative programming-language paradigms. PREREQ: COMPSCI 354 or PERM/INST.

COMPSCI 541 (ECE 532) COMPUTER ARCHITECTURE (3-0-3) (S). Structure of computer systems using processors, memories, input/ output (I/O) devices as building blocks. Computer system instruction set design and implementation, including memory hierarchies, microprogramming, pipelining and multiprocessors. Issues and tradeoffs involved in the design of computer system architectures with
respect to the design of instruction sets. Applications of hardware description languages (HDL) in the design of computer systems. May be taken for either COMPSCI or ECE credit, but not both. PREREQ: COMPSCI 117 or COMPSCI 125 and ECE 332 or PERM/INST.

COMPSCI 542 QUANTITATIVE COMPUTER ARCHITECTURE (3-0-3)(S). Quantitative analysis on computer architectures and software optimizations with static and dynamic simulation techniques. Design implications of memory latency and bandwidth limitations. Performance enhancement via within-processor and between-processor parallelism. In particular, the study of pipelining, instruction-level parallelism, memory hierarchy design, storage systems, and multiprocessors are emphasized. PREREQ: COMPSCI 441 or PERM/INST.

COMPSCI 546 COMPUTER SECURITY (3-0-3)(F/S). Computer and network security. Public-key and private-key cryptography, authentication, digital signatures, key exchange, key management, certification authorities, and distributed trust models. File system security, Mail system security, and Web security. Intruders, Trojan Horses, and viruses. Covert channels. Projects will involve using currently available security tools. PREREQ: COMPSCI 453 or PERM/INST.

COMPSCI 550 PROGRAMMING LANGUAGE TRANSLATION (4-0-4)(S). Assembler Language Programming, theory and practice of formal language translation, experience with compiler construction
tools under UNIX. Students work on significant projects. PREREQ: COMPSCI 253 and COMPSCI 354.

COMPSCI 551 ADVANCED TOPICS IN COMPILATION (3-0-3)(F/S). Code generation, analysis, and optimization. Projects will use a simple framework for performing analysis and optimizations at the assembly level. PREREQ: COMPSCI 450 or COMPSCI 550.

COMPSCI 552 OPERATING SYSTEMS (4-0-4)(F). Process management, concurrency, inter-process communication, synchronization, scheduling, memory management, file systems and security. Case studies of multiple operating systems. PREREQ: COMPSCI 253 and ECE 332.

COMPSCI 554 ADVANCED OPERATING SYSTEMS (3-0-3)(S). In-depth exploration of the various components of an actual operating system. Includes modifying operating system code to observe behavior, adding new functionality, understanding how various parts work as well as other experiments. Special emphasis on soft and hard real-time operating systems. PREREQ: COMPSCI 453 or COMPSCI 552 or PERM/INST.

COMPSCI 555 DISTRIBUTED SYSTEMS (3-0-3)(S). Principles and paradigms of distributed systems. Communication, processes, naming, synchronization, consistency and replication, fault tolerance and security. In-depth coverage of Remote Procedure Call (RPC), Remote Method Invocation (RMI) and socket programming. Survey of major distributed systems. Several software projects. PREREQ: COMPSCI 453 or COMPSCI 552 or PERM/INST.

COMPSCI 557 ARTIFICIAL INTELLIGENCE (3-0-3)(F/S). Course will include a survey of some of the following topics, plus a project: Principles of knowledge-based search techniques; automatic deduction; knowledge representation using predicate logic, semantic networks, connectionist networks, frames, rules; applications in problem solving, expert systems, game playing, vision, natural language understanding, learning, robotics; LISP programming. PREREQ: COMPSCI 242 and COMPSCI 354 or PERM/INST.

COMPSCI 561 INTRODUCTION TO THE THEORY OF COMPUTATION (3-0-3)(F). Grammars, automata, Turing machines, decidability and complexity, language hierarchies, normal forms, NP-completeness, and reducibilities. Applications will be drawn from various areas of computer science. PREREQ: COMPSCI 242 or PERM/INST.

COMPSCI 562 COMPLEXITY THEORY (3-0-3)(S). Abstract machines, relativizations, upper and lower bounds on complexity, recursive hierarchies and alternation, time-space interaction, parallel and randomized complexity classes, approximation algorithms. PREREQ: COMPSCI 461 or COMPSCI 561

COMPSCI 564 COMPUTER GRAPHICS I (3-0-3)(F). The mathematics and programming techniques for computer graphics emphasizing raster graphics, rasterization algorithms, and scanline rendering. Two- and three-dimensional transformations, homogeneous coordinates, projections; clipping, hidden-surface removal. PREREQ: COMPSCI 242 and MATH 301; MATH 275 recommended.

COMPSCI 565 COMPUTER GRAPHICS II (3-0-3)(S). A continuation of COMPSCI 564. Polygonal representation of 3D objects, lighting models, shading and shadows, texture mapping, antialiasing, interactive graphics. Nonrecursive and recursive ray tracing. PREREQ: COMPSCI 464 or COMPSCI 564.

COMPSCI 567 CRYPTOLOGY I (4-0-4)(F). Introduction to modular arithmetic. The study of: the RSA, El-Gamal, Diffie-Hellman, and Blum-Blum-Shub public key cryptosystems, authentication and digital signatures, anonymity protocols. Protocol failures for these systems. Crosslisted with MATH 307 and COMPSCI 367; credit may be received for only one of these three courses. PREREQ: MATH 170, MATH 171, and MATH 187.

COMPSCI 568 CRYPTOLOGY II (4-0-4)(S). Introduction to groups, fields, polynomial rings and Lucas numbers. The study of: the Elliptic Curve, LUC, and NTRU public key cryptosystems, authentication and digital signatures, anonymity protocols. Crosslisted with MATH 308 and COMPSCI 368; credit may be received for only one of these three courses. PREREQ: MATH 170, MATH 171, and MATH 187.

COMPSCI 571 SOFTWARE ENGINEERING (3-0-3)(F). A formal study of the software development process. Topics include: lifecycle models, requirements definition, specification, design, implementation, validation, verification, maintenance, and reuse. Students work in small teams on significant projects. PREREQ: COMPSCI 225 and MATH 187 or PERM/INST.

COMPSCI 572 OBJECT-ORIENTED DESIGN PATTERNS (3-0-3)(S). Designing a flexible and reusable object-oriented software system is difficult. Object-oriented design patterns capture simple, elegant, and recurring solutions to specific object-oriented design problems. This class reviews object-oriented design principles, explains the goals and form of design patterns, and examines several
well-known patterns. PREREQ: COMPSCI 225 or PERM/INST.

COMPSCI 573 ADVANCED SOFTWARE ENGINEERING (3-0-3)(S). A study of selected aspects of contemporary software development methodology. Topics are taken from recent research articles. These topics include: definition of user requirements, formal specification of solutions, design and implementation techniques, validation and testing, verification, maintenance, and reuse. PREREQ:
COMPSCI 471 or PERM/INST.

SELECTED TOPICS . (Variable credit). In depth study of current trends and advanced topics in targeted areas of computer science.
COMPSCI 580 PARALLEL COMPUTING
COMPSCI 581 ALGORITHMS
COMPSCI 583 COMPUTER SECURITY
COMPSCI 584 NETWORKS
COMPSCI 585 OBJECT-ORIENTED DESIGN
COMPSCI 586 DATABASES
COMPSCI 587 SOFTWARE ENGINEERING
COMPSCI 591 PROJECT (Variable credit).
COMPSCI 593 THESIS (Variable credit).
COMPSCI 600 ASSESSMENT Comprehensive Examination (1 Credit)(Graded Pass/Fail).