• 沒有找到結果。

2000年至2009年發表於ACM SIGCSE Bulletins 之程式設計教學法相關文獻之系統性分析

N/A
N/A
Protected

Academic year: 2021

Share "2000年至2009年發表於ACM SIGCSE Bulletins 之程式設計教學法相關文獻之系統性分析"

Copied!
91
0
0

加載中.... (立即查看全文)

全文

(1)國立臺灣師範大學 資訊教育研究所碩士論文. 指導教授:林美娟 博士. 2000 年至 2009 年發表於 ACM SIGCSE Bulletins 之程式設計教學法 相關文獻之系統性分析. Teaching Methods for Programming Instruction: A Systematic Review of Literature Published in ACM SIGCSE Bulletins between 2000 and 2009. 研究生:許信育 撰. 中華民國 104 年 6 月.

(2) 摘要 2000 年至 2009 年發表於 ACM SIGCSE Bulletins 之程式設計教學法 相關文獻之系統性分析 許信育 本研究旨在系統性地收集 2000 年至 2009 年間發表於 ACM SIGCSE Bulletin 季刊(其中包含 The SIGCSE Technical Symposium 及 International Conference on Innovation and Technology in Computer Science Education 兩研討會之論文集),關 於程式設計教學之論文,將論文中所報導之程式設計教學法加以彙整、分析,並 將分析結果分類呈現與闡述。本研究根據八項篩選準則,以人工方式從上述文獻 來源中篩選出 79 篇論文,並以自行設計之文獻資料萃取表,記錄各篇論文中為 本研究分析所需之重要內容。研究者接著使用敘述性綜合法進行資料分析,重點 在於整理各文獻所報導之教學活動及其所使用之教學工具。分析結果顯示,程式 設計教學中較常使用之教學工具可大別為七類:程式開發環境(如 Jython、 M.U.P.P.E.T.S、CS1 Sandbox、Bricklayer、及 JPie)、合作學習工具(如 CoWeb、 IMinds、及 Praktomat)、遊戲開發工具(如 GBA and NDS Development Tools 和 OpenGL) 、視覺化工具(如 EROSI Tutor、PlanAni、及 Jeliot) 、教學回饋工具(如 Personal Response System 和個別輔導教學軟體) 、機器人程式開發工具(如 LEGO Mindstorms、及 Parallax Scribbler)、及其他工具。在教學活動方面,則可分為以 下七類:(1)教學範例或作業結合特定主題之教學活動、(2)提供學生彈性選擇不同 範例或作業之教學活動、(3)以培養學生問題解決能力為重點之教學活動、(4)合作 學習、(5)強調教學者對學生提供回饋之教學活動、(6)以視覺化工具輔助之教學活 動、及(7)不屬於上述六類之其他教學活動。本研究以案例闡釋各類教學活動之特 色及其所帶來之學習效益,期能提供程式設計教學者參考採用之。 關鍵字:程式設計、教學方法、系統性文獻分析 i.

(3) ABSTRACT Teaching Methods for Programming Instruction: A Systematic Review of Literature Published in ACM SIGCSE Bulletins between 2000 and 2009 By Hsin-Yu Hsu. The purpose of this study was to systematically review research findings published between 2000 and 2009 in ACM SIGCSE Bulletins (including papers presented at the SIGCSE Technical Symposium and International Conference on Innovation and Technology in Computer Science Education) with respect to programming instruction for beginners. After manually reviewing the articles published in SIGCSE Bulletins according to eight screening criteria, we selected 79 articles for synthesis. Important information contained in each of those 79 articles, particularly the instructional activities and tools used in each study, was extracted using a data extraction form. Narrative synthesis was then conducted to analyze information recorded in those extraction forms. The results of our data synthesis indicated that there are seven categories of instructional tools used most often in programming classrooms: (a) Program development environments (e.g., Jython, M.U.P.P.E.T.S, CS1 Sandbox, Bricklayer, and JPie); (b) collaborative learning tools (e.g., CoWeb, IMinds, and Praktomat); (c) game development tools (e.g., GBA and NDS Development Tools, OpenGL); (d) visualization tools (e.g., EROSI Tutor, PlanAni, and Jeliot); (e) feedback/response tools (e.g., personal response systems and individualized guidance systems); (f) Tools for building and programming robots (e.g., LEGO Mindstorms and Parallax Scribbler); and (g) Other tools. Instructional activities were also grouped into seven categories: (1) Activities that integrated specially ii.

(4) designed examples or projects; (2) activities that provided students with flexibility in choosing different examples or assignments; (3) activities that focused on learning of problem-solving skills; (4) collative-learning activities; (5) activities that emphasized teacher-student feedback-response; (6) activities that involved the use of visualization tools; and (7) other activities. We exemplified each category of instructional activities and discussed their effects on learning. It is hoped that what is synthesized in this research. would. provide. programming. instructors. with. useful. activities/tools to adopt in their teaching.. Keywords: Programming, Instructional Methods, Systematic Review. iii. instructional.

(5) 誌謝. 在漫長的研究所生涯中,歷經了許多的波折,中途一度放棄學業休學。非常 感謝我的指導教授林美娟老師,在已經退休的情況下仍然願意給我機會,不厭其 煩地指導我的論文,讓我順利完成論文。同時也感謝兩位口試委員王佩瑜老師及 林育慈老師給我關於論文上的指導及建議,讓我的論文更加完善。 感謝實驗室的各位學長姐文正、秋良、聖哲、東寶、經燁、舜尹、盈芳、冠 宇;及一起為研究打拼的好夥伴胤廷、曉葳、文良、榮慶、郁雯,在我研究遭遇 困難時,願意一起與我討論,並且為我解決研究上的疑惑,為我加油打氣,有您 們在身邊真好。 感謝爸爸、媽媽、兩位哥哥,因為有你們的鼓勵、支持、與包容,讓我能無 後顧之憂地專心在研究上,更感謝家人對我的包容,讓我能順利完成論文。謝謝 您們。. iv.

(6) 目錄 附表目錄........................................................................................................................ vi 附圖目錄....................................................................................................................... vii 第一章 緒論................................................................................................................... 1 第一節 研究背景................................................................................................... 1 第二節 研究目的與重點....................................................................................... 2 第二章 文獻探討........................................................................................................... 4 第一節 程式設計教學........................................................................................... 4 第二節 系統性文獻分析....................................................................................... 7 第三節 程式設計教學法之系統性文獻分析的相關研究................................... 9 第三章 研究方法......................................................................................................... 11 第一節 文獻收集................................................................................................. 11 第二節 文獻篩選................................................................................................. 16 第三節 文獻資料萃取......................................................................................... 19 第四節 文獻資料分析......................................................................................... 23 第四章 研究結果......................................................................................................... 25 第一節 文獻基本資料......................................................................................... 25 第二節 文獻中所使用之教學工具..................................................................... 28 第三節 程式設計教學活動類型......................................................................... 34 第五章 結論與建議..................................................................................................... 54 第一節 結論......................................................................................................... 54 第二節 未來研究方向......................................................................................... 56 參考文獻....................................................................................................................... 58 附錄一 79 篇文獻來源........................................................................................ 63 附錄二 資料萃取表............................................................................................. 68. v.

(7) 附表目錄 表 3-1 資料萃取表格式與範例 ................................................................................... 21 表 4-1 文獻出處分布表 .............................................................................................. 25 表 4-2 文獻作者所屬之學術或研究機構之國籍分布表 .......................................... 26 表 4-3 文獻刊載年分 .................................................................................................. 26 表 4-4 文獻所報導之研究所針對之教育階段 .......................................................... 26 表 4-5 在大學階段實施程式設計教學研究之課程分布表 ...................................... 27 表 4-6 在中、小學階段實施程式設計教學研究之課程類型 .................................. 27 表 4-7 屬於大學階段之文獻中所講授之程式語言 .................................................. 28 表 4-8 針對中、小學之研究中所講授之程式語言 .................................................. 28 表 4-9 教學範例或作業結合特定主題之文獻一覽表 .............................................. 35 表 4-10 提供學生彈性選擇不同範例或作業之文獻一覽表 ..................................... 41 表 4-11 以培養學生問題解決能力為重點之文獻一覽表 ........................................ 43 表 4-12 實施合作學習教學活動之文獻一覽表 ........................................................ 45 表 4-13 強調教學者對學生提供回饋之文獻一覽表 ................................................ 48 表 4-14 以視覺化工具輔助教學之文獻一覽表 ........................................................ 50 表 4-15 其他教學活動之文獻一覽表 ........................................................................ 51. vi.

(8) 附圖目錄 圖 3-1 圖 3-2 圖 3-3 圖 3-4 圖 4-1 圖 4-2. ACM SIGCSE Bulletin 的封面 ..................................................................... 12 ACM 電子資料庫中 SIGCSE Bulletin 之目錄格式 .................................... 15 本研究以 Excel 檔案記錄之文獻書文資料 ................................................... 18 文獻篩選過程及各階段所處理之文獻數目 .................................................. 19 教學工具分類圖 .............................................................................................. 29 教學活動分類圖 .............................................................................................. 36. vii.

