深入大學課程搜尋系統

如何以課程搭建學生和教授的橋樑?

深入大學課程搜尋系統
當天 Brainstorming 的討論牆一隅(?)

選課是大學生在開學前後時共同的課題。我們時常會在這段時間思考未來半年要將學習的課題放在哪裡、要如何規劃自己的課業作息,也通常是接觸新領域的出發點。各個學校都會在每學期開出各種課程,除了除了必修課程外,每個課程都需要我們評估是否需要修習、也希望能夠有好用的工具衡量不同課程間是否值得花時間修課,也期待能夠找到教授的上課方式及風格,因此,校內就因應這種需求出現不同的課程討論交流區。

以三校為例、台大課程交流版、師大沒地雷、甚至是 PTT 等課程心得集中論壇時常會有學生主動貢獻自己的修課心得。雖然我們可以如預期得利用該平台的搜尋系統打上關鍵字,但在大部分的社團上總是常出現和預期內容不相符的結果,增加了查詢有效資料的時間。此外,若想要探索可能有興趣的課程,唯一的方法只能透過平台推播,透過個人化探索課程的可能性微乎其微,綜合以上便決定趁此次機會深入大學課程搜尋系統,畫出理想課程搜尋系統的樣態。


為了搜集意見,我和系內幾位同學在年初聚集在一起,嘗試回答「理想的課程搜尋系統應該/不該有什麼?」,除了嘗試了解大家對其的想像外,也希望能點出彼此沒有想到的,但很重要的元素。經過一個早上的腦力激盪,我們總共提出了近百個想法,透過寫成便條紙將其分堆,可以大致分成以下需求:

課程基本資料 & 其他後設資料呈現

首先,大部分有關課程的資料在學校的課程查詢系統都有寫得很清楚,基本上也是能夠在真的修課前和老師最接近的一次對話。而大部分的課程資訊也會在這裡呈現,不同修課同學也應該不會對這些資料的認知有太大的差異。同時這些基本資料也附上了教學課綱、上課方式、Grading Policy 等資料,也是參考課程內容很大的幫助。因此最終做出來的系統應能夠將這些所有資料妥善存取並可搜尋化。

時間地點也是搜尋時需要關心的資料之一。學校的課程搜尋系統中有包含根據開課時間查詢,但沒有根據開課時間 index,因此查詢速度緩慢、且不接受無搜尋條件的課程時間查詢;未來若匯入更多學校的課程後(不只有三校)也需要根據地域搜尋,列出能夠銜接前後上課地點的課程等等。此外,也有不少同學提到希望能夠由使用者為課程加上標籤,為課程有的特色加上標籤,在預覽課程內容時能一眼就看出來此課程內容,也可利用此功能增加一層使用者互動關係。

課程評價

課程評價是整個課程評價網站的核心,也是我們最應該注重的服務對象,增加課程評價也應該放在建構系統時最應該注重的體驗。對於只想要發表簡易意見的人,我們要提供最簡便的表單,讓分享者能以最低成本及時間填寫,給其他使用者完整的評論及需要的資訊;而對於想要詳細分享的人則需要給予有延展性的,能夠被 index 到並可搜尋。

簡易的評價設計包含量化的指標,可以是簡單的 1~5 星,也可以根據大家常提到的參考標準如涼、甜、硬度,或是老師上課風格的指標也可以用這種方式給評價,不過數量和內容還需要經過考驗,否則會讓整個流程體驗順暢、使用者也能透過這些回答有效得到解答等等,都仍需討論。

根據使用者關注的要點分開,能夠快速且清楚的知道分享者對課程的想法。截圖自 想鑑你 NTU Rating (rating.myntu.me)

有足夠的課程評價基礎後,我們期望其他使用者也能夠透過回饋的方式評論每份課程評價。最簡易的評論方法有 Upvote 及 Downvote,以及回饋評價等功能。經過多次討論後才發現,這些功能的總和其實就是在 Raddit 等論壇都會出現的形式(笑)

但課程和評價的相依性就會出現問題。有不少同學在台大課程交流版上發表資訊量非常密集且優質的評價文,但其中不僅涉略單一課程評價,同時也在課程之間插入同一門課不同老師比較、同一個老師不同課程、修課順序、整學期的課程總結等文章。若能夠在此形式的課程評價完整歸入並妥善建立搜尋索引,將會是一大進展。

課程進階資料搜集

