NSD Schedule 2023 Autumn 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_23au) 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 let you obtain additional help from the community. Please join the discord server https://discord.gg/6MAkFrD and follow the rules. (If you simply want to make friends who code, welcome too.)

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

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 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

9/11

Introduction

2

9/18

Unit 1: Fundamental Engineering

hw #1

3

9/25

Unit 2: Python and Numpy

proposal open

4

10/2

Unit 3: C++ and Computer Architecture

hw #2

5

10/9

No meeting (national day)

6

10/16

Unit 4: Matrix Operations

7

10/23

Unit 5: Cache Optimization

hw #3

8

10/30

Mid-term examination

proposal due

9

11/6

Unit 6: SIMD (Vector Processing)

10

11/13

Unit 7: Memory Management

hw #4

11

11/20

Unit 8: Ownership and Smart Pointers

12

11/27

Unit 9: Modern C++

hw #5

13

12/4

Unit 10: C++ and C for Python

14

12/11

Unit 11: Array Code in C++

hw #6

15

12/18

Unit 12: Advanced Python

16

12/25

Project presentation

17

1/1

No meeting (new year)

18

1/8

No meeting