(9) 第一章 緒論 第一節 研究背景 對於初學者而言,學習程式設計並非易事;也正因初學者在學習上經常遭遇 許多挫折,使得數十年來不斷有學者投入探究初學程式設計的困難處及其原因。 程式語言多達數百種,每一種的語法、語意、思考邏輯、和操作環境各異,其學 習困難處自亦不同,例如 Spohrer & Soloway (1986)、Sleeman, Putnam, & Baxter (1986)、Perkins & Martin (1986)、Putnam, Sleeman, Baxter, & Kuspa (1989)、Winslow (1996), Jenkins (2002)、Lahtinen, Ala-Mutka, & Järvinen (2005)、Ragonis & Ben-Ari (2005)、Kinnunen & Malmi (2006)、Chen, Cheng, & Lin (2012)、以及 Watson & Li (2014) 等等學者,即曾各自針對 Basic、Pascal、C++、Java 和其他語言的學習困 難做過相關研究。 學習者所遭遇的困難固然和學科內容本身的複雜度有著絕對關係,亦即認知 負荷理論(Clark, Nguyen, & Sweller, 2006)所定義的「本質性認知負荷」 (intrinsic cognitive load) ,但教師的價值以及教師專業訓練必須修習一般教學法與專科教學 法的主要目的,正在於希望教師能在教學中採用適當的方法,以降低學生學習時 的「外在認知負荷」 (extraneous cognitive load) ,並增進「合宜的認知負荷」 (germane cognitive load),從而幫助學生獲致最佳之學習成效。 舉例而言,Soloway(1986)認為程式設計本是一種問題解決的過程,而若想 有效地解決問題,應訓練學生將一個問題分解成多個子問題,並針對每個子問題 設法辨識其與過去曾經解過的問題之間的相似性,然後引用曾使用過的方法以解 決眼前的問題,如此即可降低問題解決的難度。然而 Soloway 也指出,拆解問題、 辨識一個新問題與舊問題之間的相似性、以及如何將曾經使用過的解法略作裁適 後套用至新問題等各方面能力之培養並非一蹴可幾,而是需要經過長時間的訓練 方可致之;換言之,程式設計教學者必須致力於教導學生此種問題解決方法,而 1.

(10) 非專注於講授程式語言的語法及語意。另如 Jenkins(2002)所指出,程式設計應 由會「教」程式設計的人教學,並非只是讓會「寫」程式的人進行教學;而且教 學者必須體認程式設計是一種困難的技能,因此必須在教學過程中給予學生充分 的協助,並提供學生不同的學習方式。Anabela & Mendes(2007)則提醒教師在 擬定教學策略時,不應僅以教師個人的學習風格為依據,而應採用大多數學生較 易接受的教學策略,方可幫助學生有效地學習。 相對於數學、科學、語文、藝術等學習領域而言,電腦科學屬於較為年輕的 領域,因而電腦科學領域的教學法也不若其他領域來得成熟與完整,其中針對程 式設計的教學方法與策略,也僅見於零星發表在電腦科學教育相關期刊或研討會 的論文中。即使程式設計教學至今已有數十年的歷史,卻幾乎未曾見過針對程式 設計教學法的系統性彙整、分析與呈現,這使得散落各處的教學法相關研究成果 難以被發現,更難以被採用,以致不僅無法嘉惠程式設計教學者,使得教學者只 能在教學過程中自行從嘗試錯誤中摸索、成長,也使得電腦科學教育領域的研究 者無法站在前人的肩膀上,將程式設計教學既有的研究發現做進一步的驗證與推 展。 程式設計教師若能獲取程式設計教學法之相關知識,即可將前人驗證有效之 教法運用於教學中,並在既有之教學法中進一步加入自己的創意,發展出更多元、 更豐富的教學法,然後再分享出去。如此所產生的教學知識的良性擴散,將有助 於提升程式設計教學之效益,從而減輕程式設計學習者所普遍遭遇的學習困難。. 第二節 研究目的與重點 有鑑於程式設計教學相關之研究結果最常發表於美國計算機學會 (Association for Computing Machinery,簡稱 ACM)所出版之刊物及其所主辦之研 討會中,其中又以 ACM SIGCSE Bulletin 季刊及 The SIGCSE Technical Symposium ( 以下簡稱 SIGCSE 研討會 )和 International Conference on Innovation and 2.

(11) Technology in Computer Science Education(以下簡稱 ITiCSE 研討會)為主,因此 本研究之目的在於系統性地收集 2000 年至 2009 年間發表於上述三項文獻來源中, 而與程式設計教學相關之論文,針對文中所報導之有效教學方法加以彙整與分析, 並將分析結果分類呈現與闡述,期使程式設計教學者得以從本研究結果中,一覽 有效的程式設計教學法,並參考採用於其教學中。 具體而言,本研究之研究重點為: (1) 收集 2000 年至 2009 年間發表於 ACM SIGCSE Bulletins 及 SIGCSE 和 ITiCSE 兩研討會之程式設計教學相關案例。 (2) 教師為了提升教學成效所採用之教學法,主要實現於其所設計之教學活動中, 因此本研究針對各個程式設計教學案例,萃取該案例中教學者所使用之重點 教學活動,並將所有案例中之教學活動及教學工具,依其共通性加以分類。 (3) 闡釋各種教學工具的特色及用途。 (4) 闡釋各種教學活動之特色、適用條件、及其所帶來之學習效益。. 3.

(12) 第二章 文獻探討. 本章第一節說明程式設計教學的內涵,並針對較常被使用在課堂上的程式設 計教學活動之相關文獻進行概述;第二節說明系統性文獻分析法的重要性及研究 流程,並說明何謂敘述性分析(narrative synthesis)。第三節為探討自 2000 年以來 與程式設計教學相關的系統性文獻分析。. 第一節 程式設計教學 一、初學者學習程式設計的內涵 程式設計是一個複雜的學習領域,包含了許多知識及技能。Linn and Dalbey (1989)曾指出學生學習的程式設計學習的知識為: (1) 程式語言的語法及語意特性。 (2) 設計模式、計畫、除錯…等設計能力和程式語言的特性。 (3) 將程式語言的特性與設計方法整合,發展出問題解決的能力。 Winslow(1996)認為教導學生程式設計時,應該著重在如何幫助學生解決問題; 而解決程式問題的流程,可以分割成下列幾個步驟: (1) 了解問題:分析並找出問題的需求。 (2) 如何解決問題:針對問題需求設計。 (3) 將解題方法轉換成程式:將設計的解題步驟及流程轉換為程式。 (4) 測試及除錯:執行程式碼,檢測是否滿足問題需求,若程式有錯則需要 找出錯誤部分進行修正。 Bishop-Clark (1992)則建議教學者教導程式設計初學者,只需要教導初學者足 以解決程式問題的語意及語法,無須教導其他額外的語意及語法知識。教學者應 將教學重心放在如何讓初學者學習如何解決問題,並且教導初學者使用虛擬碼、 流程圖…等解題工具及方法輔助教學,而教學者設計範例及練習時,應避免讓學 4.

(13) 生認為可以使用完全相同的解題模式套用到不同的問題結構上。 依據以上各學者的結論分析,不論是在大學院校培養出優秀的程式設計師, 或是培養高中以下學生基礎程式設計能力,教學者都必須設法讓學生學習到多方 面的知識及能力。學習者除了學習程式語言的特性,也必須能夠分析問題,將解 題策略活用在程式問題中。 二、初學者程式設計教學的相關研究 Pears et al. (2007) 針對程式設計教學的研究進行分析,指出程式設計教學不 僅與問題解決息息相關,認為程式設計教學也必須考量程式語言的選擇及教學工 具的使用,才能設計出對學習者有益的課程。Robins, Rountree and Rountreey(2003) 指出教學者必須設法引起學生的學習動機,並可運用視覺化的程式設計環境、合 作學習等方式加強學生的問題解決能力。與初學者相關的教學研究大略可以分類 為以問題解決為主的教學、教學語言的選擇、合作學習、運用教學工具等四種方 式。 (1) 以問題決解為主的教學研究 問題導向學習法(problem based learning)是一種為了解決與現實世界相關問 題的教學法,學生須要在課堂中培養各種不同的問題解決能力。問題導向學習法 在電腦科學中,常被用在初學者程式設計課程,或是人工智慧、軟體工程等需要 完成大型專案的課程(Kay et al., 2000)。 Nuutila, Törmä, and Malmi (2005)曾經在課堂上先教導學生解決程式問題必備 程式設計概念,接著讓學生使用分組合作討論的方式,讓學生檢視問題個案,找 出問題的解決方法。學生藉由討論的方式,將課堂所學的程式設計的概念與解題 方法結合,藉此加強問題解決能力。 除了問題導向學習法之外,近年來由於程式設計環境與工具的發展,也衍生 出許多能夠加強學生解題能力的教學方式。例如讓學生在課堂中,透過遊戲設計 的方式學習程式設計(Van Eck, 2006),或是使用機器人作為教學媒介(Portsmore & Rogers, 2004),上述兩種教學方法均能讓學生培養問題解決的能力。 5.

