Computer/Information Science

CS 500           Discrete Structures (3)
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. Prerequisite: None.

CS 502           Machine Structures (3)
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. Prerequisite: Permission of instructor.

CS 503           Data Structures (3)
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 (3)
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.

CSC 507        Data Analysis
Selection and implementation of research strategies, including selection and application of proper statistical techniques using a personal computer as a research and decision-making tool. Students will attain proficiency in the use of a commercial statistical analysis package in the solution of quantitative research problems. Designed to support graduate programs in other schools.

CS 510           Programming Languages (3)
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: CSC 500, CS 500, or permission of instructor.

CS 511           Formal Methods in Software Construction and Verification (3)
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: Knowledge of discrete structures is assumed.

CS 512           Software Engineering (3)
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. Knowledge of discrete structures and data structures is assumed.

CS 518           Topics in Software Engineering (3)
Topics will vary from offering to offering. In-depth development of topics reflecting current research interest of faculty. Prerequisite: as listed by instructor.

CS 520           Computer Architecture (3)
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. Knowledge of Machine Structures, Discrete Structures assumed.

CS 521           Operating Systems (3)
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: CS330, or its equivalent.

CS 522           Computer Networks (3)
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. Knowledge of discrete structures is assumed.

CS 523           Parallel Computing (3)
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. Prerequisite: Knowledge of machine structures and data structures is assumed.

CS 524           Distributed Systems (3)
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.

CS 528           Topics in Systems & Architecture (3)
Topics will vary from offering to offering. In-depth development of topics reflecting current research interest of faculty. Prerequisite: as listed by instructor.

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. Knowledge of discrete structures, data structures is assumed.

CS 531           Automata, Computability and Formal Languages (3)
Models of computation are used to study and reason about fundamental capabilities and limitations of computers. Which questions are decidable and which ones are not? What makes some problems hard and others easy? Students will explore finite specifications for languages and their uses as language generators and recognizers. Some practical applications of these technologies will be discussed. Knowledge of discrete structures is assumed.

 CS 532           Cryptography and Data Security (3)
Algorithms and protocols for confidentiality, integrity, authentication and non-repudiation of stored and transmitted data. Topics include classical cryptographic methods, streams and block ciphers, Shannon’s entropy and perfect secrecy, cryptanalysis, substitution permutation and Feistel networks, the Data Encryption and Advance 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. Knowledge of discrete structures and data structures required.

CS 538           Topics in Algorithms (3)
Topics will vary from semester to semester. In-depth development of topics reflecting current research interest of faculty. Sample of topics in the Algorithms & Theory area include: Algorithmic Game Theory, Computational Aspects of Evolution, Information Theory, Coding Theory, Randomized Algorithms, Combinatorial Optimization, Steganography and Digital Watermarking, Quantum Computing and Algorithms.

CS 540           Artificial Intelligence (3)
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. Knowledge of discrete structures and data structures is assumed.

CS 541           Database Systems (3)
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. Knowledge of discrete structures and data structures is assumed.

CS 542           Machine Learning (3)
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 casual models. Knowledge of discrete and data structures assumed.

CS 543           Introduction to Systems Theory (3)
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 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. Knowledge of discrete structures is assumed.

CS 548           Topics in Artificial Intelligence and Modeling (3)
Topics will vary from offering to offering. In-depth development of topics reflecting current research interests of faculty. Prerequisite: as listed by instructor.

CS 591           Independent Study (variable credit)

CS 598           Project (1-3)

CS 599           Thesis (1-6 credits)

CS 600           Colloquia in Computer Science (3)
Speakers from fields in computing and its applications present their current research activities and findings. Students are required to attend a designed 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.