Bridge Courses
CS 500 Discrete Structures
Concepts of discrete mathematics relevant to computer science. Topics include logics and proofs, natural deduction, set theory, relational and algebraic structures on sets, Boolean matrices, graph theory, elementary enumerative combinatorics, and elementary formal grammars and automata theory, practice on computer of mathematical software systems.
CS 502 Machine Structures
Computer systems as a hierarchy of levels, beginning with the standard von Neumann model and then moving forward to more recent architectural concepts. Topics include digital logic, microprogramming, conventional machine and assembly language levels. Emphasis is given to those aspects of computer hardware that affect programming. Prerequisites: Permission of instructor
CS 503 Data Structures
Fundamental concepts of data structures and the algorithms that proceed from them. Topics include recursion, the underlying philosophy of object-oriented programming, fundamental data structures including stacks, queues, linked lists, hash tables, trees, and graphs. The basics of algorithmic analysis, and an introduction to the principles of language translation. Course programming assignments use Java and/or C++. Prerequisites: Permission of instructor
CS 505 Object-oriented Programming
Programs as collections of classes that define interacting objects. Topics include class definition, information hiding and encapsulation, inheritance, polymorphism and late binding, exceptions, abstract classes, interfaces, generics, collections. Software reuse and collaboration. Introduction to UML and design patterns. Event-driven programming and graphical user interfaces, discrete-event simulation, multi-threading, sockets, web programming as sample applications. Prerequisite: Permission of instructor
Software Engineering
CS 510 Programming Languages
Principles for programming language organization, and techniques for language processor implementation. Topics include syntax structures, grammars, lexing and parsing techniques, semantic analysis, symbol tables, language translation and generation patterns, type systems, runtime environments, garbage collection, comparative review of major programming language paradigms, domain-specific languages, mathematics of formal language semantics. Prerequisite: Discrete Structures
CS 511 Formal Methods in Software Construction & Verification
Fundamentals of formal software specification and verification, and principles of deductive verification of object-oriented software. Topics include predicate, modal, Hoare, dynamic logics for program specification, construction and verification, intractability of testing, specification property theorem proving, fundamentals of model checking, symbolic execution, software artifacts for specification and verification. Prerequisite: Discrete Structures
CS 512 Software Engineering
Principles, processes and tools for the rigorous construction of software. Topics include system engineering contexts, model-based paradigms, UML and SysML, agile approaches, requirement specifications, architectural design, detailed design, testing, maintenance, patterns for analysis and design, configuration management, automated code generation, and compliance. Prerequisite: Discrete Structures, Data Structures
CS 518 Special Topics in Software Engineering
Topics will vary from offering to offering. In-depth development of topics reflecting current research interest of faculty. Prerequisite: as listed by instructor
Systems & Architectures
CS 520 Computer Architecture
Core principles underlying current and future machines are discussed in quantitative terms and illustrated with current leading architectures. Review of instruction set architectures, pipelining and cache sequences. Issues of power, circuit costs, reliability and availability are introduced. Exploiting instruction-level parallelism in processors including superscalar execution, branch prediction, dynamic scheduling and relevant compiler enhancements are considered. Organization and performance of symmetric and distributed memory architectures: SIMD/MIMD systems, interconnection networks, synchronization and cache coherence. Prerequisites: Machine Structures, Discrete Structures
CS 521 Operating Systems
Exploration and discussion of major developments in operating systems technologies from analysis and modeling aspects covering both centralized and distributed architectures. Topics include: concurrency and interprocess communication, memory management issues, file systems and I/O, multimedia operating systems, multiprocessors, distributed systems, and research foci in operating systems area. Prerequisite: CS 330 Operating systems or equivalent
CS 522 Computer Networks
Analysis, modeling and evaluation of computer networks with Internet as the infrastructure base. Topics include: layered models and protocol suites, unicast/multicast routing, network management, traffic measurement and analysis, mobile networking, router architecture, network-aware applications, content dissemination systems, network security and performance issues. Prerequisite: Discrete Structures
CS 523 Parallel Computing
Techniques for programming parallel computers; trends in parallel and distributed computing; shared memory and message passing architectures; parallel algorithms design; synchronization; parallel algorithm performance analysis; interconnection network topologies; parallel computing languages. Prerequisites: Machine Structures, Data Structures
CS 524 Embedded & Real-Time Systems
Introduction to the problems, concepts, and techniques involved in computer systems which must interface with external devices such as process control systems, computer systems embedded within aircraft or automobiles, and graphic systems: techniques for embedded and real-time programming; trends in embedded architectures; operating systems software for these systems. Prerequisites: Machine Structures, Data Structures
CS 528 Special Topics in Systems & Architectures
Topics will vary from offering to offering. In-depth development of topics reflecting current research interest of faculty. Prerequisite: as listed by instructor
Algorithms & Theory
CS 530 Algorithms & Complexity
There are three questions asked of any algorithm: Is it correct? How fast is it? Can it be done better? A survey of the main techniques and methodologies for designing efficient algorithms as well as the class of problems which are currently considered intractable. Ways to cope with intractability are considered including approximation, randomized algorithms, and local search heuristics. Quantum computing and algorithms are introduced as well. Prerequisite: Discrete Structures, Data Structures
CS 531 Automata, Computability & Formal Languages
Computational capabilities of various classes of abstract machines. Relevance of the abstract machines to real machines. An introduction to formal language theory. Correspondences between the abstract machines viewed as language acceptors and the grammars that generate those languages. Primitive and general recursive functions and their connections with these machines. Determinism and nondeterminism. Decidability and Undecidability. Intractability and NP-completeness. Prerequisites: Discrete Structures
CS 532 Cryptography & Data Security
Algorithms and protocols for confidentiality, integrity, authentication and non-repudiation of stored and transmitted data. Topics include classical cryptographic methods, stream and block ciphers, Shannon’s entropy and perfect secrecy, cryptanalysis, substitution permutation and Feistel networks, the Data Encryption and Advanced Encryption Standards, hash functions and data integrity, secret sharing schemes, public key cryptosystems and infrastructure, digital signatures and authentication, elliptic curve cryptography, automata-theoretic and shift-register models of security systems, analog security systems. Prerequisite: Discrete Structures
CS 538 Special Topics in Algorithms & Theory
Topics will vary from offering to offering. In-depth development of topics reflecting current research interest of faculty. Prerequisites: as listed by instructor
Artificial Intelligence & Modeling
CS 540 Artificial Intelligence
Models of knowledge and learning representation, and techniques of intelligent problem-solving. Topics include crisp and fuzzy rule-based and logic models, constraint satisfaction problems, probabilistic graphical models, state-based search, evolutionary population-based optimization, non-evolutionary population-based techniques, sampling-based methods, neural networks, supervised learning, unsupervised learning, reinforcement learning, planning, integrative general intelligence architectures. Prerequisite: Discrete Structures
CS 541 Database Systems
Techniques and methodologies for the design and implementation of data-based information systems. Topics include database design, modeling and management, database query design and implementation languages, physical structures and algorithms for storage and access, data mining models, complex event processing, control of data access, security and integrity, compliance with laws and regulations for databases. Prerequisite: Discrete Structures
CS 542 Machine Learning
Survey of basic concepts and techniques in machine learning. Topics include: supervised vs. unsupervised learning, classification and regression, neural networks, decision trees, kernel methods, lazy learners, ensemble learning, clustering methods, Bayesian classifiers, evolutionary learning, reinforcement learning, and learning causal models. Prerequisites: Discrete Structures, Data Structures
CS 543 Systems Theory
This course develops a conceptual basis and techniques for the study of systems and system properties useful in all areas of computer science. Some of the properties covered are: behavior, state, dynamics, organization, structure, hierarchy, feedback regulation and control, complexity, information, communication, and performance. The course also develops a number of examples and emphasizes the ability to use the abstract systems concepts to model and study information processing systems. Prerequisite: Discrete Structures
CS 548 Special Topics in AI & Modeling
Topics will vary from offering to offering. In-depth development of topics reflecting current research interest of faculty. Prerequisite: as listed by instructor
Other Courses
CS 591 Independent Study (variable credits)
CS 598 MS Project (3 credits)
CS 599 MS Thesis (1-6 credits)
CS 600 Colloquia in Computer Science (3 credits)
Speakers from fields in computing and its applications present their current research activities and findings. Students are required to attend a number of colloquia each semester and to write reaction papers to those presentations in areas of their interest. May be taken repeatedly, but it does not count toward the 33 credit hour requirement for the M.S. degree.
CMT 600 Continuous Registration (1)
Maintaining continuous registration is a requirement for all graduate degrees. Students who have completed most course requirements but are finishing projects, capstone experiences, thesis or are satisfying Incomplete or In-Progress grades must register to maintain continuous matriculation. Course may be taken up to 6 semesters at which time it is expected that all program requirements will have been met. Credit is not used toward program completion requirements. Only S/U grades are awarded for this course.