CSE 302 Compiler Design: Principles of artificial language description and design. Sentence parsing techniques, including operator precedence, bounded-context, and syntax-directed recognizer schemes. The semantic problem as it relates to interpreters and compilers. Dynamic storage allocation, table grammars, code optimization, compiler-writing languages.

CSE 303 Operating System Design: Process and thread programming models, management, and scheduling. Resource sharing and deadlocks. Memory management, including virtual memory and page replacement strategies. I/O issues in the operating system. File system implementation. Multiprocessing. Computer security as it impacts the operating system.

CSE 313 Computer Graphics: Computer graphics for animation, visualization, and production of special effects: displays, methods of interaction, images, image processing, color, transformations, modeling (primitives, hierarchies, polygon meshes, curves and surfaces, procedural), animation (key framing, dynamic simulation), rendering and realism (shading, texturing, shadows, visibility, ray tracing), and programmable graphics hardware.

CSE 318 Artificial Intelligence Theory and Practice: Detailed analysis of a broad range of artificial intelligence (AI) algorithms and systems. Problem solving, knowledge representation, reasoning, planning, uncertainty and machine learning. Applications of AI to areas such as natural language processing, vision, and robotics.

CSE 313 User Interface Systems and Techniques: Principles and practice of creating effective human-computer interfaces. Design and user evaluation of user interfaces; design and use of interface building tools. Programming projects using a variety of interface building tools to construct and evaluate interfaces.

CSE 336 Embedded Systems:  Use of small computers embedded as part of other machines. Limited-resource microcontrollers and state machines from high description language. Embedded hardware: RAM, ROM, flash, timers, UARTs, PWM, A/D, multiplexing, debouncing. Development and debugging tools running on host computers. Real-Time Operating System (RTOS) semaphores, mailboxes, queues. Task priorities and rate monotonic scheduling. Software architectures for embedded systems.

CSE 340 Design and Analysis of Algorithms: Algorithms for searching, sorting, manipulating graphs and trees, finding shortest paths and minimum spanning trees, scheduling tasks, etc.: proofs of their correctness and analysis of their asymptotic runtime and memory demands. Designing algorithms: recursion, divide-and-conquer, greediness, dynamic programming. Limits on algorithm efficiency using elementary NP-completeness theory.

CSE 341 Database Systems, Algorithms, and Applications:  Design of large databases; normalization; query languages (including SQL); Transaction-processing protocols; Query optimization; performance tuning; distributed systems.

CSE 342 Fundamentals of Internetworking: Architecture and protocols of computer networks. Protocol layers; network topology; data-communication principles, including circuit switching, packet switching and error control techniques; sliding window protocols, protocol analysis and verification; routing and flow control; local and wide area networks; network interconnection; client-server interaction; emerging networking trends and technologies; topics in security and privacy.

CSE 348 AI Game Programming:  Contemporary computer games: techniques for implementing the program controlling the computer component; using Artificial Intelligence in contemporary computer games to enhance the gaming experience: pathfinding and navigation systems; group movement and tactics; adaptive games, game genres, machine scripting language for game designers, and player modeling.

CSE 363 Network Systems Design: Design principles and issues of network systems. Traditional protocol processing systems and latest network processor/processing technologies. Packet processing, protocol processing, classification and forwarding, switching fabrics, network processors, and network systems design tradeoffs.

CSE 401 (ECE 401) Advanced Computer Architecture: Design, analysis and performance of computer architectures; high-speed memory systems; cache design and analysis; modeling cache performance; principle of pipeline processing, performance of pipelined computers; scheduling and control of a pipeline; classification of parallel architectures; systolic and data flow architectures; multiprocessor performance; multiprocessor interconnections and cache coherence.

CSE 403 Advanced Operating Systems: Principles of operating systems with emphasis on hardware and software requirements and design methodologies for multi-programming systems. Global topics include the related areas of process management, resource management, and file systems.

CSE 404 (ECE 404) Computer Networks: Study of architecture and protocols of computer networks. The ISO model; network topology; data-communication principles, including circuit switching, packet switching and error control techniques; sliding window protocols, protocol analysis and verification; routing and flow control; local area networks; network interconnection; topics in security and privacy.

CSE 405 Advanced Programming Languages:  Basic ideas behind modern programming language design, with a focus on functional languages: type systems, modularity, operational semantics, and others. Students need to have some mathematical maturity, including familiarity with proof techniques such as induction.

CSE 406 Research Methods: Technical writing, reading the literature critically, analyzing and presenting data, conducting research, making effective presentations, and understanding social and ethical responsibilities. Topics drawn from probability and statistics, use of scripting languages, and conducting large-scale experiments. Must have first-year status in either the CS or CompE Ph. D. program.

CSE 407 (BIOE 407) Structural Bioinformatics: Computational techniques and principles of structural biology used to examine molecular structure, function, and evolution. Topics include: protein structure alignment and prediction; molecular surface analysis; statistical modeling; QSAR; computational drug design; influences on binding specificity; protein-ligand, -protein, and –DNA interactions; molecular simulation, electrostatics. This course, a version of 307 for graduate students, requires advanced assignments and a collaborative project.

CSE 408 (BIOE 408) Bioinformatics: Issues and Algorithms: Computational problems and their associated algorithms arising from the creation, analysis, and management of bioinformatics data. Genetic sequence comparison and alignment, physical mapping, genome sequencing and assembly, clustering of DNA microarray results in gene expression studies, computation of genomic rearrangements and evolutionary trees. This course, a version of 308 for graduate students requires advanced assignments.

