NSD Schedule 2025 Spring NYCU#

Link to NYCU course system.

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

Introduction

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