Post

高中生自主學習不知道做什麼?資訊類自主學習題目選擇與規劃分享

高中生自主學習不知道做什麼?資訊類自主學習題目選擇與規劃分享

自主學習是什麼

自主學習是現在高中生的必修課程,每個禮拜有一節課的時間,供學生自由運用。 學習歷程檔案中雖然不一定要放「自主學習」,雖然非強制,但高達 85% 以上的大學校系參採自主學習成果,被視為熱門審查項目。 所以多數積極的學生大多還是會嘗試自主學習。

至於自主學習的題目內容,則是自由發想,不侷限於學科課程,任何學生有興趣的領域皆可作為題目。自由度高是自主學習的特色,同時也是自主學習困難的地方,因為多數學生並沒有特別有興趣的領域,一開始發想題目便是困難的開始,決定題目後,實作過程又是另一道關卡。

1. 資訊自主學習的四大類型

學生通常想到資訊領域,第一個聯想就是遊戲開發,這也是為什麼很多學生一開始就會想要嘗試製作小遊戲。不可否認,遊戲開發確實是一個能夠引起動機、學習程式邏輯的好方向,但除了遊戲之外,資訊自主學習還有更多值得探索的領域。以下我將為你詳細介紹四大類型的自主學習方向,幫助你找到最適合自己的題目。

1.1 遊戲開發類

遊戲開發是許多學生的首選,因為它兼具趣味性與技術性。在製作遊戲的過程中,你需要同時思考遊戲機制、美術設計、使用者體驗以及程式架構,這些都是非常實用的技能。常見的遊戲自主學習包括:經典遊戲複刻(如俄羅斯方塊、小蜜蜂、貪吃蛇等)、卡牌遊戲、益智遊戲,或是簡單的角色扮演遊戲。製作遊戲的好處在於成就感來的很快,當你看到自己寫的程式變成一個可以玩的遊戲,那種滿足感是無與倫比的。不過要注意的是,遊戲開發涉及到的技術層面可能比想像中還要廣泛,包括圖形渲染、音效處理、物理模擬等,這些都需要時間去學習和研究。

使用scratch跟MakeyMakey製作日文鬼怪格鬥遊戲

1.2 網路應用類

網路應用程式是現代軟體開發的主流方向之一。這類自主學習包括:個人部落格系統、任務管理工具、線上筆記應用、天氣查詢工具、匯率轉換器,或是簡單的電子商務平台。網路應用的優點是實用性高,做出來的成果可以真正在生活中使用。學習這類自主學習,你會接觸到網頁開發、前後端互動、資料儲存等實用技術。對於未來想要朝網頁開發或軟體工程師方向發展的學生來說,這類自主學習是很好的練習機會。你可以使用 HTML、CSS、JavaScript 等技術建立前端介面,結合 Python、Node.js 或 PHP 等後端語言處理資料,最後部署到雲端平台上,讓所有人都能夠存取你的作品。

PTT表特版爬蟲程式

1.3 人工智慧類

近年來人工智慧熱潮席捲全球,AI 相關的自主學習也越來越受到矚目。常見的 AI 自主學習包括:影像辨識應用(如花卉辨識、手寫數字辨識)、自然語言處理(聊天機器人、情緒分析)、推薦系統、股價預測模型,或是簡單的遊戲 AI。雖然聽起來很高深莫測,但其實現在有很多現成的 AI 工具和 API 可以使用,讓你不需要從零開始學習複雜的數學理論就能做出有趣的 AI 應用。例如你可以使用 Google Teachable Machine 快速建立一個影像分類模型,或是透過 LINE Bot 結合 AI API 打造一個智慧客服機器人。人工智慧自主學習的另一個優勢是,它能夠與各種領域結合,無論是醫療、金融、教育還是農業,都能看到 AI 技術的應用,這也讓你的自主學習更具話題性和創新性。

學生使用手部辨識跟OpenAI API製作的你畫我猜

1.4 跨領域整合類

跨領域整合是近年來非常受到重視的發展方向,這類自主學習結合了資訊技術與其他專業領域,創造出更具實際價值的應用。例如:結合物聯網的智慧家居系統、農業用的環境監測系統、協助視障人士的導航APP、醫療數據分析系統,或是教育相關的互動學習平台。跨領域自主學習的最大好處是,它能夠解決真實世界的問題,而不僅僅是程式技術的展示。在製作這類自主學習的過程中,你除了要學習程式開發,還需要了解該領域的專業知識,這種跨領域的學習經驗對於未來的職涯發展非常有幫助。你可能需要訪問醫護人員了解他們的工作痛點,或者與農業專家討論作物生長的需求,這樣的過程能夠訓練你的溝通能力與問題分析能力。

使用scratch跟MakeyMakey製作日文故事繪本

1.5 升學導向類

