校際選修

115-1 選課時程

進行中

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

物件導向程式設計

Object-Oriented Programming

學期
111-2
學分
3 學分
當期課號
515167
永久課號
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

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

概述

本課程於課程第一部分介紹: * 物件導向程式設計基礎,了解物件導向程式設計(OOP)觀念。 * 使用C++及Python實作範例,可銜接C++程式設計基礎課程。 * 介紹兩程式語言之比較與對接binding(如:pybind11)。 * 熟悉工作站系統(Linux/Ubuntu)基本操作,使用Vim編輯器。 第二部分將學習使用高階程式語言Python,包含: * 應用Python語言解決各類工程與計算問題。 * 訓練學生具有設計傳統的小型軟體作品的能力。 * Python為人工智慧、資料科學領域重要程式語言,有助於銜接未來課程或研究。 * 熟悉國內外Programming Interview出題方向。

先修科目

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

教學方式

a. 使用學校New e3網站。每位同學準備筆電、需有GitHub帳號。 b. 物件導向程式設計課程包含每週三小時授課與實驗。實驗課程的規劃、內容、作業題目由老師設計提供,讓同學熟悉程式語言的撰寫方法。另外由助教帶領,配合每週上課內容作上機操作的練習,作業繳交等輔助教學。並從動手實作之中習得解決問題之能力。 * 課程講授為線上課程 * 上機操作為實體課程(地點:EE635/EE632) 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/ * https://oceanai.mit.edu/ivpman/pmwiki/pmwiki.php?n=Lab.HomePageCPP 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 (40%), Midterm Exam (30%) Final Presentation and Term Paper/Report (30%)

週次計畫
週次主題
第 1 週Lecture: Introduction; Tuples, Lists, Aliasing, Mutability Lab: Machine Preparations
第 2 週Lecture: Recursion, Dictionaries, Ubuntu, Docker Lab: Github
第 3 週連假 Holiday
第 4 週Lecture: Testing, Debugging, Exceptions, Assertions Jupyter Notebook, Colab, nbgrader Lab: Parallel Coding, Docker
第 5 週Lecture: Object Oriented Programming (C++ vs. Python) Lecture: Classes and Inheritance, Encapsulation (Getter/Setter) Operator Overloading, pybind11 Polymorphism, Abstract Class, pyivp
第 6 週Lab: Interactive Interfaces (pygame) Lab: OpenAI Gym, Lunar Lander
第 7 週OCW: Intro to Optimization Problems Lecture: OOP - Abstract Class, OpenAI Gym
第 8 週連假 Holiday
第 9 週Lecture: Optimization Problems (Dynamic Programming)
第 10 週Lecture: Graph-theoretic Models
第 11 週Lecture: Stochastic Thinking Lab: Network & Communication (Python & Socket)
第 12 週Lecture: Random Walk Invited Talk Lab: Midterm Exam
第 13 週Lecture: Sampling and Standard Error (numpy, matplotlib, scipy) Lab: OpenCV
第 14 週Understanding Experimental Data I (pandas)
第 15 週Understanding Experimental Data II (moving pandas)
第 16 週Final Week Project Presentation
第 17 週
第 18 週
教科書

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

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