Welcome to EP476, "Scientific Computing for Engineering Physics". This course will focus on bringing important scientific software development skills to students primarily in the Engineering Physics department.
Scientific software development has transitioned from a field devoted almost entirely to numerical methods to one that increasingly relies on more advanced management of data and development of analysis workflows that involve multiple tools strung together in a sequence, and also numerical methods.
This course is designed to introduce a variety of concepts that will make engineers and scientists more effective at developing software that facilitates modern engineering analysis.
"Effective Computation in Physics", Anthony Scopatz & Kathryn Huff, O'Reilly, 2015
- approximately weekly
- continuation of in-class exercises
- develop skills and proficiency
- implement your own software and/or contribution to an open source software project
- should use a variety of skills learned in class
| Week 1 | Intro, Shell, Filesystem & Environment | |
| Lecture #1 | Lecture #2 | |
| Week 2 | Version control: local & remote | |
| Lecture #3 | Homework #1 | |
| Week 3 | Python: intro, variable names, types, using modules | |
| Lecture #4 | ||
| Week 4 | Python: Documentation, Debugging & Unit testing | |
| Week 5 | Python: Containers & flow control | |
| Week 6 | Python: Classes & Modules | |
| Week 7 | Python: Integration & regression testing, Validation | |
| Week 8 | Profiling & Compiled languages & Mixed languages | |
| Week 9 | Make files & build systems | |
| Week 10 | Deployment & Collaboration | |
| Week 11 | Continuous integration & Automation | |
| Week 12 | Data management & metadata | |
| Week 13 | String handling & Regular expressions | |
| Week 14 | Numerical tools: Numpy, SciPy, Matplotlib | |
| Week 15 | Parallelism: HTCondor, MPI, OpenMP | |