NSD Schedule 2024 Autumn NYCU#

Link to NYCU course system.


Please read everything carefully before taking this 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 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.

This is a practical course. Lectures alone are not sufficient for your learning. A teaching code is available at https://github.com/solvcon/modmesh, which you should trace and ask questions about. You are requested to participate in the sciwork meetup on-site or the community online in the #nsd channel on the sciwork discord server (you can find me there as @yyc). The community activity is for your term project and understanding the teaching code. (If you simply want to make friends who code, welcome too.)

Term Project#

Practical skills can only be acquired by practicing. The term project is design for the practice. Please read about it at Practical Project. Upon enrollment, you need to have an idea about what to do for your term project. Join the open-source sciwork community to clarify what you want to do before enrollment.

No Additional Enrollment#

If the enrollment system says the course is full, it is full. It is the limit of my resource for helping the class. I do not sign for additional enrollment. If are still interested in the course materials, use the sciwork community on-site or online to find me.

Email Discussions#


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.






9/2 Mon

Introduction and unit 1: Fundamental Engineering

hw #1
proposal open


9/5 Thu
(Room TBD)

Supplement to unit 1: Fundamental Engineering


9/9 Mon

Unit 2: Python and Numpy


9/16 Mon

Unit 3: C++ and Computer Architecture

hw #2
proposal due
prototype start


9/23 Mon

Unit 4: Matrix Operations


9/30 Mon

No Meeting


10/7 Mon

No meeting


10/14 Mon

Unit 5: Cache Optimization

hw #3
prototype review


10/21 Mon

Mid-term examination


10/28 Mon

Unit 6: SIMD (Vector Processing)


11/4 Mon

Unit 7: Memory Management

hw #4


11/11 Mon

Unit 8: Ownership and Smart Pointers


11/18 Mon

Unit 9: Modern C++

hw #5


11/25 Mon

Unit 10: C++ and C for Python


12/2 Mon

Unit 11: Array Code in C++

hw #6


12/9 Mon

Unit 12: Advanced Python


12/16 Mon

Project presentation