摘要:本文分析了非計(jì)算機(jī)專業(yè)計(jì)算思維的培養(yǎng)需求及目前大學(xué)所設(shè)的非計(jì)算機(jī)專業(yè)程序設(shè)計(jì)類課程中存在的問題,并提出應(yīng)注重學(xué)情,因材施教,從課程引入、案例教學(xué)和實(shí)驗(yàn)三個(gè)階段強(qiáng)化計(jì)算思維訓(xùn)練,進(jìn)而提升學(xué)生的信息素養(yǎng)的改革思路。
關(guān)鍵詞:計(jì)算思維;程序設(shè)計(jì)課程;非計(jì)算機(jī)專業(yè)
中圖分類號(hào):G434 文獻(xiàn)標(biāo)識(shí)碼:A 論文編號(hào):1674-2117(2017)08-0089-04
21世紀(jì)是信息和知識(shí)經(jīng)濟(jì)的時(shí)代,它的特征是數(shù)據(jù)資源的開發(fā)、計(jì)算機(jī)和網(wǎng)絡(luò)的廣泛普及,這個(gè)時(shí)代所需要的思維方式是計(jì)算思維方式。[1]因而,計(jì)算思維成為21世紀(jì)大學(xué)生必須具備的基本技能。目前,程序設(shè)計(jì)課程是大學(xué)通識(shí)教育的重要組成部分,它不僅向?qū)W生傳授計(jì)算機(jī)的相關(guān)知識(shí)和技能,更重要的是能夠培養(yǎng)大學(xué)生的思維方式。因此,如何對(duì)程序設(shè)計(jì)課程進(jìn)行教學(xué)改革,將計(jì)算思維能力培養(yǎng)融入教學(xué)過(guò)程,提高學(xué)生運(yùn)用計(jì)算思維分析問題和解決問題的能力是一個(gè)富有挑戰(zhàn)性的研究課題。
非計(jì)算機(jī)專業(yè)的計(jì)算思維培養(yǎng)需求
計(jì)算思維是運(yùn)用計(jì)算機(jī)科學(xué)的基礎(chǔ)概念進(jìn)行問題求解、人類行為理解等一系列的思維活動(dòng)和過(guò)程,是一種以抽象、自動(dòng)化為特征的解決問題的思維方式。[2,3]培養(yǎng)計(jì)算思維的目的是希望所有人都能像計(jì)算機(jī)科學(xué)家一樣思考和分析,把計(jì)算機(jī)技術(shù)與各種學(xué)科理論技術(shù)進(jìn)行融合和創(chuàng)新。研究指出,理論思維、實(shí)驗(yàn)思維、計(jì)算思維共同組成人類認(rèn)識(shí)世界和改造世界的三種思維方式。[4,5]理論思維是用“假設(shè)—推理—證明”等理論手段來(lái)研究社會(huì)自然規(guī)律的邏輯思維,實(shí)驗(yàn)思維是用“實(shí)驗(yàn)—觀察—?dú)w納”等實(shí)驗(yàn)手段來(lái)研究的實(shí)證思維,計(jì)算思維是以“抽象—設(shè)計(jì)/構(gòu)造—編程實(shí)現(xiàn)”等計(jì)算手段來(lái)研究的構(gòu)造思維。隨著對(duì)自然社會(huì)現(xiàn)象和規(guī)律研究的深入,理論思維和實(shí)驗(yàn)手段受到很大的限制,不同學(xué)科研究對(duì)計(jì)算機(jī)科學(xué)的需求日益增強(qiáng),特別是在高端交叉學(xué)科,如“計(jì)算數(shù)學(xué)”“計(jì)算物理”“計(jì)算化學(xué)”“計(jì)算生物”等,這些學(xué)科都需要利用計(jì)算手段來(lái)實(shí)現(xiàn)理論和實(shí)驗(yàn)的協(xié)同創(chuàng)新。
對(duì)非計(jì)算機(jī)專業(yè)人才的計(jì)算思維培養(yǎng)的重任首先落在大學(xué)計(jì)算機(jī)基礎(chǔ)課程的教學(xué)上。因?yàn)橛?jì)算機(jī)基礎(chǔ)課程在小學(xué)、中學(xué)階段都有不同程度的開設(shè),因此在大學(xué)階段,很多高校就不再開設(shè),而主要開設(shè)程序設(shè)計(jì)類課程。高校非計(jì)算機(jī)專業(yè)開設(shè)的程序設(shè)計(jì)類課程主要有“C語(yǔ)言程序設(shè)計(jì)”“Visual C++程序設(shè)計(jì)”“Visual Basic程序設(shè)計(jì)”“Java程序設(shè)計(jì)”等課程(以下簡(jiǎn)稱“程序設(shè)計(jì)類課程”)。程序設(shè)計(jì)類課程能夠培養(yǎng)學(xué)生計(jì)算思維、邏輯思維能力,其開設(shè)對(duì)改善大學(xué)生的知識(shí)結(jié)構(gòu),培養(yǎng)他們的計(jì)算思維、創(chuàng)新能力及提高綜合素質(zhì)都起著十分重要的作用。
非計(jì)算機(jī)專業(yè)程序設(shè)計(jì)類課程教學(xué)現(xiàn)狀及方法改革
1.教學(xué)現(xiàn)狀及存在的問題
程序設(shè)計(jì)類課程的授課對(duì)象為非計(jì)算機(jī)專業(yè)大學(xué)一年級(jí)的學(xué)生,他們當(dāng)中有些是文科生,數(shù)學(xué)基礎(chǔ)差,對(duì)概念不容易理解,且自學(xué)能力差,實(shí)際應(yīng)用則更困難。同時(shí),學(xué)生的學(xué)習(xí)功利性很強(qiáng),對(duì)上機(jī)實(shí)際操作比學(xué)習(xí)理論知識(shí)更有興趣,雖然簡(jiǎn)單的類似課堂內(nèi)容的實(shí)驗(yàn)項(xiàng)目能完成,但解決實(shí)際應(yīng)用問題的能力卻較差。另外,由于課時(shí)有限,程序訓(xùn)練較少,他們很難認(rèn)真獨(dú)立地完成作業(yè)。
2.注重學(xué)情,因材施教,使用案例教學(xué)模式
(1)注重學(xué)情,因材施教
在深入研究非計(jì)算機(jī)專業(yè)大一年級(jí)學(xué)生的認(rèn)知規(guī)律、思維模式和專業(yè)背景后,筆者按照課程知識(shí)的內(nèi)在體系結(jié)構(gòu)梳理了教學(xué)內(nèi)容,并深入淺出、由易到難、循序漸進(jìn)地進(jìn)行了教學(xué)設(shè)計(jì)。實(shí)踐結(jié)果表明,教學(xué)的理論深度要適當(dāng),難點(diǎn)要分散,先修知識(shí)要交代清楚,避免學(xué)生因聽不懂而產(chǎn)生厭學(xué)情緒。同時(shí),在教學(xué)過(guò)程中,要大量使用多媒體教學(xué)和實(shí)際編程環(huán)境演示,增加學(xué)生的感性認(rèn)識(shí);針對(duì)較復(fù)雜的問題要采用講練結(jié)合的形式來(lái)鞏固知識(shí),加深其理解;還要淡化繁瑣的語(yǔ)法規(guī)則,突出重點(diǎn),增加學(xué)科前沿知識(shí)。
(2)使用案例教學(xué)模式
在程序設(shè)計(jì)類課程的教學(xué)中使用案例教學(xué)模式,設(shè)計(jì)豐富生動(dòng)的教學(xué)實(shí)例,如講最大公約數(shù)算法時(shí)引入歐幾里得的故事,講Fibonacci數(shù)列的數(shù)組應(yīng)用時(shí)引入兔子繁殖問題,講雙重循環(huán)時(shí)使用多種金字塔圖形。在課堂教學(xué)中,教師可采用講故事的案例教學(xué)法引出與案例相關(guān)的一系列概念與算法,調(diào)動(dòng)學(xué)生的學(xué)習(xí)積極性,啟發(fā)思維,便于學(xué)生理解。除此之外,還可以采用課程小組、團(tuán)隊(duì)學(xué)習(xí)等形式促進(jìn)學(xué)生共同學(xué)習(xí)、共同探索,提高學(xué)習(xí)效率。
非計(jì)算機(jī)專業(yè)程序設(shè)計(jì)類課程計(jì)算思維的培養(yǎng)實(shí)踐
計(jì)算思維可以貫穿程序設(shè)計(jì)類課程的整個(gè)教學(xué)過(guò)程,下面筆者分別從課程引入、課堂案例教學(xué)和實(shí)驗(yàn)設(shè)計(jì)三個(gè)階段探討如何將程序設(shè)計(jì)類課程與計(jì)算思維有機(jī)地結(jié)合起來(lái)。
1.突出計(jì)算思維的課程引入
首先,筆者點(diǎn)明計(jì)算思維對(duì)學(xué)習(xí)的重要性。既然計(jì)算思維這么重要,那么怎么培養(yǎng)呢?接著告知學(xué)生現(xiàn)在要學(xué)習(xí)的程序設(shè)計(jì)類課程就是培養(yǎng)計(jì)算思維能力的。這就很自然地過(guò)渡到本課程的培養(yǎng)目標(biāo),即培養(yǎng)學(xué)生計(jì)算思維與邏輯思維的能力,培養(yǎng)學(xué)生算法思想與解決問題的能力。然后,介紹主要教學(xué)內(nèi)容,并展示經(jīng)典案例及優(yōu)秀作品,培養(yǎng)學(xué)生的學(xué)習(xí)興趣。例如,展示數(shù)學(xué)四則運(yùn)算實(shí)例;展示輸入你的姓名輸出“***同學(xué),祝你學(xué)好程序設(shè)計(jì)”的實(shí)例;展示小汽車肆意向前奔馳的實(shí)例;展示掃雷游戲?qū)嵗坏鹊?。通過(guò)這些例子讓學(xué)生們看到編程能夠?qū)崿F(xiàn)一些基本功能,進(jìn)而增強(qiáng)他們的自信心和興趣。
實(shí)例展示好后,筆者一步一步演示簡(jiǎn)單的加法運(yùn)算實(shí)例的具體實(shí)現(xiàn)過(guò)程(以Visual Basic程序設(shè)計(jì)為例)。第一步,界面設(shè)計(jì)。演示需要哪些控件進(jìn)行數(shù)據(jù)的輸入輸出以及界面的屬性設(shè)計(jì)等。第二步,代碼設(shè)計(jì)。引導(dǎo)學(xué)生分析問題,如何抽象化和具體化,分析算法和功能,寫出代碼。第三步,調(diào)試運(yùn)行,修改錯(cuò)誤,得出結(jié)果。這個(gè)實(shí)例操作的過(guò)程體現(xiàn)了計(jì)算思維的抽象化和自動(dòng)化特征,達(dá)到了初步培養(yǎng)學(xué)生計(jì)算思維的目的,進(jìn)而實(shí)現(xiàn)了課程引入。
2.基于計(jì)算思維的案例教學(xué):歐幾里得算法
案例教學(xué)可以以“介紹歷史人物故事—算法介紹—算法編寫實(shí)現(xiàn)—算法執(zhí)行過(guò)程講解與輸出”為教學(xué)過(guò)程,體現(xiàn)案例教學(xué)中趣味性和科學(xué)性的結(jié)合。下面,筆者以歐幾里得算法為例介紹教學(xué)過(guò)程。
①介紹歷史人物故事。歐幾里得(公元前330—公元前275),古希臘數(shù)學(xué)家,被稱為“幾何之父”,他的傳世之作《幾何原本》是歐洲數(shù)學(xué)的基礎(chǔ)?!稁缀卧尽返谝淮螌?shí)現(xiàn)了數(shù)學(xué)的系統(tǒng)化、條理化,而且孕育出一個(gè)全新的研究領(lǐng)域——?dú)W幾里得幾何學(xué),簡(jiǎn)稱歐氏幾何。歐幾里得算法與“丟番圖方程可解性問題”相關(guān)。丟番圖也是一位古希臘的數(shù)學(xué)家,是第一位懂得使用符號(hào)代表數(shù)來(lái)研究問題的人,被后人稱為“代數(shù)之父”。他在Arithmetic(《算術(shù)》)一書中提出“有關(guān)兩個(gè)或多個(gè)變量整數(shù)系數(shù)方程的整數(shù)解”的問題。對(duì)于具有整數(shù)系數(shù)的不定方程,如果只考慮其整數(shù)解,這類方程稱為丟番圖方程。例如,只有一個(gè)未知數(shù)的線性丟番圖方程,如ax=b,只要a能整除b,就可判定方程有整數(shù)解,該解為a|b(“|”整除符號(hào))。對(duì)于有兩個(gè)未知數(shù)的線性丟番圖方程,如ax+by=c,先求出a和b的最大公約數(shù)d,若d能整除c(d|c),則該方程有整數(shù)解。因此,對(duì)于有兩個(gè)未知數(shù)的線性丟番圖方程來(lái)說(shuō),求解的關(guān)鍵是求最大公約數(shù)。
②算法介紹。歐幾里得在其著作《幾何原本》中闡述了求解兩個(gè)數(shù)的最大公約數(shù)算法。求能同時(shí)整除a和b的最大正整數(shù)的算法就是著名的歐幾里得算法,又稱輾轉(zhuǎn)相除法。[5]算法步驟為:第一步,輸入兩個(gè)正整數(shù)a、b。第二步,以b除a(或者a除以b),余數(shù)為r。第三步,若余數(shù)r為0,則輸出b,程序結(jié)束;否則,以b置換a,r置換b,又返回第二步。
③算法編寫實(shí)現(xiàn)。歐幾里得算法流程圖與模擬計(jì)算過(guò)程如上圖所示。算法介紹完成以后,根據(jù)所學(xué)編程語(yǔ)言,進(jìn)行編程,并調(diào)試運(yùn)行輸入數(shù)據(jù),輸出結(jié)果。
④算法執(zhí)行過(guò)程講解與輸出。由于部分學(xué)生在高中階段并沒有學(xué)習(xí)過(guò)計(jì)算機(jī)基礎(chǔ)相關(guān)課程,即使學(xué)習(xí)過(guò)也可能會(huì)對(duì)知識(shí)的掌握并不準(zhǔn)確,所以講解程序的編譯輸出過(guò)程有助于學(xué)生了解計(jì)算機(jī)的相關(guān)知識(shí)和工作過(guò)程。
筆者首先講解存儲(chǔ)問題。算法第一步是定義變量和分布變量?jī)?nèi)存空間大小。變量以變量名如a、b形式保存在內(nèi)存空間中,a、b以整形變量2個(gè)字節(jié)的二進(jìn)制形式保存在內(nèi)存地址中。這時(shí)由操作系統(tǒng)來(lái)執(zhí)行,操作系統(tǒng)來(lái)決定程序裝載在哪個(gè)內(nèi)存中,決定程序被CPU的執(zhí)行。講解完存儲(chǔ)問題后,引導(dǎo)學(xué)生理解算法的執(zhí)行。算法的執(zhí)行需要CPU(控制器和運(yùn)輸器)的操作。編譯過(guò)后的機(jī)器語(yǔ)言程序是可以被CPU直接解釋和執(zhí)行的機(jī)器指令,一條機(jī)器指令被分為操作碼和地址碼兩部分,操作碼傳達(dá)給CPU所要進(jìn)行的操作類別,如存數(shù)、取數(shù)、做求余運(yùn)算、打印等,地址碼傳達(dá)給CPU所要操作的數(shù)據(jù)在哪里。然后CPU就執(zhí)行程序了,在一個(gè)機(jī)器周期內(nèi),按“發(fā)送指令地址給存儲(chǔ)器—取出存儲(chǔ)器中指令給控制器—控制其解析指令碼—指令碼控制相關(guān)動(dòng)作執(zhí)行(求余運(yùn)算)”,完成一條指令的執(zhí)行。然后機(jī)器不斷重復(fù)執(zhí)行這樣一個(gè)過(guò)程,直至遇到停機(jī)指令為止,完成程序的執(zhí)行。最后在編譯器中或外存中顯示程序運(yùn)行的結(jié)果。
3.培養(yǎng)學(xué)生自己動(dòng)手練習(xí)和實(shí)驗(yàn)操作
在程序設(shè)計(jì)類課程的課堂教學(xué)中,教師在講完一個(gè)重要算法或知識(shí)點(diǎn)后,要給學(xué)生一個(gè)閱讀或編程練習(xí)的機(jī)會(huì),這樣不僅可以讓學(xué)生鞏固已學(xué)的知識(shí)點(diǎn),增強(qiáng)對(duì)知識(shí)點(diǎn)的理解,而且可以激發(fā)學(xué)生的靈活運(yùn)用,提高其創(chuàng)新能力。筆者基本上會(huì)保證每次課有5~10分鐘的練習(xí)時(shí)間,讓學(xué)生成為學(xué)習(xí)的主體,進(jìn)行探索研究式的自主學(xué)習(xí),讓教師成為教學(xué)的主導(dǎo)者,起到控制學(xué)習(xí)過(guò)程、提供教學(xué)資源和教學(xué)建議的作用。
計(jì)算思維是問題求解的思維,程序設(shè)計(jì)類課程主要培養(yǎng)學(xué)生算法思想與問題求解的思路,因此上機(jī)實(shí)驗(yàn)是培養(yǎng)學(xué)生計(jì)算思維的重要手段,是程序設(shè)計(jì)課程教學(xué)的核心之一,所以教學(xué)中教師要重視上機(jī)實(shí)驗(yàn)。筆者一般安排教學(xué)課時(shí)的四分之一用于上機(jī)實(shí)驗(yàn),上機(jī)實(shí)驗(yàn)內(nèi)容不僅要與教材知識(shí)點(diǎn)同步,而且要有趣味性和綜合性。例如,在分支結(jié)構(gòu)中,安排“健康秤”程序,確定標(biāo)準(zhǔn)身材的身高和體重指數(shù);在循環(huán)實(shí)驗(yàn)中,設(shè)計(jì)“九九乘法表”;在數(shù)組實(shí)驗(yàn)中,設(shè)計(jì)“楊輝三角形”。上機(jī)實(shí)驗(yàn)內(nèi)容一般要提前布置好,3~4題為宜,且難易程度要有一定的梯度。另外,在實(shí)驗(yàn)課上調(diào)試運(yùn)行時(shí),教師要鼓勵(lì)學(xué)生程序出錯(cuò)不要放棄,由于學(xué)生有不同的專業(yè)背景、思維方式和個(gè)體差異,因此在實(shí)現(xiàn)同一問題時(shí),要允許他們使用不同的方法,要鼓勵(lì)他們從不同的視角認(rèn)識(shí)問題,提倡算法的多樣性。
結(jié)論
進(jìn)行計(jì)算思維訓(xùn)練對(duì)21世紀(jì)的大學(xué)生來(lái)說(shuō)是極為重要的。程序設(shè)計(jì)類課程正是鍛煉計(jì)算思維的好的工具和方式,它不僅提高了非計(jì)算機(jī)專業(yè)學(xué)生的信息素養(yǎng),培養(yǎng)了學(xué)生在處理計(jì)算機(jī)問題時(shí)應(yīng)有的思維方法、表達(dá)形式和行為習(xí)慣,而且能夠使學(xué)生準(zhǔn)確地理解計(jì)算機(jī)的實(shí)現(xiàn)機(jī)制,有利于學(xué)生利用計(jì)算機(jī)去解決學(xué)科問題,并進(jìn)行學(xué)科融合和創(chuàng)新。然而,建立科學(xué)的計(jì)算思維培養(yǎng)模式尚處在嘗試階段,還并沒有一個(gè)成熟的模型。因此,如何將計(jì)算思維融入教學(xué),培養(yǎng)學(xué)生自主學(xué)習(xí)能力,培養(yǎng)學(xué)生運(yùn)用計(jì)算思維解決各應(yīng)用學(xué)科問題的能力,還需要教授程序設(shè)計(jì)類課程的教師不斷地探索和實(shí)踐。
參考文獻(xiàn):
[1]王飛躍.面向計(jì)算社會(huì)的計(jì)算素質(zhì)培養(yǎng):計(jì)算思維與計(jì)算文化[J].工業(yè)和信息化教育,2013(6).
[2]Wing JM.Computational Thinking [J].Communications of the ACM,2006,49(3):33-35.
[3]常亮,徐周波,古天龍,等.離散數(shù)學(xué)教學(xué)中的計(jì)算思維培養(yǎng)[J].計(jì)算機(jī)教育,2011(14):90-94.
[4]陳杰華.程序設(shè)計(jì)課程中強(qiáng)化計(jì)算思維訓(xùn)練的實(shí)踐探索[J].計(jì)算機(jī)教育,2009(20):84-85.
[5]戰(zhàn)德臣,聶蘭順.大學(xué)計(jì)算機(jī)——計(jì)算思維導(dǎo)論[M].北京:電子工業(yè)出版社,2014.
作者簡(jiǎn)介:鄭紅波,女,博士,講師,從事程序設(shè)計(jì)教學(xué)和虛擬現(xiàn)實(shí)研究。鄭浩,男,高級(jí)中學(xué)一級(jí)教師,從事數(shù)學(xué)和計(jì)算機(jī)教學(xué)工作;秦緒佳,男,教授,博士生導(dǎo)師,教育部高等學(xué)校文科計(jì)算機(jī)基礎(chǔ)教學(xué)指導(dǎo)委員會(huì)委員,研究方向?yàn)橛?jì)算機(jī)圖形學(xué)。
基金項(xiàng)目:浙江工業(yè)大學(xué)校級(jí)教學(xué)改革項(xiàng)目(JG201512),浙江工業(yè)大學(xué)科研啟動(dòng)金(119005029)。