周海芳,周競文,毛曉光,李 暾
(國防科技大學 計算機學院,湖南 長沙 410073)
2006 年,美國計算機科學家Jeannette M.Wing 正式提出了計算思維的概念和體系[1],受到教育界和學術界的廣泛認可,被認為是近十幾年來產生的最具有基礎性和長期性的學術思想。而大學計算機基礎作為高等教育的第一門信息類課程,肩負著使學生逐步建立計算思維的重任。因此,近十年來,國內掀起了大學計算機基礎課程的教育教學改革大潮,從早期的計算機掃盲式的技能訓練目標逐步向思維培養目標過渡。
通過對國內外相關高校目前大學計算機基礎或類似課程開設情況的調研,并認真審視國內近十年的改革成效可知,我國高等教育界對計算思維培養的認知層次提高了、教學內容擴展更新了、實踐范圍拓寬了,但對于如何落實計算思維的培養尚未獲得突破性的進展,相關課程體系和施教方案雖然百花齊放,但有成效的實踐卻鳳毛麟角,與國際一流高校的差距還比較大。
經過十幾年的普及與推廣,計算思維的概念已受到國內外教育界的普遍關注和廣泛認可,總體上看,國際一流高校已經建立了較為先進和完善的課程內容及實踐體系,且各學校的特色十分鮮明。而國內的改革則呈現出百花齊放的現象,但也存在良莠不齊的問題。
自計算思維概念提出以來,國際著名高校都開始重新審視本科計算機相關課程的設置,很多高校對本科第一門計算機課程進行了改革,教學內容從過去的認識計算機泛化到計算理論、方法、評價等更高思維層次的內容,普遍通過程序設計實踐幫助學習者理解計算機科學中的基本概念和原理,初步形成計算思維。例如,美國斯坦福大學的“計算機科學”課程[2]基于JavaScript開發了實驗平臺,在介紹計算機基礎知識的過程中,讓學生通過編寫和運行簡短的代碼來生動體驗計算機的作用和局限性。美國麻省理工學院的“計算機科學和Python 編程導論”課程[3]的主要目標是使學生理解計算機在問題求解中的作用,使不同專業的學生學會編寫小型程序以解決實際問題,主要教學內容包括計算概念、Python 編程語言、一些簡單算法、測試和調試、算法復雜性等。美國加州大學伯克利分校的“計算的樂與美”課程[4]借助自研的Snap 平臺介紹計算原理,把對學生與社會的聯系的關注貫穿課程始終,其中重點關注7 方面的內容(創造力、抽象、數據與信息、算法、編程、網絡、全球影響)和6 種關鍵計算實踐(連接計算、創造計算科學產品、抽象、分析問題及產品、交流與合作)。美國卡耐基·梅隆大學的“計算原理”課程[5]在介紹計算機相關知識的同時,還引入Python 編程,希望學生學會編寫、測試和調試代碼,以解決生活和學習中的一些實際問題。
除教育界之外,計算思維也引起了專業組織、政府、學術界、工業界的廣泛興趣和關注。例如,在美國自然科學基金(NSF)資助下,美國大學理事會牽頭設計了新的進階課程以強調計算和計算思維的能力培養,多所高校分別給出了示范課程[6]。為推動計算思維培養向中小學延伸,NSF 還資助了“21 世紀的計算機教育”項目[7],規劃新的計算機科學進階課程,以發掘中小學教師和學生的計算思維競爭力。在計算思維教學方法研究方面,由Tim Bell 等主持的Computer Science Unplugged 項目[8]倡導不使用計算機來教授計算機科學,來自不同國家的同行為該項目的網站貢獻了大量資源。谷歌、微軟等工業界知名企業也通過資助、合作、共建等方式大力支持計算思維教育教學改革,產生了較大的社會影響。
在國內,陳國良院士率先提出了“在計算機基礎教育中要加強學生計算思維能力的培養”的號召。教育部高等學校計算機基礎課程教學指導委員會于2010 年7 月發布了《九校聯盟(C9)計算機基礎教學發展戰略聯合聲明》[9],確定了以計算思維為核心的計算機基礎課程的教學改革。在此背景下,國內高校紛紛開始了對計算機基礎課程的改革。
通過對中國大學MOOC 和學堂在線上數十門來自不同層次高校的相關課程進行調研,我們認為,國內改革可大致分為3 個流派。一是“激進派”,改革方式是對課程內容推倒重來,具體做法是圍繞計算思維理論,從抽象、計算系統、算法、數據化和網絡化等角度詮釋計算思維的內涵,并用案例加深理解,或者取消原課程,用程序與算法代替,這種流派效果較好,但改革難度和阻力較大,采用這種方法的院校數量不多;二是“取巧派”,在原有計算機核心知識概論的基礎上增加計算思維簡介和練習的內容,或者裁剪計算機核心知識概論的部分內容,而加入程序設計、算法初步等內容,這種知識組合的改革方式相對簡單易行,是一些985、211 大學的普遍做法;三是“保守派”,保持課程原有知識點和技能培訓內容不變,僅在課程簡介里加入“計算思維”的名頭,并沒有實質性的改革。
因此,從前期改革情況看,真正進行較為徹底改革且取得了良好效果的高校并不多,大部分院校在改革過程中還存在諸多不足,與美國等發達國家還有著較為明顯的差距。為此,教育部高等學校大學計算機課程教學指導委員會于2016年再次出臺了《大學計算機基礎課程教學基本要求》[10],指出了前期改革的局限性,從教學目標、內容體系、教學資源建設、教學模式與方法、質量評價等方面提出了新的要求,進一步強調了能力建設。以此為風向標,國內各高校也開始對本校的計算機基礎教學進行新一輪的調整與改進。
在前期研究和實踐中發現,為了更好地完成培養計算思維“第一課”的重任,大學計算機基礎課程的改革不應定位于對原有體系的補充和完善,而是要通過系統規劃課程目標、凝練教學內容、探索新型教學方法和手段來實現從傳統的“知識輸出”到“能力導向”的課程轉型,這一轉型將對我國高校未來的計算機基礎教育具有里程碑意義。國防科技大學于2017 年全面修訂了大學計算機基礎課程的教學大綱,實踐了以計算思維培養為核心目標的課程改革,通過兩輪教學實踐,逐步實現了“能力導向”的課程轉型。
在課程定位方面,主要思路是將傳統的“以教師為主體”講授基本概念和原理的模式改變為“以學生為主體”進行問題求解的過程。具體來說,是將計算機領域廣泛認可的知識模塊(包括基本信息、多媒體信息表示與處理、計算機軟硬件系統、計算機網絡和數據庫技術等)設計成一個個具體的問題,課堂上通過學生探索為主、教師引導為輔的形式對這些問題進行求解。
在明確定位的基礎上,從計算的本質、計算產物、計算效益等方面明確計算思維的內涵,并研究了抽象、建模、分析、交互及協作等基本要素在計算思維建立過程中發揮的作用,由此可系統地描繪學生建立計算思維應具備的核心知識結構和基本能力,進而重新梳理了大學計算機基礎課程的教學內容和知識體系。按照“產出牽引、能力導向”的倒推模式,給出按研究對象劃分的問題式教學內容框架(見表1)。該框架并沒有摒棄傳統意義上的計算機基礎知識結構的構建,而是圍繞建立計算思維的教學目標在不斷深入接觸和運用計算機的實踐中自然而然地將這些知識性的內容納入學生的學習過程中。

