## Finding Eligible Scientific Computing Courses

On YES, to select all courses approved for credit in the Scientific Computing minor, select the “Advanced” link next to the search box, select the “Class Attributes” drop-down box on the bottom right of the advanced search page, and then select “Eligible for Scientific Computing” to find all courses.

## Core Programming Courses

**CS 1101 Programming and Problem Solving.** An intensive introduction to algorithm development and problem solving on the computer. Structured problem definition, top down and modular algorithm design. Running, debugging, and testing programs. Program documentation. [3] *Note: CS 1101 is strongly recommended over CS 1103 for the Scientific Computing minor.*

- or -

**CS 1103 Introductory Programming for Engineers and Scientists. **An introduction to problem solving on the computer. Intended for students other than computer science and computer engineering majors. Methods for designing programs to solve engineering and science problems. Generic programming concepts. [3] *Note: CS 1101 or CS1104 is strongly recommended over CS 1103 for the Scientific Computing minor.*

- or -

**CS 1104 Programming and Problem Solving with Python. **This introductory course is aimed at students with little or no programming background beginning their studies in computer and data sciences, and scientific computing. The primary goal is to learn problem solving using computer programs and to feel confident in developing small programs with practical goals. The subject covers generic programming concepts and introduces good software engineering practices. The class uses the Python programming language. No prerequisites. Students who have earned credit for CS 1101 may not take CS 1104. [3]

**CS 2201 Program Design and Data Structures. ** The study of elementary data structures, their associated algorithms and their application in problems; rigorous development of programming techniques and style; design and implementation of programs with multiple modules, using good data structures and good programming style. Prerequisite: CS 1101. [3]

- or -

**CS 2204 Program Design and Data Structures for Scientific Computing.** Data structures and their associated algorithms in application to computational problems in science and engineering. Time and memory complexity; dynamic memory structures; sorting and searching; advanced programming and problem-solving strategies; efficient software library use. Prerequisite: CS 1101 or 1103 or 1104. [3]

## Scientific Computing Courses

**SC 3250 Scientific Computing Toolbox.** Team taught course with topics illustrating use of computational tools in multiple science and engineering domains. Topics may include simulations of complex physical, biological, social, and engineering systems, optimization and evaluation of simulation models, Monte Carlo methods, scientific visualization, high performance computing, or data mining. Prerequisite: CS 1101 or 1103; Math 1200. [3] *Note: Beginning in Fall 2018, SC 3250 will require CS 2204 (or CS 2201) as a prerequisite.*

**SC 3260 High Performance Computing.** Introduction to concepts and practice of high performance computing. Parallel computing, grid computing, GPU computing, data communication, high performance security issues, performance tuning on shared-memory-architectures. Prerequisite: CS 2201 or CS 2204. [3]

**SC 3850 Independent Study in Scientific Computing.** Development of a research project by the individual student under direction of a faculty sponsor. Project must combine scientific computing tools and techniques with a substantive scientific or engineering problem. Consent of both the faculty sponsor and one Director of the SC minor is required. Prerequisite: SC 3250. [1-3 each semester]

**SC 3851 Independent Study in Scientific Computing.** Continuation of SC 3850 under the direction of the same or different faculty sponsor. Same requirements as for SC3850. [1-3 each semester]

**SC 3890 Special Topics in Scientific Computing: Advanced High Performance Computing.**This course is offered in online partnership with the University of Illinois. High performance computing algorithms and software technology, with an emphasis on using distributed memory systems for scientific computing. Theoretical and practically achievable performance for processors, memory systems, and networks, for large-scale scientific applications. The state-of-the-art and promise of predictive computational science and engineering. Algorithmic kernels common to linear and nonlinear algebraic systems, partial differential equations, integral equations, particle methods, optimization, and statistics. Computer architecture and the stresses put on scientific applications and their underlying mathematical algorithms by emerging architecture. State-of-the-art discretization techniques, solver libraries, and execution frameworks. Students are expected to have familiarity with C or C++ in a Unix environment, some basic numerical algorithms, and basic computer architecture. Prerequisite: SC 3260 or CS 2231 [3]

**SC 3890 Special Topics in Scientific Computing.** Special topics course. [3]

**SC 5250 Scientific Computing Toolbox.** Team taught course with topics illustrating use of computational tools in multiple science and engineering domains. Topics may include simulations of complex physical, biological, social, and engineering systems, optimization and evaluation of simulation models, Monte Carlo methods, scientific visualization, high performance computing, or data mining. Prerequisites: Some computer programming experience and some knowledge of basic calculus. [3]

