**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,I).**
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,I).**
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,I).**
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.*