(14) (2) 探討教學程式語言選擇之相關研究 根據研究調查指出,Java、C++、C 等程式語言在大學院校中,最常被用於程 式設計導論的課程(Mason, Cooper, & de Raadt, 2012; Siegfried, Greco, Miceli, & Siegfried, 2012)。但是 McIver and Conway (1996)則指出 C++、C 這類型的程式語 言,其語法、語意對初學者來說太過困難,尤其是有多種語法可以表達出同一種 程式架構的情況,容易混淆初學者的學習。 Brusilovsky, Calabrese, Hvorecky, Kouchnirenko, and Miller (1997)則提出迷你 語言(mini-language)的概念,指出程式語言要有簡單的語法,以及將程式碼執行的 結果以視覺化呈現的方式,能夠有助於初學者學習程式設計。符合此類型的程式 語言包含 1980 年代的 Logo,而近年 Scratch 及 Alice 程式語言也同樣符合迷你語 言的概念,而 Scratch 及 Alice 程式語言中拖放指令的特色,讓學生更能有效降低 學生學習程式設計時的認知負荷,有助於學習演算法等解題概念(Lister, 2011)。 (3) 合作學習用於程式設計教學之相關研究 合作學習是學生在課堂上以討論、相互教學、合作完成工作的方式學習,藉 此增進學習成就及提升學習動機(Slavin, 1991)。Bower and Richards (2006)指出合 作學習用於程式設計教學時,除了對學生提升學習成效及興趣有所助益之外,學 生更可藉由合作學習的經驗,培養出溝通及社交的技巧。對學生在未來軟體工程 相關課程中,或是從事軟體工程相關的行業,有正面的助益。 例如 Williams, Wiebe, Yang, Ferzli, and Miller (2002)曾在程式設計教學導論 (CS1)課程使用配對程式設計(pair programming)教學方法,檢視學生使用配 對程式設計以及學生單獨完成程式的學習成效差異。研究發現配對程式設計有助 於學生成績的提升。 Hundhausen, Agrawal, Fairbrother, and Trevisan (2009)則將學生進行分組,要求 每一位學生單獨完成程式之後,讓同組的學生針對程式的錯誤、風格、解題方式 進行審查。研究結果發現程式碼審查能夠提升學生程式的品質,並改善學生語法 學習及提升問題解決能力。 6.

(15) 合作學習並非只能藉由課堂上的活動完成。例如麻省理工學院在設計 Scratch 程式語言後,便設置網路平台讓使用者上傳專案。使用者能夠下載他人的專案進 行再製,並針對專案發表評論,甚至有少數來自不同國家孩童藉由網路平台一起 創作各式不同的專案,彼此互相交換自己所學的知識,而網路平台因此成為了最 佳的合作學習平台(Monroy-Hernández, 2009)。 (4) 工具輔助程式設計教學之相關研究 Valentine (2004)曾經調查 1984 年至 2003 年之 SIGCSE 研討會論文集的研究 主題進行調查,Valentine 將文獻的教學對象鎖定在 CS1 和 CS2 課程。結果發現 有 22%的文獻的主題為教學工具研究。Pears et al. (2007) 進一步將教學工具區分 為視覺化工具、自動評量工具、程式設計環境等三個工具。由於自動評量工具多 用於減輕教學者為應付龐大的註冊學生所造成的負擔,並非以為了教學者為目標 設計的工具,因此本研究不探討自動評量工具的用途。 常見的視覺化工具,例如 Jeliot、jGrasp 能作為程式設計開發環境使用,使用 者能在編譯程式碼的過程中透過軟體觀察類別、物件之間的關係,可以直接觀察 每一個步驟的執行結果(Cross, Hendrix, & Umphress, 2004; Moreno, Myller, Sutinen, & Ben-Ari, 2004)。 程式設計開發環境相關的研究主要以 BlueJ、JPie 等輔助初學者學習的程式設 計環境為主。其中 BlueJ 的特性和 Jeliot、jGRASP 相同,能夠對使用者提供視覺 化的回饋,降低學生的學習負擔(Kölling, Quig, Patterson, & Rosenberg, 2003)。JPie 則是拖放式(drag and drop)的程式設計環境,可讓學生專注在問題解決的學習上, 而不會耗費過多的心力學生語法及語意(Goldman, 2003)。. 第二節 系統性文獻分析 一、系統性文獻分析的定義及重要性 系統性文獻分析是一種資料分析過程,研究中利用嚴謹的程序找出相似研究 7.

(16) 主題、領域的文獻,並且針對搜尋之文獻中的資料進行分析、整合的一種研究方 法(Kitchenham, 2004)。系統性文獻分析法可以找出特定的因素或現象,在每一個 不同設定的實證研究中帶來的影響,並且將不同設定的實證研究的結果綜合歸納 (Brereton, Kitchenham, Budgen, Turner, & Khalil, 2007)。 一般的文獻分析法雖能將相關主題的研究成果進行整合,但是研究過程中缺 乏嚴謹的文獻搜尋機制,因此難以找到所有相關主題的文獻;而研究過程中,也 無法證明分析的文獻是否有經過嚴謹研究設計,容易使研究結果產生偏差,得到 錯誤的結論。而系統性文獻分析所使用明確且可被遵循研究步驟,從資料庫的選 擇、關鍵字的搜尋、資料萃取的方式皆有明確的定義,可以消除傳統文獻分析法, 因為文獻搜尋過程不夠嚴謹而產生的誤差(King & He, 2005)。 二、系統性文獻分析的流程 Littell, Corcoran, and Pillai (2008)在「Systematic Review and Meta-Analysis」一 書中系統性文獻分析,可遵循下列的步驟進行: (1) 形成研究主題(Problem Formulation):訂出研究之代答問題、研究假設、及研 究目標。 (2) 整體研究設計(Overall study design):明確指出欲進行的研究主題、研究對象、 研究干預(intervention)、研究設定、研究結果。 (3) 抽樣 (Sampling):建立文獻搜尋的機制、篩選準則,並進行文獻搜尋及篩選, 同時根據結果蒐集文獻。。 (4) 資料收集 (Data Collection):建立資料萃取表(data extraction),並將經過篩選 的文獻,以資料萃取表收集資料。 (5) 資料分析 (Data Analysis):針對所收集的資料進行質性或量化的分析,其中量 化資料可使用後設分析(meta-analysis)。 (6) 完成報告 (Reporting):以文字、表格、圖片的形式報告結果,並詮釋相關資 料,建議未來的研究方向。. 8.

(17) 三、敘述性綜合 Popay et al. (2006) 指 出系統 性文獻 分析 常 以後設 分析或 是敘 述 性統計 (Descriptive Statistics)的方式呈現研究結果,但是文獻萃取的資料若為質性資料時, 便無法使用統計方式分析,便需要使用敘述性綜合進行資料分析。敘述性綜合的 特點為將資料以說故事(story telling)的方式統整並呈現給讀者,除了敘述研究使 用的干預所帶來的效果之外,也可找出可能影響干預實施的因素。敘述性綜合應 該包含下列四個步驟。 (1) 發展理論:研究者需推論特定研究主題之研究干預,如何對研究結果造成影 響。 (2) 初步資料綜合:萃取文獻資料,其內容包含研究設計、干預、對象、結果… 等資料。 (3) 探索文獻之間的關係:根據文獻萃取結果說明不同文獻的研究結果之特性。 (4) 研究效度:從萃取文獻的研究設計、對象、資料收集方式判斷文獻品質。 但 Popay et al. (2006)也指出沒有任何專家學者為敘述性綜合訂定完整的研究 步驟,研究者應該視研究主題、蒐集的文獻等內容隨時進行調整。. 第三節 程式設計教學法之系統性文獻分析的相關研究 自 2000 年以來,國外已有學者以系統性文獻分析的方式統整程式設計教學 的文獻,研究方向多針對單一教學法或工具進行系統性分析,歸納出教學法或工 具的教學效益。例如 Hannay, Dybå, Arisholm, and Sjøberg (2009)、Salleh, Mendes, and Grundy (2011)曾針對配對程式設計對學生學習成就的影響進行系統性分析, 兩篇文獻皆有。兩者針對配對程式設計的分組方式為學生的效益、分組方式進行 相當詳盡的文獻資料分析,並以後設分析的方式證明配對程式設計優於單獨完成 程式的教學方式。然而,兩篇文獻所針對的研究對象包含大二以上,及研究所的 學生,缺乏實際的教學案例或是質性資料說明教學影響。 Jones (2004)進行驅動測試程式開發(Test-Driven Development)的系統性文 9.

(18) 獻分析,針對研究樣本的教學個案與研究結果進行詳細的描述,教學個案所針對 的對象包含高中及大學初學者,以及大二以上非初學的電腦科學學生。 Major, Kyriacou, and Brereton (2012)分析使用機器人教學對初學者學習程式 設計的影響,但是分析結果僅告知讀者文獻使用的語言、學習對象、學生人數、 學習成效為正面或負面等基本資料,但未對教學活動進行詳細的描述。 Luxton-Reilly (2009)針對同儕評量的工具用於程式設計教學的系統性文獻分 析,研究重點在於說明同儕評論工具的用途、特色、成效,研究對象遍及大學初 學者及非初學者課程的學生。 彙整以上研究結果,可發現目前程式設計教學之系統性文獻分析可分為下述 3 種類型:(1)研究方向多為單一的教學法或工具的分類;(2)文獻之研究對象 較少針對初學者; (3)未對程式設計的教學活動進行綜觀性的描述及分析。因此, 本研究彙整初學者學習程式設計相關的文獻進行分析,對程式設計教學活動進行 綜觀性的論述,期望提供從事程式設計教學者更多教學方法之選擇,並使更多學 者投入初學者學習程式設計之教學研究。. 10.

