ECE 425 Machine Learning 
(3) 
Machine learning is concerned with computer programs that automatically improve their performance through experience. Covers the theory and practice of machine learning from a variety of perspectives. We cover topics such as learning decision trees, neural network learning, statistical learning methods, genetic algorithms, Bayesian learning methods, explanationbased learning, and reinforcement learning. Programming assignments include handson experiments with various learning algorithms.
(RE) Prerequisite(s): 302; Electrical and Computer Engineering 313 or Mathematics 323.
Comment(s): Prior knowledge may satisfy prerequisite with consent of instructor. 
ECE 505 Programming for Scientists and Engineers 
(3) 
This course will provide an introduction to highperformance scientific computing tools, methods, and environments for the solution of problems in science and engineering. This course is NOT for EECS students.
Formerly COSC 594 Programming for Scientists and Engineers. 
ECE 522 / 528 Introduction to Machine Learning 
(3) 
Theoretical and practical aspects of machine learning techniques that enable computer systems to learn from experience. Methods studied include concept learning, decision tree learning, neural networks, Bayesian learning, instancebased learning, genetic algorithms, rule learning, analytical learning, and reinforcement learning.
Recommended Background: 302, 311, Mathematics 251; and Mathematics 323, or Electrical and Computer Engineering 313. This course may not be approachable to nonCOSC majors.
<span style="color:#FF8200;fontweight:bold;">Note: the above course is available online for Fall 2020.</span> 
ECE 525 Deep Learning 
(3) 
Theoretical and practical aspects of how to build deep networks for representations of highdimensional data. Deep models for both supervised and unsupervised learning will be discussed, including convolutional neural network, autoencoder, generative adversarial network, and recurrent neural network.
Recommended Background: Machine Learning and Python Programming Language. 
ECE 526 Data Mining 
(3) 
A comprehensive introduction to the field of data mining. Topics covered include data preprocessing, predictive modeling, association analysis, clustering, classification, and anomaly detection. Prereq: Discrete mathematics or statistics and programming. 
ECE 527 Biologically Inspired Computation 
(3) 
A course that explores information processing and selforganization in biological systems. Topics include dynamical systems concepts (attractors, basins of attraction, Wolfram classes, stability, Lyapunov functions, information theory, thermodynamic limits of computation), cellular automata (Langton's lambda, phase transitions, computation and life at the "edge of chaos"), and excitable media (cardiac tissue, slime mold, reactiondiffusion systems, activatorinhibitor systems, Turing patterns and animal haircoats), just to name a few. Students' understanding of complex systems and dynamical processes is enhanced by videos of biological systems and inclass demonstrations and experiments using multiagent simulations.
Prerequisites: basic programming ability, linear algebra (e.g., Math 251), differential equations (e.g., Math 231, 241, but primarily just the concepts of differential equations and partial derivatives), probability and statistics (e.g., Math 323). Basic biology and physics are helpful as well.

ECE 529 Application of Linear Algebra in Engineering Systems 
(3) 
Fundamental concepts of linear algebra to problems in engineering systems: steady state and dynamic systems. Geometric and physical interpretations of relevant concepts: least square problems, LU, QR, and SVD decompositions of system matrix, eigenvalue problems, and similarity transformations in solving difference and differential equations; numerical stability aspects of various algorithms; application of linear algebra concepts in control and optimization studies; introduction to linear programming. Computer projects.
Crosslisted: (Same as Biomedical Engineering 529; Civil Engineering 529; Chemical and Biomolecular Engineering 529; Industrial Engineering 529; Materials Science and Engineering 529; Mechanical Engineering 529; Nuclear Engineering 529.) 
ECE 530 Computer Systems Organization 
(3) 
Architectures and systems organization for serial and parallel machines.
Recommended Background: Course work in architecture or machine organization.
<span style="color:#FF8200;fontweight:bold;">Note: the above course is available online for Fall 2020.</span> 
ECE 557 Computer Architecture and Design 
(3) 
An exploration of the central issues in computer architecture: instruction set design, addressing and register set design, control unit design, microprogramming, memory hierarchies (cache and main memories, mass storage, virtual memory), pipelining, bus organization, RISC (Reduced Instruction Set Computers), and CISC (Complex Instruction Set Computers), implementation issues, technology trends, architecture modeling and simulation.

ECE 557 Visualization 
(3) 
Graphical techniques to reveal intrinsic properties in data, acquired or computationally simulated, from various scientific, medical and engineering applications. Topics may include visual perception, structure and storage of highdimensional data (structured and unstructured), visualization of scalar fields, vector fields, tensor fields, or other complex quantities, timevarying data, advanced light transport (singlescattering and multiple scattering), transfer functions, graphs and manifolds, level sets, interpolation, hierarchical and paralle acceleration methods. The design and use of leading production visualization packages will also be covered. Recommended background: COSC 556 Computer Graphics. 
ECE 565 Databases and Scripting Languages 
(3) 
Introduction to database theory, models, and query formation. Survey of scripting languages, their uses, and their interconnectivity with databases.
Recommended Background: COSC 302. 
ECE 571 Numerical Mathematics I 
(3) 
See Math 571. 
ECE 571 Pattern Recognition 
(3) 
Decisiontheoretic and structural approaches to pattern recognition. Deterministic and statistical decision rules, feature extraction and representation, syntactic and semantic methods.
Recommended Background: Coursework in probability or statistics. 
ECE 572 Numerical Mathematics II 
(3) 
See Math 572. 
ECE 575 HPC Modeling and Visualization 
(3) 
Application of high performance computer modeling to assess and visualize the impact of smoke and heat transfer to buildings, electronic equipment, and on human survivability. Indepth fire hazard analysis case studies. Advanced topics include software performance analysis and parallel processing.
Registration Permission: Consent of Instructor

ECE 594 Introduction to Computer Science for Computational Scientists 
(3) 
An introduction to high performance computing, data structures, parallel processing techniques, building a cluster, performance issues, design of algorithms, use of sw packages. Emphasis on program design, data structures, computational complexity, and scientific computing environments.
Prerequisites: programming and numerical methods. 
ECE 594 Computer Systems Organization 
(3) 
Architectures and systems organization for serial and parallel machines.
Recommended Background: Course work in architecture or machine organization.
(also listed as CS 530) 
ECE 594 Scientific Computing for Engineers 
(3) 
Spring 2012.
Part I will start with current trends in highend computing systems and environments, and continue with a practical short description on parallel programming with MPI, OpenMP, and Pthreads. Part II will illustrate the modeling of problems from physics and engineering in terms of partial differential equations (PDEs), and their numerical discretization using finite difference, finite element, and spectral approximation. Part III will be on solvers: both iterative for the solution of sparse problems of part II, and direct for dense matrix problems. Algorithmic and practical implementation aspects will be covered. Finally in Part IV, various software tools will be surveyed and used. This will include PETSc, Sca/LAPACK, MATLAB, and some tools and techniques for scientific debugging and performance analysis. 
ECE 594 Programming for Scientists and Engineers 
(3) 
See COSC 505. 
ECE 594 Graph Algorithms, Applications, and Implementations 
(3) 
This class is intended for graduate students who would like to learn about graph algorithms, applications and implementations. Lectures will be largely devoted to guided discussions. Participants will be expected to complete homework and reading assignments. Three hours credit will be given.
Students in any academic discipline are welcomed. A basic interest in practical issues in computer and data science is expected. Familiarity with one or more programming languages will be needed. Prior background knowledge in graph theory is encouraged but not required. 
ECE 657 Advanced Computer Architecture and Design 
(3) 
Advanced computer architecture issues including topics such as superscalar architectures, parallel algorithms, principles of parallelism detection and vectorizing compilers, interconnection networks, SIMD/MIMD machines, processor synchronization, shared and distributed memory, data coherence, multiprocessors, multicomputers, dataflow machines, special purpose processors.
(DE) Prerequisite(s): 557. 
ECE 692 Quantum Computing and Quantum Information 
(3) 
Content will be chosen from a collection of both fundamental and advanced topics in Quantum Computing and Quantum Information. The fundamental ideas of Quantum mechanics that form the basis of building quantum computers will also be taught as part of this course. Additionally, fundamental Ideas that have influenced the development of classical computers and communication will be presented and contrasted with their quantum counterparts in order to demonstrate the potential power of quantum computing. The course will be selfcontained.
Cross listed: same as PHYS 642. 