2024 年春季課程心得

Posted by Joshua on June 10, 2024

2024 年春季修課心得

作業系統(OS)

  • 學分:3 學分
  • 授課教師:施吉昇
  • 學期成績:A+
  • 上課內容:

      這門課的上課內容會讓我們了解,在不同裝置上的各種作業系統中是如何扮演資源分配的角色,並且怎麼提供使用者介面給程式設計師使用。舉例來說,資源分配的角度而言,作業系統會管理能使用的 CPU 以及記憶體資源,以避免資源耗竭;而抽象化資源並提供程式介面而言,作業系統會包裝底層的儲存裝置、網路裝置的操作,並提供 IO 及檔案系統的介面。

      這門課的計分方式如下:作業 44%,總共有 MP0 到 MP4 (MP 指 machine problem),MP0 佔 4% 而其他各佔 10%。此外,期中考以及期末考個各佔 28%。關於程式作業的部份,我們通常會需要根據助教的要求來改 xv6 這個作業系統的 kernel 或 user 程式碼,然而與「系統程式設計(SP)」不同的地方是,我們多數時候不能使用在 SP 學到的函式因為在 xv6 可能沒有提供。而期中與期末考的部份單雙班會使用一樣的考卷,並且一起考試,可以參考看看考古題。

  • 心得:

      這門課算是幫助我學到基本的作業系統知識,不過因為要介紹除了典型在個人電腦上的其他作業系統,所以內容稍嫌繁瑣,但也讓作業系統的知識跟認識更加全面。

機率

  • 學分:3 學分
  • 授課教師:林守德
  • 學期成績:A+
  • 上課內容:

      這門課的上課內容前面約 10 週,涵蓋了一些基本的機率知識,包含一些條件機率、貝氏推論,以及一些機率分佈。而期末考會有一些一般機率課程不會介紹到主題,像是熵(entropy)、相互資訊(mutual information)以及 n-gram 語言模型(language model)等等進階主題。

      這門課的算分方式為期中考、期末考以及期末報告各 33%,期中考與期末考主要都是考上課內容,而期末報告是在探討對於一些深度學習的模型,用統計檢定的方法來驗證改變資料的排序以及初始化權重的方法對於訓練迭代次數的影響。

  • 心得:

      這門課對於期末報告的評分標準非常奇怪,似乎老師不想給大家高分,我認為這並不合適,尤其是當期末報告這種大家都花很多心力的報告,有的人得到的分數卻不合努力。除此之外,我在這門課也學到蠻多知識的,包含熵、資訊理論及各種機率分佈,這些對於日後機器學習的知識以及研究有頗大的幫助。

人工智慧導論(FAI)

  • 學分:3 學分
  • 授課教師:陳縕儂
  • 學期成績:A+
  • 上課內容:

      這門課前半的內容由陳尚澤教授來上課,主要教的內容為古典的人工智慧(AI)方法,包含搜尋演算法(searching algorithm),賽局樹(game tree)以及貝氏推論等等,並且使用的投影片為 UC Berkeley 的 CS 188 課程投影片。而後半的內容主要是較現代的機器學習方法,包含一些線性的方法,到決策樹(decision tree)、隨機樹(random forest)、Adative Boost,最後在上到深度學習(deep learning)的方法以及強化學習(reinforcement learning)。

      算分方式為四次作業各佔 10%,一次期中考佔 30%,而期末報告佔 30%。作業會有手寫以及程式作業,四次的手寫作業多數會有一些手寫證明,也會手跑一些上課的演算法。前兩次程式作業主要會實作一些搜尋演算法及根據賽局樹做規劃等等,而後兩次程式作業,要實作一些機器學習演算法,然而這些演算法卻沒有在上課講清楚實作細節,算是對有修過機器學習的人非常友善。期末專題則是要寫一個撲克 agent,並且要能對打兩人的撲克比賽。

  • 心得:

      這門課讓我學到一些古典的人工智慧方法並且補齊在機器學習沒學好的概念,像是後面的深度學習等等,而收穫最大的還是期末報告,我靠自己的查資料及學習能力,學會了反事實後悔值最小化(counterfactual regret minimization)這個演算法,雖然這個演算法不見得能在這個報告上表現得好,但是能收斂到長期來說的 Nash 均衡,在更長期的比賽會有穩定的表現,也算是不錯的學習。

