## Undergraduate Courses

**CPS 101 Introduction to Computation (A,N).**
*Prerequisites: MTH 121 or instructor's approval.*
An introduction to computation as used in science and engineering. Emphasizes practical applications of formulas to real-life problems and on tools for their solution. Topics include: (1) some basic techniques used in computational modeling (linear regression for data-fitting, determination of areas and volumes, rate of change, and use of graphical calculator), (2) essentials of programming in FORTRAN 90; and (3) essentials of the UNIX operating system (basic commands, editors, file manipulation).
*3 Cr.*

**CPS 105 Scalable Game Design with Agent-based Modeling (A,N).**
This course is designed to provide students with hands-on experience of developing computer games and simulations using agent-based modeling tools such as Agent Sheets (AS) which requires no previous experience in programming. Game design is gaining popularity as a way of introduction to modeling and computer programming. This course will broaden participation in computing at the entry level by shifting the pedagogical focus from programming to more general design comprehension for students. The notion of scalable design will allow students to create interactive games first and then move up to educational games as well as more complex simulations and traditional programming practices.
*3 Cr.*
*Every Semester.*

**CPS 201 Computational Tools I (A).**
*Prerequisites: CSC 120 or CPS 101.*
An introduction to fundamental concepts of computational science using the Fortran 90 programming language, and the clear and concise written presentation of scientific results. Topics include: the Fortran 90 language, program construction and debugging, consequences of finite precision arithmetic, basic machine constants, and modeling of simple physical situations. May also include other modeling tools such as Stella, Agent Sheets, and Project Interactivate. Extensive programming required.
*3 Cr.*

**CPS 202 Computational Tools II (A).**
*Prerequisite: CPS 201.*
A continuation of CPS 201. Emphasizes commonly encountered scientific programming libraries (BLAS, LAPACK, ATLAS). Model problems in numerical linear algebra are heavily utilized. Topics include: advanced topics in Fortran 90 Programming (data structures, overloaded functions, dynamic memory allocation), programming in MATLAB, use of the UNIX operating system, use of the BLAS, LAPACK and ATLAS libraries, optimization of programs (by hand and via compiler optimization), and technical writing. Extensive programming in Fortran 90 and MATLAB required.
*3 Cr.*

**CPS 300 Internet and Technology Ethics (A).**
The Internet has rapidly become a primary source of information, communication and entertainment for society. However, the rapid expansion has resulted in numerous issues that can adversely affect all Internet users. More importantly, new regulations are being passed that can expose users to significant legal risks. Fundamental legal principles that affect all users of the Internet will be discussed and analyzed.
*3 Cr.*

**CPS 301 Issues in Criminal and Forensic Computing (A).**
A discussion of issues related to the use of computers in the criminal justice system. Discussions of growing capabilities in and ramifications of such areas as forensic computing, criminal profiling, fingerprint identification, video image processing, and simulation of crime scenes. In addition, discussions of emerging and future trends in the use of computers as a crime fighting tool.
*3 Cr.*

**CPS 302 Society, Science and Technology (A).**
Discusses ways society and science have affected each other. Introduces a historical perspective of this relation for the past several decades, including the contemporary society. Identifies trends and changes within science and technology in relation to the larger society. Students will attend lectures, discuss issues, and write essays.
*3 Cr.*

**CPS 303 High Performance Computing (A).**
*Prerequisite: CPS 202.*
An introduction in applied parallel computing, using the Message Passing Interface (MPI) standard for parallel communication. Topics include: parallel architectures, problem decomposition, extracting parallelism from problems, benchmarking and performance of parallel programs, applications to the sciences, and technical writing. Extensive programming in Fortran 90 and/or C/C++ required.
*3 Cr.*

**CPS 304 Simulation and Modeling (A).**
*Prerequisites: CPS 202 and MTH 203; and either MTH 243 or MTH 346.*
An introduction to stochastic and deterministic methods used to simulate systems of interest in a variety of applications, with emphasis on problem set-up and analysis and programming methods. Part I: discrete event simulation and statistical analysis of results. Part II: other examples of stochastic simulations such as the spread of forest fires. Part III: deterministic methods for particle simulations, with examples from astronomical and molecular simulation. In addition, a brief discussion of the simulation of continuous media. Extensive programming required.
*3 Cr.*

**CPS 333 Scientific Computing (A).**
A survey of programming methods and the use of UNIX for practical scientific computation: (1) Advanced features of Fortran 90/95 such as modules and operator and function overloading, and practical strategies for their use; (2) Bookkeeping; (3) Shell scripting and other methods for automating scientific computations; (4) Numerical linear algebra libraries (BLAS and LAPACK) and their use, and construction of libraries; (5) Advanced features of MATLAB and other scientific computing packages.
*3 Cr.*
*Fall.*

