Computer Science and Engineering (CSE)

5095. Special Topics in Computer Science and Engineering

Three credits. Prerequisite: open only to Computer Science and Engineering graduate students, others with consent. May be repeated for credit.

Classroom courses in special topics as announced in advance for each semester.

5097. Seminar

One credit. Prerequisite: open only to Computer Science and Engineering graduate students, others with consent. May be repeated for a total of eight credits. Students taking this course will be assigned a final grade of S (satisfactory) or U (unsatisfactory).

Presentation and discussion of advanced computer science problems.

5099. Independent Study in Computer Science and Engineering

Variable (1-6) credits. Prerequisite: open only to Computer Science and Engineering graduate students; instructor consent required. May be repeated for credit.

Individual exploration of special topics as arranged by the student with an instructor.

5102. Advanced Programming Languages

Three credits. Prerequisite: Open to Computer Science and Engineering graduate students, others with consent. Recommended preparation:CSE 4102 and 3502 or the equivalent.

The theory and pragmatics of modern programming languages. Topics include syntax, semantics, type systems and control mechanisms. Key contributions from Functional and Logic Programming including first-order functions, closures, continuations, non-determinism and unification are studied. Study of declarative and operational semantics of recent entries in the field like Constraint Programming and Aspect Oriented Programming.

5103. Performance Engineering

Three credits. Prerequisite: open only to Computer Science and Engineering graduate students, others with consent. Recommended preparation: CSE 3504 and CSE 4500.

Study of performance engineering techniques for the development of software systems to meet performance objectives. Software performance principles, hierarchical performance modeling, and current research trends related to Software Performance Engineering. Methods for computer performance evaluation and analysis with emphasis on direct measurement and analytic modeling, including queuing networks, computation structure models, state charts, probabilistic languages, and Petri-nets. Case studies for the evaluation and analysis of software architecture and design alternatives.

5105. Software Reliability Engineering

Three credits. Prerequisite: Open to Computer Science and Engineering graduate students, others with consent. Recommended Preparation:CSE 2102 and 3504 or equivalent.

State-of-the-art as well as emerging reliability assessment techniques. Topics covered will include reliability modeling paradigms, software reliability growth models, software metrics and reliability, software testing and reliability, and architecture-based reliability assessment. Hands-on experience in the application of these techniques.

5300. Advanced Computer Networks

Three credits. Prerequisite: open only to Computer Science and Engineering graduate students, others with consent. Recommended preparation: CSE 3300 or equivalent. Not open for credit to students who have passed ECE 6431.

Advanced fundamental principles of computer networks. Topics include network design and optimization, protocol design and implementation, network algorithms, advanced network architectures, network simulation, performance evaluation, and network measurement.

5302. Computer Architecture

Three credits. Prerequisite: open only to Computer Science and Engineering graduate students, others with consent. Recommended preparation:CSE 4302 or the equivalent.

Provides an in-depth understanding of the inner workings of modern digital computer systems. Traditional topics on uniprocessor systems such as performance analysis, instruction set architecture, hardware/software pipelining, memory hierarchy design and input-output systems will be discussed. Modern features of parallel computer systems such as memory consistency models, cache coherence protocols, and latency reducing/hiding techniques will also be addressed. Some experimental and commercially available parallel systems will be presented as case studies.

5304. High-Performance Parallel Computing

Three credits. Prerequisite: open only to Computer Science and Engineering graduate students, others with consent. Recommended preparation: CSE 4302 and 4500.

Topics in high-performance computing such as the following (1) Parallel Algorithms and Parallel Computation: including programming models (Circuits and PRAMs), complexity analysis, modern parallel platforms and programming libraries; (2) Shared- and Distributed-Memory Parallel Architectures: including cache coherence, Memory consistency, processor synchronization, latency tolerance and hiding; (3) Interconnection Networks: including quantitative measures, topologies, switch architectures, routing strategies; as well as (4) Contemporary and Future HPC Systems.

5306. Advanced Operating Systems

Three credits. Prerequisite: open only to Computer Science and Engineering graduate students, others with consent. Recommended preparation:CSE 4300 or equivalent.

Topics in modern operating systems with the focus on distributed computing, communication, and concurrency. Selected topics from current research in the theory, design, implementation, and verification of operating systems.

5309. Networked Embedded Systems

Three credits. Prerequisite: open only to Computer Science and Engineering graduate students, others with consent. Recommended preparation: CSE 2300W, 3300, and 3666.

Introduction to the design, analysis and implementation of networked embedded systems that interact with the physical environment. Applications of such systems include environmental monitoring, consumer electronics, medical devices, automotive systems, industrial process control, distributed robotics, and smart structures. Topics covered include concepts, technologies and protocols for low-power and resource-restricted wireless networks; models of computation and physical systems; embedded system architectures; and real-time system concepts, theory and design principles.

5500. Algorithms

Three credits. Prerequisite: open to Computer Science and Engineering graduate students. Recommended preparation: CSE 3500 or equivalent.

