NSD Schedule 2025 Spring NYCU#
Warning
Please read carefully before taking the course.
The course introduces the art of building numerical software, i.e., computer programs applying numerical methods for solving mathematical, scientific, or engineering problems. We will be using Python, C++, and other tools (bash, git, make, etc.) to show the development process. You will learn:
practical software development by starting an open-source project
real-world applications of C++
software engineering for scientific and high-performance computing
essentials of professional software development
Homework takes 30% of grade, mid-term exam 30%, and term project 40%. You need to submit homework assignments using both GitHub PR (the homework repository https://github.com/yungyuc/nsdhw_25sp) and E3.
Your term project is the core of the course. Please read the requirements: Practical Project. You need to submit a proposal in the beginning of the course. Your performance will be assessed by using the final presentation. You may work on a standalone project or contribute to an existing open-source project for the presentation. If you are not sure where to start, use SOLVCON modmesh as an entry point.
You should bring your term project to the sciwork meetup (on-site) and the sciwork discord #nsd channel (online). (You can reach me with the handle @yyc on the discord server.) Discussing with the open-source community is required.
No Additional Enrollment#
If the enrollment system says the course is full, it is full. That is my maximal capacity. I do not accept additional enrollment.
Tip
A great PR to modmesh can make me consider your additional enrollment. It means you know more than what I offer in the course.
Email Discussions#
Warning
Students are responsible for following the email protocol described here.
Also, email is the professional tool for technical discussions. You need to get familiar with it sooner or later.
Should you have any questions about the course, please send me an email with the subject line starting with [nsd-course]
. For homework
grading, please send an email to the grader. If the question is about the
materials on the homework repository, you may file an issue.
Time Table#
The lecture hours are 7:00am – 9:50am every Monday in the classroom EC114.
Warning
The proposal is due in the third week. Do not miss it. You may start to write the proposal before the semester. Writing a project proposal helps you learn software development even if you do not take the course. You won’t regret.
Week |
Date |
Subject |
Comments |
---|---|---|---|
1 |
2/17 Mon |
hw #1
proposal open
start to prototype
|
|
2 |
2/24 Mon |
Unit 1: Fundamental Engineering |
|
3 |
3/3 Mon |
Unit 2: Python and Numpy |
proposal due
|
4 |
3/10 Mon |
Unit 3: C++ and Computer Architecture |
hw #2 |
5 |
3/17 Mon |
Unit 4: Matrix Operations |
|
6 |
3/24 Mon |
Unit 5: Cache Optimization |
hw #3 |
7 |
3/31 Mon |
Unit 6: SIMD (Vector Processing) |
|
8 |
4/7 Mon |
Mid-term examination |
|
9 |
4/14 Mon |
Update project progress |
|
10 |
4/21 Mon |
Unit 7: Memory Management |
hw #4 |
11 |
4/28 Mon |
Unit 8: Ownership and Smart Pointers |
|
12 |
5/5 Mon |
Unit 9: Modern C++ |
hw #5 |
13 |
5/12 Mon |
Unit 10: C++ and C for Python |
|
14 |
5/19 Mon |
Unit 11: Array Code in C++ |
hw #6 |
15 |
5/26 Mon |
Unit 12: Advanced Python |
|
16 |
6/2 Mon |
Project presentation |