20250515素養導向程式設計:教學與評量-以Python為例

Table of Contents

Hits

1. 研習內容

  • 國中科技領域召集人課程領導增能研習
  • 研習對象及人數:本市公私立國中教師,預估 25 人
  • 研習時間:114 年 05 月 14 日(星期四)9:00-12:30
  • 研習地點:輔導團 305 會議室

2024-02-22_14-43-53_1708580777543.jpg

Figure 1: 202405 素養導向程式設計教學與評量-Python 為例

2. Python簡介與應用

2.1. 程式語言教學考量方向

2.1.1. 開發工具/平台

2.1.2. 語言的親和力

語言是否易學易用: 對文字式程式初學者來說這尤其重要

2.1.3. 語言的實用性

語言是否能應用於日常生活: 學習程式語言來解題雖然有其樂趣,但若能利用所學來解決學生日常生活中的實際問題會更有動機

2.1.4. 教學資源

  • 相關教材資源
  • 作業、考題資源: C/C++的題目多數都能直接用,部份需修改
  • 作業繳交
  • 線上測驗

2.2. Why Python?

2.2.1. 受歡迎程度: TOIBE index

TIOBE指數(TIOBE programming community index)是一種衡量程式語言流行度的標準,該指數是根據網絡搜尋引擎對含有該語言名稱的查詢結果的數量計算出來的1。該指數涵蓋了網民在Google、Google Blogger、MSN 、雅虎、百度、維基百科和YouTube的搜索結果。該指數於2001年推出,每月更新一次。用戶可以免費查詢信息,但如果需要長期的統計數據則要付費購買。該指數的作者表示,在人們做出各種戰略決策時,該指數可能是有價值的。TIOBE主要關注於圖靈完備性語言2,所以它不提供例如HTML的受歡迎程度信息3

Python由2019年的第三名

2024-03-28_10-55-02_2024-03-28_10-37-24.png

Figure 2: 2019年Python排名第三

到2024年已躍居榜首,2,3,4名的分別為C, C++, Java

2024-03-28_10-57-00_2024-03-28_10-56-46.png

Figure 3: 2024年Python排名第一

2024-03-28_10-16-57_2024-03-28_10-09-31.png

Figure 4: Python: 2002-2024年Python的TOIBE index變化

2.2.2. 未來趨勢

2024-04-05_12-30-47_2024-04-04_21-41-46.png

Figure 5: 工作機會

2024-04-05_12-30-54_2024-04-05_12-29-37.png

Figure 6: 平均薪資

2024-04-05_12-30-59_2024-04-05_12-30-00.png

Figure 7: 需求/喜愛

2.2.3. 為何要學習AI+大數據

2024-03-28_10-00-52_2024-03-28_09-55-32.png

Figure 8: 學習Python的幾個理由

國中生學習人工智慧 (AI) 和大數據相關知識具有多方面的好處,以下是其中一些原因:

  1. 開拓思維:學習 AI 和大數據相關知識可以激發學生的創造力和解決問題的能力。這些領域涉及到複雜的數據分析和模式識別,培養學生從多個角度思考和處理問題的能力。
  2. 就業前景:AI 和大數據是當今和未來的熱門行業,學習相關知識可以為學生打下良好的職業基礎。許多行業都需要專業的數據分析師和機器學習工程師,而擁有相關技能的人才將更受歡迎。
  3. 實用性:AI 和大數據的應用已經滲透到日常生活的各個方面,例如智能推薦系統、人臉識別技術、智能家居等。學習這些知識可以幫助學生更好地理解並應用科技。
  4. 創新精神:AI 和大數據領域充滿了創新和挑戰,學習相關知識可以培養學生的創業精神和探索未知領域的勇氣。這對於培養未來的創業家和技術領袖是至關重要的。

2.2.4. Python應用於AI與大數據的優勢

人工智慧 (AI):
  • Python 在人工智慧領域中扮演著重要角色,因為它具有豐富的 AI 相關庫和框架,如 TensorFlow、PyTorch、Keras 等,這些庫提供了許多強大的工具和算法,用於機器學習、深度學習和自然語言處理等 AI 應用。
  • Python 的簡潔語法和豐富的庫使得開發 AI 應用變得更加容易和高效,因此,許多 AI 專案和研究都選擇 Python 作為開發語言。
