NSD Schedule 2024 Spring NYCU#

Link to NYCU course system.

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 (e.g., bash, git, make, etc.) to learn the modern development processes. This is a practical course.

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_24sp) and E3.

Warning

Please read everything carefully before taking this course.

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.

The course requests you to find a topic to code for. Because most people are not familiar with numerical software, it may be difficult. I work with the sciwork community to help you. Please join the discord server #nsd channel https://discord.gg/tZsUnx4XmB and follow the rules. (If you simply want to make friends who code, welcome too.) You can find me there as @yyc.

The project proposal should be submit through the homework repository https://github.com/yungyuc/nsdhw_24sp.

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 plan to take additional enrollment, but if you can convince me that you will learn well without my help, I will consider. The way to convince me is to build the teaching code https://github.com/solvcon/modmesh. Make sure it works by running two of its apps and know what they do. Go to https://discord.gg/P9U7PFv (channel #solvcon) to show your results or ask questions.

If you can learn well without my help, you are capable of training yourself with the materials without needing to take the course. (If you do not understand what I meant, perhaps you need my help.) I will offer the course in every semester and you can take it next time. Alternately, join sciwork and learn it at your own pace.

Email Discussions#

Should you have any questions about the course, please send me an email with the subject line starting with [nsd-course]. Email is a great tool for serious discussions and I prefer it. 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#

Lectures, homework assignments, and projects are listed here. Additional meetings may be added if necessary.

Week

Date

Subject

Comments

1

2/19

Introduction

2

2/26

Unit 1: Fundamental Engineering

hw #1

3

3/4

Unit 2: Python and Numpy

proposal open

4

3/11

No meeting

5

3/18

Unit 3: C++ and Computer Architecture

hw #2

6

3/25

Unit 4: Matrix Operations

7

4/1

Unit 5: Cache Optimization and proposal review

hw #3; proposal due

8

4/8

Mid-term examination

9

4/15

Unit 6: SIMD (Vector Processing)

10

4/22

Unit 7: Memory Management

hw #4

11

4/29

Unit 8: Ownership and Smart Pointers

12

5/6

Unit 9: Modern C++

hw #5

13

5/13

Unit 10: C++ and C for Python

14

5/20

Unit 11: Array Code in C++

hw #6

15

5/27

Unit 12: Advanced Python

16

6/3

Project presentation

17

6/10

No meeting (dragon boat festival holiday)

18

6/17

No meeting