Open mdecourse opened 5 years ago
分為從近端讀取各班學員學號資料與從網頁讀取各班學員學號資料等兩種
從近端讀取各班學員學號資料版本
import random
filename = 'cdaw1_student_list.txt'
# 每組人數
num_in_one_group = 8
# 組序由 1 開始
group = 1
# 各班分組後所得數列
c2019 = []
with open(filename) as f:
# 讀進全部檔案, 轉進數列, 並同時將各行的 \n 去除
read_data = f.read().splitlines()
print("共有 " + str(len(read_data)) + " 位學員")
# 利用 shuffle 將數列隨機弄亂
random.shuffle(read_data)
for i in range(len(read_data)):
# 利用整數相除的餘數進行分組
if i%num_in_one_group == 0:
# 列出分隔符號
print("-"*20)
print("group " + str(group) +":")
# 在分組區隔時重置各組學員數列
group_list = []
print()
# 同時列出與分隔標註對應 i 的數列內容
print(read_data[i])
group_list.append(read_data[i])
group = group + 1
else:
# 逐一列出同組的其他學員
print(read_data[i])
group_list.append(read_data[i])
if i%num_in_one_group == 0:
c2019.append(group_list)
# c2019 為該班分組後所得分組數列
print(c2019)
從網頁讀取各班學員學號資料版本
import random
import urllib3
target_url = "https://raw.githubusercontent.com/mdecourse/cd2019/gh-pages/data/cda/cdaw1_student_list.txt"
# 從 url 讀取資料, 之後利用 splitlines() 存入學員學號字串數列中
http = urllib3.PoolManager()
response = http.request('GET', target_url)
data = response.data.decode('utf-8')
read_data = data.splitlines()
#print(read_data)
# 每組人數
num_in_one_group = 10
# 組序由 1 開始
group = 1
# 各班分組後所得數列
c2019 = []
print("共有 " + str(len(read_data)) + " 位學員")
# 利用 shuffle 將數列隨機弄亂
random.shuffle(read_data)
for i in range(len(read_data)):
# 利用整數相除的餘數進行分組
if i%num_in_one_group == 0:
# 列出分隔符號
print("-"*20)
print("group " + str(group) +":")
# 在分組區隔時重置各組學員數列
group_list = []
print()
# 同時列出與分隔標註對應 i 的數列內容
print(read_data[i])
group_list.append(read_data[i])
group = group + 1
else:
# 逐一列出同組的其他學員
print(read_data[i])
group_list.append(read_data[i])
if i%num_in_one_group == 0:
c2019.append(group_list)
# c2019 為該班分組後所得分組數列
print(c2019)
每週教師利用電腦、網路與雲端倉儲錄製該週所要傳達的相關內容, 存為 .mp4, 上傳至近端伺服器, 可讓各組下載.
各組可以採用協同方式, 規劃由學員同步進行與課程相關的操作示範影片片段, 各影片片段可利用 ffmpge.exe 進行編輯 (切斷, 合併等), 最後每週必須呈現至少一個與該週課程內容相關的教學影片, 且該影片必須呈現在各組分組網站中 (各學員必須以 Github 倉儲中,依據固定的倉儲名稱, 例如: cp2019 或 cad2019 命名, 且各分組網站必須依附在組長帳號下的 cp2019ag1 ....), 而且各影片必須利用 ffmpeg.exe 配上說明字幕, 且各組員所提供的影片片段必須在各影片的左下角呈現製作學員的浮水印.
各週第一堂課說明該週進度, 第二與第三堂由各組執行該週任務, 各組必須在次週上課之前完成各項取分任務, 且在次週的第二堂中處理上週各項 Q&A.
有關利用 ffmpeg.exe 執行影片編輯與加上字幕或浮水印等用法, 請參考:
http://mde.tw/cp2019_fall/content/FFmpge.html
各組所錄製之影片片段, 除了各製作學員的學號浮水印與說明字幕之外, 不得呈現其他利用 shareware 或 freeware 或其他影片製作套件的任何加註資料, 意即: 不得使用免費的威力導演軟體套件製作或編輯各週分組影片, 否則不予計分.
助教與課輔時間規劃
預計由 40623128 擔任 cp2019 與 cad2019 等兩門課程的助教 並推薦 40623130 擔任 Prof Lee 相關課程的助教
cp2019 與 cad2019 以及專題的 meeting 時間為開學後每週四 19:30-21:30 地點在綜一館電腦輔助設計室
cp2019 與 cad2019 課程網頁
cp2019
Fall 開學後課程進行時網站: http://mde.tw/cp2019
cad2019
Fall 開學後課程進行時網站: http://mde.tw/cad2019
2019 Fall 開始的課程學員評分流程
第一週即啟動亂數分組, 每 10 人一組, 並自第三週起啟動每一位學員的三種課程評分流程
上課學員評分流程
上述程式希望能夠透過 1) https://dartpad.dartlang.org/, 利用 dart 程式語言程式進行分組, 2) 並設法將 dart 轉為 javascript, 以便能夠在網頁中直接執行, 3) 最後再設法轉為手機 app, 能夠直接在 Android 與 IOS 手機中執行亂數分組, 意即能夠直接在手機中選擇學員 url, 登入系統 (確認權限), 啟動近端分組或遠端分組, 完成後將分組資料存入遠端 Python Flask 所建立的網站或資料庫 (SQLite, MySQL 以及 PostgreSQL) 中.
意即, 目前的機械設計程式都必須具備三種執行介面:
1) 能夠直接在網頁中的 interpreter 環境執行, 結果可存入 https://firebase.google.com/ 2) 同第 1 項技術 (例如: 可以利用 brython, lua 或 dart 完成網頁執行), 但是 dart 必須轉為 Javascript 後 (brython brython 與 http://mde.tw/vecp2018/lua/SchoolProject/fengari-web.js 已經直接將 python 與 lua 轉為 js 執行), 本學期開始加入 dart. 3) 必須透過 dart 與 Flutter 建立手機程式介面, 設法與遠端的 Python Flask 程式互動.
希望達成甚麼目標
1) 可以利用手機程式控制遠端 V-rep 虛擬環境 (或實體系統)中的手足球, 抓娃娃機或機械手臂的運動控制. 2) 可以利用手機程式取得各項近端資料 (影片, 照片, 表單資料或二維條碼或近場認證資料等), 並將資料送到由 Python 及 C/C++ 建立的各 kernels 機械設計相關系統進行, (a) 平面機構合成或模擬運算及展示, (b) 進行機械相關零組件的深度學習辨識 ( 類似車牌辨識), 但必須取得各零件的 x, y 座標後, 傳回遠端操控虛擬或實體機電資系統.