• 沒有找到結果。

研究方法與步驟

第一章 緒論

第四節 研究方法與步驟

貳、 體驗學習

體驗學習是指學習者透過實際參與、操作中學習,並透過做中學的體驗過程進而 反思,最終轉化為自己的知識與價值。因此本研究的體驗學習將定義為讓學生透過親 身體驗、互相對話、進而思考,最後內化為個人意義與價值的過程。

第四節 研究方法與步驟

本研究旨在,發展體驗式程式設計課程架構,並評估課程實施後學生運算思維之 變化,與探討學生差異性與運算思維變化之關係。研究對象為新北市某公立綜合高中 學生三個年級的學生,合計 117 位學生,實驗期為 5 堂課,資料蒐集方式為量化為主 質性為輔之資料。本章便說明研究對象、研究場域、研究設計、研究工具、以及資料 蒐集與分析方法。

參、 研究方法

本研究主要為了瞭解研究者自行設計的程式設計課程內容架構是否完善,並在施 行完五堂程式設計課後,學生的運算思維變化與學生不同背景變項與運算思維學習之 間的關係,因此本研究方法採用個案研究(case study)對於一個或多個個人、團體、

社群、企業或機構之背景、現況、環境和發展歷程予以觀察、記錄、分析,就其內部 和外部的諸種影響而言得出某些階段性的變化模式來。

肆、 研究對象

本研究對象為新北市某公立綜合高中學生,高一兩個班不分組共計 71 位學生,屬 於常態編班;高二、高三各一班專門學程班級,共計 46 名學生,故全校合計 117 位學 生。

7

伍、 研究場域

本研究學校位於新北市地處偏遠區,是一所完全中學兼綜合高中的學制,國中部 一個年級三班,高中部一個年級 5 班,高二開始有所謂的專門學程(包括資訊學程與 應用外語學程二種),因此高二及高三一樣各有 5 班,其中 4 班為學術學程(即指社會 學程與自然學程),另 1 班則為專門學程。

本研究學校資訊教育情形,本校師資編制資訊教師 1 人、資訊組長 1 人,生活科 技教師 1 人,電腦教室共三間:2 間為高中部電腦教室、1 間為國中部電腦教室。在資 訊教育推廣上也在持續努力中,並期待能資訊科技融入各領域,因此推行行動教學並 有各項行動載具之教學用具。高一學生上下學期皆有 1 學分的資訊科技概論課程,高 二則提供學生資訊相關多元選修課程。

陸、 研究設計

課程實驗期程 5 堂課的時間全程使用本研究所發展之體驗式程式設計課程,授課 教師為研究者本身,研究者擔任此高中資訊科技教師。本課程實施時間不含前測與後 測時間共計 5 堂課,每次上課時間為一節 50 分鐘。前測時間與後測時間,將於此實驗 課程開始前一周實施前測,與結束後一周實施後測。教材、課程設計與問卷的編制,

經過教育專家與同領域資訊科技教師及研究者本人等共同討論後進行編制。

一、程式語言工具選用:

本研究所選用之程式語言工具為 Scrach 與 Visual Basic。Scrach 是一套圖形化程式 設計軟體,主要目的是幫助八歲以上的中小學生發展二十一世紀的學習技能。使用者 不太需要使用鍵盤來輸入各項指令,而是用滑鼠拖曳程式區塊到腳本區,以組合積木 的方式來撰寫程式碼。學習者可使用 Scratch 創造故事、動畫、遊戲、或音樂等,並透 過 Scrach 的體驗,加強學習者對程式流程的認知,當你對程式邏輯有直覺性的了解後,

將更有能力使用不同的軟體,提昇自己的問題解決能力。因研究者所研究的對象對於

8

程式設計都未有基礎,因此選用 Scrach 程式工具幫助學生在不需要懂太多程式語法的 同時,也可以了解撰寫程式語言的思維過程,進而幫助學生在生活中能思考與解決問 題。Visual Basic 是由微軟公司開發的包含環境的事件驅動程式語言。它源自於 BASIC 程式語言。VB 擁有圖形化使用者介面(GUI)和快速應用開發程式(RAD)系統,

可以輕易的使用 DAO、RDO、ADO 連線資料庫,或者輕鬆的建立 ActiveX 控制項。

主要讓學生除了使用圖形化程式設計軟體外,也可以使用程式語法加以實作程式設計 過程。

二、程式設計課程規劃:

本研究課程節數總共實作五堂課,課程目標為幫助學生提升運算思維的能力,此 研究在此依據 2017 年台灣教育部所定義之五項內涵為課程目標:1.抽象化(abstraction)、

2.資料表示(data representation)、3.樣式辨識/一般化(pattern recognition/generalization)、 4.問題解析(decomposition)、5.演算法思維(algorithmic thinking)。以下為五堂程式 設計課程之架構如圖 1,茲分述如下:

第一堂課:在第一堂的目標為讓學生了解何謂抽象化(abstraction),並且讓學生能理 解文字與圖示之關係與能從題目中擷取出重點。此堂課將透過前測學生測驗的運算思 維 10 道試題進行二度思考與討論,透過前測試題讓學生可以再一次對於問題進行釐清,