表1 問題式教學內容框架
為了切實落實上述教學目標與內容,在教學方法上全面擯棄傳統的以教師為中心的“滿堂灌”教學模式,大幅壓縮基礎理論知識的課堂講授時間,增加學生動手實踐時間,選擇Python語言作為實驗基礎,探索以學生為中心的參與式教學形式,提出“問題引導、知識植入、增量設計”的教學方法。
由表1 可知,教學內容主要由一些具有一定復雜度的應用問題組成。基于由淺入深、循序漸進的“增量式”設計原則,將這些問題的求解過程拆解為若干階梯形的任務步驟,在引導學生一步步完成這些進階任務的過程中適時植入所涉及的計算機領域相關概念和原理。這種教學方式從根本上改變了原有的由教師端向學生端的“知識輸出”模式,變成學生為了達成任務目標而自發去探究背景知識的主動學習行為,再輔以課后“舉一反三”的拓展練習,使學生切實具備運用計算機知識和工具解決具有一定復雜度問題的能力。下面以計算機網絡部分的問題為例,給出具體的教學設計示例,其他案例的具體設計可參考文獻[11]。
計算機網絡部分要解決的問題是“網頁數據獲取與分析”,具體來說,是要利用Python 程序從國防科技大學本科招生信息網(網址:http://www.gotonudt.cn/)上抓取國防科技大學歷年各省的錄取分數數據,對數據進行清洗后存入文本文件,再對文本文件中的數據進行查詢分析和圖形化展示(見圖1)。

圖1 “網頁數據獲取與分析”部分問題描述
我們把該問題的求解過程分解成5 個步驟,安排在3 次課中完成(見表2)。第1 次課是對目錄頁進行抓取和分析,以提取歷年錄取分數數據所在網頁的網址;第2 次課抓取錄取分數數據所在網頁,利用正則表達式提取網頁表格中的數據并存入文本文件;第3 次課對文本文件中的數據進行查詢分析,并對結果進行圖形化展示。通過這種漸進式的設計,由教師引導學生由淺入深、逐步實現最終目標。在求解問題的過程中,根據需要植入計算機網絡方面的相關知識,如在抓取分數線目錄頁時,會引導學生思考網頁文件存在哪、如何標識網絡上的某個網頁、網頁文件是如何到達本地計算機等問題,從而自然地引申出Web、URL、路由等知識。另外,為保證教學效果,要求學生帶電腦進課堂,課堂上邊講邊練,教師講和學生練的比例大概為1:1;為使學生切實理解課堂內容,在課堂上會安排一些配套練習,如要求學生利用HTML 編寫簡單網頁以了解HTML 語言;為保證教學進度,會布置課前作業、安排教輔跟課等。

表2 “網頁數據獲取與分析”部分課堂設計
計算思維和能力的形成需要一個過程,為客觀考查學生在課程學習過程中的效果,我們對課程成績評價體系進行了調整,提出了一套以能力評估為核心的全過程考核方案,主要包括以下兩個方面。
一方面,對形成性成績的占比和構成進行了較大幅度的調整。形成性成績所占比例由過去的30%提高到60%,而期末考試所占比例降低為40%。形成性成績的構成盡量覆蓋學習過程的各個環節,除傳統的課后作業外,還將期中考試、單元測試、專題實訓、課堂表現、課內競賽、小組研討等納入到考查范圍。為兼顧各教學班的專業區別和教師的教學特點,課程組將形成性成績分為統一規定部分和自主規定部分,各教學班級的教師在滿足統一規定部分的基礎上,可靈活設置自主規定部分的成績構成。另外,為支撐上述評價體系有效實施,課程組在EduCoder 網絡實訓平臺(網址:https://www.educoder.net/)上建設了一套適用于本課程的單元測試和網絡實訓項目。基于該平臺的自動檢查機制和分析統計功能,還可以有效減輕教師負擔并有效幫助教師進行過程跟蹤。
另一方面,我們對期中考試和期末考試的考核方式及內容進行了較大幅度的改革。考試內容包括基礎知識運用、Office 技能、Python 問題求解3 個部分,其中,Python 問題求解部分的分值比例大于50%。表3 給出了2017 年和2018 年期中考試和期末考試中一部分Python 問題求解題,這些題目不僅較好覆蓋了課程教學內容,又能較好面向實際,同時也兼顧了同期開設的高等數學、線性代數等課程,能有效考查學生的綜合能力。在考試方式上,考試全程開卷,利用應用型客觀題和編程題取代傳統的知識型問答題,全面摒棄記憶型考題,強調對能力的考察。同時,采用上機考試形式,通過使用全自動考試系統和完善試題庫,保證考試成績的客觀性,省去了試卷批改的工作量。
總體上看,考核的著眼點發生了根本性的變化,考核內容覆蓋面更廣、難度更大,對學生提出了更高的要求。但是,這種面向能力評估的考核改革是落實計算思維培養的重要保障。
本次改革方案從2017 年秋季學期開始正式面向我校所有一年級學生開始實施,教師和學生都碰到了前所未有的挑戰和考驗,但經過第一輪改革過渡后,2018 年秋季學期情況有了明顯改善。從課程期末考試成績來看,2018 年秋季學期的成績更趨于正態分布,且平均分和及格率均較2017年秋季學期有了較大幅度提升(圖2),反映出教師授課更有經驗,學生學習效果更加顯著。

表3 期中考試和期末考試Python 問題求解題目示例

圖2 2017 年和2018 年課程期末考試成績分布
從學習效果來看,兩屆學生較往屆同期學生的計算機應用能力有很大提高。例如,在第二學期的計算機程序設計課程中,這兩屆學生表現出明顯優勢,在考試難度有所提升的情況下及格率和平均分不降反升。我校ACM 集訓隊首次出現大一新生組隊獲得全國賽金牌的成績,涌現出大量將知識內化為計算意識和能力的事例,如利用Python 程序對Word、Excel 文件進行批量修改,通過操作底層數據庫恢復管理信息系統中丟失的數據,編寫游戲外掛等。這些現象都充分驗證了以計算思維培養為導向的大學計算機基礎課程轉型的必要性和有效性。
另外,在分析考試數據的過程中,我們還發現了一個現象。在教學過程中,傳統的計算機技能和基礎理論知識很多都設置為自學方式完成,教師干預較少,但這部分內容的考試成績平均分大多在良好以上,不及格率低于1%;而用計算的方式來解決實際問題是課程改革后的重點,這部分內容的考試成績卻并不理想,僅達到及格線。這個現象也驗證了我們改革的初衷,即傳統的“知識輸出”效率是低下的,學生不需要教師的課堂灌輸也能較好地掌握理論知識,而讓知識內化為能力是困難的,課堂的有效時間應該讓位于以計算思維培養為導向的教學內容,而這些內容的掌握才能真正使學生在各自的專業領域更好地發揮計算機的作用。
為有效落實計算思維培養目標,我校從教學內容、教學方法、考核方式等多個方面對大學計算機基礎課程進行了全面改革,實踐了由“知識輸出”向“能力導向”的課程轉型,取得了一定的成效,可為其他學校同類課程的實施和改革提供參考。
但也應看到,我校在改革過程中也面臨著一些問題,例如,如何進一步有效利用有限的課堂學時,如何適應不同專業的特點,如何與后續相關課程銜接以保證計算思維培養的持續性等,這些問題是我們下一步改革的方向和重點。