網路管理與系統管理實驗(NASA)

  • 學分:1 學分
  • 授課教師:蔡欣穆
  • 學期成績:A+
  • 上課內容:

      這門課的主要內容為介紹系上一些基礎的資訊服務,涵蓋了從網路基礎到系統管理的多方面知識。我個人認為,這門課最具價值的部分是在 Lab 和作業,因為它們提供了豐富的實作練習機會。每次作業都需要投入相當多的時間,但也因此能夠扎實掌握相關技能。以下是所有 Lab 主題的整理與說明:

    1. Shell Script:學習如何使用終端機能讀懂的腳本語言,這對於自動化各類任務相當重要。
    2. 硬碟分割:學習硬碟分割的基本操作,對管理實體機器、資料備份以及磁碟容錯等至關重要,也能接觸到 Linux 開機流程的相關知識。
    3. Cisco Switch:瞭解如何設定交換機,並利用 Packet Tracer 進行模擬設定。
    4. 虛擬技術與容器:學會使用 libvirt 建立 QEMU 虛擬機,以及使用 Docker 和 Kubernetes 進行容器化管理,這對自動化部署、CI/CD、以及無縫部署極為實用。
    5. OPNSense:這是一款基於 OpenBSD 的防火牆軟體,具備 GUI 介面,方便進行防火牆規則設定。
    6. DNS:使用 PowerDNS 架設 DNS 伺服器,並透過 GUI 進行配置,深入了解 DNS 的運作。
    7. LDAP:探索樹狀資料庫伺服器的運作,主要用於系統內部的身份驗證服務,包含 mail alias 等功能。
    8. NFS:學習網路檔案系統的架設,作業中會安裝一台 NFS Server,並使用 Kerberos 協定完成身份驗證與授權。
    9. 無線網路:瞭解系館內無線網路的架構與基本運作。
    10. 網頁伺服器:學習 nginx 網頁伺服器的設定,包含反向代理 (reverse proxy) 與日誌 (logging) 的功能。
    11. 資訊安全:涵蓋基本的資安概念與技術,包括密碼暴力破解、NFS 漏洞與 Web Server 漏洞等,並且練習 OWASP 的相關內容。

      而這個學期的成績計算方式如下:

    1. 作業 (36%):總共 12 次作業,多數需要花費 10 小時以上完成,內容涵蓋上述提到的各大主題。
    2. Lab (14%):Lab 是每次作業的暖身練習,助教通常提供操作指引,幫助理解作業內容。
    3. 期中考 (20%):三人一組進行上機實作,範圍涵蓋期中考前的作業內容。允許開書與使用網路,但禁止通訊工具。
    4. 期末考 (23%):涵蓋期中考後的主題,容器化技術為重點。同樣規則禁止使用通訊工具,並新增了不能使用生成式 AI 的規定。
    5. 課堂測驗 (7%):測驗內容與當週課程相關,通常給予一週時間完成,與 Lab 或作業無直接關聯。

      最後,將根據所有學生的排名來決定最終等第。

  • 心得:

      這門課是這學期最具挑戰性,但同時也是最有趣的一門課。課程內容涵蓋了許多其他課程中較少提及的技術,例如容器化與 Kubernetes,這些技能在未來的實際工作中應該會相當實用。至於 Cisco 或 OPNSense,則更適合有志於 IT 相關行業的同學發展。然而,這門課的收穫遠不止於此,還包括了閱讀並理解各種伺服器設定檔文件的能力,以及實際操作與配置的經驗,這些都讓我在解決問題的能力上有了顯著的提升。

前瞻資訊科技

  • 學分:3 學分
  • 授課教師:蔡欣穆
  • 學期成績:A+
  • 上課內容:

      這門課旨在幫助同學了解系上各實驗室的研究方向。本學期涵蓋的實驗室主題包括電腦視覺、影像處理、多媒體、金融科技、資訊生物科技,以及網路等相關領域。

      課程評分方式由各次授課的教授自行決定,包括作業或考試,共計 7 次,滿分為 700 分。此外,課程實施點名制度,若未到課,每次將從總分中扣除 20 分。最終成績則以總分除以 7,按照學校的等第標準換算給分。

  • 心得:

      由於多數教授只有兩次課程時間分享各自實驗室的研究內容,因此大多數的講課都顯得較為表面,缺乏深入性,聽起來也略顯無聊。對我而言,本學期較吸引我的內容是李明穗教授關於數位影像處理的分享,以及李彥寰教授對機器學習理論框架的講解。

      可能因為這學期網路管理與系統管理(NASA)課程的作業量實在太多,導致我在上課時難以專心聽講,這也讓我對課程的整體感受稍顯枯燥。或許是因為來授課的教授未能引起我足夠的興趣,因此這堂課並沒有幫助我明確了解自己想加入哪個實驗室。

生活中的科技原理

  • 學分:3 學分
  • 授課教師:饒梓明
  • 學期成績:A
  • 上課內容:

      這門課每週會介紹 3 至 4 項現代科技背後的原理,內容豐富且有趣。課程使用 Zuvio 進行點名,如果遲到,也可以向助教補點名。每週課程結束後,每個組別需要派出兩位成員上台分享,內容包括對其中一項科技產品的想法、觀點及心得。此外,課後還會安排一個小測驗,測驗內容與當週上課主題相關。而這門課的算分方式為:

    1. 出席率(15%):每週透過 Zuvio 點名計算出席率,遲到者可向助教補點名。
    2. 課堂表現(15%):包括每週課程結束後的組別分享,評估內容深度與表現。
    3. 課後測驗(30%):每週進行與當週上課內容相關的小測驗,測驗成績納入總分。
    4. 期末報告(40%):每組需完成期末報告,針對指定科技主題進行深入分析與呈現,佔比最高。
  • 心得:

      這門通識課程整體來說是一門相對輕鬆的課程,作業負擔不重,小組報告的分工也很順利。不過,關於科技原理的部分,我覺得自己並沒有學到太多,可能是因為上課時間我常常忙於完成網路管理與系統管理(NASA)的作業,無法全心投入課程內容。

桌球初級

  • 學分:1 學分
  • 授課教師:王翊澤
  • 學期成績:A+
  • 上課內容:

      課程一開始的要求是,前三週要能對牆擊球 50 下,否則無法獲得 A+。課程涵蓋以下主題:正手擊球、發球技巧、反手推帶、雙打跑位。而評分方式為:出席率 30%、體能訓練 10 %、正手擊球考試 20 % 、反手推帶考試 20 %、雙打跑位考試 20%。這門課的考試方式很有趣。在開始考試後,每週可以與夥伴進行最多三次考試,並選擇取最佳成績。如果選擇放棄某次成績,該次成績將不會被登記,並且可以重新考試。若選擇不放棄某次成績,則該項目將不再可重考。此外,三次考試中的對手不能重複,且不能是與自己同系的同學。

  • 心得:

      這門課的給分方式只要在課堂上認真練習,基本上都能拿到滿分。我認為這門課是一門具有系統性教學與練習的體育課,過程中不僅能確實地運動到,還能學到桌球基礎的技巧與策略。