CSE 409 Theory of Computation: Finite automata. Pushdown automata. Relationship to definition and parsing of formal grammars.

CSE 411 Advanced Programming Techniques: Deeper study of programming and software engineering techniques. The majority of assignments involve programming in contemporary programming languages. Topics include memory management, GUI design, testing, refactoring, and writing secure code.

CSE 419 Image Analysis and Graphics: State-of-the-art techniques for fundamental image analysis tasks; feature extraction, segmentation, registration, tracking, recognition, search (indexing and retrieval). Related computer graphics techniques: modeling (geometry, physically-based, statistical), simulation (data-driven, interactive), animation, 3D image visualization, and rendering.

CSE 420 (BIOE 420) Biomedical Image Computing and Modeling:  Biomedical image modalities, image computing techniques, and imaging informatics systems. Understanding, using, and developing algorithms and software to analyze biomedical image data and extract useful quantitative information: Biomedical image modalities and formats; image processing and analysis; geometric and statistical modeling; image informatics systems in biomedicine.

CSE 424 Advanced Communication Networks: Current and emerging research topics in communication networks: network protocols, network measurement, internet routing, network security, adhoc and sensor networks, disruption tolerant networks. Lecture, readings, and discussion, plus a project.

CSE 425 Natural Language Processing: Overview of modern natural language processing techniques: text normalization, language model, part-of-speech tagging, hidden Markov model, syntactic and dependency parsing, semantics, word sense, reference resolution, dialog agent, machine translation. Three projects to design, implement and evaluate classic NLP algorithms.

CSE 426 Fundamentals of Machine Learning: Bayesian decision theory and the design of parametric and nonparametric classification and regression: linear, quadratic, nearest-neighbors, neural nets. Boosting, bagging.

CSE 428 Semantic Web Topics: Theory, architecture and applications of the Semantic Web. Issues in designing distributed knowledge representation languages, ontology development, knowledge acquisition, scalable reasoning, integrating heterogeneous data sources, and web-based agents.

CSE 431 Intelligent Agents: Principles of rational autonomous software systems. Agent theory; agent architectures, including logic-based, utility-based, practical reasoning, and reactive; multi-agent systems; communication languages; coordination methods including negotiation and distributed problem solving; applications.

CSE 432 Object-Oriented Software Engineering : Design and construction of modular, reusable, extensible and portable software using statically typed object-oriented programming languages (Eiffel, C++, Objective C). Abstract data types; genericity, multiple inheritance; use and design of software libraries; persistence, and object-oriented databases; impact of object-oriented programming on the software life cycle.

CSE 434 Software System Security:  Survey of common software vulnerabilities: buffer overflows, format string attacks, cross-site scripting, and botnets. Discussion of common defense mechanisms: static code analysis, reference monitors, language-based security, secure information flow, and others. The graduate version differs from the undergraduate version by requiring advanced assignments and projects. Must have graduate standing in Computer Science or consent of instructor.

CSE 435 Topics on Intelligent Decision Support Systems: AI techniques used to build IDSSs: case-based reasoning, decision trees and knowledge representation. Applications: helpdesk systems, e-commerce, and knowledge management.

CSE 437 Reinforcement Learning and Markov Decision Processes:  Formal model based on Markov decision processes for automated learning from interactions with stochastic, incompletely known environments. Markov decision processes, dynamic programming, temporal-difference learning, Monte Carlo reinforcement learning methods. Must have graduate standing in Computer Science or have consent of instructor.

CSE 440 Advanced Algorithms:  Average-case runtime analysis of algorithms. Randomized algorithms and probabilistic analysis of their performance. Analysis of data structures including hash tables, augmented data structures with order statistics. Amortized analysis. Elementary computational geometry. Limits on algorithm space efficiency using PSPACE-completeness theory.

CSE 443 Network Security:  Overview of network security threats and vulnerabilities. Techniques and tools for detecting, responding to and recovering from security incidents. Fundamentals of cryptography. Hands-on experience with programming techniques for security protocols.

CSE 445 WWW Search Engines: Study of algorithms, architectures, and implementations of WWW search engines. Information retrieval (IR) models; performance evaluation; properties of hypertext crawling, indexing, searching and ranking; link analysis; parallel and distributed IR; user interfaces.

CSE 447 Data Mining: Modern data mining techniques: data cleaning; attribute and subset selection; model construction, evaluation and application. Algorithms for decision trees, covering algorithms, association rule mining, statistical modeling, model and regression trees, neural networks, instance-based learning and clustering covered.

CSE 460 Mobile Robotics:  Algorithms employed in mobile robotics for navigation, sensing, and estimation. Common sensor systems, motion planning, robust estimation, Bayesian estimation techniques, Kalman and particle filters, localization and mapping.

CSE 471 Principles of Mobile Computing:  Course topics include fundamental concepts and technology underlying mobile computing and current research in these areas. Examples drawn from a variety of application domains such as health monitoring, energy management, commerce, and travel. Issues of system efficiency will be studied, including efficient handling of large data such as images and effective use of cloud storage. Recent research papers will be discussed.

CSE 475 Principles and Practice of Parallel Computing: Parallel computer architectures, parallel languages, parallelizing compilers and operating systems. Design, implementation, and analysis of parallel algorithms for scientific and data-intensive computing.

CSE 490 Thesis

CSE 499 Dissertation