(Fall 2023) MATH 607 Seminar on Physics-Informed Deep Learning
: This course will cover fundamentals of both traditional numerical (e.g. finite difference) and deep learning (DL) approaches for solving partial differential equations (PDE), exploring the pros and cons of each approach.  We will review traditional methods, which have seen incredible growth in the past century, but whose integration with noisy or sparse data is currently limited. Machine learning (ML), on the other hand, excels in the presence of large data and despite being an actively growing field, does not always incorporate rigorous physics. We will focus on the Physics-Informed Neural Network (PINN), which seamlessly integrates sparse and/or noisy data while ensuring that model outcomes satisfy rigorous physical constraints. Students will gain knowledge of PDE and associated numerical methods while advancing their skills in Python programming. 

(Fall 2022) CS 410/510 Computational Science
: Computational science is the scientific investigation of problems through modeling, simulation and analysis of physical processes on a computer. An indispensable tool in many branches of research, scientific computing is vitally important for studying a wide range of physical and social phenomena. This computer science course will consist of an interdisciplinary blend of scientific modeling, applied mathematics, computational techniques and practices. We will cover a variety of advanced topics in numerical analysis and algorithm design for high-performance computing. Advanced techniques in numerical linear algebra and numerical solutions to partial differential equations (including finite difference and finite element methods) will be covered.

(Fall 2022) CS 607 Graduate Seminar on Physics Informed Machine Learning:
Physics-informed machine learning integrates (noisy) data and mathematical models, and implements them through neural networks or other kernel-based regression networks. Traditionally, physical modeling, together with scientific computing, focuses on large-scale mechanistic models (usually partial differential equations) that are derived from physical laws that simplify and explain phenomena. Machine learning, on the other hand, focuses on developing non-mechanistic data-driven models which require minimal knowledge and prior assumptions. In this seminar we will learn about the pros and cons to each, as well as the recent trend towards merging these two disciplines, allowing explainable models that are data-driven, require less data than traditional machine learning, and utilize our knowledge of the natural world.

(Fall 2021/Winter 2022) MATH 421-2/521-2 Partial Differential Equations and Fourier Theory:
Partial differential equations arise from standard processes in nature such as propagation of heat, diffusion through a porous solid, vibrating strings, membranes, and solids. The goal of this course is to learn how to solve such equations subject to initial conditions and constraints at the boundary of some region. Solutions strategies include Fourier and Laplace theory.

(Fall 2021) CS 607 Graduate Seminar on
GPU programming for scientific computing: This seminar focuses on the use of parallel processing on GPUs with CUDA. Basic topics covered include the idea of parallelism and parallel architectures. The course then presents key parallel algorithms on GPUs, with applications to scientific computing drawn from problems in linear algebra and systems of ODEs and PDEs. Optimization strategies specific to GPUs will be covered. Basic knowledge of Unix and C is assumed, however programming will be done in Julia, a high-level language similar to Python.

(Fall 2020) CIS 607 Graduate Seminar on MPI for Scientific Computing
: The seminar will cover parallel programming in Julia using the Message Passing Interface (MPI) paradigm, through the open source library Open MPI.  Focusing on physics-based scientific problems, the material will be introductory but progress to involve fairly advanced applications of MPI. Some exposure to parallel computing will be helpful (although not required). 

(Winter 2020) CIS 210 Computer Science I: This first course in the CIS introductory sequence covers fundamental approaches to computational problem solving (software development) and introduce other computer science topics. Computational concepts will be explored using the Python programming language.

(Fall 2019) CIS Seminar on Numerical PDE: Partial differential equations play a key role in many fields of science and engineering, in order to model such phenomena as heat diffusion and fluid transport. In this seminar we will review modern computer science algorithms for solving such systems numerically. No prior knowledge of differential equations will be assumed. Some programming will be required.