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