(19) 第三章 研究方法. 本研究使用系統性文獻分析法,試圖探討程式設計教學法及教學活動對於程 式設計初學者學習成效之影響。本研究將初學者定義為初學程式設計之國小、國 中、高中生,以及大學修習入門程式設計課程之學生。研究步驟可分為文獻收集、 文獻篩選、文獻資料萃取、和文獻資料分析四個階段。以下分別說明各階段之工 作細節。. 第一節 文獻收集 一、文獻搜尋範圍 本研究之文獻搜尋範圍選定美國計算機學會(Association for Computing Machinery, 簡稱 ACM)所出版之 SIGCSE Bulletins 季刊(圖 3-1) ,文獻刊登年份 則設定為 2000 年至 2009 年。作此研究決定之原因詳述如下。 SIGCSE (The Special Interest Group on Computer Science Education,電腦科學 教育特殊興趣團體)為 ACM 學會之下眾多特殊興趣團體(SIGs)之一。SIGCSE 自 1969 年起固定發行 SIGCSE Bulletin 季刊,分別在每年三月 (Issue 1)、六月 (Issue 2)、九月 (Issue 3)、及十二月 (Issue 4)出刊,但偶爾也有例外,例如 Issue 1 可能提前至一月發行。自 2010 年起,SIGCSE Bulletins 停止發行,由 ACM Inroads 取而代之,並持續發行迄今。但 ACM Inroads 所刊登之文章範圍與 SIGCSE Bulletins 有所不同,最主要之差異在於 ACM Inroads 不再收錄 SIGCSE 所主辦之 研討會的會議論文。 自 1970 年至 2009 年所出刊之 SIGCSE Bulletins 中,固定於每年的第一期收 錄發表於 The SIGCSE Technical Symposium(以下簡稱 SIGCSE 研討會)之會議 論文。自 1996 年起,SIGCSE Bulletins 另於每年第三期收錄發表於 International 11.

(20) Conference on Innovation and Technology in Computer Science Education(以下簡稱 ITiCSE 研討會)之會議論文。至於第二期及第四期之內容,則除了刊登與電腦科 學教育相關之專欄文章與研究活動訊息之外,仍繼續刊登電腦科學教育研究者所 投稿、並經主編審查通過之研究論文。. 圖 3-1 ACM SIGCSE Bulletin 的封面. 12.

(21) SIGCSE 研討會自 1969 年起於每年二月或三月在美國各城市輪流舉辦,每年 均有來自世界各國大約 1,200 名電腦科學教育研究者與電腦教師與會。此研討會 提供了電腦科學教育研究者與實務工作者一個學術交流與互動的平台,使其得以 分享電腦科學各主題(諸如程式設計、資料結構、演算法、資料庫、計算機結構、 作業系統、電腦網路等等)相關之課程設計、教學方法、教材設計、與教學工具 開發等各方面之研究發現與實務經驗。在 SIGCSE 研討會所發表之全論文(full papers)均經過頗為嚴謹之同儕審查程序,且「接受發表比率」(acceptance rate) 僅約三成,因此 SIGCSE 研討會被領域內研究者普遍認定為品質較優之研討會, 亦可說是電腦科學教育領域具有標竿地位之學術研討會。由於 SIGCSE 研討會在 電腦科學教育領域所具有的學術權威性,許多研究者選擇在這個研討會中推介他 們最新研發完成之程式語言或程式/軟體開發工具,例如 Alice、Scratch、Lego Mindstorms、BlueJ、Greenfoot、GitHub 等等,都曾由其研發團隊在 SIGCSE 研討 會中舉辦 Workshops 並發表相關研究論文推介之;換言之,程式設計教學相關之 教師與研究者可藉由參加此研討會,接觸最新之程式語言、程式開發環境、教學 平台、和教學方法等等;反之,亦可將他們在程式設計教學上所嘗試成功的最新 方法或工具在會議中分享。此研討會所發表之程式設計教學相關研究結果並不侷 限於大學階段,也涵蓋了中、小學的程式設計教學,因此非常契合本研究的資料 分析需求。 ITiCSE 研討會為 SIGCSE 自 1996 年開始舉辦的學術研討會。它可說是 SIGCSE 研討會的「夏季」會議,因為相對於 SIGCSE 研討會於每年二、三月在 美國舉行,ITiCSE 則於每年六、七月在歐洲國家舉行。ITiCSE 與 SIGCSE 研討 會的性質相同,所發表的論文亦均集中於電腦科學教育相關主題,程式設計教學 亦是其中一項重要的主題。然而整體而言,SIGCSE 的與會者以美國學者與教師 為主,而 ITiCSE 則更具國際性,有較多的各國(尤其是歐洲國家)學者參與, 會議中所發表的論文也較為多元,諸如智慧型教學系統、行動運算、遠距教學、 視覺化技術、及網路工具等等在電腦科學教育的應用均常見於會議論文中。 13.

(22) 除了 SIGCSE Bulletins(含該季刊所收錄之 SIGCSE 研討會及 ITiCSE 研討會 之論文)之外,程式設計教學相關之論文亦有少部分發表於 Transactions on Computing Education(TOCE)、Journal of Computer Science Education(JCSE)、 Journal of Computers in Mathematics and Science Teaching(JCMST)、少數教育心 理學相關之期刊、以及某些學術研討會。有鑑於 SIGCSE Bulletins 乃屬程式設計 教學相關研究成果最主要之文獻來源,文章數量頗多,在研究時間有限的情況下, 本研究因而決定以 SIGCSE Bulletins 作為文獻搜尋範圍。 ACM SIGCSE Bulletins 的所有文獻皆已收錄於 ACM 電子資料庫(ACM Digital Library)之中,故本研究以 ACM Digital Library 作為搜尋文獻之資料庫。. 二、文獻搜尋方法 系統性文獻分析法一般均以自訂之搜尋字串在電子資料庫中搜尋所需之文 獻,因此本研究原擬在第一階段以 programming 或 program 一字結合教學相關之 關鍵字(如 teaching、learning、instruction、pedagogy、classroom 等字)形成搜尋 字串,進行標題與摘要之搜尋。此做法雖能縮小篩選範圍,卻有以下三項缺失: (1) 使用 “programming” 作為關鍵字搜尋標題與摘要雖能大幅降低初步搜尋所 得之文獻數量,減少後續之全文下載與篩選時間,但經研究者在先期研究中 檢視某些確定屬於本研究收集範圍之文獻後,發現符合本研究所需之程式設 計教學文獻,其標題與摘要中並不一定提到 “programming” 一字。 (2) 若將搜尋字串中之 “programming” 一字以 “program” 取代,則因 “program” 一字除了表示「程式」之外,另有多重一般的意涵,例如「計畫」 、 「綱要」、 「節目」等,因此將會有很多毫不相關之文獻被納入搜尋結果中。 (3) 教學相關之關鍵字無法窮舉,而且同樣可能出現(1)項中所述之狀況,亦即程 式設計教學相關之文獻其標題與摘要中並不一定包含教學相關之英文字。. 有鑑於上述缺失將使本研究有漏失重要文獻之虞,復因 ACM Digital Library 14.

(23) 並不支援批次下載書目資料之功能,且下載之書目資料並不包含摘要,將使得收 集各篇文獻之完整書文資料的時間大幅增加,因此本研究決定不使用搜尋字串搜 尋 ACM SIGCSE Bulletins,而改採人工搜尋方式,將 ACM Digital Library 資料庫 中,自 2000 至 2009 年之 SIGCSE Bulletins 每一期的目錄(Table of Contents)網 頁,儲存成 PDF 檔(如圖 3-2) 。由圖中可見,各期之年份、卷別、及期別清楚標 示於最上方,接著顯示各篇文章之標題、作者、 及頁碼,而後有該文獻全文 PDF 檔之連結,其下則為該文之完整摘要。此種呈現方式便於究者逐一檢視各篇文獻 之標題與摘要以進行初步篩選,並將初步決定保留之文獻其書目資料及摘要登錄 至研究者所建立之資料檔案中,同時點選連結以下載全文檔案,以利進行下一階 段之全文篩選。. 圖 3-2. ACM 電子資料庫中 SIGCSE Bulletin 之目錄格式. 15.

(24) 第二節 文獻篩選 無論在第一階段就標題與摘要進行初步篩選,或於第二階段針對全文進行篩 選,其首要工作乃是訂定文獻篩選準則。此外,研究者在全文篩選過程中,尚須 注意是否有雷同之研究發表於不同的文獻中,此時即需移除重複之文獻,僅保留 其中一篇,以免在資料分析時重複計入。以下分別說明上述各步驟之工作細節。 (一) 訂定文獻篩選準則 研究者在指導教授之建議下,針對研究目的訂定了以下篩選準則: (1) 納入分析之文獻必須是完整的研究論文,而非僅是簡要地報導教學經驗 或心得。 (2) 文獻所報導之教學研究必須以講授程式設計之知識與技能為主要教學目 標,而非為了講授其他主題(如資料結構、演算法、或軟體工程等等) 而附帶包含程式設計之教學內容。 (3) 研究中進行教學實驗之課程必須是針對程式設計「初學者」所開設,學 習者可為大學生或中、小學生。換言之,大學校院為資訊本科系或外系 學生開設之入門程式設計課程,或高中、初中、小學之電腦課中講授程 式設計內容者,均納入本研究所欲收集之文獻範圍。 (4) 文獻中必須清楚描述課堂中所使用之程式設計教學法,且須具體說明師 生所進行之教學活動。例如教學中若以合作學習為教學策略,則須於論 文中詳述學生之合作方式、所使用之討論機制、所從事之合作行為等等。 (5) 研究中所使用之教學法無須倚賴特別設計之專有(proprietary)硬體或軟 體。此限制乃是考量這些硬體或軟體既無法普遍取得,則搭配它們所進 行之教學法即難以推廣。 (6) 研究中之教學必須是針對一般學生;換言之,某教學法若只是針對特殊 需求之學生,則予以排除,例如針對身障學生學習程式設計所採用之特 殊教學法或教學工具即不屬於本研究之文獻收集範圍。 16.