**CPS 404 Applied and Computational Mathematics (A).**
*Prerequisites: CPS 304 & MTH 203, & either MTH 243 or MTH 346.*
A survey of scientific computing methods, emphasizing programming methods, interpretation of numerical results, and checks for numerical sensibility and self-consistency. The course is divided into several modules, including: (1) representation of floating point data, truncation and rounding error, and basic considerations for accurate numerical computation; (2) iterative numerical methods; (3) numerical differentiation and integration; (4) numerical interpolation; (5) random number generation; (6) the Fast Fourier Transform; and (7) numerical solution of ordinary differential equations. Extensive programming required.
*3 Cr.*

**CPS 405 Applied and Computational Mathematics II (A).**
A continuation of Applied and Computational Mathematics I. Topics include: iterative methods in numerical linear algebra, least squares methods, the Fast Fourier Transform, special functions and their computation, numerical solution of ordinary equations. Extensive programming required.
*3 Cr.*
*Spring.*

**CPS 417 Introduction to Computational Chemistry (A).**
*Cross-listed as CHM 417.*
An introduction to classical and quantum simulation methods as applied to chemistry-related problems and computational chemistry software packages. Part I: introductory material, potential energy surfaces, vibrational and electronic properties of molecules, and capabilities/limitations of computational chemistry. Part II: classical molecular simulation methods, molecular dynamics, molecular mechanics, Monte Carlo calculations, normal coordinate analysis, computer "measurement" of materials properties. Part III: the Schrodinger equation, common electronic structure methods, basic sets, geometric optimization, and molecular properties.
*3 Cr.*

**CPS 433 Scientific Visualization (A).**
*Prerequisites: MTH 424 & either CSC 203 or CPS 202.*
Examination of scientific visualization as a critical portion of the analysis and interpretation of numerical simulations, and an introduction to a wide variety of methods used for scientific visualization. Topics include: basic 2 and 3 dimensional graph types, visualization of 3D data, interpretation of simulation results, grid generation and visualization, problem solution via graphical techniques, image processing, rendering and animation. Extensive programming in MATLAB required.
*3 Cr.*

## Graduate Courses

**CPS 504 Applied and Computational Mathematics (A).**
A survey of scientific computing methods, emphasizing programming methods, interpretation of numerical results, and checks for numerical sensibility and self-consistency. Organized into several modules, including: (1) representation of floating point data, truncation and rounding error, and basic considerations for accurate numerical computation; (2) iterative numerical methods; (3) numerical differentiation and integration; (4) numerical interpolation; (5) random number generation; (6) the Fast Fourier Transform; and (7) numerical solution of ordinary differential equations. Extensive programming required.
*3 Cr.*
*Fall.*

**CPS 505 Applied and Computational Mathematics II (A).**
A continuation of Applied and Computational Mathematics I. Topics include: iterative methods in numerical linear algebra, least squares methods, the Fast Fourier Transform, special functions and their computation, numerical solution of ordinary equations. Extensive programming required.
*3 Cr.*
*Spring.*

**CPS 517 Introduction to Computational Chemistry (A).**
*Cross-listed as CHM 517.*
An introduction to classical and quantum simulation methods as applied to chemistry-related problems and computational chemistry software packages. Covers the topics in three parts. Part I: introductory material, potential energy surfaces, vibrational and electronic properties of molecules, and capabilities/ limitations of computational chemistry. Part II: classical molecular simulation methods, molecular dynamics, molecular dynamics, Monte Carlo calculations, normal coordinate analysis, computer "measurement" of materials properties. Part III: Schrodinger equation, common electronic structure methods, basis sets, geometric optimization and molecular properties.
*3 Cr.*

**CPS 521 Introduction to Computational Physics (A).**
*Prerequisites: PHS 202, CPS 304 and MTH 203.*
An introduction to computational methods commonly used in physics applications, including three of the most famous equations in physics (Wave, Laplace and diffusion), as well as classical mechanics. Includes the classical equations of motion, detailed solution of the two-body l/r problem, planetary and astrophysical simulation methods and analysis of simulation data, wave motion and normal coordinate analysis, electromagnetic field and Laplace's equation, molecular simulation (N-body methods, liquid simulation, liquid structure, specification of initial conditions, constant temperature and pressure simulations, Langevin and Brownian dynamics, and correlation functions), diffusion and percolation.
*3 Cr.*
*Fall.*

**CPS 533 Scientific Visualization (A).**
*Prerequisites: MTH 424 and either CSC 203 or CPS 202.*
Examination of scientific visualization as a critical portion of the analysis and interpretation of numerical simulations, and an introduction to a wide variety of methods used for scientific visualization. Topics include: basic 2 and 3 dimensional graph types, visualization of 3D data, interpretation of simulation results, grid generation and visualization, problem solution via graphical techniques, image processing, rendering and animation. Extensive programming in MATLAB required.
*3 Cr.*
*Spring.*

**CPS 541 Introduction to Computational Finance (A).**
*Prerequisites: CPS 201, MTH 201 and ACC 281.*
Examines computational finance, a rapidly expanding discipline that merges the study and prediction of the behavior of investments in financial markets (such as the options and derivatives markets) with high-performance computing. Explores some of the fundamental principles for prediction in the options and derivatives markets in addition to recent adaptions and modifications to these principles. Topics include: definitions and terminology, portfolio optimization, risk/asset management, the Black-Scholes model, the Cox-Ross-Rubenstein model and the Capital Asset Pricing models.
*3 Cr.*
*Fall.*

