MCS 507: Mathematical, Statistical and Scientific Software
Catalog description:
The design, analysis, and use
of mathematical, statistical, and scientific software.
Slides for the lectures will be posted below.
1. overview of research software and Python
2. numpy, sympy, scipy, and matplotlib
3. arithmetic, roots, wrapping code
4. Julia
- L-9 09/11/23: introduction to Julia
a Jupyter notebook intro2julia.ipynb
C code for Laguerre's method:
laguerre.c,
the Python script laguerre.py,
and the Julia program laguerre.jl
Prerecorded lecture:
youtube link.
- L-10 09/13/23: Julia ecosystems;
a Jupyter notebook juliasystem.ipynb
a Python module hellopython.py
some Julia programs:
pipe4ls.jl,
polyroots.jl,
polyrootscall.jl,
showhostname.jl, and
callqsort.jl.
Prerecorded lecture:
youtube link.
- L-11 09/15/23: parallel computing with Julia;
some Julia programs:
mpi_hello_world.jl,
mpi_point2point.jl,
estimatepi1.jl,
estimatepidp.jl,
estimatepimt.jl, and
matmatmulmt.jl.
Prerecorded lecture:
youtube link.
5. parallel programming
- L-12 09/18/23: multiprocessing and multithreading;
Python scripts
multiprocess.py,
simpson4pi.py,
simpson4pi1.py,
simpson4pi2.py,
hello_threading.py,
classproducer.py,
classconsumer.py, and
prodcons.py.
Prerecorded lecture:
youtube link.
- L-13 02/20/23: Message Passing Interface
for Python
with Python scripts
mpi4py_hello_world.py,
mpi4py_point2point.py,
mpi4py_broadcast.py,
mpi4py_scatter.py,
mpi4py_gather.py,
mpi4py_estimate_pi_2.py,
mpi4py_estimate_pi_n.py,
mpi4py_parallel_sum.py, and
mpi4py_dynamic.py.
Prerecorded lecture:
youtube link.
- L-14 09/22/23: GPU Acceleration
in Python and Julia
with Python scripts
matmatmulocl.py,
matmatmulsdk.py, and
matmatmulcuda.py;
and a Julia program
gpuadd.jl.
Prerecorded lecture:
youtube link.
6. cython, testing, documenting, packaging
- L-15 09/25/23: running Cython
a Jupyter notebook: running_cython.ipynb
with needs the Cython code and Python scripts:
hello.pyx,
hello_setup.py,
integral4pi.py,
integral4pi_typed.pyx,
integral4pi_typed_setup.py,
integral4pi_typed_apply.py,
integral4pi_cdeffun.pyx,
integral4pi_cdeffun_setup.py,
integral4pi_cdeffun_apply.py,
integral4pi_extcfun.pyx,
integral4pi_extcfun_setup.py,
integral4pi_extcfun_apply.py,
and native C code:
integral4pi_native.c.
Code for improving the game of life:
run_game_of_life.py,
run_game_better.pyx,
run_game_better_setup.py,
run_game_better_apply.py,
game_of_life.py, and
run_game_better_show.py.
Prerecorded lecture:
youtube link.
- L-16 09/27/23: pexpect and testing
a Jupyter notebook: pexpect_testing.ipynb
Python scripts:
pexpect_hello_julia.py,
sage_version_test.py,
game_oracle_number.py,
pexpect_interactive_game.py,
pexpect_guessing_game.py,
factorial50_sympy.py,
factorial50_sympy_assert.py, and
factorial50_sympy_test.py.
Prerecorded lecture:
youtube link.
- L-17 09/29/23:
packaging and documenting software
Our module:
ourfirstmodule.py
Our package:
ourfirstpackage-0.0.1.tar.gz
Prerecorded lecture:
youtube link.
7. graphical user interfaces, solving ODEs, web interfaces
8. web servers, review, and midterm exam
9. data retrieval and processing
10. image processing, networks
11. computational geometry
12. probability and statistics
13. groups, numbers, and polynomials