進行中 校際選修

115-1 選課時程

進行中

  • 初選第一階段 6/15 – 6/18
  • 初選第二階段 6/22 – 6/25
  • 校際選修 8/24 – 9/18
  • 初選第三階段 8/31 – 9/3
  • 開學後加退選 9/7 – 9/21
  • 逾期加退選 9/21 – 9/24
選課資源

數值軟體開發

Numerical Software Development

學期
112-1
學分
3 學分
當期課號
535702
永久課號
CSDS30003
開課單位
數據科學與工程研究所碩士班
授課教師
陳永昱
校區
光復
類別
選修
上課時間表
週一
Z
07:00–07:50
數值軟體開發
EC114
3 節連堂
1
08:00–08:50
2
09:00–09:50

* 根據陽明交大上課時間表所列

概述

The full syllabus is at https://yyc.solvcon.net/en/latest/nsd/schedule/23au_nycu/schedule23au.html . Please read it carefully before taking the course. The course introduces the art of building numerical software, i.e., computer programs applying numerical methods for solving mathematical, scientfic, or engineering problems. We will be using Python, C++, and other tools (e.g., bash, git, make, etc.) to learn the modern development processes. By completing this course, students will acquire the fundamental skills for developing modern numerical software.

先修科目

Critical discussion is required for the practical course and the project development. If you don't feel comfortable expressing yourself, think twice before taking the course. Students should have taken computer architecture and engineering mathematics or equivalents. Working knowledge of Linux and Unix-like is required. Prior knowledge to numerical methods is recommended. The instructor uses English in the lectures and discussions.

教學方式

The instructor will use English. It is OK for students to use Mandarin in the class, but English is preferred. Computer program for homework and project should be developed against the latest Ubuntu LTS system.

評分方式

* You are expected to learn programming languages yourself. Python is easy, but C++ may be challenging. Students are encouraged to form study groups for practicing C++, and discuss with the instructor and/or the teaching assistant. * Grading: homework 30%, mid-term exam: 30%, term project: 40%. * There are 12 lectures for the subjects of numerical software developing using Python and C++. * There will be 6 homework assignments for you to exercise. Programming in Python and/or C++ is required. * Mid-term examination will be conducted to assess students' understandings to the analytical materials. * Term project will be used to assess students' overall coding skills. Presentation is required. Failure to present results in 0 point for this part.

課程大綱
  • Introduction
  • Fundamental engineering
  • Python and numpy
  • C++ and computer architecture
  • Matrix operations
  • Cache optimization
  • SIMD (vector processing)
  • Memory management
  • Ownership and smart pointers
  • Modern C++
  • C++ and C for Python
  • Array code in C++
  • Advanced Python
週次計畫
週次主題
第 1 週Introduction
第 2 週Unit 1: Fundamental Engineering (assignment #1)
第 3 週Unit 2: Python and Numpy (proposal open)
第 4 週Unit 3: C++ and Computer Architecture (assignment #2)
第 5 週No meeting (national day)
第 6 週Unit 4: Matrix Operations
第 7 週Unit 5: Cache Optimization (assignment #3)
第 8 週Mid-term examination (proposal due)
第 9 週Unit 6: SIMD (Vector Processing)
第 10 週Unit 7: Memory Management (assignment #4)
第 11 週Unit 8: Ownership and Smart Pointers
第 12 週Unit 9: Modern C++ (assignment #5)
第 13 週Unit 10: C++ and C for Python
第 14 週Unit 11: Array Code in C++ (assignment #6)
第 15 週Unit 12: Advanced Python
第 16 週Project presentation
第 17 週No meeting (new year)
第 18 週To be planned
教科書

Course notes: https://yyc.solvcon.net/en/latest/nsd/ Textbook: None References: * Computer Systems: A Programmer's Perspective: https://csapp.cs.cmu.edu/ * Python documentation: https://docs.python.org/3/ * Cppreference: https://en.cppreference.com/ * Effective Modern C++, Scott Meyer, O'Reilly, 2014 * modmesh (example system of this course) source code: https://github.com/solvcon/modmesh * pybind11 source code: https://github.com/pybind/pybind11 * cpython source code: https://github.com/python/cpython * numpy source code: https://github.com/numpy/numpy

Office Hours
地點
By appointment
時間
N/A
聯絡方式
Send email to yyc at sciwork.dev, with "[nsd-course]" prefix in the subject line.