中正大學課程大綱
課程名稱(中文): 開源軟體開發 開課單位: 資訊工程研究所(Graduate Institute of Computer Science and Information Engineering)
課程名稱(英文) Open Source Software Development 課程代碼 4105602_01
授課教師: 熊博安 (Pao-Ann Hsiung) 劉偉名 (Wei-Min Liu) 江振國 (Chen-Kuo Chiang) 學分數 3
必/選修 選修 開課年級 研究所,開放大三、大四
先修科目或先備能力:
程式設計
Program Design
課程概述:
大型科技公司如Google、微軟、亞馬遜、Intel均紛紛參與主導國際開源軟體的開發過程。由此可見,開源軟體在現今科技發展的重要性。開源軟體如Linux作業系統、Hadoop、Apache、Python、Java、C++、TensorFlow、Flask、Django、React、Node.JS均對科技的發展功不可沒。本課程將以培育開源軟體的菁英為目標,希冀培育出來的學生為大型公司會爭相延攬的對象。課程分為兩個部分,前半部分著重於開源軟體開發的環境建構以及社群溝通技巧,後半段則以實際案例包含OpenCV、MONAI、KServe等國際社群參與貢獻程式碼。學生將於課堂中經有多位教師以及業師的輔導進行實際開源軟體貢獻,因而創造自己高價值的技能履歷。

Large technology companies such as Google, Microsoft, Amazon, and Intel have all participated in leading the development process of “international open source software.” This shows the importance of open source software in today's technological development. Open source software such as Linux operating system, Hadoop, Apache, Python, Java, C++, TensorFlow, Flask, Django, React, and Node.JS have all contributed to the development of technology. This course aims to cultivate elites in open source software, hoping that the students will be candidates that large companies will compete to recruit. The course is divided into two parts. The first half focuses on the environment construction and community communication skills for open source software development. The second half focuses actually participating in international communities such as OpenCV, MONAI, and KServe by contributing code. Students will make practical open source software contributions in the classroom with the guidance of several professors and industry expert, thereby creating their own high-value skills profile.
學習目標:
1. 建構開源軟體開發環境 Construct an open source software development environment
2. 認識國際開源軟體社群的交流型態 Understand the communication patterns in international open sou
3. 熟悉開源軟體平台如GitHub Familiarize with open source software platforms such as GitHub
4. 參與國際開源軟體貢獻包含OpenCV、MONAI和KServe Participate in contributing to international ope
5. 建構個人高價值技能履歷 Construct a high-profile personal skill resume
教科書:
Based on the Training Course of Linux Foundation, https://training.linuxfoundation.org/training/beginners-guide-open-source-software-development/#

課程大綱 分配時數 核心能力 備註
單元主題 內容綱要 講授 示範 隨堂作業 其他
Introduction to OSS
 What is Open Source Software (OSS)?
 History of OSS、
 OSS Governance Models
3 12345678
Why use OSS?
Reasons for using OSS
3 12345678
Examples of Successful OSS Projects
Linux核心、Git、Apache、Python/Perl、Tex/Latex、GNU、OpenStack, Kubernetes
2 1 12345678
Developing an OSS Strategy
 Constructing an OSS Strategy
 Designing an OSS Policy
 Implementing an OSS Policy
2 1 12345678
How to work in OSS Projects?
How to contribute properly?
1 1 1 12345678
GitHub開源平台
GitHub Introduction
1 1 1 12345678
Advanced Git Interfaces
Gerrit: Modes of Distributed Development
1 1 1 12345678
期中考
說明一個開源專案的相關程式庫、策略與開源合作模式
3 12345678
MLOps機器學習開源 (一)
(業師帶領課程)
Machine Learning Operations: Kubernetes
1 1 1 12345678
MLOps 機器學習開源(二)
(業師帶領課程)
Machine Learning Operations: Kubeflow, KServe
1 1 1 12345678
OpenCV影像處理開源(一)
(業師帶領課程)
OpenCV簡介、使用等
1 1 1 12345678
OpenCV影像處理開源(二)
(業師帶領課程)
OpenCV貢獻
1 1 1 12345678
MONAI生醫影像開源(一)
(業師帶領課程)
MONAI簡介、使用等
1 1 1 12345678
MONAI生醫影像開源(二)
(業師帶領課程)
MONAI貢獻
1 1 1 12345678
期末考
報告開源貢獻經驗
3 12345678