大數據:
  • Python 也在大數據領域中廣泛應用,因為它提供了許多處理和分析大數據的庫和工具,如 Pandas、NumPy、SciPy 等,這些庫使得大數據的處理和分析變得更加方便和高效。
  • 此外,Python 還與大數據生態系統中的其他技術密切集成,例如 Apache Hadoop、Spark 等,使得 Python 成為一個理想的大數據開發語言。
  • 大數據分析和機器學習通常是相互關聯的,Python 的豐富庫和易用性使得從大數據中提取價值並應用機器學習模型變得更加容易。

2.2.5. 適合初學者

  • 簡潔易懂的語法,不需要繁瑣的記憶和掌握。
  • 豐富的內建庫和第三方庫,提供了大量方便的功能和工具。
  • 支援多種編程範式,包括面向對象編程、函數式編程等,適合初學者理解和實踐不同的編程風格。
  • 教導學生使用 print() 函數來輸出變量的值,幫助他們理解程式運行過程中的問題。
  • 教導學生使用調試器工具來逐步執行程式並觀察變量的值變化,找出問題所在。
  • 鼓勵學生閱讀錯誤訊息,理解錯誤的種類和可能的原因,培養解決問題的能力。

2.2.6. 適合解決生活中的問題

  • Python 是一門容易上手的程式語言,具有強大的應用範疇,包括網頁開發、資料分析、人工智慧等,教導學生 Python 可以培養其解決問題和創造力的能力。
  • Python 在業界和學術界都廣泛使用,學會 Python 能夠為學生未來的學術和職業生涯打下良好基礎。

2.2.7. 適合偷懶的老師

2.3. Python應用領域

Python 在應用領域上有許多特色,與其他程式語言相比,它的主要特點包括:

  1. 網頁開發:Python 在網頁開發領域具有廣泛的應用,例如使用 Django、Flask 等框架可以快速開發強大的網站和網路應用程式。
  2. 資料科學與人工智慧:Python 成為了資料科學和人工智慧領域的首選語言,擁有豐富的科學計算庫(如 NumPy、Pandas、SciPy)、機器學習庫(如 TensorFlow、PyTorch、scikit-learn)以及可視化工具(如 Matplotlib、Seaborn)等,這些庫使得數據處理、機器學習和人工智慧開發變得更加容易和高效。
  3. 自動化與腳本:Python 是一個優秀的自動化和腳本語言,能夠幫助使用者快速編寫各種自動化腳本,從系統管理到檔案處理都能輕鬆應對。
  4. 桌面應用程式:雖然不如其他語言像是 C# 或 Java 那樣主要用於桌面應用程式開發,但 Python 也有一些框架(如 Tkinter、PyQt、wxPython)可用於開發桌面應用程式。
  5. 科學計算:Python 在科學計算領域中廣泛應用,因為它易於學習和使用,並且具有豐富的科學計算庫,使得數值計算、統計分析、數據可視化等工作變得更加容易。

2.4. Python的幾種編輯工具

  1. Online Python
  2. Google Colab
  3. Jupyter Notebook
  4. PyCharm / Spider

3. 幾種平台應用於教學的優缺點

以下的優缺點係以學生/教師的教/學為出發點進行分析。

3.1. Google Colab

3.1.1. 簡介

  • Google Colab是一個基於雲端的Python開發環境,提供免費的CPU和GPU資源,讓用戶可以在網頁瀏覽器中運行和編寫Python程式。它具有強大的協作功能,可以與他人共享和編輯程式碼。Google Colab支援Jupyter筆記本,並提供預裝的Python套件,方便進行數據分析、機器學習等任務4
  • 在免費版 Colab 中,筆記本最長可以運行 12 小時;Colab Pro+ 支援程式碼連續執行長達 24 小時。只有在程式碼執行終止後才會應用空閒超時5

3.1.2. 優點

  1. 使用方便簡單,學生只要有Gmail帳號即可使用,介面易學易用,容易上手
  2. 學生所寫程式可儲存於Google雲端硬碟,方便日後回顧
  3. 具備基本的除錯環境: 程式可分段逐步執行
  4. 方便教師撰寫教學重點,結合教材與練習空間
  5. 可結合作業,要求學生詳述程式運作原理,並輸出執行結果
  6. 可結合Google Classroom進行作業發派與評分: 較方便,教師可事先提供副本
  7. 已預設安裝多數常用套件(如numpy, pandas, matplotlib, seaborn, beautifulsoup4, tensorflow, scikit-learn, scipy…),使用者無需再自行下載安裝: 可於colab執行下列指令查看已安裝的套件列表

    1:    !pip list
    
  8. 完善的資料視覺化(Data Visualization)功能
  9. 整合Google Drive: 可存取使用者Google Drive上的檔案
  10. 提供免費的計算資源: GPU, TPU
  11. 提供協作功能: 多個使用者可共編一個colab notebook,適合團隊project開發