我會鼓勵學生利用自主學習時間準備 APCS,持續精進程式實作能力,如果可以考取不錯的成績,如:3+2,甚至4+3,不但可以打穩程式的基礎,對高三升學也很有幫助,甚至之前念相關科系都很有用

Python基礎線上課程


2. 如何選擇適合自己的題目

不少學生對於挑選題目這件事情感到非常苦惱,覺得自己好像什麼都想做,但又不知道從何開始。選擇題目確實是自主學習製作中最困難的第一步,我要分享的幾個方面,將幫助你找到最適合自己的自主學習方向。

2.1 從生活中尋找靈感

不管學了什麼程式技術,最重要的是能否應用在生活中。我常跟學生說:「你想要使用程式,幫你解決生活中的什麼問題?」這句話聽起來很簡單,卻是選擇題目的核心原則。題目不一定要很遠大,不一定要有很艱深的難度。重點是做出來的東西,可以真正應用在你的生活之中。例如:你是否曾經覺得學校的補考系統很麻煩?或是覺得學校的社團點名很不方便?甚至是覺得每天都要手動記錄功課很困擾?這些看似微小的日常問題,往往就是最好的自主學習題目。因為你對這個問題有深刻的理解,而且這可以真正解決你生活上的問題。建議你可以拿一張紙,寫下三個你覺得日常生活中最困擾的事情,然後思考程式可以如何幫你解決這些問題。

2.2 評估自己的能力與時間

選擇題目的時候,除了考慮興趣之外,還需要誠實地評估自己的能力與可用時間。一個好的自主學習題目應該是「略高於你現有能力」的難度,這樣才能在製作過程中學習到新東西,但又不會因為太難而半途而廢。如果你是一個剛學會基本語法的初學者,就想要做出一個像 LINE 或 Spotify 這樣的複雜應用,那麼失敗的機率肯定很高。相反的,如果你已經有一定的程式基礎,卻只做出一個簡單的加法計算機,那可能又太過無聊,無法展現你的實力。我會建議學生可以先跟AI討論多個主題,然後根據這些主題內容來選擇一個「稍微超出能力一點點」的題目,這樣才能在過程中學習與成長。


3. 決定題目後的下一步

終於決定了自主學習題目之後,但千萬別以為這樣就結束了。發想題目很辛苦,想完之後不知道怎麼往下走更辛苦。這種情況其實很常見,尤其對於沒有自主學習製作經驗的學生來說更是如此。即便現在有 AI 工具可以協助同學實作,但某些問題還是需要有人指導,包括:環境設定、功能拆解、如何評估難度與時程、遇到技術瓶頸時該如何突破等。接下來的幾個段落,我會描述幾個常見狀況以及解決辦法。

3.1 環境設定與套件安裝

環境安裝與設定,對於沒有經驗的學生來說往往是最困難的第一步。當你決定好一個題目,滿懷熱情地想要開始實作,卻發現連開發環境都建不起來,那種挫折感是很容易讓人放棄的。這部分需要協助學生安裝與設定,千萬不要讓環境問題成為阻擋學生學習熱情的障礙。常見的開發環境包括:Python 的 Anaconda 或直接安裝 Python、Node.js 與 npm、Java 的 JDK 與 IDE(如 Eclipse 或 IntelliJ)、以及各種程式語言的執行環境。在安裝過程中,經常會遇到版本不相容、路徑設定錯誤、權限不足等問題,這些問題對於有經驗的開發者來說可能只是小case,但對於初學者來說卻可能是天大的難關。我的建議是,學生在開始自主學習之前,應該先花時間熟悉自己的開發環境,包括:如何開啟終端機或命令提示字元、如何使用 pip 或 npm 安裝套件、如何執行第一支「Hello World」程式等。這些基礎技能看似簡單,但卻是所有後續工作的基石。

3.2 拆解題目:Function List 的製作

學生訂好題目之後,通常無法判斷這個題目的實作難度,也不清楚此題目需要實作出哪些功能。這就像是你要蓋一棟房子,卻不知道需要哪些材料、哪些工序一樣。面對這種情況,我會與學生討論,確認他想做的內容,再協助他條列出 function list(功能清單),並讓他知道每個問題的難易度,以及實作的順序。製作 function list 的過程,其實就是將一個大問題拆解成無數個小問題的過程。每一個小問題,我們稱之為一個「function」或「模組」,這些模組可能是:一個按鈕的功能、一個資料處理的流程、一個畫面顯示的邏輯等。當你把整個自主學習拆解成一個個獨立的功能模組後,你會發現原本看似複雜的自主學習,變得可以一步一步地完成。例如,如果你要做一個「線上訂餐系統」,你可能會拆解出以下功能:會員登入註冊功能、菜單顯示功能、購物車功能、訂單建立功能、訂單查詢功能、付款功能、管理者後台功能等。每一個功能還可以繼續細分,像是會員登入功能又可以分為:登入頁面設計、帳號密碼驗證、Session 管理、登出功能等。透過這樣的拆解,你就能夠清楚地看到整個自主學習的全貌,也能夠更有系統地安排工作進度。