教育目標
1.具獨立從事學術研究或產品創新研發之人才
2.具團隊合作精神及科技整合能力,並在團隊中扮演領導、規劃、管理之角色
3.具自我挑戰與終身學習能力之人才
4.具有學術倫理、工程倫理、國際觀之人才

核心能力
1.具有資訊工程與科學領域之專業知識(Competence in computer science and computer engineering.)
2.具有創新思考、問題解決、獨立研究之能力(Be creative and be able to solve problems and to perform independent research.)
3.具有撰寫中英文專業論文及簡報之能力(Demonstrate good written, oral, and communication skills, in both Chinese and English.)
4.具策劃及執行專題研究之能力(Be able to plan and execute projects.)
5.具有溝通、協調、整合及進行跨領域團隊合作之能力(Have communication, coordination, integration skills and teamwork in multi-disciplinary settings.)
6.具有終身學習與因應資訊科技快速變遷之能力(Recognize the need for, and have the ability to engage in independent and life-long learning.)
7.認識並遵循學術與工程倫理(Understand and commit to academic and professional ethics.)
8.具國際觀及科技前瞻視野(Have international view and vision of future technology.)

請尊重智慧財產權,不得非法影印教師指定之教科書籍

教學要點概述:
1. 教材編選(可複選):自編簡報(ppt)教科書作者提供
2. 教學方法(可複選):講述板書講述
3. 評量工具(可複選):上課點名 0%, 隨堂測驗21.00%, 隨堂作業15.00%, 程式實作25.00%, 實習報告0.00%,
                       專案報告20.00%, 期中考0%, 期末考0%, 期末報告20.00%, 其他0%,
4. 教學資源:課程網站 教材電子檔供下載 實習網站
5. 教學相關配合事項: 沒有期中考,沒有期末考。主要以國際開源社群貢獻為評分依據,搭配期中與期末報告。

課程目標與教育核心能力相關性        
請勾選:12345678
1 具有資訊工程與科學領域之專業知識(Competence in computer science and computer engineering.)
為何有關:
目前開源軟體的使用與貢獻已經是資訊工程領域中非常需要的專業知識
達成指標:
完成前半學期的所有作業,共三次作業
評量工具(可複選):
期中考之前的三次作業分數都及格(70%以上)
2 具有創新思考、問題解決、獨立研究之能力(Be creative and be able to solve problems and to perform independent research.)
為何有關:
開源軟體中會有一堆問題(issues)需要解決,學生可以學會如何獨立解決這些問題
達成指標:
完成期中考之後的所有程式作業,共6次作業
評量工具(可複選):
期中考之後的6次作業分數都及格
3 具有撰寫中英文專業論文及簡報之能力(Demonstrate good written, oral, and communication skills, in both Chinese and English.)
為何有關:
在國際開源軟體社群中,需要時常與其他工程師互動和溝通程式內容或相關技術,才能解決程式的bugs
達成指標:
完成期中報告及期末報告
評量工具(可複選):
期中與期末報告分數均及格
4 具策劃及執行專題研究之能力(Be able to plan and execute projects.)
為何有關:
開源軟體的國際社群中都是軟體的專案,學生將學會如何執行軟體專案、如何分工合作
達成指標:
熟悉至少一個軟體專案
評量工具(可複選):
在一個國際開源軟體社群中完成至少一次的開元軟體貢獻(contribution)
5 具有溝通、協調、整合及進行跨領域團隊合作之能力(Have communication, coordination, integration skills and teamwork in multi-disciplinary settings.)
為何有關:
本課程中有影像處理(OpenCV)、醫學影像(MONAI)以及機器學習自動化作業(KServe)等不同領域的開源社群
達成指標:
需要再至少一個開源社群中,展現充足的溝通協調能力
評量工具(可複選):
以一個開源社群中與其他相關開發者共同討論作為佐證,並於期末報告時說明溝通過程
7 認識並遵循學術與工程倫理(Understand and commit to academic and professional ethics.)
為何有關:
開源軟體開發的過程中,需要注意學術與工程倫理
達成指標:
熟悉至少一個國際開源軟體社群的License以及軟體開發的規範
評量工具(可複選):
在期中報告時,需要詳細說明至少一個開源軟體社群中的規範與License細節
8 具國際觀及科技前瞻視野(Have international view and vision of future technology.)
為何有關:
本課程中所接觸的開源軟體社群均為國際社群,需要與國外的工程師互動、交流與學習
達成指標:
在至少一個國際開源軟體社群中,成為貢獻者(contributor)
評量工具(可複選):
在期末報告時,說明成為國際開源軟體社群的貢獻者的學習歷程