並學習如何在文字中找到問題重點並以組別為單位繪製解決問題的流程圖(flow chart),此課程活動會採用合作學習與翻轉教學的模式,讓學生可以自己主導自己的學 習歷程,試著自己建構自己的思維模式,進而反思過去思考邏輯。

1. 合作學習:合作學習的分組採用異質性分組,每組大約 5-6 人,分組方式將依據 運算思維前測成績將學生高分組與低分組放在同一組別,根據 Vygosky 於 1976 年所提出的鷹架理論,即指學習者內在心理能力的成長有賴成人或能力較強的同 儕的協助,因此期待同組中有能力不同的學生互相合作與學習。

2. 翻轉學習:此教學活動將利用平板進行遊戲闖關活動,透過小組合作討論前測運 算思維的試題,教師透過平板與網路蒐集學生們討論的結果,並進而協助學生去 反思學習過程。

9

3. 流程圖(flow chart):流程圖就是利用各種方塊圖形、線條及箭頭等符號來表達 問題的解決問題的步驟及進行的順序;是演算法的一種表示方式。一般而言,從 這些符號本身的形狀,就可以看出記載資料的媒體,使用機器的種類、處理的方 法及工作程序等特殊意義;此外,在符號內也可以加入一些運算式或說明文字,

增加它的可讀性。

第二堂課:在第二堂課中主要幫助學生了解何謂資料表示(data representation)與樣 式辨識/一般化(pattern recognition/generalization),即是讓學生能有邏輯的組織和分析 資料、了解不同資料格式、預測問題的規律、找出樣式做測試、歸納與辨識解題元素、

歸納條件結構的指令樣式、了解條件結構的解題樣式與特性、歸納迴圈內重複的指令 樣式、了解迴圈的解題樣式與特性。因此在此堂課會讓學生使用 Scrach 程式工具,並 透過 hour of code 網路學習平台搭配遊戲 minecraft 工具幫助學生了解程式的邏輯思維 以及程式語言的基本架構語法,程式語言基本架構與法如下所述:

1. 循序結構:從上而下,依序執行的結構。

2. 選擇結構(if…then…else):測試某一條件,並按其結果來改變執行的路徑的結構。

3. 重複結構(for…next):測試某一條件是否成立,以決定是否重複執行某一段程式。

第三堂課:在第三堂課中主要幫助學生了解何謂問題解析(decomposition),即是讓學 生能將大問題分解成組以解決的小問題與分析解題步驟。因此在此堂課程中讓學生試 著從資料結構有名的 0-1 背包(knapsack problem)問題中去解題與分析步驟,並以動 態規劃去解決之,最終試著將此問題的解題步驟以程式表示之。

1. 背包問題(knapsack problem):是一種組合優化的 NP 完全問題。問題可以描述,

給定一組物品,每種物品都有自己的重量和價格,在限定的總重量內,我們如何 選擇,才能使得物品的總價格最高。問題的名稱來源於如何選擇最合適的物品放 置於給定背包中。

2. 動態規劃(Dynamic programming,簡稱 DP):若要解一個給定問題,我們需要解 其不同部分(即子問題),再根據子問題的解以得出原問題的解。通常許多子問題

10

非常相似,為此動態規劃法試圖僅僅解決每個子問題一次,從而減少計算量:一 旦某個給定子問題的解已經算出,則將其記憶化儲存,以便下次需要同一個子問 題解之時直接查表。這種做法在重複子問題的數目關於輸入的規模呈指數增長時 特別有用。

第四堂課:第四堂課中主要幫助學生了解何謂演算法思維(algorithmic thinking),即 是讓學生能設計出能夠解決類似問題,並且能夠執行重複的指令流程。因此在此堂課 程中讓學生試著從演算法的排序方式去學習演算法的概念。本堂課所教學的排序方式 選用選擇排序(selection Sort)、插入排序(insertion sort)、泡沫排序法(bubble sort)

三種排序法,讓學生對於基本的排序方式有一定的認識後,再讓學生使用 VB 程式工 具撰寫選擇排序(selection sort)、插入排序(insertion sort)、泡沫排序法(bubble sort)

三種排序法的程式碼。

1. 選擇排序(selection sort):是排序演算法的一種,也是一種簡單容易理解的演算 法,其概念是反覆從未排序的數列中取出最小的元素,加入到另一個的數列,結 果即為已排序的數列。

2. 插入排序(insertion sort):是排序演算法的一種,他是一種簡單容易理解的排序 演算法,其概念是利用另一個數列來存放已排序部分,逐一取出未排序數列中元 素,從已排序數列由後往前找到適當的位置插入。

3. 泡沫排序(bubble sort):是一種簡單的排序演算法。它重複地走訪過要排序的數 列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工 作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算 法的名字由來是因為越小的元素會經由交換慢慢「浮」到數列的頂端。

3. 泡沫排序(bubble sort):是一種簡單的排序演算法。它重複地走訪過要排序的數 列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工 作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算 法的名字由來是因為越小的元素會經由交換慢慢「浮」到數列的頂端。