NSD Schedule 2024 Autumn NYCU#
Warning
Please read everything carefully before taking this course.
The practical 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 learn the modern development processes.
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_24au) and E3.
Term Project#
Practical skills are learned by doing. The lectures are to facilitate your work. The term project plays a central role in the course. Read it at Practical Project. Upon enrollment, you need to have an idea about what to do for your term project. Your preformance of the term project will be assessed primarily through the presentation scheduled at the end of the semester. You may work on a standalone project of your own ideas or contribute to an existing open-source project for the presentation.
It is required to constantly discuss your term project. The course works with the sciwork community to provide you an environment for the technical discussions. Bring your term project to the sciwork meetup (on-site) or the sciwork discord #nsd channel (online). (You can reach me with the handle @yyc on the discord server.)
I prepared a teaching code https://github.com/solvcon/modmesh for you to observe how to conduct collaborative code development in an open source way. The project is also developed for real-world applications. You may contribute to the teaching code and use it for the term project.
No Additional Enrollment#
If the enrollment system says the course is full, it is full. I do not accept additional enrollment. It is the limit of my resource for helping the class. But I am happy to discuss with you in the sciwork on-site events or online.
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 is 7:00am – 9:50am every Monday in the classroom EC114. Personal discussions may be arranged on 10:00am after the lecture in meeting room EC500A, or by appointment using sciwork meetup.
Lectures, homework assignments, and projects are listed here. Additional meetings may be added if necessary.
Week |
Date |
Subject |
Comments |
---|---|---|---|
1 |
9/2 Mon |
hw #1
proposal open
start to prototype
|
|
2 |
9/9 Mon |
Unit 1: Fundamental Engineering |
|
3 |
9/16 Mon |
Unit 2: Python and Numpy |
proposal due
|
4 |
9/23 Mon |
Unit 3: C++ and Computer Architecture |
hw #2 |
5 |
9/30 Mon |
Project and prototype review
Supplement to unit 3: C++ and Computer Architecture
|
|
6 |
10/7 Mon |
Unit 4: Matrix Operations |
|
7 |
10/14 Mon |
Unit 5: Cache Optimization |
hw #3 |
8 |
10/21 Mon |
Mid-term examination |
|
9 |
10/28 Mon |
Unit 6: SIMD (Vector Processing) |
|
10 |
11/4 Mon |
Unit 7: Memory Management |
hw #4 |
11 |
11/11 Mon |
Unit 8: Ownership and Smart Pointers |
|
12 |
11/18 Mon |
Unit 9: Modern C++ |
hw #5 |
13 |
11/25 Mon |
Unit 10: C++ and C for Python |
|
14 |
12/2 Mon |
Unit 11: Array Code in C++ |
hw #6 |
15 |
12/9 Mon |
Unit 12: Advanced Python |
|
16 |
12/16 Mon |
Project presentation |