Graduate CS Courses

CS 6103 - Programming Languages and Structures

An intensive introduction to computer science concepts required for graduate work in computer science. Topics include basic concepts of data, lists, strings, arrays, B trees, AVL trees, hashing, and algorithm analysis. Detailed analysis of the concepts and constructs of modern programming languages. This course is intended for incoming graduate students with a strong academic background in technical disciplines other than computer science.

CS 6113 - Operating Systems and Discrete Structures

An intensive introduction to computer sciences concepts required for graduate work in computer science. Topics include theory and applications of mathematical models fundamental to analysis of discrete problems. Introduction to set theory, relations and functions. Principles of counting and other combinatorial problems. Introduction to graph theory and its application to algorithm analysis. Formal logic, methods of proof and correctness of algorithms. Recursion and recursive definitions. Introduction to operating system design. Views of operating system as a computer resource manager and as coordinator of competing processes and threads. Process synchronization and deadlock avoidance. Memory management and File Systems. Comparison of several current operating systems. This course is intended for incoming graduate students with a strong academic background in technical disciplines other than computer science.

CS 6153 - Computer Security

Introduction to security problems in computing, basic encryption and decryption techniques, secure encryption systems, cryptographic protocols and practices, security in networks and distributed systems, legal and ethical issues in computer security.
Prerequisites: CS 3013 and CS 3053

CS 6333 - Computer Networks

Foundations of computer network design: requirements, architecture, and software. Layering and protocols. OSI and Internet architecture. Direct link networks: building blocks, encoding, framing, error detection, reliable transmission and media access control.
Prerequisite: CS 3053 or permission of instructor

CS 6363 - Distributed Computing

Concepts and architectures for distributed and concurrent computing. Distributed transaction processing, process synchronization, and concurrency control. Quality of service, fault tolerance, and security. CORBA, DCE, and DCOM middleware. Coordination languages and distributed programming systems: Linda, PVM, JINI. Distributed Operating Systems.
Prerequisite: CS 3053

CS 6413 - Compiler Construction

Algebraic language syntax and semantic definition. Languages, grammars and parsing algorithms. Semantics processing. Attribute grammars and syntax-directed translation. Declarations processing, type-checking, storage allocation, code generation.
Prerequisites: CS 2123 and CS 3003

CS 6423 - Computer Architecture

Operating systems strategies and architecture features required to support them. Alternative implementations. Survey of advanced topics in a variety modern computer and microprocessor architectures.
Prerequisite: CS 2033 or permission of instructor

CS 6453 - Computer Law and Policy

Legal and political aspects of computers in society. Computer crime, cyber-terrorism, copyright and Internet privacy, access, and freedom legislation. Public policy for cryptographic export controls, critical infrastructure protection, and global digital economy development.
Prerequisite: CS 2123

CS 6483 - Theory of Computing

Finite automata. Regular languages and grammars. Properties of regular languages. Context free languages and grammars. Pushdown automata. Properties of context free languages. Chomsky hierarchy. Tq_ring machines. Limits of algorithmic computation.
Prerequisite: CS 3013

CS 6523 - Database Systems

Thorough introduction to the theory and practice of database systems. Emphasis on theoretical considerations in modeling data and in designing efficient, easy-to-use database systems. Also covers practical issues of query languages and optimization, transaction processing, concurrency control and recovery techniques as well as embedding structured queries in high-level language.
Prerequisites: CS 2123 and CS 3013

CS 6573 - Object Oriented Software

Concepts and techniques of object-oriented software construction are motivated by improving quality, reusability, and extendibility. Classes, assertions, genericity, inheritance, polymorphism, and dynamic binding are illustrated using contemporary environments.
Prerequisite: CS 2123 or permission of instructor

CS 6613 - Artificial Intelligence

Comprehensive introduction to principles and techniques of artificial intelligence (AI). Emphasis on scientific and technological motivations for AI. In-depth coverage of agents and environments, search techniques, game playing, knowledge representation, rule-based reasoning, logic, planning, learning, reasoning under uncertainty. Programming in LISP and rule-based languages.
Prerequisites: CS 2123 and CS 3013

CS 6673 - Data Communication and Networking

Overview of networking issues. Topics include discussion of physical media used in modern networks and of wireless technology. Networking standards such as Ethernet and fast Ethernet. Networking protocols such as DHCP, TCP/IP, IPX/SPX, SNMP, ICMP, RIP etc . Networking hardware such as routers, bridges, receivers and transceivers.
Prerequisite: CS 3053 or permission of instructor

