Course Introduction

Slides version: intro_slides.html
Website version: intro.html

課程說明 (Course Description)

本課程之內容包括:物件導向程式設計 (OOP)、C/C++ OOP 寫法、程式寫作技巧與觀念及實作範例。透過課堂解釋實作範例搭配作業練習各主題的語法或技巧。

The course will introduce the Object-Oriented Programming (OOP), the writing of OOP in C/C++ and the concepts and skills of programming.
Each theme will be instructed with examples and hands-on labs in-class or off-class.

指定用書 (Text Books)

  • 課程講義,公布於課程網站上。 (Lecture notes, published on the course website.)

參考書籍 (References)

教學方式 (Teaching Method)

透過講義解說各主題的實作技巧,由學生練習、測試與完成相關之課堂實作或作業。
課堂會採用實體及線上混合教學,學生可在滿足防疫規定下參加現場授課,同時於線上平台直播,同學也可同步於線上平台留言發問。
學生課後可透過 eeclass 討論區及預約時段與授課老師及助教討論。

The course will introduce each theme with lecture notes.
Students will practice each theme with Homeworks and hands-on labs in-class or off-class.
The course will hold both physically and online.
Students can attend class physically under Taiwan CDC COVID-19 guideline.
Also, the course will stream on online streaming platform(s).
Students can discuss in real-time on the online streaming platform(s).
After class, students can use the discussion forum in the NTHU eeclass or make a reservation with instructor or TA.

教學進度 (Syllabus) (Project Version)

(5/15 updated) 週次皆為暫定安排,會依實際授課情形調整。

課程 (Lecture) 主題 (Theme)
Lecture 1 (2/17) Course Introduction
Sturcture and Class
Lab 1 (2/17) Programming Environment & Class Helloworld
Lecture 2 (2/24) Class Design 101
Lecture 3 (3/3) Class Members & Methods
Lecture 4 (3/10) Class Constructor & Modifer
Lab 4 (3/10) Complex Number
Lecture 5 (3/24) Collaborate with Other Classes
Lecture 6 (3/31) Operator & Operator Overloading
Lab 6 (3/31) Complex Number Calculator
Lecture 7 (4/7) Introduction to Object Oriented Programming & Design
Lecture 8 (4/14) OOP: Inheritance (1)
Project 8 (4/14) Midterm Project Announcement
Demo 9 (4/21) Midterm Project Demo
Lecture 10 (4/28) OOP: Inheritance (2)
Lecture 11 (5/5) OOP: Polymorphism (1)
Lecture 12 (5/12) OOP: Polymorphism (2)
Lab 12 (5/12) Complex Number's Geometry & Operations
Lecture 13 (5/19) File Processing (1)
Lecture 14 (5/26) File Processing (2)
Lab 14 (5/26) File Export of Complex Number's Geometry
Lecture 15 (6/2) Advanced I/O & Exception Handling
Project 16 (6/9) Final Project Announcment
Lecture 16 (6/9) (Extra) C++ Image Export & Matplot++
Demo 17 (6/16) Final Project Demo
Lecture 18 (online) (Extra) Google Test for Class

成績考核 (Evaluation)

(4/7 updated) 暫定,會依實際授課情形調整。 (Tentative, will change during the course)

學期成績 (Grade) = 作業/實作 (Homework/Lab), 50% + 期中 Project (Midterm Project), 25% + 期末 Project (Midterm Project), 25% + Bonus, 15%

相關網頁(Personal Website)

課程網頁 (Course website): https://stevenokm.github.io/i2p-nthu-math/i2p2

課程資訊

課程上課時間

  • 每週四 15:30 - 18:10
    • 前 1 - 1.5 小時講解今日主題
    • 之後時間開放同學於現場或線上即時提問

課程上課地點(實體教室)

  • 綜三館 315 電腦教室 (座位47人,可出席人數 47 人)

課程上課地點(網路)

加簽規則

  • 本課程開放加簽,原則上限制人數為 47 人,且參加實體課程需配合防疫規定。
    • 請使用電子加簽系統加簽。
    • 目前選課系統上限為本系大一生 37 人,並另有 10 人須審核加簽名額。
    • 外系同學可線上加簽系統加選課程。

作業

  • 作業會使用自動化工具檢查,若有批改上有問題可與助教詢問。
  • 作業抄襲一律 0 分計算,並且不計入繳交次數。
  • 作業須準時繳交,遲交則得到原始成績 80% 的分數。

期中 / 期末 Project + Demo

  • 題型: 1-2 題基本題 + 1-2 題進階題 (與上學期期中/期末評量題型相同)
  • 繳交期限: 公布後次週三 23:59:59
    • 可遲交,遲交則得到原始成績 80% 的分數
    • 未 Demo 則該次 Project 成績為 0 分
  • Demo 時間: 公布後次週四 15:30 - 18:30 (與上學期期中/期末評量時間相同)
    • Demo 時間表 (連結待補)
    • 每位同學 10 分鐘 Demo 時間,請務必準時參加
    • 遲交的同學仍須另外約 Demo 時間,最晚不得超過該次 Demo 時間後的次週四 18:30
      • e.g. 該 Project 4/14 公布後,同學遲交的話,需於 4/25 18:30 前約 Demo
  • Demo 地點: 綜三館 315 電腦教室
    • 若改為遠距教學時,則使用 Teams 進行 Demo
  • Demo 流程:
    1. 從 eeclass 上下載最新版本的 Project 程式碼
    2. 使用 windows + mingw 環境下的 g++ 編譯程式碼
    3. 簡述如何實作
    4. 助教會隨機挑選一個擬定好的問題,請同學試著解出問題 (白板題)
      1. 部分程式碼/member function的運作邏輯?
      2. 部分程式碼/member function的用途?
      3. 輸入至輸出的程式碼運作流程?
      4. 調整部分程式碼/member function後,部分程式碼的運作流程/結果會如何改變?
    5. 範例題目會於 Demo 前公布於課程網站,供同學參考題型,實際題目以 Demo 為主。
      • 公布時間不晚於 Demo 前一日 18:00,並會於 eeclass 上公布。

老師資訊

洪奕文 E-mail: s106062802@m106.nthu.edu.tw

Office Hours: Every Mon. 14:00 - 15:00

Office Room: R2341, 2F, EECS Building

Note: 若要來研究室詢問問題,請 一定要預約時間 ,臨時來研究室詢問 不保證 能夠當下開放詢問。
若要約 teams 詢問也可以約 Office Hour 時段詢問。

TA infos

許廷碩 E-mail: tim890727@gmail.com

TA Hours: 寫信詢問

Bonus

  • 課程內容如果有錯誤,可以在每頁的右上方 "Suggest an edit" 使用 Github 進行修改,修改完畢後利用 Pull Request 的方式提交。
  • 於 eeclass 討論區參與討論,每提交一次可以增加學期分數,配分依據提交次數而訂。
  • 每人總增加分數不超過 15 分