**SC 5260 High Performance Computing.** Introduction to concepts and practice of high performance computing. Parallel computing, grid computing, GPU computing, data communication, high performance security issues, performance tuning on shared-memory-architectures. Prerequisites: Some computer programming experience. [3]

**SC 5890 Special Topics in Scientific Computing: Advanced High Performance Computing.** This course is offered in online partnership with the University of Illinois. High performance computing algorithms and software technology, with an emphasis on using distributed memory systems for scientific computing. Theoretical and practically achievable performance for processors, memory systems, and networks, for large-scale scientific applications. The state-of-the-art and promise of predictive computational science and engineering. Algorithmic kernels common to linear and nonlinear algebraic systems, partial differential equations, integral equations, particle methods, optimization, and statistics. Computer architecture and the stresses put on scientific applications and their underlying mathematical algorithms by emerging architecture. State-of-the-art discretization techniques, solver libraries, and execution frameworks. Students are expected to have familiarity with C or C++ in a Unix environment, some basic numerical algorithms, and basic computer architecture. Prerequisite: SC 5260 or CS 2231 [3]

**SC 5890 Special Topics in Scientific Computing: Introduction to Computer Programming for the Sciences, Social Sciences, and Humanities.** Introduction to Computer Programming for the Sciences, Social Sciences, and Humanities The course is intended for non-engineering graduate students who want to become proficient in computer programming. The MATLAB environment is used to illustrate general computer programming techniques. No prior experience is required. (No credit available for undergraduates.) [3]

**SC 5890 Special Topics in Scientific Computing.** Special topics course. [3]

## Disciplinary Courses in Scientific Computing

Approved courses by subject area are listed below. These courses either provide a detailed treatment of a core scientific computing tool and technique or combine scientific computing tools and techniques with a substantive area of science of engineering. New courses can be approved by the Directors of the minor.

#### ANTHROPOLOGY

**ANTH 3261 Introduction to Geographic Information Systems and Remote Sensing.** Computerized graphics and statistical procedures to recognize and analyze spatial patterning. Spatial data-collection, storage and retrieval; spatial analysis and graphic output of map features. Integration of satellite imagery with data from other sources through hands-on experience. Assumes basic knowledge of computer hardware and software. [3]

#### ASTRONOMY

**ASTR 3600 Stellar Astrophysics.** Absorption and emission of radiation by the sun and stars. Principles of stellar structure and stellar evolution from formation to death. Prerequisite: Mathematics 2420, Physics 3200 and either 2250 or 2250W. [3]

**ASTR 3700 Galactic Astrophysics.** Interstellar matter and gaseous nebulae, the structure and evolution of normal galaxies, active galactic nuclei and quasars, and observational cosmology. Prerequisite: Mathematics 2420 and either Physics 2250 or 2250W. [3]

**ASTR 3800 Structure Formation in the Universe. ** Observational and theoretical aspects of extragalactic astronomy. Measurements of galaxies and of the large scale structure of the universe from galaxy surveys. The expansion history of the universe and the roles of dark matter and dark energy. The growth of density fluctuations in the universe due to gravity. Cosmological N-body simulations and the formation of dark matter halos. The physics of galaxy formation. Experimental probes of dark matter and dark energy. Prerequisites: Mathematics 2420 or 2610, Physics 1601 or 1901, Physics 1602 or 1902, Computer Science 1101 or 1103. [3]

#### BIOINFORMATICS

**BMIF 6310 Foundations Of Bioinformatics.** This survey course introduces students to the experimental context and implementation of key algorithms in bioinformatics. The class begins with a review of basic biochemistry and molecular biology. The group will then focus on algorithms for matching and aligning biological sequences, given the context of molecular evolution. The emphasis will move from comparing sequences to the systems developed to enable high-throughput DNA sequencing, genome assembly, and gene annotation. Gene products will be the next focus as students consider the algorithms supporting proteomic mass spectrometry and protein structure inference and prediction. The informatics associated with transcriptional microarrays for genome-wide association studies will follow. Finally, the class will examine biological networks, including genetic regulatory networks, gene ontologies, and data integration. Formal training in software development is helpful but not required. Students will write and present individual projects. Undergraduates need the permission of the instructor to enroll. [3]

**BMIF 7380 Data Privacy in Biomedicine.** This course introduces students to concepts for evaluating and constructing technologies that protect personal privacy in data collected for primary care and biomedical research. Material in this course touches on topics in biomedical knowledge modeling, data mining, policy design, and law. Prerequisites: Students are expected to be proficient in writing basic software programs, although no specific language is required. Undergraduates need the permission of the instructor to enroll. [3]

#### BIOLOGICAL SCIENCES