CS 6683 - Software Specification and Design

Formal and semi-formal methods of specification and design are used to describe the various requirements of a non-trivial software system.
Prerequisites: CS 2123 and CS 3013

CS 6693 - Scientific Software Environments

Scientific software environments discussed, focusing on case studies that illustrate the interplay of mathematical modeling, scientific computing, and applied sciences and engineering. Issues of high performance architectures, software engineering methodology for large-scale codes, and visualization of large data sets. Emphasizes high performance computing science and engineering problems. Extensive use of electronic textbooks. Computer projects required.
Prerequisites: MATH 3073 and either CS 2503 or CS 2003
Same as MATH 4533

CS 6783 - Parallel Programming

Discussion of languages and environments for programming parallel processors including program annotations, language extensions, and software tools. Discussion of shared and distributed memory paradigms, and homogeneous and heterogeneous parallel computing. Issues of vector and data parallel computing. Portability and performance evaluation, concepts, and tools.
Prerequisite: CS 2503 or CS 3003, and consent of instructor

CS 6813 - Fundamentals of Computer Graphics

Introduction to computer graphics software and hardware. Two and three-dimensional object descriptions and transformations, clipping scan conversion, and visible surface computations. Raster and vector organized display systems, hardcopy devices, and interactive input devices. Emphasis on design of interactive systems.
Prerequisite: CS 2123

CS 7013 - Programming Languages

Detailed examination of the key concepts and constructs of modern programming languages including imperative, functional, logic and object-oriented paradigms; concurrency. Also focuses on critical language design and implementation issues.
Prerequisite: CS 4013

CS 7053 - Operating Systems Theory

Formal analysis of concurrent processes synchronization, protection and recovery issues, management policies for system components, operating systems for parallel and distributed systems. Discussion of implementation issues, and operating system performance evaluation.
Prerequisite: CS 3053

CS 7063 - Parallel Architectures

Advanced treatment of parallel computer architecture covering new technological developments, including details of multiprocessor systems, shared memory, distributed memory, interconnection networks, clusters, and specialized machines.
Prerequisite: CS 4063

CS 7183 - Information System Security Engineering

Engineering methods for the development of safety and security critical information systems. Secure software design and implementation. Information infrastructure maintenance and reliability. Specification, design, and analysis of mission-critical system properties. Certification, accreditation, and validation processes.
Prerequisite: CS 4423

CS 7193 - Risk Management for Information Systems

Risk analysis and threat profiling for mission critical information systems. Adversarial analysis and countermeasure synthesis. Policy development and implementation. Incident and handling response.
Prerequisite: CS 4423

CS 7213 - Software Project Management

Formal approach to the state-of-the art techniques in software design and development including structured programming, top-down design, stepwise refinement and reorganization, documentation, and standards. Students work in teams in organizing, managing, and developing a large software project.
Prerequisite: CS 2123

CS 7223 - Software Architecture and Design Patterns

This course will focus on software architecture and design patterns. Compare and contrast various pattern languages, patterns, and their usage. The class will study architecture patterns and systems of patterns, along with pattern categories and taxonomies. Students will discuss, present, write, specify, and implement patterns. Concentration will be placed on architectural and integration patterns. The course will include assignments, projects, and at least one exam.
Prerequisite: CS 2123

CS 7233 - Knowledge Base Systems

Various symbolic data structures for representing knowledge. Design and performance issues for knowledge utilization. Knowledge acquisition, automatic problem solving issues, real-time systems, object-oriented programming.
Prerequisite: CS 2123

CS 7243 - Computational Linear Algebra

Computational techniques for the solution of systems of linear and non-linear algebraic equations. Emphasis on the intelligent use of existing software packages. Laboratory exercises using matrix computation environment required. Cross-listed with MATH 7243
Prerequisite: CS 4123

CS 7263 - Scientific Computing

Provides in-depth presentation of issues central to numerical computing: the effect of finite precision on numerical computation, the theory and application of splines, and the theory and applications of computational differentiation.
Prerequisites: CS 4533, or MATH 2024 and CS 2003, or equivalent

CS 7313 - Adv. Artificial Intelligence

Detailed overview of research issues relevant to computational approaches to understanding and creating intelligent behavior. Includes philosophical foundations, knowledge representation, planning, machine learning, multiagent systems. Students work in groups on final research project.
Prerequisite: CS 6613