**CPS 555 Introduction to Computational Fluid Dynamics (A).**
*Prerequisites: CPS 101, CSC 120 and MTH 203.*
A concise introduction to the analytical and computational techniques required for the investigation of fluid flow through computational means. Topics include: derivation of fundamental equations, dimensional analysis and the Pi theorem; stability of numerical methods; the CFL condition; first, second, and higher order numerical methods; shooting methods; wave equations; parabolic equations; boundary layers; cavity flows; and grid generation.
*3 Cr.*

**CPS 561 Introduction to Computational Methods in Biology (A).**
*Prerequisites: CPS 201, BIO 111.*
An introductory survey course on the applications of computer modeling and simulation to biological problems. Topics include molecular simulation for determination and dynamical properties of biological molecules and bioinformatics. Also covered is the use of the Biology Workbench, MATLAB, AMBER and other packages for biological simulations.
*3 Cr.*
*Spring.*

**CPS 602 Advanced Software Tools (A).**
*Prerequisites: CPS 202 and CPS 303.*
High level tools for parallel computing, mainly the Portable, Extensible Toolkit for Scientific Computing (PETSc). Examples and programming assignments draw heavily from partial differential equations and eigenvalue problems from the applied physical sciences. In addition, employs other high level tools such as finite element simulators. Topics include: numerical solution of partial differential equations and eigenvalue problems, evaluating the parallel performance of tools, iterative methods for the solutions of linear equations, and finite element analysis of problems in the physical sciences. Extensive programming required.
*3 Cr.*

**CPS 604 Computational Methods in Physical Sciences (A).**
*Prerequisite: CPS 504.*
A one semester survey of methods for the computer solution of ordinary and partial differential equations (ODE's and PDE's) that commonly arise in scientific applications, and for analyzing results. Part I: numerical linear algebra. Part II: finite difference methods for ODE's and PDE's, including truncation error and consistency; one-stage, multistage, and multistep methods, initial value and boundary value problems; and systems of equations. Part III: finite element methods for ODE's and PDE's, including choice of basis and weighting functions (collocation, subdomain and Galerkin methods): general procedures for elementwise integration; treatment of boundary conditions; and finite element methods in two and three dimensions. Requires extensive programming.
*3 Cr.*

**CPS 632 Deterministic Dynamical Systems (A).**
*Prerequisites: either CPS 404 or CPS 504 and MTH 424.*
A one-semester survey of methods for the modeling and analysis of deterministic dynamical systems found in chemical, biology, fluid dynamics and other applications. Part I: formulations of classical mechanics, conservation laws, and families of solutions in some model systems. Part II: detailed discussion of simulation methods in chemistry, ecology, biology, fluid dynamics and other fields. Requires extensive programming.
*3 Cr.*

**CPS 633 Stochastic Dynamical Systems (A).**
*Prerequisites: either CPS 404 or CPS 504 and MTH 424.*
A one semester survey of methods for computer simulations and other calculations involving some level of random (stochastic) behavior. Covers modeling and analysis of stochastic dynamical systems in science, engineering and business applications. Topics include: generation of and statistical properties of discrete and continuous random number distributions; numerical integration; solution of stochastic differential equations commonly arising in scientific applications; Monte Carlo methods; discrete event simulation, including general principles, queueing and inventory simulations, and the use of simulation software; and analysis of simulation data. Requires extensive programming.
*3 Cr.*

**CPS 644 Supercomputing and Applications (A).**
*Prerequisite: CPS 303.*
An extensive introduction to parallel computing, mostly in the context of scientific and mathematical applications. Topics include historical background and general capabilities of parallel computing; modern parallel architectures and interconnection networks; the MPI (Message Passing Interface) standard and parallel programming methods; issues in parallel programming such as deadlock, safety and fairness; parallel algorithms from numerical linear algebra, sorting and graph theory applications; porting of codes from serial to parallel architectures, and between different parallel architectures; performance issues and benchmarking; and parallel debuggers. Extensive programming required, using parallel computing environments both on campus and at national supercomputing facilities.
*3 Cr.*

**CPS 698 Graduate Seminar (A).**
Provides a forum for the review and discussion of new discoveries and ideas in computational science. Explores information of topical interest obtained from recent issues of computational science journals. Research carried out by students and/or faculty may also be described and discussed.
*1 Cr.*

**CPS 699 Independent Study (A).**
Arranged in consultation with the instructor-sponsor prior to registration.
*1-6 Cr.*

**CPS 700 Project Paper (A).**
Targets development of skills for independent research or problem solving in the realm of computational science. Entails a computational project mutually agreed upon between the student and instructor with regular meetings for guidance and feedback. Also requires a written report and 2030 minute presentation.
*3 Cr.*

**CPS 710 Thesis (A).**
Mentored individual investigation for a substantial research project in computational science, to culminate in a master's thesis and oral defense.
*3 Cr.*