COSC 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. 
COSC 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. 
COSC 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> 
COSC 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. 
COSC 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. 
COSC 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.

COSC 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> 
COSC 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.

COSC 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. 
COSC 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. 
COSC 571 Numerical Mathematics I 
(3) 
See Math 571. 
COSC 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. 
COSC 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. 
COSC 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) 
COSC 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. 
COSC 594 Programming for Scientists and Engineers 
(3) 
See COSC 505. 
COSC 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. 