白 禹,李國勇,王 慧,駱建林
(貴陽學院 大學科技園管理中心,貴州 貴陽 550005)
2017年2月,教育部印發(fā)了《義務教育小學科學課程標準》,明確提出小學科學課程起始年級調整為一年級且原則上要按照小學一、二年級每周不少于1課時安排課程。2017年7月,國務院印發(fā)《新一代人工智能發(fā)展規(guī)劃》,要求在中小學階段設置人工智能相關課程,逐步推廣編程教育,鼓勵社會力量參與寓教于樂的編程教學軟件、游戲的開發(fā)和推廣。信息時代給科學教育專業(yè)提出了新任務,也給算法與程序設計課程提出了新要求。
科教專業(yè)不同于信息類的專業(yè),科教專業(yè)培養(yǎng)學生的目的不是成為一名信息技術從業(yè)者,而是能承擔中小學編程教學的教師。因此,就需要確定三個教學任務:(1)熟悉一門易懂易學的編程語言;(2)通過編程訓練了解和掌握計算思維,計算思維包括從現(xiàn)實中抽象概括的思維、將復雜問題分解的思維以及算法建模的邏輯思維;(3)學會如何將編程能力和計算思維整合以后向中小學生傳輸。
算法與程序設計以C語言教學為主,優(yōu)點在于:(1)C語言是一門在教學、科研與生產中使用非常頻繁的語言,市面上具有大量優(yōu)秀的教材與教輔資料,而且網上也有非常多優(yōu)秀的C語言開發(fā)課程,能方便學生進行資料查找與拓展學習;(2)對于科教專業(yè)的學生來說,C語言的學習有利于親近硬件,理解硬件。為進行后續(xù)的Arduino課程的學習,可以很快地理解和上手;(3)可以為學生自學別的編程語言,諸如Python、R語言、Java等,打下堅實的基礎。
但是,通過長期調查發(fā)現(xiàn),學生對于這門課的滿意度與獲得度都不高,因此,這門課的通過難度大。其中一個最主要原因就是C語言教學。嘗試了很多種教學方法的引入進行教學改革,效果仍然不理想。對原因深層剖析如下:
其一,專業(yè)中貧困生多,農村學生多,在高中階段,基本沒有接觸過編程語言,民族地區(qū)信息技術發(fā)展仍然滯后,少數(shù)民族中小學生信息技術素養(yǎng)偏低。[1]很多同學坦言這是第一次接觸編程語言。C語言、C++以及Pascal是全國青少年信息學奧林匹克競賽(NOIP)指定用語。CCF NOI2019正式選手獲獎中,貴州尚無獲得金牌和銀牌,只有三塊銅牌。多年來,難有金牌和銀牌。因此在初高中編程語言的掌握程度不高。
其二,二本學校的學生普遍英語和數(shù)學基礎差。由于英文基礎差,即使編程語言中只有少量的英文單詞,也會讓學生產生畏懼情緒。特別是計算機教材的例子中的變量名、函數(shù)名等,很多都是選取英文單詞進行簡寫。進一步加劇了這一種情況。學生變成了強行記憶字母組合,而不是根據(jù)變量需要存儲的值的意義的英文單詞的簡寫,這樣去記憶。無疑加大了工作量,而且在程序書寫時,常常由于記憶錯誤而造成程序出錯。計算機算法需要數(shù)學功底和邏輯思維能力。由于學生數(shù)學基礎差,因此學生比較抵觸枯燥的算法邏輯的學習,學習效率不高。
其三,二本學校的學生專注力與自制力較差。高校的專業(yè)課程門類多,而且難有如同高中大量的習題課與復習安排。高校的學習模式決定了學生需要自己花大量的精力在課前課后學習。二本學校的學生專注力與自制力在豐富多彩的高校生活面前更加脆弱。因此,基本上靠課堂老師講解與練習。一門課程得不到大量的練習,就會造成越學越困難,甚至有不少學生從開始學習時的興趣滿滿到在中途放棄學習。
其四,C語言的編寫程序比較自由、語法格式不固定、語法細節(jié)多。[2]需要在一開始就要培養(yǎng)嚴格的代碼書寫規(guī)范。而且C語言難以做到編寫邊運行。需要將整個程序基本寫完,才能運行。每次運行是從第一行代碼開始。這造成了學生難以很好地掌握編程。大量的精力用于去關注語法細節(jié),加大了學習C語言的難度。
Blockly是一個開源的開發(fā)者庫,用于添加基于代碼塊的應用程序,由Google開發(fā)并維護的,于2012年6月進行了發(fā)布。[3,4]Blockly增加了一個可視化代碼編輯器的網頁和移動應用程序。Blockly編輯器使用互鎖的圖形塊來表示諸如變量、邏輯表達式、循環(huán)等代碼概念。它允許用戶應用編程原則,而不必過多地關注語法或命令行上閃爍光標。這樣可以將大量的時間投入到計算思維的培養(yǎng)上面。Blockly將代碼塊變成了類似于積木的圖形塊構成,這使得用戶從枯燥的碼代碼變成了可以通過類似玩拼圖方式。將一個個代碼塊按照一定的順序拼接起來,實現(xiàn)簡單功能,然后再將每一個簡單功能進行組合起來,最終構成實現(xiàn)一個完整功能的程序。Blockly可以在多個操作系統(tǒng)平臺進行編程與運行,包括Windows、Linux、iOS以及Android。
與其他圖形塊編程語言最大的不同在于,Blockly可以將代碼自動轉化為JavaScript、Python、PHP、Lua、Dart以及XML這六種程序語言。這使得學生在掌握Blockly的基礎上,平穩(wěn)地過渡到其他更為常用的編程語言。這種特性,正好是Blockly能成為一門優(yōu)秀的教學語言所具備的特性,能起到承上啟下的作用,而不至于讓別的語言的學習有突兀感,需要重新學習很多知識。可以在學習Blockly的同時,進行適當?shù)臄U展教學,為學習其他語言打下基礎。Blockly的代碼編輯器提供中文界面,這使得英語基礎差的同學不產生一開始的畏懼心理。
算法與程序設計使用Blockly語言進行程序設計與算法展示,通過以設計為中心的小游戲,實現(xiàn)基礎概念和高級應用融合,將理論和實踐有機地結合在一起。學生通過設計游戲,掌握知識點,鞏固教學內容。教師透過游戲的設計,反思學習效果。最終的目的是使學生在掌握Blockly的同時,得到編程素養(yǎng)、邏輯思維能力以及實踐技能的鍛煉,為獨立的解決實際問題打下基礎。具體的教學目標有以下幾個方面:
了解Blockly的概念和應用范圍;掌握Blockly的編程方式;掌握Blockly的八大代碼塊類型:邏輯、循環(huán)、數(shù)學、文本、列表、顏色、變量以及函數(shù);了解算法的概念和表示方法,特別是搜索算法與排序算法;掌握字符串的處理;掌握鏈表的概念與運用,包括動態(tài)鏈表和數(shù)字鏈表;掌握項目的設計開發(fā)流程;了解中小學生編程學習的特點。
算法與程序設計以“培養(yǎng)計算思維”“提高創(chuàng)新能力”“提升中小學信息教育”為宗旨。作為科教專業(yè)的專業(yè)基礎核心課程,培養(yǎng)學生具備從現(xiàn)實中抽象歸納問題的能力,簡單趣味游戲程序開發(fā)能力以及中小學信息技術教育能力,為貴州中小學基礎教育輸送更多優(yōu)質的能勝任信息技術教育的人才。
教學過程中,按照“基本語言塊和基礎概念的講解-應用舉例-設計題目-程序設計-編寫與實現(xiàn)-總結”這樣的流程進行。通過基本語言塊和基礎概念的講解,將基本應該掌握的知識點講解透徹。通過應用舉例,進一步講解和演示知識點的具體用法。利用精心設計的題目,讓學生自行設計程序,鞏固所學的知識。經過模型的建立、代碼的編寫以及功能的實現(xiàn),能讓學生熟悉程序設計的基本開發(fā)模式與算法流程。最后,通過總結歸納,整理收獲。
整個Blockly課堂教學的時間分配,首先前10分鐘的時間,進行知識講解,接下來的15分鐘,進行應用舉例,向學生演示編程的技巧與用法。然后用45分鐘的時間,讓學生完成一個簡單的程序設計,在學生編程的同時,巡查發(fā)現(xiàn)學生的編程問題。在學生課堂練習結束后,利用10分鐘的時間,對學生的成果進行展示,并進行點評,提出不足,如何進行改進完善的思路,最后10分鐘進行課堂教學總結,并且重點講解學生遇到的共性問題,以及如何處理這些問題的方法。
算法與程序設計是一門基礎知識與實踐能力培養(yǎng)為主的課程,側重考查學生在實踐中運用知識的能力。因此,這門課采取考察的形式。最后的綜合成績=期末成績(50%)+平時課堂成績(50%)。期末考查以實現(xiàn)一個相對復雜的游戲為要求。從程序設計邏輯,代碼的優(yōu)化等幾個方面來評分。而平時課堂成績,主要是學生每一次的課題實踐作品的評分。
綜上所述,Blockly比C語言能更好地完成算法與程序設計的教學要求。而且,Blockly將會在非計算機的教育類專業(yè)應用的越來越多。通過教改探索,為科教專業(yè)以及相關專業(yè)在計算機教學方面提供一條新的思路。