安排課表這件事情,相信是開學前教學組最大的事件之一,課表有太多變動的因素需要被考慮,例如,某個科目的老師被安排做導師或行政,導致授課鐘點下降,需要安排其他同科老師,才能維持該科目有老師能夠授課,或是,校內課程會有場地不足的問題,要安排好課程避免衝突使用場地,這樣場景最容易在體育課、電腦課程出現,所以,因為有很多的人為變因,能夠資訊化的地方不多,因此,找了一款彈性度較高的排課軟體使用,FET Timetable,解決安排課表的問題。
軟體介紹
FET Timetable是一個開源軟體,主要就是解決學校的課表問題,軟體可以跨平台使用,以我為例,主要都是在Mac OS上執行軟體,沒有遇到太大問題。
這套軟體有中文介面,也有提供一些範例,讓我們在使用軟體前,可以先確認效果,是否符合需求。
排課規則
在使用軟體前,要先釐清排課的規則,這樣才能更快地把排課的設定寫入,以下提供幾個規則參考。
1.確認教師的導師職務,有助於在規則建立時,盡可能排開下午第一節的課程,讓導師有機會充分休息,也可以將禮拜一的第一節課安排給導師,通常可以讓導師確認班上上週的作業或其他交代事項的狀態。
2.主管的課程安排,例如,總務主任可能在每週四會有固定的會議,盡量在禮拜四那天不安排課程,這樣可以減少排課後,老師需要做調、代課的調整。
3.強制性的課程,例如,校內技藝班的時間需要綁定社團時間、校內特教抽離的課程需要與原班同時段...等。
排課規則越清楚,則能產出理想課表的可能性越大,因此,儘可能的盤點課程規則,這是很重要的一步。
輸入課表資料,產生課表
規則建立後,就可以在軟體中建立資料,這裡需要額外撰寫操作介紹,這裡簡單說明,軟體中需要建立的資料有以下幾個:
基本資料、學科、教師、學生、空間
基本資料:授課時間的區間、每個禮拜上幾天課...等
教師:校內教師的名字,例如:張曉明、胡大名...等
學生:學生有哪些,例如:一甲、一乙、一丙...等
學科:授課科目,例如:國文、英文、數學...等
空間:課程會在哪裡上課,例如:一甲教室、電腦教室、飲調教室、活動中心、操場...等
活動:透過上述資料,可以很清楚的建立活動,例如:張曉明在一甲教室教授一甲學生國文課程、胡大名在活動中心教授一乙的學生體育課程
版本控制
課表產生後,為了方便組長及主任瀏覽,也為了保證每一個修正後的課表可以有備份檔案,這時候透過Github去做本版控管是最好的做法,同時,目前產生的課表資料屬於靜態網頁(html,css),Github Page就可以讓使用者直接線上瀏覽這些檔案。

蘭嶼高中的草擬課表
題外話,這些靜態網頁資料是由FET Timetabl產生,我們只需要把檔案(xxx.fet,輸出資料夾)完整的上傳到Github即可。
Google App Script
由於教務主任及教學組長容易閱讀的資料格式與FET Timetable不符合,他們總是需要先做手動排版修正,調整成適合的格式,為了改善這一個不便利性,透過Google Sheet搭配Google App Script讀取FET Timetable產生的Xml檔案,並將其自動轉換成符合教務主任及教學組長容易閱讀的格式,這樣的設定又離資訊化邁前一大步。

蘭嶼高中課表規劃流程
小小結論
即便有了排課流程的改善,但是最難的還是在人,排完的課表,即便教務主任跟教學組長都確認沒問題,但是總是會有老師針對自己的課表想要再做些優化,例如,蘭嶼高中因為地處離島,有些老師就希望禮拜五下午或禮拜一早上能夠有多一點的空堂,這樣就容易增加回大島的時間,但是,很多時候很難這樣規劃,所以老師們就會開始看課表做兩角、三角甚至四角的調課,排課,真的不是把資料輸入系統後,就可以完成的一件簡單事情。