匡春臨 蔣勝利
[摘 要] 針對高校新生亟需加強(qiáng)計(jì)算思維能力培養(yǎng)的狀況,分析在“C程序設(shè)計(jì)”課程中引入計(jì)算思維的必要性與可行性,提出在“C程序設(shè)計(jì)”教學(xué)內(nèi)容及過程中全面引入計(jì)算思維思想,改驗(yàn)證性為主的實(shí)驗(yàn)教學(xué)為分析探究性為主,并對教改學(xué)生與傳統(tǒng)教學(xué)學(xué)生的考試成績進(jìn)行了分析與比較。
[關(guān)鍵詞] 計(jì)算思維;C程序設(shè)計(jì);教學(xué)內(nèi)容
在世界信息化過程中,中國的“后發(fā)優(yōu)勢”已經(jīng)所剩無幾[1]。因此,加強(qiáng)以計(jì)算思維為核心的計(jì)算機(jī)科學(xué)教育,提升全民的數(shù)字素養(yǎng),提升國家在信息技術(shù)領(lǐng)域的創(chuàng)新能力是當(dāng)務(wù)之急。我國在2010年7月,迅速確定了以計(jì)算思維為核心的計(jì)算機(jī)基礎(chǔ)課程的教學(xué)改革,計(jì)算機(jī)教育界普遍認(rèn)為大學(xué)第一門計(jì)算機(jī)基礎(chǔ)課程是計(jì)算思維能力培養(yǎng)的關(guān)鍵[2]。然而,有個(gè)普遍的觀點(diǎn)認(rèn)為計(jì)算機(jī)只是工具,所以在計(jì)算機(jī)教育中還存在的很多片面觀點(diǎn),即使開設(shè)了以計(jì)算思維為導(dǎo)向的計(jì)算機(jī)基礎(chǔ)課程,但缺少知識的內(nèi)在聯(lián)系,沒有考慮教育對象的接受能力[3],在具體的實(shí)施過程中也不理想。C語言是完全模塊化和結(jié)構(gòu)化的高級語言,具有運(yùn)算符、數(shù)據(jù)類型豐富、與計(jì)算機(jī)硬件聯(lián)系緊密等特點(diǎn)。因此,作為計(jì)算機(jī)基礎(chǔ)課程群課程之一的“C程序設(shè)計(jì)”,從理論層面、實(shí)踐訓(xùn)練層面以及難度把控上,都非常適合用以培養(yǎng)新生的計(jì)算思維意識。
一、“C程序設(shè)計(jì)”教學(xué)中存在的問題
近年來,“C程序設(shè)計(jì)”的教學(xué)內(nèi)容及方法不斷得到改進(jìn),大大提高了學(xué)生的實(shí)踐能力,計(jì)算思維也被引入“C程序設(shè)計(jì)”課程的部分知識點(diǎn)或教學(xué)方法上[4],但仍存在諸多不足。尤其在一些應(yīng)用型高校,普遍存在“重語法、練代碼,輕設(shè)計(jì)、少分析”的現(xiàn)象。教師只是把C語言當(dāng)成一種編程語言,而缺少分析問題、解決問題的訓(xùn)練,割裂“C程序設(shè)計(jì)”與學(xué)科間聯(lián)系的問題尤其突出。另外,以驗(yàn)證為主的實(shí)驗(yàn)也把學(xué)生禁錮在“重語法、練代碼,輕設(shè)計(jì)、少分析”的教條中。
二、引入計(jì)算思維的“C程序設(shè)計(jì)”
計(jì)算思維內(nèi)涵豐富,“C程序設(shè)計(jì)”作為計(jì)算機(jī)專業(yè)的入門課,不能深入講授相關(guān)理論,但深入淺出地講解一些內(nèi)涵知識,對培養(yǎng)學(xué)生的計(jì)算思維意識非常重要。因此,“C程序設(shè)計(jì)”課程要從教學(xué)內(nèi)容和教學(xué)方法改革入手,摒細(xì)節(jié),抓思想,加強(qiáng)思維能力的訓(xùn)練,創(chuàng)造性地編寫C程序。
1.引入計(jì)算科學(xué)的思想,培養(yǎng)分析問題、解決問題的能力。在“C程序設(shè)計(jì)”課程中,要讓學(xué)生了解計(jì)算科學(xué)中形式化描述的概念,學(xué)會分析簡單的計(jì)算復(fù)雜度,理解并會用遞歸定義分析問題。學(xué)會使用符號系統(tǒng)對求解問題進(jìn)行精確而嚴(yán)格的描述,對實(shí)際系統(tǒng)抽象建模。這個(gè)階段是學(xué)生計(jì)算思維意識的萌芽期,需避免過多的理論知識,如何深入淺出、理論聯(lián)系日常生活將是講授這些概念的關(guān)鍵。變量、數(shù)組、結(jié)構(gòu)體等知識點(diǎn),可以鍛煉學(xué)生的數(shù)據(jù)抽象能力。通過實(shí)例培養(yǎng)學(xué)生認(rèn)識到,同一個(gè)事物在面對不同問題求解時(shí),抽象出來的數(shù)據(jù)模型可以是不同的。功能驅(qū)動的程序設(shè)計(jì)、模塊化編程能夠培養(yǎng)學(xué)生的過程抽象能力。C語言函數(shù)和多文件編程就是理解這個(gè)概念非常好的素材。在實(shí)際教學(xué)過程中,可以把函數(shù)的教學(xué)直接放到結(jié)構(gòu)化程序設(shè)計(jì)前,盡可能早地培養(yǎng)學(xué)生模塊化程序設(shè)計(jì)思想。
2.了解計(jì)算機(jī)工作的原理,明白自動計(jì)算的本質(zhì)。馮·諾依曼體系的電子計(jì)算機(jī)問世后,“計(jì)算”已經(jīng)無時(shí)無刻不在影響著我們的生活。在教學(xué)中,可以從計(jì)算機(jī)中的數(shù)制開始,讓學(xué)生了解自動計(jì)算的概念。僅僅用0和1兩個(gè)最簡單的代碼來表述世界上最復(fù)雜的事物,進(jìn)行最復(fù)雜計(jì)算,這本身就是吸引學(xué)生關(guān)注的一個(gè)興奮點(diǎn)。當(dāng)學(xué)生明白了日常生活中的數(shù)據(jù)是如何在計(jì)算機(jī)中以二進(jìn)制的形式表示,以及如何處理這些數(shù)據(jù)時(shí),計(jì)算思維就在學(xué)生的意識中播下了種子。在以數(shù)據(jù)為中心的程序設(shè)計(jì)中,作為馮·諾依曼機(jī)的核心模塊之一的內(nèi)存,尤其重要。C程序設(shè)計(jì)的本質(zhì)就是對內(nèi)存的讀寫,C語言從最基本的常量、變量到數(shù)組、指針等數(shù)據(jù),無不與內(nèi)存有緊密聯(lián)系。學(xué)生掌握了內(nèi)存的實(shí)質(zhì),才是真正理解C程序設(shè)計(jì)的內(nèi)涵。在“C程序設(shè)計(jì)”中,內(nèi)存是抽象的,學(xué)生必須理解內(nèi)存是由若干個(gè)具有地址編碼的存儲單元組成的線性空間,以及程序設(shè)計(jì)如何在這個(gè)空間上進(jìn)行數(shù)據(jù)的讀寫、內(nèi)存單元的申請與釋放。
3.引入算法概念,掌握基本的算法。C語言作為入門課程,考慮其特點(diǎn)和學(xué)生的能力,可以引入基本的算法,如窮舉法、遞推法、迭代法、遞歸法以及分治法等。通過對這些算法的分析與訓(xùn)練,逐步培養(yǎng)學(xué)生的算法意識,學(xué)會設(shè)計(jì)算法,并依據(jù)算法編寫程序,分析算法的復(fù)雜度,學(xué)會利用算法解決問題。在教學(xué)過程中,必須要讓算法設(shè)計(jì)與語法學(xué)習(xí)居于同等位置。
4.引入計(jì)算思維,強(qiáng)化實(shí)驗(yàn)訓(xùn)練。引入計(jì)算思維的實(shí)驗(yàn)課,必須改驗(yàn)證性的實(shí)驗(yàn)為分析性的。學(xué)生寫出的程序不僅是要執(zhí)行出來結(jié)果,更要讓學(xué)生開拓思維,用不同的算法、方法解決問題,并且要學(xué)會分析不同算法、方法之間的區(qū)別。這樣不僅可以提高學(xué)生編程的興趣,更重要的是訓(xùn)練了學(xué)生分析問題的能力,有助于培養(yǎng)其創(chuàng)新思維意識。在實(shí)驗(yàn)中引入時(shí)間或空間復(fù)雜度分析,變驗(yàn)證性為分析性實(shí)驗(yàn),找到不同程序(算法)性能差異的原因,進(jìn)而達(dá)到在限定復(fù)雜度內(nèi)設(shè)計(jì)算法、編寫程序,還可以在班內(nèi)搞對抗賽等活動提高學(xué)生的興趣。
總之,在引入計(jì)算思維的“C程序設(shè)計(jì)”課程的教學(xué)過程中,教師不僅需要培養(yǎng)學(xué)生動手寫代碼的能力,更需要引導(dǎo)學(xué)生去思考代碼的本質(zhì)。圖1詮釋如何訓(xùn)練學(xué)生的計(jì)算思維能力。
項(xiàng)目中,針對洛陽師范學(xué)院信息技術(shù)學(xué)院2018級學(xué)生實(shí)施傳統(tǒng)教學(xué)模式與計(jì)算思維教學(xué)模式的期末考試情況做了對比,對比情況如表1所示。其中,后者在優(yōu)秀率上比前者要好,但在不合格率上要差。這個(gè)原因初步判斷一是樣本不夠大,二是設(shè)計(jì)的教學(xué)案例單調(diào)、難度缺少梯度、數(shù)量偏少。后續(xù)要對這些問題進(jìn)行整改,同時(shí)對這些學(xué)生進(jìn)行跟蹤調(diào)查,進(jìn)一步了解引入計(jì)算思維訓(xùn)練的學(xué)生后期學(xué)習(xí)情況。
三、結(jié)語
把計(jì)算思維的思想有機(jī)融入“C程序設(shè)計(jì)”教學(xué),要避免出現(xiàn)“拼盤”式、“狹義計(jì)算思維”[3]的誤區(qū),調(diào)整教學(xué)內(nèi)容的側(cè)重點(diǎn),采用講授程序轉(zhuǎn)變到分析語法本質(zhì)的教學(xué)方法,摒棄代碼公式的訓(xùn)練方式。計(jì)算思維能力的培養(yǎng)是一個(gè)循序漸進(jìn)的過程,實(shí)踐中需要教師在教學(xué)過程中潛移默化地影響學(xué)生,灌輸計(jì)算思維的思想,切不能急躁冒進(jìn)。
參考文獻(xiàn)
[1]周宏仁.互聯(lián)網(wǎng)+與制造業(yè)融合的發(fā)展趨勢[EB/OL].搜狐網(wǎng),2018-03-19.
[2]陳國良,董榮勝.計(jì)算思維與大學(xué)計(jì)算機(jī)基礎(chǔ)教育[J].中國大學(xué)教學(xué),2011(1):7-11.
[3]唐培和.計(jì)算思維——計(jì)算學(xué)科導(dǎo)論[M].北京:電子工業(yè)出版社,2015.
[4]鄭冰,寧鵬飛.基于JiTT模式的C語言教學(xué)中計(jì)算思維的培養(yǎng)[J].計(jì)算機(jī)教育,2018(10):101-104.