Introduction to the design and analysis of algorithms. The course will discuss fundamental design techniques and related issues such as amortized analysis, linear programming, network flow, NP-Completeness, approximation algorithms, randomized algorithms, advanced data structures, and parallel algorithms.

5506. Computational Complexity

Three credits. Prerequisite: open only to Computer Science and Engineering graduate students, others with consent. Recommended preparation: CSE 3500 and 3502; MATH 3160 or equivalent.

Systematic study of resource-bounded computation, including time and space complexity, hierarchy theorems, nondeterministic and randomized computation, and reduction and completeness. Advanced topics may be introduced such as relativized computation, derandomization, communication complexity, lower bounds on circuit complexity, and probabilistically checkable proofs.

5510. Distributed Computing and Fault Tolerance

Three credits. Prerequisite: open only to Computer Science and Engineering graduate students; instructor consent required. Recommended preparation: CSE 4300 and/or 4500.

Topics in the design and analysis of robust distributed algorithms that combine efficiency and fault tolerance. Models of distributed computation and failures. Inherent limitation in achieving fault tolerance in distributed systems. Basic problems considered include communication services, robust cooperation, agreement, consistent distributed memory.

5512. Introduction to Quantum Computing

Three credits. Prerequisite: open only to Computer Science and Engineering graduate students; instructor consent required. Recommended preparation: CSE 3500, 3502, and MATH 2420Q.

Introduction to quantum computing, quantum algorithms, and quantum information theory. Quantum mechanics including elementary aspects of its mathematical formalism; quantum circuit model and quantum complexity theory; development and analysis of several fundamental quantum algorithms, focusing on Grover’s algorithm for database search and Shor’s number-theoretic algorithms. Second half covers the density matrix formalism of quantum mechanics, von Neumann entropy, quantum channels, and quantum error-correction. If time permits, some implementations of quantum computers and current progress will be discussed.

5514. Computational Geometry

Three credits. Prerequisite: open only to Computer Science and Engineering graduate students, others with consent. Recommended preparation: MATH 2110Q and 2210Q or equivalent.

Algorithms and data structures for constructing geometric objects, computing geometric properties, and answering geometric queries as well as techniques for the analysis of their correctness and complexity.

5600. Computer Science and Engineering Research Laboratory

Three credits. Prerequisite: open only to Computer Science and Engineering graduate students, others with consent. May be repeated for credit with a change in content.

Experimental investigation of current research topics in computer science.

5707. Discrete Optimization

Three credits. Prerequisite: open only to Computer Science and Engineering graduate students, others with consent. Recommended preparation: CSE 3500 and MATH 2210.

Methods and techniques used to solve combinatorial optimization problems with examples drawn from industry such as scheduling, resource allocation, and routing. Features a mix of theory and practice using state-of-the-art tools to solve classic problems.

5713. Data Mining

Three credits. Prerequisite: open only to Computer Science and Engineering graduate students, others with consent.

Introduction to data mining algorithms and their analysis. Application of and experimentation with data mining algorithms on real-world problems and domains, with a dual focus on addressing the solution quality issue and the time efficiency issue.

5717. Big Data Analytics

Three credits. Prerequisite: open only to Computer Science and Engineering graduate students, others with consent. Recommended preparation: CSE 3500 and MATH 2210.

Focuses on data science and big data analytics. Introduces basic concepts of data science and analytics. Different algorithmic techniques employed to process data will be discussed. Specific topics include: arallel and out-of-core algorithms and data structures, Rules mining, Clustering algorithms, Text mining, String algorithms, Data reduction techniques, and Learning algorithms. Applications such as motif search, k-locus association, k-mer counting, error correction, sequence assembly, genotype-phenotype correlations, etc. will be investigated.

5800. Bioinformatics

Three credits. Prerequisite: open only to Computer Science and Engineering graduate students, others with consent.

Advanced mathematical models and computational techniques in bioinformatics. Topics covered include genome mapping and sequencing, sequence alignment, database search, gene prediction, genome rearrangements, phylogenetic trees, and computational proteomics.

5810. Introduction to Biomedical Informatics

Three credits. Prerequisite: open only to Computer Science and Engineering graduate students; instructor consent required. Recommended preparation: CSE 4102, 4701 or 4300.

Introduction to biomedical informatics theory and practice with an emphasis on data management for information classification (ontologies), collection, storage, analysis, dissemination, etc., applied to medical, clinical, and public health domains. Topics include: software architectures, security and privacy, interoperabilty and data exchange, standards and the semantic web, health care systems, clinical decision support, data mining, health care systems, monitoring and sensor devices, and cloud/grid computing.

5815. Systems Biology: Constructing Biological Knowledgebase

Three credits. Prerequisite: open only to Computer Science and Engineering graduate students, others with consent.

Design and architecture of biological knowledge base. Topics covered include biological/biomedical data modeling, knowledge representation techniques of biological and biomedical information, review of existing inference methods, methods of assessing evidence quality, design of inference-enabling genomics annotation system, various meta-data analysis methods involving genomics and biomedical data.