除了以上應用,為了讓使用者對課程內容更有概念,我們也嘗試想出幾種可能的形式:

  1. 每週第一堂課錄影
    大多數課程都會在第一堂課介紹整學期的課程內容,也會將更細節的資訊在課堂上傳達給學生。若是將第一堂課的錄影或更詳細的紀錄資訊,將能很輕易的成為資訊最豐富的課程內容集結網站。
  2. 每週課程留言
    為了直接獲得修過課的學生最原始、最赤裸的意見,或許是驚嘆、或許是 murmur、或許是作業繳交的提醒,若使用得當可以增加使用者的黏著度,藉此消彌每年只有兩個時段才會用到選課系統的窘境。同時這些也能夠成為沒有寫成評價的細節透過留言等媒介呈現在系統上。
  3. 上傳課程筆記、考古題等資源
    此方法也能夠有效增加使用者在系統上的黏著度。若有前人貢獻的筆記或考古題等資源,會增加很大的動機。但同時要獲得這些資料太困難了,有不少系統嘗試實作此方法,但因為上傳動機不足等原因,最終都沒有成型。系學會的考古題搜集是次之,但在特定家的考古題會相對完整很多,可能要先找到其中的原因,在尋找有沒有復刻到系統上的可能性。
  4. 成績分布
    此因素也是在選課時很重要的參考依據,但若沒有學校的幫牤或教授的自我揭露,成績分布只能成為黑盒子。若能有效的搜集所有學生的成績,無論是在平台上主動詢問個人成績、教授給的成績分布等、甚至寫個 Temper Monkey Srcipt 把學校行政系統的成績偷下來也是個方法(笑
  5. 以老師為主體的搜尋功能
    有時為了瞭解老師的專業或其他相關資料,我們往往會傾向搜尋同一位老師開的其他課程的課綱或相關資料,藉此了解他的開課風格、上課方式,決定要不要修他的課。綜上,除了課綱內容,老師的價值觀和上課方式也是非常重要的一環,因此以老師為基礎的查詢方式是有需求的。
也有針對教授的評價,無論是參考上課方式、教授的專業領域、甚至是學生直白的對教授的想法等等,都是做決策時常切入的面向。截圖自教授評價網 (urschool.org)

社群功能

  1. 課程共筆
    在需要進行深度思考或討論的課程中,我們時常會和教授或同學之間面對面對話,也會將討論出來的內容寫在筆記上或是烙印在自己腦中。有時我們會透過課程共筆來加速這些步驟,讓課程進行的同時能搜集大家的觀點,也能讓筆記速度加速,讓課程效率增加,參與度也會跟著提升。
    雖然大部分的課程都有可能建立起課程共筆,但實際上有做共筆的課堂卻不多。以目前來說,主要以助教帶動或是系上的習慣才有可能進行共筆,或許有其他方法能夠在平台上實現,但系內學生或是整體課堂氣氛才是影響有沒有可能建立課程共筆的關鍵。或許能透過主動建立共筆、建立負責人等方案讓參與度提身,建立勤做課程共筆的環境。
  2. 由系統代為提問熱門問題
    通常在瀏覽課程時多少會有系統沒有給足的資訊,或是雖然齊全但還有尚未列出或其他的特殊情況無法列在通常的資訊欄位內,只能向修過課或知道詳情的學長姐提問。遇到沒有認識的人修過課的情況,大多數都會在選課社團上發文,但冷門課程或非通識課願意分享修課心得的人少之又少,也沒辦法臨時找到能夠回答的人,或許可以比對 Google Maps 搜集資料的方式,將這些問題推送給修過這堂課的學長姐,或許是解決方法之一。
    但會遇到不少困難點:要如何知道誰修過特定一堂課?如何預測一個人修過那堂課的機率?如何做出人機介面讓修過課的人願意回答問題?問題貢獻要有哪些方法論或形式?都是還需要深度討論的問題。
Google Maps 主動向使用者詢問尚未完備的資料,能直接提升資料數量、提升可靠性

即便扣掉自己在這學期以外想到的重點外,一個上午的 Brainstorming 就發光是課程就是非常好當作資料分析的,同時也是非常難做好的教材。但礙於要先做出在團隊內要優先做出最小可行性產品(MVP),大部分的想法都還沒有認真討論過。期待近期能夠再空出時間一一深入這些主題,並做出能夠跑起來的大學課程搜尋系統,不過這又是接下來的故事了。

Read more

學期回顧 2021 Fall

學期回顧 2021 Fall

進入大學的第一學期 剛剛才意識到進入大學的第一學期已經過去了,但因為從高三就有在大學修課反而沒什麼實感。距離上學期已經過了兩個月多,本來沒有打算寫紀錄上學期,但隨著第二學期的開始,發覺有很多部分都和剛踏入大學生活時的想法出入很大,投身的專案和活動也越來越雜。 最近回頭翻社群動態發現這學期幾乎沒有發文(驚),就算當時感受已經和現在相差甚遠,也覺得有必要將當時的想法寫下來,為未來的自己當個參考資料,你們就當作看我半年份的動態好ㄌXD 關於修課 以普通師大資工的大一生來說,這會是真正接觸程式設計的一個學期。但包含在我內的部分人在這之前已經有一定能力,因此能夠免修在系內大一份量最重且能夠學到最多的程式設計一(不過下學期要修二就是了)。我趁這個機會決定把資工大二上的課程也一起修,因此這學期除了大一共同必修,有不少課是和學長姐一起上,因此變成一個很有趣的課表。 在這學期有關程式設計的課程只有大二必修資料結構和智慧生活小 app 開發、文本分析與程式設計兩門通識課。前兩門的範圍都已經接觸過沒什麼心得,反倒是文本分析與程式設計的期末專題讓我第一次寫出爬蟲,感謝同組資工系的學長帶我飛,現在才