**BSCI 3272 Genome Science.** Aims and importance of the science. Retrieval of genome data from public databases; experimental and computational methods used in analysis of genome data and their annotation. Functional aspects of genomics, transcriptomics, and proteomics; use of phylogenetics and population genomics to infer evolutionary relationships and mechanisms of genome evolution. Prerequisites: 1510 and 1511. [3]

#### BIOMEDICAL ENGINEERING

**BME 3200 Analysis of Biomedical Data. **Application of modern computing methods to the statistical analysis of biomedical data. Sampling, estimation, analysis of variance, and the principles of experimental design and clinical trials are emphasized. Math 2300 (Multivariable Calculus) is a prerequisite. [3]

**BME 4310 Modeling Living Systems for Therapeutic Bioengineering. **Introduction to computer modeling and simulation in therapeutic bioengineering processes. Building computer models and using modern modeling software tools. Introduction to numerical techniques to solve differential equations and origin of mathematical models for biotransport, biomechanics, tumor/virus growth dynamics, and model-based medical imaging techniques. Prerequisite: Math2400 or Math 2420, CS 1103 or equivalent, BME 2100 or equivalent mechanics course. [3]

**BME 7310 Advanced Computational Modeling and Analysis in Biomedical Engineering.** Survey of current topics within biomedical modeling: biotransport, biomechanics, tumor and virus growth dynamics, model-based medical imaging techniques, etc. Mathematical development and analysis of biomedical simulations using advanced numerical techniques for the solution of ordinary and partial differential equations. Emphasis will be on graduate research related topics. Permission of the instructor required for undergraduates. [3]

**BME 7410 Quantitative Methods in Biomedical Engineering.** Mathematics, quantitative analysis, and computational methods for biomedical engineering applications. Topics include applied probability and statistics, signal analysis and experiment design, linear systems, Fourier transforms, and numerical modeling and analysis. Permission of the instructor required for undergraduates. [3]

#### CHEMICAL AND BIOMOLECULAR ENGINEERING

**CHBE 4830 Molecular Simulation.** Introduction to the modern tools of statistical mechanics, such as Monte Carlo and molecular dynamics simulation, and variations. Understanding the methods, capabilities, and limitations of molecular simulation and applications to simple and complex fluids relevant to the chemical and related processing industries. Prerequisite: ChBE 2200, ChBE 2250, ChBE 3200, or equivalents. [3]

#### CHEMISTRY

**CHEM 5410 Molecular Modeling Methods**. This course will present a variety of molecular modeling and computational chemistry techniques, including background theory, implementation details, capabilities and limitations of various methods, and applications examples. Most applications examples will focus on biomacromolecules, although small molecule calculations and liquid simulations will also be presented. A reasonable working knowledge of physical chemistry and biochemistry will be assumed, and any good biochemistry and physical chemistry textbooks will serve as useful references for those who may need some review. Graduate-level course requiring permission of instructor as well as CHEM 3300, CHEM 3310, BSCI 2520 [4]

**CHEM 5420 Computational Structural Biochemistry. ** Theoretical and practical aspects of protein sequence alignments, secondary structure prediction, comparative modeling, protein-protein and protein-ligand docking. Structure-based drug design, virtual screening, quantitative structure activity relations, cheminformatics, and pharmacophore mapping in therapeutic development. Prerequisite: 3310. [4]

#### CIVIL ENGINEERING

**CE 4320 Data Analytics for Engineers.** Programming, analysis, and visualization of real data for the purposes of informing decision making in engineering problems. Statistical modeling in a practical and applied perspective; application of data analytics to bridge the gap between data and decisions; fundamentals of design of experiments. Prerequisite: CE 3300 or MATH 2810 or MATH 2820. [3]

#### COMPUTER SCIENCE

**CS 3274 Modeling and Simulation.** General theory of modeling and simulation of a variety of systems: physical processes, computer systems, biological systems, and manufacturing processes. Principles of discrete-event, continuous, and hybrid system modeling, simulation algorithms for the different modeling paradigms, methodologies for constructing models of a number of realistic systems, and analysis of system behavior. Computational issues in modeling and analysis of systems. Stochastic simulations. Prerequisite: CS 2201, Math 2410 or Math 2420, Math 2810 or Math 2820. [3]

#### EARTH AND ENVIRONMENTAL SCIENCE

**EES 4760/5760 Agent and Individual Based Computational Modeling.** Applications in natural, social, and behavioral sciences and engineering. Designing, programming, and documenting models. Using models for experiments. Examples from environmental science, ecology, economics, urban planning, and medicine. Familiarity with basic statistics and proficiency in algebra are expected. [3]

#### ECONOMICS

