MATH 799 - Scientific Computing with Python

[lectures] - [homework] - [final presentation schedule]

Grading (approximate)

Course Resources

Lectures

Date Lec # Topics Notes
Jun 8 1 Course Intro: course objectives; how to learn programming (or anything else); computational thinking; what can a computer do? notes
Jun 9 2 Python Basics: Python in context; data, variables and operations notes
Jun 10 3 Python Basics 2: basic data types notes
Jun 11 4 Python Basics 3: advanced data types notes
Jun 12 5 Conditionals and Loops: boolean values; if-then-else; for loops; while loops notes
Jun 15 6 Functions: defining functions; return values; function arguments; scope; equality vs. identity; recursion notes
Jun 16 7 Data representation: characters; integers, signs and endianness; arrays; Python objects and lists; memory management notes
Jun 17 8 Application: Sorting Algorithms I: bubble sort; computational time; comparison counts notes
Jun 18 9 Application: Sorting Algorithms II: divide and conquer; merge sort; quicksort notes
Jun 19 10 Studio (Classes and Objects)
Jun 22 11 Numerical analysis in context: history; rational number representation; floating point representation and properties; propagation of errors notes
Jun 23 12 Numerical analysis in context 2 notes
Jun 24 13 Studio (Debugging)
Jun 25 14 Rootfinding methods: standard methods (bisection, Newton, secant, Halley, fixed point); rootfinding with the scipy library; orders of convergence; potential problems notes
Jun 26 15 Rootfinding methods continued notes
Jun 29 16 Polynomial Interpolation: interpolation basics, orthogonal interpolation bases, Lagrange interpolating polynomials, Runge's phenomenon, interpolation on Chebyshev nodes notes
Jun 30 17 Error in Polynomial Interpolation: approximation theory; minimax approximation; interpolation error formula; the Lebesgue function and Lebesgue constant notes
Jul 1 18 More Interpolation: spline basics; rates of convergence; FFT-based interpolation; image resizing; interpolating curves in 3D notes
Jul 2 19 Studio (interpolation)
Jul 3
Jul 6 20 Numerical Integration: Riemann sums; trapezoidal rule; Simpson's rule; Gaussian quadrature notes
Jul 7 21 ODEs: forward Euler; Runge-Kutta methods; estimating order of accuracy; applications to disease modeling; applications to pursuit-evasion modeling; basic error analysis notes
Jul 8 22 Discussion of final projects; sympy for symbolic computation notes
Jul 9 23 Randomness and Simulation: pseudo-random number generators; distribution of random numbers; Monte Carlo simulation; plot.ly demo notes
Jul 10 24 Optimization: 1D and multi-D optimization; bound-constrained optimization; nonlinearly constrained optimization; linear least squares and linear regression; more general curve fitting
Jul 13 25 Working with NetworkX: generating and plotting graphs; built-in graph generators; interactive graphs with JavaScript and D3; partitioning and the Karate Club graph; Markov chains and the stable distribution
Jul 14 26 Studio: final projects
Jul 15 27 Intro to git; Studio: final projects
Jul 16 28 Studio: final projects
Jul 17 29 Fun with Python lists; Studio: final projects
Jul 20 30 A quick Cython example; Studio: final projects
Jul 21 31 IPython %run magic; Studio: final projects
Jul 22 32 Studio: final projects
Jul 23 33 Intro to SVMs and scikit-learn: linear SVMs; the kernel trick and nonlinear SVMs; application to written digit classification
Jul 24 34 Predicting the future with Python
Jul 27 35 Final Presentations
Jul 28 36 Final Presentations
Jul 29 37 Final Presentations
Jul 30 38 Final Presentations
Jul 31 39

Homework

Homework will be assigned through SageMath Cloud and is due at 11:59pm on the date listed.

HW # Due Description
1 Jun 10 Little Man Computer/The Little Man Computer.ipynb
2 Jun 15 Python Basics/Numbers.ipynb
3 Jun 15 Python Basics/Data Types and Data Structures.ipynb
4 Jun 16 Conditionals and Loops/Conditionals and Loops.ipynb
5 Jun 17 Functions/Functions.ipynb (see the notes)
6 Jun 19 Sorting Algorithms I/Bubble Sort.ipynb
7 Jun 22 Sorting Algorithms II/Quicksort.ipynb
8 Jun 25 Floating Point Representation/Floating Point Representation.ipynb
9 Jun 29 Rootfinding Methods/Rootfinding Methods.ipynb
10 Jul 1 Polynomial Interpolation/Polynomial Interpolation.ipynb
11 Jul 2 Error in Polynomial Interpolation/Error in Polynomial Interpolation.ipynb
12 Jul 2 More Interpolation/More Interpolation.ipynb
13 Jul 8 Integration/Integration.ipynb
14 Jul 9 ODEs/ODEs.ipynb
15 Jul 13 Project Proposal/Project Proposal.ipynb
16 Jul 22 Project Draft (Place all relevant files in the "Project Draft/" folder on SageMathCloud.)
17 Aug 3 Final Project (Place all relevant files in the "Final Project/" folder on SageMathCloud.)
Aug 3 Final Project Sharing Survey

Final Presentation Schedule

Jul 27 Jul 28 Jul 29 Jul 30 Jul 31
Ben and Hieu Jason Nethali and Kapila Thomas
Keely Joseph and Ian Prem Jamie
Ashok and Adelina Jared Paul and Michael Negar and Anna