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