摘要:本文通過深入分析計算思維的本質(zhì)特征,研究體現(xiàn)計算思維的核心教學(xué)內(nèi)容,建立了一個貫穿計算思維的“大學(xué)計算機”課程體系,并以Python為載體構(gòu)建了一個循序漸進(jìn)的實驗體系,采用案例驅(qū)動的啟發(fā)式教學(xué)方法開展教學(xué)。六年的教學(xué)實踐證明,通過以問題求解為導(dǎo)向的Python編程實踐,能夠使學(xué)生更好地理解和運用計算思維,激發(fā)學(xué)生運用計算思維方法求解問題的興趣,使學(xué)生的計算思維能力顯著提升。
關(guān)鍵詞:Python;大學(xué)計算機;計算思維;課程體系;實驗體系
中圖分類號:G642 ?文獻(xiàn)標(biāo)識碼:B ?論文編號:1674-2117(2021)07-0097-04
十幾年來,人們逐漸認(rèn)識到計算思維獨特的重要作用,以及計算思維能力培養(yǎng)的重要性和迫切性。國際一流大學(xué)紛紛將計算思維納入各自的專業(yè)與非專業(yè)基礎(chǔ)教學(xué)中,如麻省理工學(xué)院(MIT)、加州大學(xué)伯克利分校、斯坦福大學(xué)、卡內(nèi)基·梅隆大學(xué)等高校均面向全校開設(shè)了以計算思維為核心的計算機基礎(chǔ)課程。國內(nèi)一些高校從2010年開始,陸續(xù)開展以計算思維為導(dǎo)向的課程改革研究,把“計算思維能力的培養(yǎng)”作為計算機基礎(chǔ)教學(xué)的核心任務(wù)。然而,要將計算思維引入“大學(xué)計算機”課程,需要解決一系列的問題:①計算思維包含了眾多的概念,面向非計算機專業(yè)的大一新生,哪些概念是學(xué)生必須掌握的?②課程教學(xué)目標(biāo)究竟應(yīng)該是什么,即課程應(yīng)該如何定位?重點是使學(xué)生掌握必要的計算機基礎(chǔ)知識,掌握Office和操作系統(tǒng),還是使學(xué)生在理解一些計算思維核心概念的基礎(chǔ)上,掌握計算思維的方法去解決實際問題?③既然引入計算思維,必然要有實踐環(huán)節(jié)才能使計算思維能力的培養(yǎng)落地,必然要涉及程序設(shè)計。那么,如何避免課程演變成程序設(shè)計課程?④應(yīng)該采取什么教學(xué)方法,才能使學(xué)生真正理解計算思維的概念,進(jìn)而運用計算思維來解決實際問題?總之,在大學(xué)計算機課程中,怎樣使計算思維能力培養(yǎng)真正落地是改革的關(guān)鍵所在。
筆者所在學(xué)校從2014年開始,對面向全校非計算機專業(yè)本科生開設(shè)的第一門計算機基礎(chǔ)課程“大學(xué)計算機”,從課程體系和實驗體系上進(jìn)行了重大改革,通過深入分析計算思維的本質(zhì)特征,研究體現(xiàn)計算思維的核心教學(xué)內(nèi)容,參照MIT、加州大學(xué)伯克利分校和卡內(nèi)基·梅隆三所大學(xué)的課程教學(xué)大綱和教學(xué)內(nèi)容,確定按照“計算思維基本思想→問題抽象與建?!鷶?shù)據(jù)結(jié)構(gòu)與程序設(shè)計基礎(chǔ)→算法設(shè)計與優(yōu)化→科學(xué)計算與數(shù)據(jù)處理→工程思維及系統(tǒng)設(shè)計方法”的順序,循序漸進(jìn)、抽絲剝繭地講解利用計算思維進(jìn)行問題求解的方法和過程,并選擇Python語言作為落實計算思維概念的編程語言。經(jīng)過六年的教學(xué)實施,取得了較好的教學(xué)效果,達(dá)到了預(yù)期的教學(xué)目標(biāo)。
按照問題求解的過程構(gòu)建一個貫穿計算思維的課程體系
在當(dāng)今以計算思維能力培養(yǎng)為核心的大學(xué)計算機教育階段,“大學(xué)計算機”課程應(yīng)重新進(jìn)行課程定位,該課程既不是一門單純的計算機知識課程,也不是一門程序設(shè)計課程或算法課程,而是一門訓(xùn)練思維方式和工程方法的課程。
該課程的教學(xué)目標(biāo)是:基于OBE(Outcome based on Education,以成果為導(dǎo)向)教育理念,通過課程學(xué)習(xí),使學(xué)生理解計算思維的基本概念和主要思維方法(如約簡、抽象、建模、分解、遞歸等);掌握必要的計算機基礎(chǔ)知識;通過理論學(xué)習(xí)和上機實踐,初步形成解決問題的計算思維,能夠?qū)η蠼鈫栴}進(jìn)行合理的抽象,建立合適的可計算模型,并且具備一定的程序設(shè)計能力;使學(xué)生在各自的專業(yè)中能夠有意識地借鑒、引入計算機科學(xué)中的一些理念、技術(shù)和方法,能夠運用計算思維的一般方法分析問題和解決實際問題,為各專業(yè)的后續(xù)計算機能力和素養(yǎng)的需求提供必要的思維和能力儲備。
筆者所在學(xué)校將該課程設(shè)為48學(xué)時,其中理論教學(xué)26學(xué)時,實驗教學(xué)22學(xué)時。筆者圍繞上述教學(xué)目標(biāo),根據(jù)問題求解的過程,構(gòu)建了一個計算思維貫穿始終的課程體系,共包括5章內(nèi)容,分為13講,如圖1所示。
第1章介紹計算思維的基本概念和主要思維方法、計算機的理論模型(圖靈機)與物理實現(xiàn)(馮·諾伊曼計算機),同時介紹一些必要的計算機基礎(chǔ)知識。
后面的各章內(nèi)容循序漸進(jìn),通過理論學(xué)習(xí)和實踐,使學(xué)生逐步了解、體會和掌握,從而培養(yǎng)學(xué)生以計算思維解決實際問題的基本思維方法。針對一個實際問題,運用計算思維的一般方法進(jìn)行問題求解的全過程:如何對問題進(jìn)行抽象,找出待求解問題的本質(zhì),忽略非本質(zhì)特征,建立計算模型;考慮如何在計算機中存儲數(shù)據(jù)、采用何種方法表征數(shù)據(jù)間的結(jié)構(gòu)關(guān)系;如何選擇已有算法或設(shè)計合適的算法來描述求解問題的方法和步驟,如何對算法進(jìn)行優(yōu)化以提高計算效率;如何編程實現(xiàn)數(shù)據(jù)處理,如何將求解的結(jié)果顯示出來,如何進(jìn)行人機交互,設(shè)計圖形用戶界面(GUI)。
以Python為載體構(gòu)建一個循序漸進(jìn)的實驗體系
在推進(jìn)計算思維能力培養(yǎng)的進(jìn)程中,應(yīng)該如何設(shè)計配套的實驗環(huán)節(jié),才能使計算思維真正落到實處?這其實是一直困擾廣大教師的一個關(guān)鍵問題。
1.編程語言的選擇
計算思維的本質(zhì)是抽象和自動化,抽象是指將欲求解的問題形式化地表示為計算機所能理解的符號模型,進(jìn)而用程序語言描述該模型。自動化是指計算機自動執(zhí)行程序,實現(xiàn)問題求解。要實現(xiàn)問題的自動求解,必須選擇合適的程序設(shè)計語言,編寫相應(yīng)的程序。
盡管“大學(xué)計算機”課程不是一門程序設(shè)計課程,但要想使學(xué)生深入理解計算思維,逐步形成計算思維方式,掌握計算思維的一般方法,編程訓(xùn)練是必不可少的重要環(huán)節(jié)。
目前,國內(nèi)在程序設(shè)計教學(xué)中編程語言大多選擇C或C++或Java,但是,這幾種高級編程語言對語法要求比較嚴(yán)格,對初學(xué)者來說不容易上手,導(dǎo)致學(xué)生花費過多的時間在語法細(xì)節(jié)上,而忽略了對科學(xué)計算問題求解過程的理解,所以并不適于非計算機專業(yè)學(xué)生學(xué)習(xí)。目前,美國的MIT、加州大學(xué)伯克利分校、卡內(nèi)基·梅隆大學(xué)、斯坦福大學(xué)、密歇根州立大學(xué)等知名學(xué)府都是將Python語言作為計算機導(dǎo)論課程的編程語言,或者作為新生入門編程語言。國內(nèi)的上海交通大學(xué)、國防科技大學(xué)、同濟大學(xué)、北京理工大學(xué)、哈爾濱工業(yè)大學(xué)、北京交通大學(xué)等也在“大學(xué)計算機”或“程序設(shè)計”課程中講授Python語言。
Python語言的優(yōu)點是語法簡潔、簡單易學(xué)、功能豐富、代碼優(yōu)美、且包含編程語言所必須包括的編程思想,如條件、分支、循環(huán)、遞歸等。Python語言支持面向過程和面向?qū)ο髢煞N程序設(shè)計方法,同時提供了豐富的標(biāo)準(zhǔn)庫和大量開源的高質(zhì)量庫,有利于幫助學(xué)生迅速學(xué)會編程,激發(fā)學(xué)生對程序設(shè)計的興趣,進(jìn)而掌握運用計算思維理念、利用計算機通過編程解決各種計算問題的方法。該語言只關(guān)心計算問題的求解,其輕量級的語法和高層次的語言表示表達(dá)了應(yīng)用計算機解決問題的計算思維理念。
因此,筆者圍繞Python語言講解程序設(shè)計基本知識,并設(shè)計了相應(yīng)的實驗環(huán)節(jié),來深化學(xué)生對Python語言的理解和應(yīng)用。
2.實驗體系的構(gòu)建
圍繞程序設(shè)計、數(shù)據(jù)結(jié)構(gòu)、算法、科學(xué)計算、可視化這幾個課程核心內(nèi)容,筆者構(gòu)建了一個層次化、循序漸進(jìn)的實驗體系。通過以問題求解為導(dǎo)向的Python編程實踐,使學(xué)生更好地理解“計算思維”求解問題的思想,掌握其方法,從而將計算思維的培養(yǎng)真正落地,提高學(xué)生應(yīng)用“計算思維”方法求解問題的興趣。
實驗體系分為基礎(chǔ)級別實驗、進(jìn)階級別實驗和綜合設(shè)計實驗三個層次(如圖2)。每年組織助教團隊開發(fā)新的實驗,2020年共設(shè)計了平時實驗項目39個,綜合設(shè)計實驗項目5個。其中,基礎(chǔ)級別實驗4次,旨在夯實學(xué)生編程基礎(chǔ)與基本數(shù)據(jù)結(jié)構(gòu)使用和設(shè)計方法。通過實驗訓(xùn)練,使學(xué)生能夠運用Python基本語法進(jìn)行問題模型的描述和簡單問題的求解。進(jìn)階級別實驗4次,目標(biāo)是以實驗項目訓(xùn)練掌握算法思維及科學(xué)計算類問題的求解,重點訓(xùn)練內(nèi)容包括基本算法以及較復(fù)雜算法(如動態(tài)規(guī)劃、貪心法)的設(shè)計與實現(xiàn)、圖形繪制、插值、擬合和GUI設(shè)計。
綜合設(shè)計實驗(大作業(yè)),提供若干綜合了多個知識點、具有一定應(yīng)用場景的選題,只提作業(yè)要求,并不給出實驗指導(dǎo)。大作業(yè)題目難度系數(shù)不同,學(xué)生任選一個自主設(shè)計,獨立完成。大作業(yè)是課程學(xué)習(xí)成果的關(guān)鍵考評指標(biāo)之一,著重考查學(xué)生的自學(xué)能力、自主設(shè)計能力、綜合運用知識解決實際問題的能力。大作業(yè)答辯環(huán)節(jié)要求學(xué)生進(jìn)行PPT演講和現(xiàn)場答辯,鍛煉其總結(jié)、表達(dá)、思辨能力。
教學(xué)實踐與教學(xué)效果
1.案例驅(qū)動的啟發(fā)式教學(xué)方法
計算思維包含若干核心概念,但是比較抽象,學(xué)生一般難以理解。因此,課程團隊設(shè)計了115個體現(xiàn)計算思維主要方法,具有趣味性和實用性、能夠激發(fā)學(xué)生思考的教學(xué)案例,使抽象的概念具體化,來引導(dǎo)學(xué)生的思維。
在教學(xué)過程中,則采用案例驅(qū)動的啟發(fā)式教學(xué)方法:先拋出問題,再給出設(shè)計思路,重點講解設(shè)計技巧和難點。通過分析計算機解題的思路和方法,著重講解如何運用知識將實際問題轉(zhuǎn)化成機器語言的思考過程,包括問題抽象、模型建立、算法設(shè)計、選擇或設(shè)計數(shù)據(jù)結(jié)構(gòu)、編程實現(xiàn),最終交由計算機自動求解,從而促進(jìn)學(xué)生對計算思維抽象和自動化本質(zhì)特征的理解,掌握計算思維面向典型問題的問題求解方法。最后,現(xiàn)場運行程序,使學(xué)生目睹實際運行結(jié)果,增加感性認(rèn)識。
例如,在第1章“計算思維與計算機模型”的最后一節(jié),通過三個典型的案例,分析了計算思維的主要方法的實際應(yīng)用:通過網(wǎng)絡(luò)協(xié)議的一個經(jīng)典問題——兩軍問題,來分析其中蘊含的通信和協(xié)作的思維,并引入網(wǎng)絡(luò)通信、通信協(xié)議等概念。通過計算機網(wǎng)絡(luò)從客戶端到服務(wù)端的訪問過程,來分析計算機網(wǎng)絡(luò)及其模型蘊含的抽象、分解、關(guān)注點分離、建模等計算思維重要方法。最后一個案例從RSA算法的安全性來分析計算的效率問題,使學(xué)生理解為什么說RSA算法理論上是不可攻破的?并思考RSA密鑰長度是不是越大越好,對計算效率有何影響。在第4章中,針對該實例進(jìn)一步討論,在進(jìn)行加密和解密時,如何通過優(yōu)化算法來提高加密和解密的計算效率。
2.教學(xué)效果與評價
從課程教學(xué)的實際效果來看,學(xué)生學(xué)習(xí)了計算機基礎(chǔ)知識,掌握了計算思維基本思想,能熟練運用Python語言的基本語法和基本數(shù)據(jù)結(jié)構(gòu)完成實驗,如常用算法設(shè)計、找最短路徑、字詞統(tǒng)計和顯示、繪制各種圖形、進(jìn)行科學(xué)計算和處理、GUI設(shè)計等。
學(xué)生認(rèn)為學(xué)習(xí)該課程最大的收獲是拓展了分析問題的思路,學(xué)到了新的思維方法。例如,有的學(xué)生認(rèn)為,“該課程鍛煉了我們的計算思維,我們的邏輯思維能力也有大幅度增強。還有的學(xué)生認(rèn)為,該課程的一個很重要的作用就是指引,它讓我們見識到了許多有力的工具,許多有趣的思想;最有用的是Python語言,它擁有太多優(yōu)質(zhì)的模塊。相信在今后的學(xué)習(xí)工作中,它們會成為我得力的助手。
尤其是在大作業(yè)中,學(xué)生充分發(fā)揮自己的想象力,創(chuàng)新設(shè)計,上網(wǎng)查閱資料,自學(xué)更多的新知識,完成的作品各有特色,精彩紛呈,頗有創(chuàng)意。一些優(yōu)秀作品不僅實現(xiàn)了所有必做功能,還部分實現(xiàn)甚至全部實現(xiàn)了選做功能,有的學(xué)生還創(chuàng)新設(shè)計實現(xiàn)了幾個新的功能。
結(jié)語
時代的發(fā)展和社會的進(jìn)步要求大學(xué)應(yīng)培養(yǎng)高素質(zhì)的專業(yè)創(chuàng)新人才,大學(xué)計算機素質(zhì)教育應(yīng)傳承計算文化、弘揚計算科學(xué)和培養(yǎng)計算思維。計算思維的養(yǎng)成不是一朝一夕的事,還有許多問題值得我們思考和研究,如如何結(jié)合后續(xù)專業(yè)課程,設(shè)計一些有針對性的與專業(yè)相融合的案例?如何針對不同專業(yè)需求實施分類教學(xué)?如何結(jié)合MOOC開展混合課堂、研究型教學(xué)等新的教學(xué)模式?
筆者將針對上述問題開展研究和探索,進(jìn)一步深化課程改革,使“大學(xué)計算機”課程真正成為一門對學(xué)生有用、受學(xué)生歡迎的計算思維導(dǎo)論課程。
參考文獻(xiàn):
嵩天,黃天羽,禮欣.Python語言:程序設(shè)計課程教學(xué)改革的理想選擇[J].中國大學(xué)教學(xué), 2016(02):42-47.
作者簡介:艾明晶(1965—),女,湖北省宜昌市人,博士學(xué)位,北京航空航天大學(xué)計算機學(xué)院副教授,虛擬現(xiàn)實技術(shù)與系統(tǒng)國家重點實驗室研究人員。從事EDA技術(shù)、數(shù)字系統(tǒng)設(shè)計和大學(xué)計算機的教學(xué),研究方向為虛擬現(xiàn)實、視頻編碼與圖像處理、嵌入式系統(tǒng)等。