數值軟體開發(英文授課)
Numerical Software Development
| 節 | 週一 |
|---|---|
Z 07:00–07:50 | 數值軟體開發(英文授課) EC122 3 節連堂 |
1 08:00–08:50 | |
2 09:00–09:50 |
* 根據陽明交大上課時間表所列
This course discusses the art to build numerical software, i.e., computer programs applying numerical methods for solving mathematical or physical problems. We will be using the combination of Python and C++ and related tools (e.g., bash, git, make, etc.) to learn the modern development processes. By completing this course, students will acquire the fundamental skills for developing modern numerical software.
This is a graduate or senior level course open to students who have taken engineering mathematics or equivalence. Working knowledge of Linux and Unix-like is required. Prior knowledge to numerical methods is recommended. The instructor uses English in the lectures and discussions.
The instructor will use English. It is OK for students to use Mandarin in the class, but English is preferred. Computer program for homework and project should be developed against the latest Ubuntu LTS system. Course notes: https://github.com/yungyuc/nsd .
* There is usually homework given after a lecture to exercise the lectured materials, and it usually requires students to write computer programs in Python and/or C++. * Mid-term examination will be conducted to assess students' understandings to the analytical materials. * Term project will be used to assess students' overall coding skills. Presentation is required. Failure to present results in 0 point for this part. * Grading: homework 30%, mid-term exam: 30%, term project: 40%.
- Python and numpy
- C++ and computer architecture
- fundamental engineering practices
- memory management
- matrix operations
- cache optimization
- SIMD: vector processing
- modern C++ I: ownership and meta-programming
- modern C++ II: more than templates
- xtensor: arrays in C++
- pybind11: binding between Python and C++
- cpython API: operate Python from C
- profiling
- array-oriented design
| 週次 | 主題 |
|---|---|
| 第 1 週 | lecture 0: introduction |
| 第 2 週 | skip due to instructor out of town |
| 第 3 週 | lecture 1: Python and numpy |
| 第 4 週 | lecture 2: c++ and computer architecture |
| 第 5 週 | lecture 3: fundamental engineering practices |
| 第 6 週 | lecture 4: memory management |
| 第 7 週 | lecture 5: matrix operations |
| 第 8 週 | lecture 6: cache optimization |
| 第 9 週 | mid-term examination |
| 第 10 週 | lecture 7: SIMD |
| 第 11 週 | lecture 8: modern C++ I: ownership and meta-programming |
| 第 12 週 | lecture 9: modern C++ II: more than templates |
| 第 13 週 | lecture 10: xtensor: arrays in C++ |
| 第 14 週 | lecture 11: pybind11: binding between Python and C++ |
| 第 15 週 | lecture 12: cpython API: operate Python from C |
| 第 16 週 | lecture 13: profiling |
| 第 17 週 | lecture 14: array-oriented design |
| 第 18 週 | term project presentation |
Textbook: None References: * Computer Systems: A Programmer's Perspective: https://csapp.cs.cmu.edu/ * Python documentation: https://docs.python.org/3/ * Cppreference: https://en.cppreference.com/ * Effective Modern C++, Scott Meyer, O'Reilly, 2014 * Source code: cpython, numpy, xtensor, and pybind11
- 地點
- By appointment
- 時間
- N/A
- 聯絡方式
- Send email to yyc at solvcon.net, with "[nsd]" prefix in the subject line.