CS 7323 - Distributed Artificial Intelligence

A thorough introduction of the research and application of techniques for coordination of multiple, autonomous agents sharing common resources and/or goals. Students will work in groups on a final research project.
Prerequisite: CS 6613

CS 7333 - Machine Learning

Comprehensive survey of computational mechanisms that allow autonomous agents to acquire knowledge and expertise and enables them to improve performance on a given set of tasks from experience. Covers symbolic and sub-symbolic schemes; supervised, reinforcement, and unsupervised learning; single agent and multi-agent systems; robot learning; learning information agents; practical applications. Students work in groups on final research project.
Prerequisite: CS 6613

CS 7343 - Agent Based Systems

A thorough overview of agent based system concepts including analysis of key agent characteristics like autonomy, proactivity, learning, and social responsiveness. Particular emphasis is placed both on recognizing the opportunity and feasibility of developing novel and significant applications of agent based systems well as principled theoretical underpinnings, scientific approaches, mechanisms, and infrastructures necessary to develop such applications.
Prerequisite: CS 4253 or equivalent

CS 7353 - Analysis of Algorithms

Design and analysis of efficient algorithms. Design techniques including recursion, divide-and-conquer, and dynamic programming. Applications include sorting, searching, dynamic structures, path finding, fast multiplication, Non-deterministic algorithms. Computationally hard problems. NP-completeness.
Prerequisites: CS 2123 and CS 3013

CS 7403 - Secure Electronic Commerce

Electronic commerce technology, models and issues. Principles and case studies of electronic commerce. Introduction to security architectures for electronic commerce including digital signatures, certificates, and public key infrastructure (PKI). Legal and national policy electronic commerce issues.
Prerequisites: CS 2123 or permission of the instructor.

CS 7413 - Adv. Computer Graphics

An in-depth study of the hardware, software, and algorithms used in computer graphics. Graphics information storage and retrieval. Interactive graphics systems and image processing.
Prerequisites: CS 2123, CS 3053, CS 4613, MATH 2073

CS 7423 - Image Processing

Study of algorithms and hardware for processing images. Algorithms range from visual enhancement and pseudo coloring, through feature extraction, scene analysis, and visual pattern recognition.
Prerequisite: CS 3053 or permission of instructor

CS 7433 - Distributed Algorithms

Components in a distributed system must communicate and cooperate toward the solution of a complex problem. Design and analysis of selected aspects of distributed algorithms governing these components. Topics include concurrency, distributed communication, and failures, Designing real world solutions to problems in distributed computing.
Prerequisite: CS 2123

CS 7443 - Information Systems Assurance

Design and analysis methods for high assurance information systems. Safety, reliability, and security. Specification of mission critical system properties. Software and hardware validation, verification, and certification.
Prerequisite: CS 4153

CS 7453 - Adv. Computer Security

Advanced topics in computer security. Intrusion detection and response. Converged network security architectures. Database security. Cryptographic protocol verification. Malicious code detection.
Prerequisite: CS 7443

CS 7463 - Enterprise Security Management

Managerial aspects of computer security and risk management for enterprises. Accreditation, procurement, extension and operation principles for secure computing systems.
Prerequisite: CS 7443

CS 7473 - Network Security

Comprehensive study of current and developing communications systems and networks. Hostbased and network-based intrusion detection. Anomaly and misuse detection. Network security appliances including firewalls and access control devices. Topics are covered with all networks in mind: Internet, PSTN, ATM, Frame Relay Networks, etc.
Prerequisite: CS 4153

CS 7483 - Computer and Network Forensics

Procedures for the identification, preservation, and extraction of electronic evidence. Auditing and investigation of network and host intrusions. Forensic tools and resources for systems administrators and information system security officers.
Prerequisite: CS 4153

CS 7493 - Secure System Administration and Certification

Provisioning, procurement, and installation of network, hardware, and software systems for mission critical enterprises. System configuration, integration, and maintenance. Incident handling and response.
Prerequisite: CS 7443

CS 7513 - Adv. Topics in Database Systems

Relational databases; hierarchic, network data models; data structures; concurrency control; security
Prerequisites: CS 3013 and CS 4163

CS 7533 - Quantitative System Performance