**ECON 3035 Econometric Methods.** Properties and problems in estimating economic relationships with multiple regression. Statistical and econometric theory to address empirical questions. Hands-on experience with economic data analysis with programming in statistical software. No credit for students who have completed 3032 or 3050. Prerequisite: 1020, either 1500, 1510, or both MATH 2820L and either MATH 2810 or 2820; and either Math 1201 or 1301. [3]

**ECON 3750 Econometrics for Big Data.** Econometric methods for analyzing large datasets. Model selection, regularization, classification, resampling, tree-based methods, and support vector machines. Forecasting stock prices, prediction of housing prices, and determination of wages. Prerequisite: 3010 or 3012; either 3032, 3035, 3050; or MATH 2820L with MATH 2810 or 2820. [3] (SBS)

#### ELECTRICAL & COMPUTER ENGINEERING

**EECE 6358 Quantitative Medical Image Analysis. ** Image processing and statistical methods for quantitative analysis and interpretation of medical imaging data. Focus on neuroimaging approaches related to brain structure, function, and connectivity. Specific topics include massively univariate analysis (parametric mapping), multiple comparison issues, random fields, independent components, non-parametric approaches, and Monte Carlo methods. Prerequisites: MATH 2810, image / signal processing, programming experience. [3]

#### HUMAN AND ORGANIZATIONAL DEVELOPMENT

**HOD 3200 Introduction to Data Science.** Provides students with both theoretical and practical knowledge of data science, including accessing data, analyzing data, and presenting data analysis. Data access topics include web scraping, using application programming interfaces and database queries. Data analysis topics include linear regression, logistic regression, and basics of unsupervised machine learning. Data analysis will also cover cross validation. Data presentation topics include univariate and bivariate graphs, lattice graphing, mapping and interactive graphics. Emphasizes literate programming as basis for access, analysis and presentation. Prerequisite: Introductory Statistics or permission of instructor. [3]

#### MATHEMATICS

**MATH 3620 Introduction to Numerical Mathematics.** Numerical solution of linear and nonlinear equations, interpolation and polynomial approximation, non-numerical differentiation and integration, least-squares curve fitting and approximation theory, numerical solution of differential equations, errors and floating point arithmetic. Application of the theory to problems in science, engineering, and economics. Student use of the computer is emphasized. Prerequisite: computer programming and linear algebra, differential equations. [3]

**MATH 3630 Mathematical Modeling in Biology.** Mathematical modeling with applications in biology and medicine. Basic mathematical modeling tools such as linear regression, differential equations, matrix and statistical analysis, probability theory, and computer simulation. Mathematical models in population dynamics, epidemiology, immunology, diffusion phenomena, pharmacokinetics, neurophysiology, and biochemistry of cells. Prerequisite: linear algebra and ordinary differential equations. [3]

**MATH 3660 Mathematical Modeling in Economics.** Modeling microeconomic problems of supply and demand, profit maximization, and Nash equilibrium pricing. Auctions and bargaining models. Statistical models and data analysis. Computational experiments. Prerequisite: 3200 or 2501. [3]

**MATH 3670 Mathematical Data Science.** Linear methods for regression and classification, bias-variance tradeoff, and basis expansions and regularization. Kernel methods, support vector machines, dimension reduction, and clustering algorithms. Prerequisite: either 2810 or 2820 with 2820L; and one of 2410, 2501, or 2600.[3]

**MATH 3890 Computing with Splines.** This course deals with a powerful and relatively new class of approximating functions called Spline Functions which have many applications in Mathematics and Science and Engineering. These include data fitting and approximation, numerical quadrature, curve and surface design and representation, and the numerical solution of both ODE’s and PDE’s, including very recent developtments in isogeometric analysis (IGA). This course is a natural extension and complement to any introductory numerical analysis course such as Math 3620 [3]

**MATH 4600 Numerical Analysis.** Finite difference and variational methods for elliptic boundary value problems, finite difference methods for parabolic and hyperbolic partial differential equations, and the matrix eigenvalue problem. Student use of the computer is emphasized. Prerequisite: 3620 or consent of instructor. [3]

**MATH 4620 Linear Optimization.** An introduction to linear programming and its applications. Formulation of linear programs. The simplex method, duality, complementary slackness, dual simplex method and sensitivity analysis. The ellipsoid method. Interior point methods. Possible additional topics include the primal-dual algorithm, cutting planes, or branch-andbound. Applications to networks, management, engineering, and physical sciences. Prerequisite: linear algebra and computer programming (CS 1101 or 1103). [3]

