NSD Schedule 2024 Autumn NYCU#

Link to NYCU course system.

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

Introduction

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