3.3 訂定每週時間表與進度規劃

有了 function list 之後,學生就能依據這個清單安排每週進度。這個步驟是很多學生會忽略的,認為只要開始做就對了,不需要規劃時間表。但實際上,沒有時間規劃的自主學習,往往會遇到以下問題:時間越來越緊迫、原本預期的功能來不及完成、或者是在最後一刻趕出來的品質很差。建議學生每週預估自己的自主學習時間,然後根據這個時間來分配工作項目。最好的做法是,每週固定一個時間檢核自己的題目進度,看看這週是否有按照規劃完成該做的事,如果沒有,就需要分析原因並調整下週的計畫。以下是一個範例時間表,適用於為期一個學期的自主學習製作

  • 第一週至第二週為自主學習規劃期,包括題目確認、文獻研究、功能清單製作。
  • 第三週至第四週為環境建置期,包括開發環境安裝、基本架構建立。
  • 第五週至第十週為功能開發期,完成主要功能的實作。
  • 第十一週至第十二週為功能整合期,修正錯誤、確保功能可運作。
  • 第十三週至第十四週為製作簡報或海報,準備上台分享的資料。
  • 第十五週為成果展示期,進行自主學習報告與展示。 這樣的時間規劃可以確保你在期限前完成所有工作,同時也留有緩衝時間來處理預料之外的問題。

編按:週數可視學校進度自行調整

3.4 開始動工實作:善用 AI 工具

這部分原本是最困難的部分,非常考驗學生查詢資料以及實作除錯的能力。程式開發是一項需要大量經驗累積的技能,從語法錯誤到邏輯問題,從環境設定到資料處理,每一個環節都可能遇到困難。以往學生遇到問題時,只能夠透過 Google 搜尋、查閱文件,或是請教老師和同學來解決問題,這個過程往往需要花費大量時間和精力。然而,隨著 AI 工具的興起,實作難度大幅降低了。懂得善用 AI 工具的學生,可以快速地獲得問題的解答、取得程式碼的範例、解釋錯誤訊息的意義,甚至可以請 AI 幫忙 Review 程式碼。這個轉變或許會讓有些人產生疑慮:這樣程式學習的成分是不是變少了?但我在這個過程裡觀察到,學生能學習到的已經不只是程式能力,還包括規劃一個小專案的經驗、評估難度與規劃時程的能力、還有程式整合能力。我認為這個過程還是有很多收穫的,關鍵在於學生如何正確地使用 AI 工具。AI 應該是你的助手,而不是你的替代品。你可以請 AI 幫你寫程式碼,但你自己要能夠理解這段程式碼在做什麼;你可以請 AI 幫你除錯,但你自己要學會如何閱讀錯誤訊息;你可以請 AI 給你建議,但你自己要能夠判斷這個建議是否合理。


4. 常見錯誤

在自主學習製作的過程中,學生難免會犯錯或遇到困難。以下是我觀察到最常見的幾個問題,以及相應的解決方案,希望能夠幫助你避免這些錯誤。

4.1 功能範圍過大

很多學生一開始就想要做一個「很厲害」的作品,結果功能越加越多,遠遠超出自己的能力與時間範圍。解決方案是:在開始之前,先根據 function list 評估每個功能的難度與所需時間,然後選擇最重要的幾個功能來優先實作,其餘功能可以列為「未來擴充」的方向。記住,一個功能完整但精簡的作品,遠比一個功能眾多但品質粗糙的作品來得好。

4.2 過度依賴 AI 而不求甚解

AI 工具雖然好用,但過度依賴可能會讓你失去學習的機會。解決方案是:拿到 AI 生成的程式碼後,請務必自己閱讀理解一遍,確認自己知道這段程式碼在做什麼。可以嘗試修改程式碼,觀察結果會有什麼變化,這樣才能真正學習到東西。


5. 結論

選擇與製作資訊自主學習,是每個資訊學子必經的重要過程。這個過程雖然充滿挑戰,但也是學習與成長的最好機會。從題目的發想、規劃、實作到展示,每一個環節都在訓練你的問題解決能力、專案管理能力、以及表達溝通能力。記住,自主學習題目不一定要很宏大,重點是能夠真正解決問題,並且展現你的學習成果。


如果你喜歡這篇文章,歡迎分享給正在為自主學習題目苦惱的同學們!如果有任何問題或建議,也歡迎在下方留言討論。

延伸閱讀


線上程式家教班開跑囉,請加 Line 官方帳號 @176yncbx,歐巴老師帶你輕鬆入門程式的世界!

This post is licensed under CC BY 4.0 by the author.

© homedad. Some rights reserved.

Using the Chirpy theme for Jekyll.