3.1.3. 缺點

  1. 須提供網路環境: 不適用線上測驗
  2. 缺乏Judge功能: 教師需以人工評分作業,耗費人力
  3. 存取檔案較麻煩
  4. 執行時間受限: 連續運作時限為12小時
  5. 缺乏進階的除錯功能

3.1.4. TODO 使用教學

3.2. Jupyter Notebook

3.2.1. 簡介

  • Jupyter這個名字主要是由Julia、Python及R所構成,當然除了Julia、的Python及R之外,還有提供許多的kernels(例如Java、C#、Go、Ruby、JavaScript等超過50多種Jupyter kernels)。
  • Jupyter是由Notebook Frontend、 Jupyter Server及Kernel Protocol這三部分所建立6

    2024-03-30_17-50-58_2024-03-30_17-50-45.png

    Figure 9: Jupyter notebook架構

  • Jupyter Notebook您可以把它想像成是上述所講的IPython + Notebook整合架構,它是一個介於編輯器(例如Atom)及IDE(Spider、PyCharm、Vim) 之間的應用環境,可讓您編寫程式時利用其直譯式的特性,達到高互動執行結果,並且很容易呈現資料視覺化的執行。Jupyter Notebook包含了兩個組成: Web Application和Notebook Documents。
    • 網頁應用(Web Application):基於瀏覽器(web-based)的互動創作及應用工具,包括可以計算、數學、文檔創作及豐富的多媒體輸出。
    • 文檔顯示(Notebook Documents):顯示所有在上述Web Application當中的內容,包括計算的輸入/輸出、文件說明/解釋、數學運算及式子、圖片及所有豐富多媒體內容。
    • Jupyter Notebook介紹及安裝說明

3.2.2. 優點

  1. 可於單機環境運作,無需網路環境: 方便學生自行練習
  2. 具備基本的除錯環境: 程式可分段逐步執行
  3. 方便教師撰寫教學重點,結合教材與練習空間
  4. 可結合作業,要求學生詳述程式運作原理,並輸出執行結果
  5. 方便程式存取本機資料檔
  6. 可用於考試情境: 校內架設Judge Server

3.2.3. 缺點

  1. 運算速度受限本機資源(CPU、GPU)
  2. 所有套件均需自行安裝,自行管理套件版本
  3. 不適合團體協作開發
  4. 程式檔儲存於本機

3.2.4. 安裝

使用Anaconda安裝

官方強烈建議使用Anaconda Distribution來進行安裝,因為Jupyter Notebook、常用的科學計算(Scientific Computing)及資料科學(Data Science)所需packages都已經包含在裡面,對於未來想進行Data Science的應用學習有很大的方便性6

使用pip安裝

As an existing Python user, you may wish to install Jupyter using Python’s package manager, pip, instead of Anaconda. First, ensure that you have the latest pip; older versions may have trouble with some dependencies:

pip3 install --upgrade pip

Then install the Jupyter Notebook using:

pip3 install jupyter

3.2.5. 使用

1: jupyter notebook
介面

Jupyter Notebook的編輯介面主要分為下面四部分:檔名(File Name)、主選單(Menu)、工具列(Toolbar)及編輯單元(Cell)。

2024-03-30_17-57-45_2024-03-30_17-57-30.png

Figure 10: Jupyter notebook

管理Cell

2024-03-30_17-59-45_2024-03-30_17-59-39.png

Figure 11: Cell management

編輯Cell

2024-03-30_18-01-29_2024-03-30_18-01-13.png

Figure 12: Cell

3.3. PyCharm

3.3.1. 簡介

Professional Edition v.s. Community Edition7

2024-03-30_15-32-17_2024-03-30_15-31-57.png

Figure 14: 專業版與社區版的差異

  • 功能上的區別:
    1. PyCharm專業版是功能最豐富的,與社區版相比,PyCharm 專業版增加了Web開發、Python We框架、Python分析器、遠端開發、支援資料庫與SQL等更多高級功能。
    2. PyCharm的社區版中沒有Web開發、Python We框架、Python分析器、遠端開發、支援資料庫與SQL等這些功能。
    3. PyCharm教育版的功能雖然比專業版會少一些,但與社區版相比,更加支援學校的教學工作。
  • 授權方式不同
    1. PyCharm的專業版是需要付費購買該軟體的啟動碼才可以進行使用。
    2. PyCharm的社區版提供給開發者免費使用的。
    3. PyCharm的教育版只針對師生認證的使用者才免費使用。
  • 適用人群不同
    1. PyCharm的專業版是適用於一些公司進行專業網際網路開發適用,這需要使用公司投入一定資金。
    2. PyCharm的社區版是提供給程式設計愛好者使用學術交流的,所以是免費提供的,其功能雖然不夠全面,但能夠滿足日常開發需要。
    3. PyCharm的教育版則是以公益為目的免費提供給各大學校進行程式設計教學,發展程式設計教育事業。

3.3.2. 優點

  1. 除錯、追踪功能完善
  2. 可於單機環境運作,無需網路環境: 方便學生自行練習
  3. 方便程式存取本機資料檔
  4. 可用於考試情境: 校內架設Judge Server
  5. 可搭配Github進行團隊協作

3.3.3. 缺點

  1. 需安裝軟體: 電腦教室需事先安裝,學生帳戶無安裝權限
  2. 程式檔儲存於本機: 學生要自行複製儲存到隨身碟或雲端硬碟

3.3.4. TODO DEMO

4. 互動式教學

以Google Classroom + Google Colab為例,示範如何在Google Classroom平台提供互動式教材

4.1. 教師端

  1. 新增colab的教學notebook

    2024-04-06_13-19-16_2024-04-06_13-19-03.png

    Figure 15: 編寫互動教材

  2. 複製連結、分享至Google Classroom
    • 於classroom中新增教材資料

      2024-04-06_13-23-51_2024-04-06_13-21-07.png

      Figure 16: 建立資料

    • 自雲端硬碟中挑選編好的notebook

      2024-04-06_13-25-53_2024-04-06_13-20-08.png

      Figure 17: 挑選notebook

5. 作業繳交

以Google Classroom + Google Colab為例,示範如何在Google Classroom平台發派程式作業

5.1. 教師端

  1. 新增colab的教學notebook

    2024-04-06_14-29-53_2024-04-06_14-29-40.png

    Figure 18: 設計作業編寫notebook互動教材

  2. 複製連結、分享至Google Classroom
    1. 於classroom中新增作業

      2024-04-06_18-27-17_2024-04-06_14-34-09.png

      Figure 19: 建立作業

    2. 自雲端硬碟中挑選編好的notebook、選擇“為每位學生建立副本”

      2024-04-06_18-32-11_2024-04-06_18-31-13.png

      Figure 20: 加入作業說明、附加notebook互動教材

5.2. 學生端DEMO

5.2.1. 點選作業附件

要寫作業時,學生先點選作業連結,再開啟作業中的附件notebook

2024-04-07_11-38-20_2024-04-06_18-49-42.png

Figure 21: 點選作業附件

5.2.2. 編寫作業

開啟notebook後,學生依作業要求撰寫解題程式

2024-04-07_11-39-59_2024-04-07_11-37-16.png

Figure 22: 依作業要求編寫程式

5.2.3. 繳交作業

學生繳交作業的程序如下:

  1. 回到作業連結,點選查看說明

    2024-04-07_11-42-23_2024-04-06_18-49-42.png

    Figure 23: 點選作業中的查看說明

  2. 點選「繳交」按鈕即可上傳作業

    2024-04-07_11-43-30_2024-04-06_18-50-11.png

    Figure 24: 點選作業說明中的「繳交」

  3. 再次確認
    系統會要求學生再次確認是否要繳交附件的作業

    2024-04-07_11-45-20_2024-04-06_18-50-27.png

    Figure 25: 再次確認

5.3. 教師評分

  1. 查看作業繳交狀況
    學生上傳作業後,教師端就會看到作業的繳交狀況

    2024-04-07_11-48-00_2024-04-06_19-32-23.png

    Figure 26: 作業繳交情形

  2. 評分、提供註解、發還作業
    教師逐一為作業評分、加入註解,完成後點選發還,學生就能收到作業

    2024-04-07_11-49-24_2024-04-06_19-33-43.png

    Figure 27: 評分、註解

  3. 確認發還

    2024-04-07_11-51-02_2024-04-06_19-34-21.png

    Figure 28: 再次確認發還

5.4. 學生端收到批閱後的作業

教師發還作業後,學生端就能看到評分與註解
至於是否允許重新繳交則視教師的作業設定而有所不同

2024-04-07_11-53-20_2024-04-07_11-36-49.png

Figure 29: 學生查看收到的作業

6. 線上評量

6.1. Online Judge系統

6.1.1. 簡介

體驗完上述的手動評分,看著改不完的作業,是否感受到身為資訊科教師的悲痛…,此時就是線上評測系統出場的時機了。Online Judge有許多不同的類型和平台,包括練習題、競賽題、以及專業題目等等。許多大學和專業程式設計比賽都使用Online Judge作為平台。

Online Judge(線上評測系統)是一個可以替代教師為學生送出的程式自動評分的平台,一般用於提供練習程式設計與舉辦程式設計競賽。它提供了一個虛擬的環境,讓學生能夠提交自己寫的程式碼,然後自動執行學生送出的程式碼,對程式碼進行測試,最後給出評測結果。這些評測結果通常是學生的程式碼在不同測試案例(case)下的執行結果,例如程式碼是否能夠正確地解決問題,是否能夠在給定的時間內完成任務,以及是否能夠在給定的記憶體限制下運行。

線上評測系統(以下稱 Online Judge 或簡稱 OJ)一詞在 2001 首次被提出,意指在部份程式競賽中使用的一種線上的、全自動化的,可以檢驗參賽者所提交的程式碼/執行檔/文字檔正確性的系統。儘管詞源在 2001 年才出現, OJ 系統本身的存在歷史其實更為悠久,最早可以追溯到 1961 年,在 Stanford University 中開始被使用。1970 年,在 Texas A&M University 所舉辦的第一屆 ICPC 程式競賽中,線上評測系統被用來自動驗證參賽者提交的程式碼是否執行出正確答案,以及是否有使用超過限制的計算資源,並根據評估對參賽者進行 realtime 的排名。後來,IOI 參考了 ICPC 的作法,也使用了 OJ 進行評分,但是採用了不同的計分規則8

目前幾個知名的線上評測系統包括:

雖然這些線上評測系統可以讓學生自行註冊帳號免費使用,但是基於下列幾項原因,這些系統並不十分適用於學校環境:

  1. 教師通常不具備管理權限:即管理試題、查看學生作答情形
  2. 這些系統都在校外,不適用於校內考試

基於以上原因,在校內自行架設一個免費的評測系統看起來是個不錯的主意。目前免費的開源線上評測系統有以下幾個:

  1. DMOJ: 這一套功能看起來最豐富最完整,而且支援的語言最多,可以到 60 幾種!而且還支援 Google, Facebook, Github 這些第三方登入。後端是 Python 寫的,而且一直持續有在維護,文件也滿完整的9

    2024-04-08_11-58-51_2024-04-08_11-58-35.png

    Figure 30: DMOJ

  2. NOJ: 中國南京郵電大學開源出來的系統,是用 Laravel 寫成的。介面使用 Material UI,看起來比較現代,但是文件比較不完整9

    2024-04-08_11-59-24_2024-04-08_11-59-18.png

    Figure 31: NOJ

  3. QDOJ: 中國青島大學開源出來的,後端是 Python + Django,前端是 Vue,採用 docker 部署簡單快速,支援的程式語言有:C, C++, Java 跟 Python。介面的部分則是使用 Ant Design9

    2024-04-08_11-59-56_2024-04-08_11-59-51.png

    Figure 32: QDOJ

由於QDOJ支援docker部署,安裝容易,以下我們就拿這套系統讓教師們體驗一下線上評測系統的方便與樂趣。

6.1.2. 運作原理

典型的線上評測系統運作原理如圖33所示,大致流程如下:

  1. 學生透過線上評測網頁(網站伺服器)將寫好的程式碼送出評分
  2. 評測系統網站收到程式碼後,將程式碼儲存於資料庫中
  3. 評測系統要求評分伺服器為該名學生評分
  4. 評份伺服器由資料庫中取得程式碼、評分案例(case)、正確答案,然後交由評分機器人執行評分
  5. 評分機器人評分後回報給評分伺服器
  6. 評分伺服器將評分結果回存到資料庫
  7. 評測網站顯示評分結果回報給學生

上述流程看似簡單,但是「讓一台電腦(評分伺服器)執行一堆來歷不明的程式」這件事本身就是極端危險的(這也是病毒與駭客在做的事),所以通常評測系統都會模擬出一個虛擬的環境(沙箱, sandbox)來執行這些要評分的程式,避免系統本身受到危害。

onlineJudgeServer.png

Figure 33: 線上評分系統架構

6.2. 學生端

以QindaU Online Judge Server為例,示範學生如何進行線上評量

6.2.1. 測試用評測系統

6.2.2. 學生帳號

Username Password
sa1 3c9d8d2f
sa2 4d060a55
sa3 ca8a9b12
sa4 be2dc57f
sa5 2e0cc7c7
sa6 ac844690
sa7 229a6ede
sa8 82a1f0d2
sa9 6a1584de
sa10 8fcf7948
sa11 d3cb34a5
sa12 5cdfbbd7
sa13 f3547182
sa14 58a8665b
sa15 beb46510
sa16 a85e91e2
sa17 8979a6fd
sa18 b9b2a28e
sa19 93ac2109
sa20 bcb8cebc

6.2.3. 答題

選題

2024-04-09_13-09-48_2024-04-09_13-02-54.png

Figure 34: 選題

查看試題說明

2024-04-09_13-29-01_2024-04-09_13-28-55.png

Figure 35: 查看試題

作答

2024-04-09_13-29-43_2024-04-09_13-29-34.png

Figure 36: 答題

6.2.4. 撰寫程式

6.2.5. 查看

6.3. 教師端

以QindaU Online Judge Server為例,示範教師如何出題

6.3.1. TMP

ID

1001

TITLE

世界上最遙遠的距離

content
  • 世界上最遙遠的距離不是你面前的題目與你心中的程式碼,而是你站在心儀的女同學面前,她卻把你當成討厭的肥宅…
  • 三角形
  • 你如願進了T市最糕學府,以為從此就可以得到所有女同學崇拜關愛的眼神,哪知道這在間學校裡的女同學仍讓你回憶起之前不堪的往事….
  • 所幸天無絕人之路,這間學校有個鮮為人知的詛咒,只要你對著心儀的同學大聲喊出你和她(他?)之間的精確距離,她(他?)就會喜歡上你…
  • 如上圖,已知你與蹲在地上的兩條魯蛇間的距離為a,女同學與魯蛇s間的距離為b,夾角為60度…..
  • 請回答你與女同學間的距離
  • 據說有某個數學定理,好像是跟什麼餘弦有關的,印象中大概是這樣:cosα=a2+b2−c22ab
INPUT
  • 輸入只有一行,分別為兩個正整數a,b
  • 兩整數以一空白相隔
  • 1≤a,b≤100
OUTPU
  • 請輸出c
  • 輸出請四捨五入到小數點後第4位
  • 所有輸出最後都要加上跳行

6.3.2. 教師帳號

Username Password
ta1 2a3b2358
ta2 a7c21bc7
ta3 f5f4e0e3
ta4 ad3e96f2
ta5 498ca55d
ta6 be4be5ad
ta7 656dfb81
ta8 ac401634
ta9 bf495744
ta10 302698f0
ta11 b68a3a3e
ta12 ec6c1b28
ta13 fc0554b2
ta14 5a965c22
ta15 9ede66bd
ta16 2640912c
ta17 15d5f898
ta18 3a837637
ta19 192c1859
ta20 295e077b

6.3.3. 編寫題目

1. 以管理者身份登入系統

ta01~ta20

2. 點選Problem List

點選“+Create”按鈕

2024-04-09_11-13-59_2024-04-09_11-12-14.png

Figure 37: 新增試題

3. 編輯試題
  • Step #1

    2024-04-09_11-17-07_2024-04-09_11-15-16.png

    Figure 38: 編輯試題#1

  • 1. 輸入試題編號(ID)
  • 2. 輸入試題標題(TITLE)
  • 3. 輸入題幹(Description)
  • Step #2

    2024-04-09_11-19-25_2024-04-09_11-17-51.png

    Figure 39: 編輯試題#2

  • 4. 編輯試題輸入條件
  • 5. 編輯試題輸出條件
  • 6. 編輯試題執行時間限制
  • 7. 編輯試題執行空間(記憶體)限制
  • 8. 編輯試題難度
  • 9. 是否隱藏試題
  • 10. 加入試題Tag(至少要加一個)
  • 11. 允許編寫之語言列表
  • STEP 3:

    (1) 編輯測資
    測試資料(case)的格式如下:

    • 測資輸入: 1.in, 2.in, 例:

        1 2
      
    • 測資輸出(答案): 1.out, 2.out

        1.7321
      

    (2) 壓縮測資檔(zip)

    2024-04-09_12-56-57_2024-04-09_12-56-50.png

    Figure 40: 壓縮測資檔

  • STEP 4: 上傳測資壓縮檔

    2024-04-09_12-57-53_2024-04-09_12-54-22.png

    Figure 41: 上傳壓縮檔

  • 12. 選取縮檔,上傳
  • 13. 存檔

6.3.4. 查看學生作答

6.4. 管理者

6.4.1. 新增使用者(滙入csv檔)

1. 編輯使用者資料檔(csv)

格式: id, password, email

sa00, tnfshsa00, sa00@gm.tnfsh.tn.edu.tw
ta00, tnfshta00, ta00@gm.tnfsh.tn.edu.tw
2. 進入系統管理頁面

2024-04-08_21-01-03_2024-04-08_20-59-20.png

Figure 42: 點選Management

3. 點選左側功能表User選項

2024-04-08_21-11-33_2024-04-08_21-09-24.png

Figure 43: 點選User

4. 進入Import User,選擇匯入csv檔

2024-04-08_21-12-21_2024-04-08_21-09-49.png

Figure 44: 點選Choose File

5. 匯入失敗QQ

原因未知

6.4.2. 新增使用者(系統自動生成)

1. 進入系統管理頁面

2024-04-08_21-01-03_2024-04-08_20-59-20.png

Figure 45: 點選Management

2. 點選左側功能表User選項

2024-04-08_21-11-33_2024-04-08_21-09-24.png

Figure 46: 點選User

3. 點選Generate User
  1. 填入前置字串(Prefix)
  2. 後置字串(Suffix)
  3. 起始號碼(Start Number)
  4. 結束號碼(End Number)
  5. 點選Generate & Export按鈕
  6. 此時會自動下載一個users.xlsx檔案

2024-04-09_08-39-16_2024-04-08_21-31-15.png

Figure 47: 由系統自動生成使用者帳號

4. 開啟使用者列表檔

這個檔案裡有系統為每個使用者生成的密碼,請妥善保存

2024-04-09_08-44-41_2024-04-09_08-44-33.png

Figure 48: 系統自動生成的使用者

7. [示範]安裝Online Judge Server

7.1. 安裝 Docker

7.1.1. 安裝 Windows Docker Desktop

安裝Python
  • powershell, 輸入python
  • 取得python
Step 1:
設定BIOS
  • 確定BIOS: Configuration / Intel Virtual Technology為Enabled

7.1.3. 安裝

  • check: Use WSL 2 instead of Hyper-V
  • check: Add shourtcut to desktop
  • close and restart: 重新開機
  • 啟動桌面Docker

7.1.4. 除錯

  • 出現錯誤
  • 以管理者身份開變powershell
  • 輸入以下設定

    1:    bcdedit /set hypervisorlaunchtype auto
    2:    dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
    
  • 重新開機

7.1.5. 設定Docker

  • 點選Settings / Resources / File sharing
  • 選定一個資料夾(例如D:\QD)
  • 按+
  • 按Apply & restart

7.1.6. 安裝git

1: winget install --id Git.Git -e --source winget

重新啟動powershell

7.1.7. Clone and Start QD

1: cd D:\QD
2: git clone -b 2.0 https://github.com/QingdaoU/OnlineJudgeDeploy.git
3: cd OnlineJudgeDeploy
4: docker-compose up -d

8. Resource

Footnotes:

2

圖靈完備性: 如果某物是圖靈完備的,則它可以用於類比某些圖靈完備的系統。例如,一個指令式編程具有條件表達式(例如,「 if」和「 goto」語句,或者「branch if zero」的指令)並且具有更改任意指令的能力,那麼它便具備圖靈完備性。要進一步理解圖靈完備性,可以看一下這段影片

Author: Yung-Chin Yen

Created: 2024-04-11 Thu 10:20