Techniques for experimental design, measurement, simulation and modeling for performance analysis of computer systems. Workloads, selection and characterization. Planning and benchmarking. Little's and other operational laws. Queuing networks. Load-dependent service centers and hierarchical decomposition.
Prerequisites: CS 3053, STAT 3813 or permission of instructor

CS 7543 - Parallel Languages and Environments

Overview of language standards for parallel programming. Automatic detection of parallel sections for procedural languages. Discussion of shared memory and message-passing paradigms. Development of tools and environments for programming homogeneous and heterogeneous parallel processors.
Prerequisite: CS 4353 or permission of instructor

CS 7553 - Parallel Algorithms

Design and analysis of parallel algorithms with emphasis on distributed memory parallel computation. Topics include numerical problems, sorting algorithms, matrix operations, graph theory and combinational algorithms. Course open to students from other disciplines with strong mathematics background.
Prerequisites: CS 2123, CS 3053, or permission of instructor

CS 7613 - Networking

Data communications techniques and protocol. Distributed system software and architecture. Distributed database systems.
Prerequisites: CS 3053 and CS 4323

CS 7623 - Evolutionary Computation

This course provides basic knowledge of new methods in computer science inspired by evolutionary processes in nature. This includes: evolutionary computation, fundamentals of genetic algorithms, representations, genetic operators, and selection mechanisms. Theory of genetic algorithms. The schema theory and extensions. Genetic programming, and representation and genetic operators. Applications of evolutionary computation techniques to combinatorial optimization problems.
Prerequisites: CS 2123

CS 7861-3 - Special Topics in Computer Science

Devoted to various advanced topics of general computer science not covered by the regular curriculum. May be repeated with change of topic, maximum credit six hours.
Prerequisite: Graduate standing and permission of instructor.

CS 7911-3 - Masters Report

Project-oriented research on some problem within an approved area of computer science directed by the faculty. An oral presentation and written report are required.
Prerequisite: Permission of department.
Pass-fail basis only.

CS 7961 - Residency

CS 7971-3 - Computer Science Seminar

Reports and discussions of advanced computer science topics.
Prerequisite: Permission of instructor

CS 7981-6 - Research and Thesis

Directed research on some problem within an approved area of computer science. Examination and written thesis required.
Prerequisite: Permission of department.
Pass-fail basis only

CS 7991-3 - Independent Study

Individual or group studies of advanced topics in computer science. Selected study is done by appointment with the faculty.
Prerequisite: Permission of department

CS 8241-3 - Adv. Topics in Scientific Computing

Advanced topics in scientific computing such as QZ algorithm for the generalized eigenvalue problem, frontal methods for sparse matrices, multigrid method, domain decomposition method, local grid refinement, curvilinear grid refinement and hybrid finite elements. May be repeated with a change of topic; maximum graduate credit nine hours.
Prerequisite: MATH 7243 or consent of instructor

CS 8341-3 - Adv. Topics in AI and Databases

Advanced topics in artificial intelligence and databases. May be repeated as a seminar course as often as needed, or as an organized course with change of topic and maximum graduate credit of nine hours.
Prerequisite: CS 7233 and consent of instructor

CS 8411-3 - Adv. Topics in Computer Graphics and Image Processing

Advanced topics in computer graphics and image processing such as ray tracing, object description construction, scene analysis and computer vision. May be repeated with a change of topic; maximum graduate credit nine hours.
Prerequisites: CS 7413 and CS 7423

CS 8541-3 - Adv. Topics in Parallel Processing

Advanced topics in parallel processing such as cellular automata, advanced parallel programming techniques, and other topics. May be repeated with a change of topic; maximum graduate credit nine hours.
Prerequisites: CS 4353 and CS 7553

CS 8981-6 - Research Internship

Research participation in an industrial or government research laboratory. Internship should culminate in written report for evaluation by the instructor. Independent evaluation by the immediate supervisor at the research laboratory where the internship took place is also used in assigning course grade.
Prerequisite: Admission to Ph.D. program, completion of comprehensive examinations, consent of major professor.
Pass-fail basis only.

CS 9981-9 - Research and Dissertation

Original research on some problem within the field of computer science on the Ph.D. level.
Prerequisites: Admission to Ph.D. program, completion of comprehensive examinations, consent of instructor.
Pass-fail basis only.

CS 9991-3 - Independent Study

Individual studies of advanced topics at the Ph.D. level. Selected study is performed by appointment with the faculty.
Prerequisite: Admission to Ph.D. program, consent of instructor.
Pass-fail basis only.