**MATH 4630 Nonlinear Optimization.** An introduction to modeling, theory and methods for nonlinear optimization problems. Modeling of application problems in science and engineering. Methods of unconstrained optimization with one and several variables. Theory of constrained optimization, including Karush-Kuhn-Tucker conditions. Penalty functions and other methods of constrained optimization. Computer tools such as a subroutine library or symbolic algebra system. Prerequisite: multivariable calculus, linear algebra, and computer programming (CS 1101 or 1103). [3]

#### MECHANICAL ENGINEERING

**ME 3890 Special Topics: Microscale Energy Transport.** Theoretical examination of energy transport by electrons and phonons and modeling of transport phenomena in crystalline solids at reduced length scales. Particle transport models and solution methods for energy carriers in the context of semiconductor electronics, direct energy conversion devices and nanostructures. Prerequisite: consent of instructor. [3]

**ME 4263 Computational Fluid Dynamics and Multiphysics Modeling.** Computational modeling of viscous fluid flows and thermal-fluid-structure interaction. Computational techniques including finite-difference, finite-volume, and finite-element methods; accuracy, convergence, and stability of numerical methods; turbulence modeling; rotating machinery; multiphase flows; and multiphysics modeling. Prerequisite: ME 3224. [3]

**ME 4275 Introduction to Finite Element Analysis.** Development and solution of finite element equations for solid mechanics and heat transfer problems. Introduction to commercial finite element and pre- and post-processing software. Two lectures and one three-hour laboratory each week. Prerequisite: CE 2205, MATH 2420. [3]

#### NEUROSCIENCE

**NSC 3270 Computational Neuroscience.** Theoretical, mathematical, and simulation models of neurons, neural networks, or brain systems. Computational approaches to analyzing and understanding data such as neurophysiological, electrophysiological, or brain imaging. Demonstrations simulating neural models. Prerequisite: 2201, either CS 1101 or 1103, and either MATH 1200 or 1300. [3]

#### PHYSICS

**PHYS 3200. Statistical Physics.** Temperature, work, heat, and the first law of thermodynamics. Entropy and the second law of thermodynamics. Kinetic theory of gases with applications to ideal gases and electromagnetic radiation. Prerequisite or corequisite: PHYS 2270. Serves as repeat credit for students who have completed 3207. [3]

**PHYS 3790. Computational Physics.** Topics in modern physics analyzed exclusively with computer programs. Finite difference approaches to the Schrödinger and Maxwell equations. Solutions of nonlinear equations. Molecular dynamics. Monte Carlo simulations. Growth models and random walks. Prerequisites: CS 1101 or equivalent, any three of 2255, 2275, 2290, 3200, 3651. [3]

#### PSYCHOLOGY

**PSY 3891 Special Topics in Cognitive Psychology : Bayesian Cognitive Modeling.** Bayesian Cognitive Modeling is a practical course that will provide hands-on experience with an easy to use computer program (JAGS) that will allow you to implement a variety of Bayesian models. We will cover models from a wide range of areas including memory, psychophysics, risk taking, categorization, and development. For each of these topics we will illustrate how Bayesian modeling can be useful for problems that people in cognitive science care about. At the end of the course you will have gained the technical skills to implement cognitive models. The goal is for you to be able to build your own Bayesian models, apply them to your own data, and draw your own conclusions. Prerequisite: PSY 3120 or consent of the instructor.

**PSY 8218 Computational Modeling.** The how-tos and whys of computational modeling in psychology and neuroscience. Not intended a general survey of computational models of human cognition. Instead, we will talk about what models are, why we use models, how to recognize good modeling versus bad modeling, how to implement a model, how to fit a model to data, how to evaluate the fit of a model, how to compare and contrast competing models, how to evaluate special cases of a model, and how to develop and test new models. Graduate-level course that requires permission of the instructor. Prerequisites: One semester of calculus, CS1101 or CS1103 or familiarity with Matlab.

**PSY 8219 Scientific Computing for Psychological and Brain Sciences.** Computer programming, numerical and computational methods, and high performance computing applied to psychological and brain sciences, such as experimental control, automated data analysis, and model simulation. Matlab and Psychophysics Toolbox, Python, and other programming languages may be introduced. Graduate-level course that requires permission of the instructor. Prerequisites: One semester of calculus, CS1101 or CS1103 or familiarity with Matlab or Python.

**PSY 8503 Models of Human Memory.** Graduate-level course covering the scientific study of human memory, including experiment and theory. Focus on attempts to create computational and mathematical models of human memory. Some level of comfort with elementary probability and statistics is assumed. Assignments involve programming in order to explore different models of human memory. Graduate-level course that requires permission of the instructor. Prerequisites: CS1101 or CS1103.