5820. Machine Learning

Three credits. Prerequisite: open only to Computer Science and Engineering graduate students, others with consent. Recommended preparation: CSE 3500; MATH 2110, 2210, and 3160 or equivalent.

Enables students to understand and use machine learning methods across a wide range of settings. Mixture of theory, algorithms, and hands-on projects with real data. Besides traditional machine learning topics, e.g., supervised learning, unsupervised learning and semi-supervised learning, introduces advanced topics such as dimension reduction; structured data learning; kernel learning; imprecisely supervised learning; longitudinal data analysis; causal inference, etc.

5840. String Algorithms and Applications in Bioinformatics

Three credits. Prerequisite: open only to Computer Science and Engineering graduate students; instructor consent required.

Classic string matching algorithms (e.g. Knuth-Morris-Pratt, Karp-Rabin, suffix tree and arrays) and more advanced string algorithms (e.g. Burrows-Wheeler transform). With a particular focus on rigorous treatment of string processing algorithms and their analysis. Applications of string algorithms to bioinformatics problems. Students are expected to have basic prior knowledge of algorithm design and analysis.

5850. Information and Data Security

Three credits. Prerequisite: open only to Computer Science and Engineering graduate students, others with consent. Recommended preparation: CSE 4701 and 4300 or equivalent.

Introduction to computer security and the design of secure systems. Security and threat modeling. Entity authentication and privacy, data integrity and confidentiality. Crypto-graphic tools: symmetric and asymmetric encryption, digital signatures, message authentication codes, hash functions. Security at the operating system level, access control, security enforcement, memory protection. Network security, firewalls, internet worms and viruses, intrusion detection. Digital rights management, software security, program obfuscation, implementation flaws, buffer overflow attacks. Case studies in topical areas.

5852. Modern Cryptography: Foundations

Three credits. Prerequisite: open only to Computer Science and Engineering graduate students, others with consent. Recommended preparation: MATH 3160, CSE 3500, and 3502 or equivalent.

The foundations of modern cryptography introducing basic topics such as one-way functions, pseudorandom generators, and computational hardness assumptions based on number theory. Fundamental cryptographic constructions such as hard-core predicates, secure symmetric encryption and message-authentication codes, and public-key cryptography.

5854. Modern Cryptography: Primitives and Protocols

Three credits. Prerequisite: open only to Computer Science and Engineering graduate students, others by consent. Recommended preparation:MATH 3160; CSE 3500, 3502, and 4702 or equivalent.

Modern cryptography, emphasizing provable security and concrete constructions based on the hardness of specific computational problems. After surveying some basic cryptographic primitives and associated number-theoretic constructions, focuses on public-key infrastructure and protocols: it will cover such topics as digital signatures, identification and key-exchange schemes, distributed key generation, blind signatures, zero-knowledge proofs, and private function computation.

5860. Computational Problems in Evolutionary Genomics

Three credits. Prerequisite: CSE 5800; open only to Computer Science and Engineering graduate students, others by consent.

Computational and algorithmic approaches for problems arising in evolutionary genomics. Topics may include phylogenetic trees inference, population evolutionary models and theory, understanding complex evolutionary processes and other related topics. Both combinatorial optimization and stochastic approaches will be covered.

6300. Research Topics in Computer Networks

Three credits. Prerequisite: CSE 5300; open only to Computer Science and Engineering graduate students, others with consent.

Current research issues in the Internet, wireless and mobile networks, as well as emerging concepts such as sensor networks. Overview of the fundamental design principles underlying these networks. Discussion and exploration of the advanced research topics in these and other areas.

6512. Randomization in Computing

Three credits. Prerequisite: CSE 5500; open only to Computer Science and Engineering graduate students; instructor consent required.

Introduction to the theory and practice of randomization and randomized algorithms as a technique for science and engineering problem solving. Topics covered include: probability theory, types of randomization, sorting and selection, hashing and skip list, finger-printing, packet routing, geometry and linear programming, graph algorithms, combinatorial optimization, and external memory algorithms.

6514. Computational Topology

Three credits. Prerequisite: MATH 5310 and 5311; open only to Computer Science and Engineering graduate students, others with consent.

Topology has traditionally generalized concepts of real analysis to metric spaces and set axioms. The new field of computational topology has great potential for encompassing abstractions to unify domain-specific techniques now used in computational geometry, geometric modeling, visualization, image processing, engineering analyses and molecular simulation. Includes perspectives from traditional topology and show how these need to be modified for realistic use in modern computing environments. Topics and emphases will vary.

6800. Computational Genomics

Three credits. Prerequisite: CSE 5800 or BME 5800; open only to Computer Science and Engineering graduate students; instructor consent required.

Advanced computational methods for genomic data analysis. Topics covered include motif finding, gene expression analysis, regulatory network inference, comparative genomics, genomic sequence variation and linkage analysis.