2 項進行中

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
選課資源

加入行事曆

選擇訂閱 Google Calendar,或下載通用的 ICS 檔案。

使用 Google Calendar 時,Google 會收到這份課表的公開連結。

物件導向程式設計

Object-Oriented Programming

學期
112-2
學分
0 學分
當期課號
515108
永久課號
EEEC10008
開課單位
電機工程學系
授課教師
王學誠
校區
光復
類別
選修
上課時間表
週一
N
12:20–13:10
物件導向程式設計
EE635(光復)
3 節連堂
5
13:20–14:10
6
14:20–15:10
A
18:30–19:20
物件導向程式設計
EE635(光復)
3 節連堂
B
19:30–20:20
C
20:30–21:20

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

概述

本課程內容以物件導向專題為核心,提供了對重要工具和技術的實踐,導入麻省理工學院的開放課程內容,近年ChatGPT更是顛覆了傳統程式設計的學習方式,本課程著重務實和實用的工具使用。本課程亦著重於專題導向,開發一遊戲專案為目標,強調使用版本控制,物件導向設計(UML Class Diagram),以及多人團隊合作。 在傳統的程式設計教育,缺少了一個至關重要的主題:計算素養能力(Computing Literacy)。多年來,教授程式設計課程中,學生常受限於對工具的了解有限。學生也從未被教授如何使用這些工具。本課程強調於專題進行中加以實作演練,如:版本控制和Copilot編輯器,進而學習團隊進行合作開發。 本課程於課程第一部分介紹: * 學習使用高階程式語言Python 熟悉從C++到Python的使用。 Python為人工智慧、資料科學領域重要程式語言,有助於銜接未來課程或研究。 * 物件導向程式設計基礎 * 熟悉工作站系統(Linux/Ubuntu)基本操作 * 使用Vim編輯器、GitHub Copilot。 * 了解Unit Test & PyTest、Debugger (PDB) * 熟悉使用Jupyter Notebook 第二部分: * 物件導向程式設計與專題實踐。 * PyGame Interface * OpenAI Gym and Lunar Lander * 熟悉國內外Programming Interview出題方向(LeetCode)。 第三部分將,包含: * WebSocket, PyGame connecting to Unity 3D * 了解Python Package架構 * 建立Project Documentation (mkdocs) * 應用Python語言解決各類工程與計算問題。 * Python與資料分析。 * 訓練學生具有設計傳統的小型軟體作品的能力。

先修科目

UEE1302 (Introduction to Computer Science and Programming (in C/C++) or equivalent course

備註

無備註

教學方式

a. 使用學校New e3網站。每位同學準備筆電、需有GitHub帳號。 b. 物件導向程式設計課程包含每週三小時授課與實驗。實驗課程的規劃、內容、作業題目由老師設計提供,讓同學熟悉程式語言的撰寫方法。另外由助教帶領,配合每週上課內容作上機操作的練習,作業繳交等輔助教學。並從動手實作之中習得解決問題之能力。 * 課程講授為線上課程 * 上機操作為實體課程(地點:EE635) c. 本課程將使用MIT OCW課程單元(含OCW課程錄影)進行輔助教學。 * MIT OCW https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/ * MIT OCW https://ocw.mit.edu/courses/6-0002-introduction-to-computational-thinking-and-data-science-fall-2016/ * The Missing Semester of Your CS Education https://missing.csail.mit.edu/ d. 程式設計學習希望project-based learning,整合所學製作出一個軟體遊戲或者小型軟(硬)體系統。期末專題製作以2-3人一組,讓學生能夠學習如何分工合作互相討論,同時也能訓練如何將多個檔案串接為專案。

評分方式

Assignments: * We have in-class tutorial/lab each week, and the lab materials typically include 3 specific tasks (programming/algorithm/system work). and students are expected to finish the lab materials during the class. * We will use Ubuntu and Vim editor. * We will use Colab and Jupyter Notebook for assignment submissions. Exams: There will be midterm exam. Evaluations: In-Class Lab/Tutorials (30%), Midterm Exam (25%) Final Presentation and Term Paper/Report (30%) Class Participations (GitHub Commits 10%, Others: 5%)

課程大綱

教師未提供此項資料

週次計畫
週次主題
第 1 週

Lecture: Introduction Decomposition, Abstractions, Functions Lab 01: Ubuntu Machine Preparations

2024-02-19(一)
第 2 週

Lecture: Tuples, Lists, Aliasing, Mutability, Cloning Lab 02: Command-line Environment (Ubuntu), Version Control (GitHub)

2024-02-26(一)
第 3 週

Lecture: Recursion, Dictionaries Lab 03: Vim, Parallel Coding, Debugger (PDB)

2024-03-04(一)
第 4 週

Lecture: Testing, Debugging, Exceptions, Assertions Lab 06: Build System (CMake)

2024-03-11(一)
第 5 週

Lecture: Object Oriented Programming Lab 04: Microcontroller Arduino Python

2024-03-18(一)
第 6 週

Lecture: Python Classes and Inheritance, C++ vs. Python Lab 05: Microcontroller Arduino Python II

2024-03-25(一)
第 7 週

Lecture: OOP - Abstract Class Lecture: Optimization Problems (Dynamic Programming) Lab 07: PyIVP, PyBind11

2024-04-01(一)
第 8 週

期中考週 Lab 08: Jupyter Notebook, LeetCode、期中考題庫介紹

2024-04-08(一)
第 9 週

Lecture: Graph-theoretic Models Lab 09: PyGame, ALE

2024-04-15(一)
第 10 週

Lecture: Stochastic Thinking Lab 10: Open AI Gym/Gymnasium, Lunar Lander

2024-04-22(一)
第 11 週

Lecture: Random Walk Lab 11: War Game

2024-04-29(一)
第 12 週

Lab 12: Midterm Exam

2024-05-06(一)
第 13 週

Lecture: Sampling and Standard Error Lab 13: PacMan - PyGame Unity3D

2024-05-13(一)
第 14 週

Lecture: Understanding Experimental Data I Lab 14: NumPy, OpenCV

2024-05-20(一)
第 15 週

Lecture: Understanding Experimental Data II Lab 15: Pandas, Matplotlib

2024-05-27(一)
第 16 週

Final Week Lab 16: Python Data Analysis with Real-world Data

2024-06-03(一)
第 17 週

Project Preparations

2024-06-10(一)
第 18 週

Project Presentation

2024-06-17(一)
教科書

Required: * Introduction to Computation and Programming Using Python, third edition: With Application to Computational Modeling and Understanding Data by John Guttag Suggested: * Elements of Programming Interviews in Python by by Adnan Aziz, Tsung-Hsien Lee, Amit Prakash * Python Object-Oriented Programming: Build robust and maintainable object-oriented Python applications and libraries, by Steven F. Lott, Dusty Phillips * Mastering Python Design Patterns - Second Edition by Kamon Ayeva , Sakis Kasampalis * The Missing Semester of Your CS Education https://missing.csail.mit.edu/

Office Hours
地點
By appointments
時間
By appointments
聯絡方式
王老師: hchengwang@nycu.edu.tw 助教:tzuchichen.sc08@nycu.edu.tw