(25) (7) 研究中所報導之教學方法若使用了軟體系統以輔助教學,則該系統必須 用於支援學生之學習活動,而非僅是為了降低教師的教學負擔。例如若 某一研究僅強調如何設計自動評分(automatic grading)系統以幫助教師 批閱程式作業,或只是建置了課程管理軟體(course management system) 以協助教師收發作業、發布課程訊息等等,這些文獻都不在本研究的資 料收集範圍。 (8) 文獻中必須清楚陳述研究結果,亦即必須說明研究中所使用之教學法如 何增進程式設計學習效益,例如學生成績的提升、退選率的降低、學習 動機的增進等等。這些結果可為量化或質性資料。. (二) 依標題與摘要內容篩選文獻 如前所述,本研究在第一階段採用人工篩選方式,逐期審閱 2000 至 2009 年 之間出刊之各期 ACM SIGCSE Bulletin 之目錄,以初步篩選本研究所需之文獻。 此階段之篩選採取從寬認定的原則,只要文獻的標題及摘要提及該研究所針對之 課程屬於程式設計入門課程,或是中、小學的電腦課程,即初步認定符合需求, 而將文獻保留至第二階段。相對地,若文獻摘要中已指明該研究係針對其他課程 (如資料結構或演算法),則該文獻將被排除。 研究者進行本階段之文獻篩選時,由於 ACM Digital Library 在各篇文獻的標 題與書目資料之下均附有文獻全文(full text)之連結,因此當研究者初步認定某 一文獻符合本研究所需時,即可直接點選連結以下載全文儲存於自建的資料庫中。 本研究以 Excel 檔案記錄文獻之編號、出版年份、卷別、期別、標題、作者姓名 等資料 (如圖 3-3),以利進行下一階段之全文篩選。. (三) 全文篩選 第一階段之文獻篩選主要在於排除明顯不屬於本研究範圍之文獻,至於看來 可能屬於本研究所需之文獻,由於研究者通常無法僅根據標題與摘要判定某篇文 17.

(26) 獻是否完全符合上述八項篩選準則,因此在第一階段採取從寬認定的原則,將可 能符合本研究所需之文獻,均予保留至本階段再以全文篩選加以判定。本階段中, 研究者詳細研讀每一篇文獻之全文,並一一核對文章內容是否符合八大篩選準則, 尤其注意檢查文獻中是否提出了程式設計教學新方法,並詳細說明了該教學法如 何改變了課堂教學活動,以及這些教學活動是否提升了學習成效。經此全文篩選 階段,凡是不符合任一篩選準則之文獻均予以排除。. 圖 3-3 本研究以 Excel 檔案記錄之文獻書文資料. (四) 去除雷同文獻 此階段用於判斷是否有作者將同一教學方法發表於兩篇以上的文獻,若發現 有此重複發表的情形,即保留其中教學方法描述最完整的一篇,其餘則予以刪 除。. 上述四大步驟之文獻篩選過程以及各步驟所處理之文獻數目如圖 3-4 所示。 圖中顯示 2000 年至 2009 年發表於 ACM SIGCSE Bulletins 之文獻總數為 3,058 篇, 中根據標題與摘要篩選後,保留了其中的 513 篇;再經全文篩選後,剩餘 82 篇; 82 篇中發現有 3 篇文獻是由相同作者所發表之雷同文獻,去除了其中 3 篇之後, 18.

(27) 最後保留了 79 篇文獻作為下一階段文獻分析之用。. 2000年-2009年 ACM SIGCSE Bulletin 所有文獻:3059篇. 標題摘要篩選剩餘: 513篇. 文獻標題摘要篩選排除 2545篇. 全文篩選剩餘:82篇. 全文篩選排除431篇. 需要分析之文獻:79篇. 去除相似文獻排除3篇. 圖 3-4 文獻篩選過程及各階段所處理之文獻數目. 第三節 文獻資料萃取 本研究根據研究目的設計了文獻資料萃取表,並針對文獻篩選階段所保留之 79 篇文獻,逐篇以萃取表紀錄各篇之重點內容。此表格於初版設計完成之後,先 以數篇文獻試用之,以判斷其適用性;經增補及調整部分欄位後,最後定案之資 料萃取表如表 3-1 所示。此表中已填入萃取自編號第 18 號之文獻的重點內容,藉 以示範本研究萃取資料的做法。 資料萃取表各欄位之說明如下: (1) 文獻標題 (Title):記錄文獻之篇名。 (2) 作者 (Authors):記錄文獻作者。 19.

(28) (3) 期刊/研討會 (Journal/Conference):記錄刊登文獻之期刊或研討會名稱。 (4) 年分 (Year)、卷號 (Volume)、期號 (Issue)、頁碼 (Page):記錄文獻出版年 份、卷號、期號、及頁碼。 (5) 教育階段(School Level) :記錄文獻中所報導的教學方法所針對的教育階段; 選項包含小學、中學、及大學等三個階段。 (6) 課程(Course) :文獻所報導的教學方法使用在哪一門課;選項包含中小學的 電腦課、大學資訊系的程式設計入門課程(如 CS1、CS2) 、為大學非資訊科 系學生開設的程式設計入門課程或相同性質的其他課程(例如大學所開設的 程式設計預修課程) 、為中、小學生開辦的課後班(after-school camps)或程 式設計夏令營(summer camps)等。 (7) 進 行 研 究 之 地 點 ( 國 家 / 學 校 )( Where the Study Was Conducted – Country/School):文獻所報導的研究在哪個國家進行。若文獻中明確指出實 施教學實驗之學校名稱,亦一併填入。 (8) 課程中所講授之程式語言(Programming Language Taught) :課程所採用的程 式語言。 (9) 所強調之重點主題或概念(Topic(s)/Concept(s) Emphasized in Particular):程 式設計教學中特別強調的重點主題或概念(例如遞迴、指標、陣列…等)。 若研究未說明特別強調之主題或概念,則該欄位不填入資料。假使文獻中僅 列舉課程所涵蓋之學習概念,並未特別強調該教學法是針對特定之概念而設 計,則將其視為未強調重點主題或概念。 (10) 教學方法或策略(Teaching Method/Strategy) :記錄教學中所採用的教學方法 或策略。當作者未於文中明確指出教學方法或策略的名稱時,研究者即根據 文中所描述之教學活動,將其對應至適當的教學方法或策略並記錄之;若無 法明確判斷時,則省略不填此欄位。 (11) 理由(Rationale) :研究中採用該教學法或策略進行程式設計教學的理由、作 者所根據的理論或假設等等。若作者未於文中清楚陳述理由,則略過不填。 20.

