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)
-
Paul Deitel, and Harvey Deitel, C++ How to Program, 10/e (主要參考, Primary reference)
-
Stephen Schach, Object-Oriented and Classical Software Engineering, 8/e
-
Introduction to C++ | Electrical Engineering and Computer Science | MIT OpenCourseWare
-
Introduction to C and C++ | Electrical Engineering and Computer Science | MIT OpenCourseWare
教學方式 (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 小時講解今日主題
- 之後時間開放同學於現場或線上即時提問
課程上課地點(實體教室)
課程上課地點(網路)
- Youtube (Link: 110 程式設計二 上課錄影 - YouTube)
- Teams (Link: 110 程式設計二)
- 申請方式: Office 365 服務 (nthu.edu.tw)
- 外校同學可提供 office 365 帳號給助教協助加入團隊。
加簽規則
- 本課程開放加簽,原則上限制人數為 47 人,且參加實體課程需配合防疫規定。
- 請使用電子加簽系統加簽。
- 目前選課系統上限為本系大一生 37 人,並另有 10 人須審核加簽名額。
- 外系同學可線上加簽系統加選課程。
作業
- 作業會公布在課程網頁上,並使用 eeclass 平台繳交作業。
- eeclass 連結: https://eeclass.nthu.edu.tw/course/8073
- 同學可多加利用 eeclass 的討論區進行討論。
- 作業會使用自動化工具檢查,若有批改上有問題可與助教詢問。
- 作業抄襲一律 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 流程:
- 從 eeclass 上下載最新版本的 Project 程式碼
- 使用 windows + mingw 環境下的 g++ 編譯程式碼
- 簡述如何實作
- 助教會隨機挑選一個擬定好的問題,請同學試著解出問題 (白板題)
- 部分程式碼/member function的運作邏輯?
- 部分程式碼/member function的用途?
- 輸入至輸出的程式碼運作流程?
- 調整部分程式碼/member function後,部分程式碼的運作流程/結果會如何改變?
- 範例題目會於 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 的方式提交。
- 提交時註明學號以及姓名,並且每提交一次可以增加學期分數,配分依據修改幅度而訂。
- Github Commit 提交教學請參考 Lecture 15: Github Tutorial - Introduction to Programming (I)
- 於 eeclass 討論區參與討論,每提交一次可以增加學期分數,配分依據提交次數而訂。
- 每人總增加分數不超過 15 分