(29) (12) 所使用之硬體或軟體之功能與目的(Specific Hardware or Software Used (Its Functionality & Purposes)) :教學中若使用了特定的軟/硬體以支援程式設計教 學活動,則於此欄位記錄該硬體或軟體工具之功能與目的。若教學法必須使 用特定的程式設計開發環境(例如 BlueJ、Jeliot),亦將記錄於本欄位中。 (13) 學習活動(Learning Activities Used in Instruction) :教學者為該教學法或教學 策略所設計之學習活動,例如分組合作、遊戲設計、小組競賽…等活動。 (14) 研究結果(Findings):該研究的發現,包含量化與質性的研究結果。 (15) 討論與建議(Discussion/Suggestions) :作者針對研究結果所做的討論與建議。 若文獻中未提供相關資訊則不填入。 表 3-1 資料萃取表格式與範例 Data Extraction Form Title of paper Authors Journal or Conference Year 2003. A Media Computation Course for Non-Majors (#18) Guzdial, M.. School Level. □Elementary. Course. Where the study was conducted (Country/School) Programming Language Taught. ITiCSE 2003 Volume. -. Issue. -. □Secondary. Page #. 115-118. ■College. □Computer Course (elementary & secondary school) □Introductory Programming (College: CS1-CS majors) □Second programming course (College: CS2-CS majors) ■Introductory Programming (non-CS majors) (The course was called “Media Computation,” but was actually an introductory programming course for non-majors) □Other: ______________________________________________ USA (Georgia Tech) □Java □C++ □Lego Mindstorms. □C □Scratch ■Other: Python. □Alice. □Logo. Topic(s)/Concep t(s) Emphasized in Particular. Students learn to program by writing Python programs for manipulating sound, images, and movies. (Students will be able to read, understand, and make functional alterations to small programs (less than 50 lines) that achieve useful communications tasks.). Teaching Method/Strategy. The “media computation” approach. 21.

(30) Rationale.  Studies suggest that computing courses are seen as overly-technical and avoiding relationships to real applications, and are frankly boring and lacking opportunity for creativity.  To explore a media computation approach that will appeal to a liberal arts major, while still retaining a focus on programming.  The premises and core concepts of the proposed course are: • All media are being published today in a digital format. • Digital formats are amenable to manipulation, creation, analysis, and transformation by computer. Text can be interpreted, numbers can be transformed into graphs, video images can be merged, and sounds can be created. We call these activities media computation. • Software is the tool for manipulating digital media. • Core computer science concepts can be introduced through media computation.. Specific Hardware/Softw are Used (Its Functionality & Purposes). (1) JES (Jython Environment for Students): a simple editor and program execution IDE for Python. (2) MediaTools (Movie tools, image tools, sound editing, and sound views such as a sonogram) for students to visualize and explore media and to prepare media for use in their programs. (3) CoWeb collaboration tool to support a collaborative experience for students.. Learning Activities Used in Instruction.  The course is designed to meet the “Imperative First” CS1 general structure and requirements in ACM/IEEE Computing Curriculum 2001. The order of media covered in the course is arranged to correspond to an increasing level of complexity in data structures. • A sound is an array of samples. • A picture is a matrix (two-dimensional array) of pixels. • A directory structure (of media files, to process many files with a single recipe) is a tree of files. • A movie is an array of matrices (frames, as pictures).  The media thus serve as a way of visualizing and making concrete (and interesting) the programs that the students are writing. Once the students are writing programs of increasing complexity, we introduce the ideas of algorithm complexity, object-oriented programming, and recursion as techniques for managing that complexity. The syllabus for the course walks through each media type, with some repetition of concepts so that conditionals and loops can be re-visited in different contexts.  Example program: using API to convert a picture object to greyscale, normalize sounds to a maximum volume, take a filename, then return the sound in that file in reverse, …. Findings.  The retention results have been quite positive. 120 students enrolled for the course, 2/3 female. Only two students withdrew.  On the midterm survey, 97% of the students in the Media Computation course agreed with the statement “Are you learning to program?” compared with 88% in our traditional CS1 course. When asked what students like about the class, the students affirm that we’re succeeding at creating a course that students recognize its applicability.  “What is something interesting, surprising, or useful that you learned?”  Students were buying into the relevance of the course and even finding the computer science interesting 22.

(31) . Discussion/ Suggestions. We chose Jython in order to enable cross-platform multi-media manipulation. We have written a set of Java classes that encapsulate the kind of multimedia functionality that our examples require, as well as a set of Jython classes that provide a simple and useful API to those functionalities. The API was designed based on existing literature on challenges that students find in learning to program, e.g., we allow set-based manipulation of samples and pixels before more complex and general iteration structures are learned. Our API allows for access to the samples that make up sounds and the pixels that make up pictures.. 第四節 文獻資料分析 本研究使用敘述性綜合法進行文獻資料分析。採用此分析方法之主要原因在 於,本研究篩選所得之 79 篇文獻中,各研究所採用之研究法以及所收集之研究 資料之間的歧異性較大,不若某些領域(如醫學)於進行系統性文獻分析時,其 所收集之文獻基本上有著類似的研究方法與資料收集方式,此種情況適合採用後 設分析法,以綜合或比較各文獻以嚴謹方法收集所得且形式較為一致之量化資料。 相對地,本研究所欲分析之文獻中,大多數研究並未實施嚴謹之實驗設計,通常 屬於遷就教學現況之準實驗、行動研究、或僅為非正式之教學實施成果分享。這 些文獻所收集之研究結果中,一部分提供了學生學習成效(如考試成績、程式作 業完成率、課程通過率等等)之比較,大多數所收集之研究結果則以課堂觀察、 教學活動後針對學生所作的問卷調查及訪談、以及教學者的教學日誌等等為主, 以質性資料居多,故較適合採用敘述性綜合分析方法。 本研究之資料分析重點在於彙整各文獻所報導之教學活動及其成效。研究者 將萃取自文獻之教學活動分為七種類型。以下簡述各類型之意涵,以及本研究如 何將各篇文獻所實施之程式設計教學活動歸屬至不同類型。 (1) 結合特定主題之教學範例或作業之教學活動:屬於本類型的文獻皆強調教師 配合學生之學業或生活相關主題來設計教學範例或作業,例如將學生熟悉之 遊戲、物理或化學概念、照片圖像處理等等主題作為範例或作業之主題內容。 另外,使用機器人作為教學媒介或利用 Alice 製作動畫,也歸入本類。 23.

(32) (2) 提供學生彈性選擇不同範例或作業之教學活動:屬於本類型的教學活動中, 文獻會強調教師為了配合學生不同的程度或興趣,設計了不同版本的作業或 練習題供學生自由選擇,例如給予不同難易度的練習、或允許開放式結果的 作業(open-ended assignment)。另外「修改程式碼」的教學活動雖不屬於讓 學生彈性選擇作業,但是「修改程式碼」屬於作業類別的緣故,而本類型教 學活動其特色是以作業為主,故將其歸類在本類型教學活動之中。 (3) 以培養學生問題解決能力為重點之教學活動:屬於本類型之教學文獻會提到 教學著重培養學生的問題解決能力,例如教師於教學中講授問題解決策略, 並要求學生於解題時遵循之;或由助教透過軟體即時觀察學生的解題過程, 並於學生遭遇困難時以提問適時引導學生解題等等。 (4) 合作學習:本類型的文獻強調學生互相合作或分組競爭以完成程式專題。 (5) 強調教學者對學生提供回饋之教學活動:本類文獻多提到探討教學者對學生 的回饋方式如何影響學習成效,因此將文獻中提到有使用助教協助教學的文 獻歸入本類別。另外,小班級教學或使用教學工具輔助提供回饋之文獻也納 入本類中。 (6) 以視覺化工具輔助之教學活動:本類教學文獻皆在教學過程中使用視覺化工 具輔助教學。 (7) 其他不屬於上述六類之活動:本類型之教學活動屬於個別零星的研究,無法 歸入上述任一類型。 多數文獻使用的教學活動可能包含上述兩種或兩種以上的特色,例如編號 42 的文獻包含「遊戲設計」與「修改程式碼」兩種教學活動,則將該文獻同時歸入 「遊戲設計」與「修改程式碼」之中。而少數文獻透過網路平台進行線上合作討 論課業的活動,雖然文獻並未將線上合作討論納入研究重點討論,但本研究仍將 該類文獻歸「合作學習」的文獻之中。. 24.

(33) 第四章 研究結果. 本章以三小節呈現本研究針對篩選所得之 79 篇文獻進行資料分析之結果。 第一節為文獻基本資料,依文獻之出處、文獻作者所屬國家、文獻刊載年份、文 獻所報導之教學研究所針對之教育階段及課程、以及教學中所講授之程式語言等 屬性進行分類;第二節詳述文獻中所使用之教學工具;第三節則針對程式設計教 學活動進行分類,並分析各類型教學活動之特色、適用情境、實施教學活動應注 意之事項、以及教學活動之成效。. 第一節 文獻基本資料 一、文獻出處 表 4-1 為 79 篇文獻依出處歸屬的結果。由表中可見,發表於 SIGCSE 研討會 之論文數量最多,總計有 59 篇,次為 ITiCSE 研討會之論文,計有 17 篇,其餘 3 篇則發表於 ACM SIGCSE Bulletin。 表 4-1 文獻出處分布表 篇數. 刊名/出處 SIGCSE Conference. 59. ITiCSE Conference. 17. ACM SIGCSE Bulletin. 3. 二、文獻作者所屬國家 表 4-2 為 79 篇文獻依作者所屬之學術或研究機構之國籍分類的結果,其中以 美國所發表之論文篇數佔絕大多數,共計 58 篇,將近八成;其次為英國 6 篇, 以及加拿大、中國(含香港)、芬蘭、葡萄牙、德國、以色列等等國家,各為 1 至 3 篇。. 25.

(34) 表 4-2 文獻作者所屬之學術或研究機構之國籍分布表 國家. 美國. 英國. 加拿大. 中國(香港). 篇數. 58. 6. 3. 3. 國家. 芬蘭. 葡萄牙. 德國. 澳洲. 篇數. 2. 2. 1. 1. 國家. 巴基斯坦. 瑞典. 以色列. 篇數. 1. 1. 1. 三、文獻刊載年份 表 4-3 為文獻刊載年份,其中以 2009 年之文獻數量最多,共有 17 篇;2002 年之文獻數量最少,只有 2 篇;其他年份則各為 5 至 10 篇。 表 4-3 文獻刊載年分 年分. 2000. 2001. 2002. 2003. 2004. 篇數. 6. 5. 2. 6. 9. 年分. 2005. 2006. 2007. 2008. 2009. 篇數. 8. 10. 8. 8. 17. 四、文獻所報導之研究所針對之教育階段及課程 表 4-4 為文獻所報導之研究所針對之教育階段。由表中可見,其中針對大學 階段之研究最多,共有 68 篇,而針對高中及國中、小階段之研究則分別為 4 篇 及 7 篇。 表 4-4 文獻所報導之研究所針對之教育階段 教育階段. 大學. 高中. 國中、小. 篇數. 68. 4. 7. 表 4-5 為文獻中所報導在大學階段實施程式設計教學研究之課程。表中 CS1-CS2 一欄表示該文獻所報導之研究橫跨 CS1、CS2 兩課程,而 Non-major 一 欄則是指該課程係為了非主修電腦科學之學生所開設。由表中可看出,針對 CS1 26.

(35) 課程之研究最多,共有 50 篇;若將 CS1-CS2 也包含進去,更達 56 篇之多,可見 研究者最為看重資訊科學本科系學生在入門程式設計課程之學習成效。至於針對 CS0、CS2、和 Non-major 課程之文獻則各為 3 至 5 篇。 表 4-5 在大學階段實施程式設計教學研究之課程分布表 課程類型 篇數 課程類型 篇數. CS0. CS1. CS2. 3. 50. 4. CS1-CS2. Non-major. 6. 5. 針對中、小學程式設計教學之研究中,其實施課程多為課後輔導活動及夏令 營,其教學目的主要為了提升學生未來學習電腦科學之興趣、或培養資訊素養。 由表 4-6 中可見,在 11 篇文獻中,只有 2 篇之研究是在學校的正式電腦課程中實 施程式設計教學,其他 9 篇則皆為夏令營或課後輔導課程。 表 4-6 在中、小學階段實施程式設計教學研究之課程類型 課程類型 篇數. 學校電腦課. 夏令營或課後輔導. 2. 9. 五、文獻所報導之教學研究中所講授之程式語言 表 4-7 為 68 篇屬於大學階段之文獻中所講授之程式語言。由於部分文獻之教 學研究在課程中講授兩種以上之程式語言,因此表 4-7 文獻數量加總大於 68 篇。 由表中可以看出,Java 是實施教學研究的課程中最常講授之程式語言,共有 24 篇,其次為 Python(7 篇) 、C(6 篇) 、以及 C++與 Basic(各 5 篇) ;其他程式語 言(如 Karel、Alice、Pascal)則皆少於 3 篇;至於未於文獻中清楚說明程式語言 名稱之文獻則有 13 篇。 表 4-8 為 11 篇針對中、小學之程式設計教學研究中所講授之程式語言。由表 中可見,講授最多之程式語言為 Alice,共有 4 篇,其次為 Java、Logo、C 各有 2 篇,而 Pascal、Scratch、LEGO 則各有 1 篇。 27.

(36) 表 4-7 屬於大學階段之文獻中所講授之程式語言 程式語言. Java. Python. C. Basic. C++. 篇數. 24. 7. 6. 5. 5. 程式語言. Pascal. HTML. Javascript. Karel. LEGO mindstorms. 篇數. 3. 2. 2. 2. 2. 程式語言. Scratch. Alice. Octave. Robocode. Actionscript. 篇數. 1. 1. 1. 1. 1. 程式語言. SPARK. 未說明. 篇數. 1. 13. 表 4-8 針對中、小學之研究中所講授之程式語言 程式語言 篇數 程式語言 篇數. Alice. Java. 4. 2. Pascal. Scratch. 1. 1. Logo. C. 2. 2. LEGO mindstorms 1. 第二節 文獻中所使用之教學工具 在本研究所萃取的 79 篇文獻中,不同的研究分別使用了不同的教學工具以 增進學習成效,這些教學工具可大別為:程式開發環境、合作學習工具、遊戲開 發工具、視覺化工具、教學回饋工具、機器人程式開發工具、及其他工具等七類, 圖 4-1 為文獻中所使用的教學工具分類圖。 一. 程式開發環境 程式開發環境乃是程式發展過程中所不可或缺的工具,因此在各文獻中,教 師均針對所講授之程式語言為學生選擇了適當的程式開發環境,例如讓學生使用 Eclipse 撰寫 Java 程式等等。本研究之探討範圍限於具有特殊教學功能之開發環 境,至於某些開發環境若只單純作為一般開發環境使用(例如並未強調 Eclipse 與其他 Java 開發環境相較之下對學生有何特殊的學習貢獻),則不納入本研究的 分析討論範圍。以下列舉文獻中所強調具有特殊教學功能及用途之程式開發環 境: 28.

(37) Jython BlueJ. M.U.P.P.E.T.S. CS1 Sandbox. 程式開發環境. JPie Greenfoot. VPython Bricklayer Myro MatPlotLib CoWeb、Google Group. IMinds. 合作學習工具 Praktomat 課程專屬管理系統 GBA and NDS Development Tools. 教學工具. 遊戲開發工具. OpenGL Wu. s Castle. EROSI Tutor. 視覺化工具. PlanAni Jeliot. PRS. 教學回饋工具 個別輔導教學軟體 LEGO Mindstorms. 機器人程式開發 工具. Parallax Scribbler. TeeBoard Pre-programmed Integrated Circuit Microcontroller The Arduino Microcontroller and Integrated Development Environment. 其他工具. JUnit Moodle. WebCat Media tools. 圖 4-1 教學工具分類圖 29.

(38) . Jython:以 Java 寫成的 Python 程式開發環境,它提供了許多適合處理圖片及 聲音之類別庫(class libraries),可讓學生設計包含圖片及聲音的程式範例和 作業。Jython 在研究中皆用於支援「多媒體運算」的教學活動。 (文獻編號 18、 23、32). . BlueJ:便於初學者使用之 Java 開發環境,和工業用的開發環境相比,BlueJ 之介面較為簡潔,且以視覺化方式顯示類別及物件,使用者無須撰寫 Java 程 式碼也可操弄類別及物件。BlueJ 在研究中作為學生課堂上使用的程式設計開 發環境。(文獻編號 19、77). . M.U.P.P.E.T.S :IBM 所開發的 Robocode 所使用的 3D 程式開發環境。教學者 先在該環境中製作坦克車的功能及模組,然後由學生分組合作設計坦克車的 「智慧」功能,並與其他小組比賽哪一組的坦克車的智能最好。M.U.P.P.E.T.S 在研究中用於支援「遊戲設計」教學活動。(文獻編號 40)。. . CS1 Sandbox:介面簡潔的 C++程式開發環境,該環境能限制學生使用的語法, 使其只能使用課堂上教過的語法。隨著課程的進行,學生可下載使用更多的 語法。CS1 Sandbox 在研究中僅作為學生在課堂上使用的程式設計開發環境。 (文獻編號 25). . JPie:Java 的程式設計開發環境,使用者不須輸入指令,而是使用拖放式(drag and drop)的方式拖放程式指令編輯程式,使學生學習時避開語法錯誤。JPie 在研究中僅用於培養學生問題解決能力之教學活動。(文獻編號 26). . Greenfoot:針對初學者設計的 Java 視覺化開發環境。該環境提供一個虛擬的 微世界,使用者可在微世界中建立角色,並以程式設定角色如何與微世界或 其他角色互動,使用者並可透過微世界的介面觀察程式執行結果。Greenfoot 在研究中僅用於遊戲設計教學活動。(文獻編號 75). . VPython:支援 3D 圖像及物件的 Python 視覺化開發環境,可讓學生以其編寫 Python 程式以模擬物理或生物現象,例如模擬氣體分子的速度與溫度的關係 或蛋白質交互作用。VPython 在研究中用於支援「結合學科知識」之教學活 30.

(39) 動。。(文獻編號 66) . Bricklayer:C 程式開發環境,使用者無須輸入指令,而是使用拖放(drag and drop)指令的方式編寫程式,可使學生避免語法錯誤。Bricklayer 在研究中之 用途為讓學生透過該介面設計電路。(文獻編號 73). . Myro:支援 Python 語法的機器人程式設計環境。學生使用 Myro 編寫 Python 程式,讓自己的機器人跳舞或發出聲音,並透過機器人上的感應器和攝影鏡 頭與其他機器人互動。Myro 在研究中用於支援設計機器人的教學活動。(文 獻編號 72). . MatPlotLib:支援 Python 語法的 2D 繪圖工具,能在二維座標中繪圖,例如 畫出聲音的波長。MatPlotLib 在研究中用於支援結合學科知識之教學活動。 (文獻編號 66). 二. 合作學習工具 支援合作學習之輔助工具多半用於讓學生進行課程內容相關之討論與分享。 本研究所分析之文獻中共有九篇使用了合作學習工具,分述如下: . CoWeb、Google Group:學生在課後可透過網路平台分享作品、討論課業的 線上論壇,其主要用途為支援「線上合作學習」活動。(文獻編號 18、23、 32、71). . IMinds:具備聊天室、電子白板、自動分配小組成員…等功能。研究中用於 支援合作學習的拼圖法(jigsaw model)教學活動。(文獻編號 45). . Praktomat:學生使用 Praktomat 上傳作業, Praktomat 可檢查作業正確與否, 並且自動將作業分派給不同的學生進行審查。學生可針對程式的風格、語法、 解題方式進行評論,而上傳該程式的學生即可藉由同學之評論修改程式碼。 (文獻編號 7)。. . 課程專屬管理系統:本類工具乃專為某一課程所自行發展之課程管理系統, 其功能大抵不出上述幾種合作學習工具之組合,在文獻中共支援三種學習活 31.

(40) 動:(1) 讓學生在課後可透過網路平台進行課業討論,助教也可在此平台提供 協助(文獻編號 63) ;(2) 讓學生上傳程式碼,以進行同儕互評,並藉由觀看 同儕之評論而發現自己的錯誤與不足(文獻編號 61) ;(3) 做為小組儲存專案 程式碼之伺服器,讓小組成員可觀看或下載程式碼(文獻編號 34)。. 三. 遊戲開發工具 以下三篇文獻中,在前兩篇所報導之教學研究中,教師讓學生使用商業用遊 戲開發工具來製作遊戲,至於第三篇則是讓學生練習修改遊戲程式: . GBA and NDS Development Tools :GBA 及 NDS 遊戲平台的開發工具,在文 獻中用於讓學生以之撰寫遊戲程式。(文獻編號 68). . OpenGL:2D 和 3D 繪圖程式平台,大多數作業系統和編譯程式都包含 OpenGL 的開發與執行環境。在文獻中用於支援 2D 遊戲開發之教學活動。 (文獻編號 48). . Wu’s Castles:以 RPG Maker 開發的角色扮演闖關遊戲,學生藉由改變迴圈參 數、或是以各種迴圈(例如 for、while、do-while)操控角色,藉以學習迴圈 及條件判斷的概念。(文獻編號 70). 四. 視覺化工具 本研究所分析之文獻中,共有 4 篇採用了視覺化工具以輔助程式設計教學, 分述如下: . EROSI tutor:用於幫助學生學習遞迴概念的視覺化工具,它可動態顯示並記 錄遞迴程式碼的執行狀況。(文獻編號 13). . PlanAni:此工具將程式中具有特殊功能的變數以圖像呈現在螢幕上,並於逐 步執行程式碼的過程中,讓每個變數之圖像隨之變化,以幫助學生了解變數 在程式中所扮演的角色。例如將用於計算迴圈執行次數的變數 stepper,在 PlanAni 的視覺化介面中以腳印的圖像呈現,而當迴圈開始執行且 stepper 數 32.

(41) 值隨之變化時,stepper 的圖像也會跟著數值的變化而移動腳步。(文獻編號 27、41) . Jeliot:視覺化之 Java 開發軟體,該工具能以動畫呈現方法呼叫的狀態、變數 內容、以及「繼承」等物件導向概念,學生可透過動畫觀察程式碼逐步執行 的情形。(文獻編號 77). 五. 教學回饋工具 本類工具為三篇文獻的研究者所採用,其目的在於提供師生間的即時意見交 流。 . PRS(Personal Response System):學習者可透過此個人即時回覆系統,回答 教學者於課堂中提出的問題(選擇題) ,以幫助教師了解學生的學習狀況。 (文 獻編號 33). . 個別輔導教學軟體:助教可透過此軟體觀察每個學生編寫程式碼或虛擬碼的 過程,學生亦可透過此軟體直接向助教提問,並由助教視情況給予即時的協 助。(文獻編號 14、64). 六. 機器人程式開發工具 本研究所分析之 79 篇文獻中,有 4 篇使用機器人程式開發工具,以下列出兩 種機器人的種類及功能: . LEGO Mindstorms:機器人具備聲音、光線、碰撞等感應器,且能做出前進、 轉彎等動作,學生可使用 LEGO Mindstorms 所提供之圖形化介面或以其他語 言編寫程式,以控制機器人的動作。(文獻編號 7、38、74). . Parallax Scribbler:具備感應器、藍芽、可編程的 LED、發聲器和攝影鏡頭等 組件,可搭配 Myro 開發環境編寫程式以操控機器人。(文獻編號 72). 七. 其他工具: 33.

(42) 文獻中另發現五項無法歸入上述任一類型之工具,分述於下: . TeeBoard、Pre-programmed Integrated Circuit Microcontroller、The Arduino Microcontroller and Integrated Development Environment:此三者乃是與「程式 開發環境」中所列出之 Bricklayer 搭配使用之工具,其目的在於讓學生以 Pre-programmed Integrated Circuit Microcontroller 學習基本邏輯電路概念,然 後 以 支 援 C 語 言 之 Arduino Microcontroller and Integrated Development Environment 編寫程式,以便在裝有電子電路及 LED 的衣服(TeeBoard)上 顯示各種文字。(文獻編號 73). . Junit:Junit 是為 Java 設計的開放程式碼單元測試框架,提供多種單元測試的 程式碼讓使用者使用。Junit 在研究中用於支援驅動測試程式開發之教學活動。 (文獻編號 34、65). . Moodle:課程管理系統,本研究中使用 Moodle 的文獻只用在儲存課程資料。 (文獻編號 47). . WebCat:提供軟體測試、自動評分、及自動回饋功能的工具,本研究使用 WebCat 的文獻雖搭配配對程式設計教學活動,但未強調 WebCat 對配對程式 設計的重要性。(文獻編號 56). . Media Tools:可製作包含影像、聲音、圖片等作品之軟體,例如 Photoshop、 Sonogram 等,用於支援多媒體運算的教學活動。(文獻編號 18). 第三節 程式設計教學活動類型 本研究從篩選所得之文獻中,選出較具代表性之教學活動,並依活動之特性 分成七大類,分別為: (一)教學範例或作業結合特定主題之教學活動、(二)提 供學生彈性選擇不同範例或作業之教學活動、(三)以培養學生問題解決能力為 重點之教學活動、 (四)合作學習、 (五)強調教學者對學生提供回饋之教學活動、 (六)以視覺化工具輔助之教學活動、及(七)其他不屬於上述六類之教學活動。 34.

(43) 圖 4-1 為教學活動分類圖。此圖之第二層為七種類型之教學活動,第三層的 長橢圓框中則為歸屬各類教學活動之案例說明,每一案例後面括號中之數字表示 實施該教學活動之文獻篇數,例如圖中右上方「與學科知識結合(9)」,代表著 教學範例和作業與學科知識結合的教學活動共出現在 9 篇文獻中。由於某些文獻 所報導之研究中可能使用了多種教學活動,因此圖中之文獻數量加總後超過 79 篇。. 一、教學範例或作業結合特定主題之教學活動 本類教學活動著重於將教學範例、作業、或專題與學習者生活相關的主題相 結合。研究者採用此教學法大致基於三種理由:(1) 試圖改正傳統課程使用之範 例及練習過於呆板之缺失;(2) 希望藉由活化範例和作業的主題,提升女學生對 於學習程式設計的興趣;(3) 認為將範例、作業與真實世界的問題結合,能有效 增進學生解決問題的能力。 本類教學活動所結合之主題包含學科知識內容、多媒體運算、遊戲設計、機 器人或電路工具、及動畫製作等五項。表 4-9 為教學範例或作業結合特定主題之 文獻一覽表。 表 4-9 教學範例或作業結合特定主題之文獻一覽表 結合之主題. 文獻編號. 結合學科知識內容. 8、22、33、34、36、58、62、66、71. 多媒體運算. 18、23、30、32、46、66. 遊戲設計. 40、42、43、48、59、68、69、70、75. 機器人. 7、38、72、73、74. 動畫製作. 52、67、74. 35.

(44) 結合學科知識內容(9) 多媒體運算(6). 結合特定主題之 教學範例或作業 之教學活動. 遊戲設計(10). 機器人(5) 動畫製作(3). 開放式作業(7). 提供學生彈性選 擇不同範例或作 業之教學活動. 建構式作業(1) 修改程式碼(5). 以培養學生問題 解決能力為重點 之教學活動. 由教學者引導解題(11). 分組合作(20) 配對程式設計(12). 合作學習 同儕程式碼審查(4) 線上合作學習(7). 程式設計 教學活動. 助教提供即時協助(12). 強調教學者對 學生提供回饋 之教學活動. 學生即時回答問題(2) 採用小班教學(1). EROSI Tutor(1). 以視覺化工具輔 助之教學活動. PlanAni(2) Jeliot(1) 驅動開發測試(3) 自我評量(1) 黑箱測試(1). 其他不屬於上述 六類之活動. 簡化的程式開發環境(1) 與Computer Science Unplugged結合之 程式設計活動 (1) 以測驗為主的教學法(2). 以學習單輔助教學(1). 圖 4-2 教學活動分類圖. 36.

參考文獻

相關文件

 It is worthwhile to sacrifice one person to save five.  Passser-by A has nothing to do with the incident. In the basic version, the worker on the side tracks also has nothing

• 訓練課程之設計格式,請參用 本分署規範之課程申請相關表件-學、術科

A study of computer technology use and technology leadership of Texas elementary public school principals. Unpublished doctoral dissertation, University of

The academic achievement of math of high-grade elementary school students is significant related to their SES and the self-concept in math, but is non-related to their

由於資料探勘 Apriori 演算法具有探勘資訊關聯性之特性,因此文具申請資 訊分析系統將所有文具申請之歷史資訊載入系統,利用

由於醫療業導入 ISO 9000 品保系統的「資歷」相當資淺,僅有 三年多的年資 11 ,因此,對於 ISO 9000 品保系統應用於醫療業之相關 研究實在少之又少,本研究嘗試以通過

表 2.1 停車場經營管理模型之之實證應用相關文獻整理 學者 內容 研究方法 結論

通常在研究賽格威這類之平衡系統時在於機構之設計是十分的昂貴,本論文