徐晶+周彩英+盧雪松+楚紅
摘要:培養(yǎng)計(jì)算思維是培養(yǎng)復(fù)合型創(chuàng)新人才的重要內(nèi)容之一。該文結(jié)合我校非計(jì)算機(jī)專業(yè)程序設(shè)計(jì)課程教學(xué)的實(shí)際,以C語(yǔ)言程序設(shè)計(jì)課程為例,整合教學(xué)內(nèi)容,對(duì)基本語(yǔ)法的問(wèn)題式教學(xué)、基本控制結(jié)構(gòu)的案例教學(xué)及模塊化設(shè)計(jì)的任務(wù)驅(qū)動(dòng)教學(xué)等研究性教學(xué)法進(jìn)行探討,旨在培養(yǎng)學(xué)生的計(jì)算思維能力,進(jìn)一步提高學(xué)生的創(chuàng)新能力。
關(guān)鍵詞:計(jì)算思維;程序設(shè)計(jì);研究性教學(xué)
中圖分類號(hào):G424 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)28-0150-03
1 背景
1.1 計(jì)算思維
“計(jì)算思維”一詞早在2006年美國(guó)卡內(nèi)基梅?。–MU)的周以真教授就給出了定義,其本質(zhì)是抽象和自動(dòng)化。周教授強(qiáng)調(diào)計(jì)算思維不僅屬于計(jì)算機(jī)科學(xué)家,而應(yīng)是每一個(gè)人的基本技能。[1]2010年我國(guó)九校聯(lián)盟會(huì)議也發(fā)表聲明指出,培養(yǎng)復(fù)合型創(chuàng)新人才的一個(gè)重要內(nèi)容就是要潛移默化地培養(yǎng)學(xué)生養(yǎng)成一種新的思維方式——計(jì)算思維。[2]
1.2 研究性教學(xué)
高等教育的任務(wù)是培養(yǎng)具有創(chuàng)新精神創(chuàng)新能力的高級(jí)專門人才。研究性教學(xué)作為一種開(kāi)放式教學(xué)模式,是本科院校培養(yǎng)人才的重要途徑。2000年以來(lái),教育部先后出臺(tái)“關(guān)于加強(qiáng)高等學(xué)校本科教學(xué)工作提高教學(xué)質(zhì)量的若干意見(jiàn)”等文件,都明確提出積極推動(dòng)研究性教學(xué),提高大學(xué)生的創(chuàng)新能力。[3]各高校積極將研究性教學(xué)理念融入到教學(xué)改革中,積極探討研究性教學(xué)的理論與實(shí)踐模式。
由此可見(jiàn),在當(dāng)今信息技術(shù)時(shí)代,培養(yǎng)學(xué)生的計(jì)算思維能力是培養(yǎng)具有創(chuàng)新能力的人才的必要條件。在積極實(shí)踐研究性教學(xué)改革過(guò)程中,不斷滲透計(jì)算思維的思想,培養(yǎng)學(xué)生計(jì)算思維能力,是一項(xiàng)非常有意義的重要任務(wù)。
2 我校計(jì)算機(jī)基礎(chǔ)教學(xué)的現(xiàn)狀
為應(yīng)對(duì)高校計(jì)算機(jī)基礎(chǔ)的教學(xué)改革,我校對(duì)計(jì)算機(jī)基礎(chǔ)課程的教學(xué)做了改動(dòng),非計(jì)算機(jī)專業(yè)學(xué)生第1學(xué)期先行開(kāi)設(shè)大學(xué)計(jì)算機(jī)基礎(chǔ)課程,第2學(xué)期開(kāi)設(shè)程序設(shè)計(jì)課程。這樣使新生在了解計(jì)算思維的概念后,能有意識(shí)地使用計(jì)算思維去思考問(wèn)題、去解決一些基本問(wèn)題,同時(shí)對(duì)后續(xù)開(kāi)設(shè)的程序設(shè)計(jì)課程有一定的鋪墊作用。
我校在研究性教學(xué)初步實(shí)踐的基礎(chǔ)上,現(xiàn)已在18個(gè)專業(yè)全面開(kāi)展研究性教學(xué)改革,計(jì)算機(jī)公共課教學(xué)也在此列中。將研究性教學(xué)改革應(yīng)用于程序設(shè)計(jì)課程,正好解決了目前非計(jì)算機(jī)專業(yè)程序設(shè)計(jì)課程教學(xué)過(guò)程中尷尬局面,其一是教學(xué)過(guò)程中偏重語(yǔ)法講解,內(nèi)容多、晦澀難懂;其二實(shí)驗(yàn)課時(shí)少,學(xué)生編程能力和調(diào)試能力差等。
程序設(shè)計(jì)課程正好也是訓(xùn)練學(xué)生計(jì)算思維能力的一個(gè)重要平臺(tái)。因而,如何在程序設(shè)計(jì)課程的研究性教學(xué)中訓(xùn)練學(xué)生的計(jì)算思維能力,又如何利用學(xué)生的計(jì)算思維能力促進(jìn)程序設(shè)計(jì)課程的教學(xué)改革,則是我們計(jì)算機(jī)公共課教學(xué)工作者要積極思考并付諸實(shí)踐的重要課題。
3 注重計(jì)算思維的程序設(shè)計(jì)課程研究性教學(xué)探討
我們?cè)诜怯?jì)算機(jī)專業(yè)開(kāi)展注重計(jì)算思維的程序設(shè)計(jì)課程(以《C語(yǔ)言程序設(shè)計(jì)》課程為例)研究性教學(xué),是以培養(yǎng)創(chuàng)新人才為目標(biāo),激勵(lì)和引導(dǎo)學(xué)生主動(dòng)發(fā)現(xiàn)問(wèn)題、分析問(wèn)題和解決問(wèn)題,在以教師為主導(dǎo)、學(xué)生為主體的探究過(guò)程中運(yùn)用計(jì)算思維的方法獲取知識(shí)、訓(xùn)練思維、培養(yǎng)能力。
根據(jù)計(jì)算思維和研究性教學(xué)的特點(diǎn),我們從本校實(shí)際情況出發(fā),實(shí)施C語(yǔ)言程序設(shè)計(jì)課程研究性教學(xué)以課堂研究性教學(xué)為主,且又不僅僅局限于課堂中,輔以學(xué)生自主探究、合作學(xué)習(xí)、網(wǎng)絡(luò)自測(cè)、觀看視頻。對(duì)教學(xué)內(nèi)容進(jìn)行整合,將課程內(nèi)容分為幾個(gè)階梯式的程序設(shè)計(jì)階段,依次是語(yǔ)法基礎(chǔ)、基本控制結(jié)構(gòu)、模塊化程序設(shè)計(jì)等。教學(xué)過(guò)程中,根據(jù)具體教學(xué)內(nèi)容靈活運(yùn)用適合于研究性教學(xué)的方法和手段,如問(wèn)題式教學(xué)法、案例教學(xué)法、任務(wù)驅(qū)動(dòng)教學(xué)法等,激發(fā)學(xué)生的學(xué)習(xí)興趣,注重解決實(shí)際問(wèn)題的程序設(shè)計(jì)思想與方法,注重計(jì)算思維能力的培養(yǎng)。
3.1 基本語(yǔ)法的問(wèn)題式教學(xué),培養(yǎng)計(jì)算思維能力
問(wèn)題式教學(xué)通過(guò)提出一系列問(wèn)題來(lái)組織教學(xué)內(nèi)容,把問(wèn)題貫穿于教學(xué)過(guò)程的始終。古人云“學(xué)起于思,思源于疑”,問(wèn)題、疑問(wèn)是思維的“啟發(fā)劑”。我們首先要?jiǎng)?chuàng)設(shè)問(wèn)題情境,激活學(xué)生思維;交流討論,啟發(fā)學(xué)生反向思維;解決疑問(wèn),學(xué)會(huì)計(jì)算思維的方法。
C語(yǔ)言的基本語(yǔ)法、基本控制結(jié)構(gòu)本身就蘊(yùn)含著重要的計(jì)算思維。[4]我們通過(guò)不斷設(shè)問(wèn)、反問(wèn),來(lái)逐步分析、挖掘、探索C語(yǔ)言語(yǔ)法的知識(shí)內(nèi)涵,讓學(xué)生領(lǐng)悟語(yǔ)法定義的目的、形式和使用方式。這樣讓學(xué)生既學(xué)到了C語(yǔ)言基本語(yǔ)法,又有利于在使用過(guò)程中少犯錯(cuò)誤,即使出現(xiàn)語(yǔ)法錯(cuò)誤也能快速找出癥結(jié)所在。
示例問(wèn)題:將華氏溫度轉(zhuǎn)換成攝氏溫度。轉(zhuǎn)換公式:C=5.0/9*(F-32),其中F為華氏溫度。
講解示例,首先設(shè)問(wèn)“如何告訴計(jì)算機(jī)所要完成任務(wù)?”,當(dāng)然用符號(hào)表示(即符號(hào)化),這是一次抽象的過(guò)程。再問(wèn)“直接輸入轉(zhuǎn)換公式,計(jì)算機(jī)能識(shí)別公式中的符號(hào)嗎?”,演示發(fā)現(xiàn)系統(tǒng)會(huì)報(bào)錯(cuò),無(wú)法識(shí)別F和C。接著問(wèn)“怎樣讓系統(tǒng)接受未知的數(shù)據(jù)?”及“在C語(yǔ)言中如何“介紹”新數(shù)據(jù)?”,此時(shí)讓學(xué)生去自學(xué)、討論數(shù)據(jù)對(duì)象的命名規(guī)則及基本數(shù)據(jù)類型,并帶著問(wèn)題“為何不能將形如int、1st、W.Join作為對(duì)象名(用戶標(biāo)識(shí)符)?int和Int在有何區(qū)別?”去思考。通過(guò)討論最終確認(rèn),使用“float F,C;”來(lái)聲明兩個(gè)實(shí)型變量F和C。這又一次的抽象使學(xué)生不僅學(xué)到了知識(shí),而且還體會(huì)計(jì)算思維的確定性和形式化。
聲明變量后,設(shè)問(wèn)“能運(yùn)行并得到正確結(jié)果嗎?答案是多少?”,此時(shí)讓學(xué)生手算或心算,有人發(fā)現(xiàn)F的值未知,無(wú)法計(jì)算。但教師演示系統(tǒng)卻未報(bào)錯(cuò),提問(wèn)“為什么?”學(xué)生帶著好奇,教師道出原因,讓其進(jìn)一步了解變量的含義。為得到正確結(jié)果,需要先為F賦值,設(shè)問(wèn)“怎么賦值?”,學(xué)生回答“F=50”,教師給予肯定的同時(shí)反問(wèn),這樣系統(tǒng)每次運(yùn)行得到的結(jié)果會(huì)怎樣?讓學(xué)生發(fā)現(xiàn)這樣的程序不具備通用性,由此引出C語(yǔ)言的輸入輸出庫(kù)函數(shù)。
以問(wèn)題為中心的教學(xué)示例中,將學(xué)生思考、討論和教師講解、點(diǎn)評(píng)有機(jī)地結(jié)合起來(lái),師生在互動(dòng)中學(xué)習(xí)、探究,教師引導(dǎo)學(xué)生積極主動(dòng)地獲取知識(shí),學(xué)生通過(guò)基本語(yǔ)法的學(xué)習(xí)也培養(yǎng)了計(jì)算思維能力。
3.2 三種控制結(jié)構(gòu)的案例教學(xué),強(qiáng)化計(jì)算思維能力
案例的選取是案例教學(xué)中的關(guān)鍵因素,[5]選取的案例所反應(yīng)的知識(shí)點(diǎn)要豐富,具有針對(duì)性、啟發(fā)性和擴(kuò)展性,應(yīng)由簡(jiǎn)單到復(fù)雜。針對(duì)結(jié)構(gòu)化程序設(shè)計(jì)思想中的順序、選擇和循環(huán)三種結(jié)構(gòu),通過(guò)抽象問(wèn)題、分組討論、集中討論和總結(jié)反思等環(huán)節(jié),使學(xué)生在案例分析的過(guò)程中體會(huì)計(jì)算思維的特征,強(qiáng)化計(jì)算思維能力。
案例1,已知三條邊長(zhǎng),求三角形面積。[6]
學(xué)生課前準(zhǔn)備案例時(shí),收集或查找各種計(jì)算三角形面積的方法。在小組討論時(shí)每位學(xué)生給出不同的解題思路,相互間指出問(wèn)題,比較哪種算法描述更簡(jiǎn)潔。課堂教學(xué)時(shí)采用集中討論,每組推選代表簡(jiǎn)述討論結(jié)果,由教師和其他組學(xué)生給予評(píng)價(jià)。教師在教學(xué)過(guò)程中不斷啟發(fā)學(xué)生、鼓勵(lì)學(xué)生,同時(shí)給出總結(jié),比如該案例使用海倫公式計(jì)算是較方便的方法,使用語(yǔ)言描述算法時(shí)注意的語(yǔ)法規(guī)則。如果有小組提出“三邊能否構(gòu)成三角形”問(wèn)題,則應(yīng)大力表?yè)P(yáng),促使學(xué)生提高思維的縝密性和嚴(yán)謹(jǐn)性,同時(shí)順理成章地引入分支結(jié)構(gòu)。
案例2,比較兩位學(xué)生的成績(jī),輸出最高分。如果人數(shù)擴(kuò)展到3人、N人,如何找出最高分?
案例第1問(wèn)解決思路非常清晰簡(jiǎn)潔,使用1次雙分支結(jié)構(gòu)即可,至少兩種描述方法:if-else和switch-case結(jié)構(gòu)。當(dāng)比較人數(shù)擴(kuò)展到3人時(shí),和學(xué)生探討出多種描述算法,既可以使用嵌套的分支結(jié)構(gòu),也可兩次使用分支結(jié)構(gòu)。通過(guò)討論可以開(kāi)闊學(xué)生的思路,又促使學(xué)生主動(dòng)思考,鼓勵(lì)思維的多樣性。案例的最后一問(wèn)是難點(diǎn),教師應(yīng)給予指點(diǎn),讓學(xué)生帶著問(wèn)題“N個(gè)成績(jī)?nèi)绾未鎯?chǔ)?使用N個(gè)簡(jiǎn)單變量可行嗎?N個(gè)成績(jī)需要比較多少次?”去查資料、思考,有思路也有困惑?!癗個(gè)成績(jī)比較N-1次找出最高分”答案是肯定的,但數(shù)據(jù)存儲(chǔ)是難點(diǎn)。一種思路是用數(shù)組,引入數(shù)組的概念,為下一章做好鋪墊;另一種思路依舊用簡(jiǎn)單變量,但用N個(gè)簡(jiǎn)單變量是不現(xiàn)實(shí)的,引導(dǎo)學(xué)生縱向思考,每次存放一個(gè)成績(jī),重復(fù)N次即可,引入循環(huán)結(jié)構(gòu)。解決方案是用兩個(gè)變量,擂臺(tái)思想,循環(huán)N-1次就能找出N個(gè)中的最高分。
通常我們?cè)O(shè)計(jì)的教學(xué)案例都不是很復(fù)雜,讓學(xué)生努力一下能解決,但是要具備多樣性和擴(kuò)展性,讓學(xué)生從不同角度認(rèn)識(shí)問(wèn)題,用不同方式描述算法,用不同方法實(shí)現(xiàn)問(wèn)題求解。用程序設(shè)計(jì)語(yǔ)言描述、解決問(wèn)題,正是將人的日常思維轉(zhuǎn)換到計(jì)算機(jī)思維的過(guò)程。
3.3 模塊化設(shè)計(jì)的任務(wù)驅(qū)動(dòng)教學(xué),提高計(jì)算思維層次
任務(wù)驅(qū)動(dòng)教學(xué)是一種建立在建構(gòu)主義學(xué)習(xí)理論基礎(chǔ)上的教學(xué)模式,[7]它以教師為主導(dǎo)、學(xué)生為主體,教、學(xué)雙方都圍繞若干項(xiàng)任務(wù)展開(kāi),在求知欲的驅(qū)動(dòng)下,學(xué)生采用自主探究和協(xié)作學(xué)習(xí)方式,根據(jù)對(duì)任務(wù)的理解,運(yùn)用共有知識(shí)和已有經(jīng)驗(yàn)提出解決方案、完成特定任務(wù)。
將任務(wù)驅(qū)動(dòng)教學(xué)法應(yīng)用于程序設(shè)計(jì)課程教學(xué)的后半期,此時(shí)學(xué)生已具備一定的程序設(shè)計(jì)基礎(chǔ)知識(shí)和計(jì)算思維能力,教師把精心準(zhǔn)備的小系統(tǒng)(如一元多項(xiàng)式運(yùn)算系統(tǒng)、基本算術(shù)運(yùn)算測(cè)試系統(tǒng)、矩陣運(yùn)算系統(tǒng)及小規(guī)模信息處理系統(tǒng))的開(kāi)發(fā)任務(wù),分配給每個(gè)協(xié)作小組,也可讓小組(或組長(zhǎng))從若干任務(wù)中挑選。
每個(gè)小組接到不同任務(wù)后,結(jié)合系統(tǒng)設(shè)計(jì)要求,采用自頂向下、逐步細(xì)化、模塊化的方法,設(shè)計(jì)系統(tǒng)的總體結(jié)構(gòu),包括系統(tǒng)的基本處理流程、組織結(jié)構(gòu)、模塊劃分、功能分配、接口設(shè)計(jì)和數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)等。比如一元多項(xiàng)式運(yùn)算系統(tǒng),其設(shè)計(jì)要求是實(shí)現(xiàn)一元多項(xiàng)式的加、減、乘、除運(yùn)算。從表面上看系統(tǒng)應(yīng)由1個(gè)主模塊和4個(gè)子模塊組成,起主導(dǎo)作用的教師要引導(dǎo)學(xué)生運(yùn)用計(jì)算思維的關(guān)注點(diǎn)分離、抽象和分解的方法進(jìn)行分析。為了能進(jìn)行運(yùn)算,首先要輸入一元多項(xiàng)式,運(yùn)算結(jié)束后要輸出一元多項(xiàng)式,增加輸入、輸出兩個(gè)子模塊。在實(shí)現(xiàn)四種運(yùn)算時(shí),引導(dǎo)學(xué)生使用計(jì)算思維的約簡(jiǎn)、嵌入、轉(zhuǎn)化等方法,將其轉(zhuǎn)化成合并同類項(xiàng)、降冪排列、刪除系數(shù)為0項(xiàng)等問(wèn)題,又需增加4~5個(gè)功能模塊。在任務(wù)驅(qū)動(dòng)下,協(xié)作小組成員通過(guò)參考書(shū)、網(wǎng)絡(luò)等自主檢索、探究、思考、討論,對(duì)每個(gè)模塊進(jìn)一步細(xì)化,確定每個(gè)模塊的具體功能,畫(huà)出系統(tǒng)的組織結(jié)構(gòu)圖和基本處理流程。在設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)時(shí),小組成員討論是從已會(huì)的一維、二維數(shù)組中選擇,還是從未學(xué)的結(jié)構(gòu)數(shù)組、鏈表中選擇,既要考慮能便于數(shù)據(jù)的處理,又要考慮組內(nèi)成員的水平,因?yàn)槊總€(gè)系統(tǒng)需組內(nèi)成員分工協(xié)作才能完成。組長(zhǎng)此時(shí)可以協(xié)調(diào),先用一維數(shù)組實(shí)現(xiàn),后期也可在素質(zhì)較高的學(xué)生帶領(lǐng)下使用鏈表等實(shí)現(xiàn),這樣小組成員相互協(xié)作、相互啟發(fā)、共同提高,體現(xiàn)團(tuán)隊(duì)合作的理念。
每位成員領(lǐng)取分解的任務(wù)后,根據(jù)共同確定的數(shù)據(jù)結(jié)構(gòu)和模塊接口的描述,對(duì)具體子模塊進(jìn)行詳細(xì)設(shè)計(jì),給出詳細(xì)的算法描述。然后,分組討論每位成員的算法可行性,以及與其他子模塊之間的調(diào)用關(guān)系,如遇到解決不了的問(wèn)題,教師可參與討論,給予一定指導(dǎo),調(diào)動(dòng)大家的積極性。算法確定后,每位學(xué)員根據(jù)算法編寫代碼并寫出設(shè)計(jì)報(bào)告。協(xié)作小組成員再集中交流各自完成的情況,由組長(zhǎng)集成系統(tǒng)代碼,組員一起參與調(diào)試過(guò)程,發(fā)現(xiàn)問(wèn)題解決問(wèn)題,共同進(jìn)步。每位學(xué)員按照?qǐng)?bào)告模板提交各自的設(shè)計(jì)成果,采用答辯的形式在班級(jí)討論課上進(jìn)行匯報(bào)。答辯過(guò)程中,教師和其他學(xué)生可以提出看法和觀點(diǎn),教師應(yīng)對(duì)答辯學(xué)生的講述和提出異議的觀點(diǎn)進(jìn)行正誤的分析,因?yàn)閷W(xué)生為了完成這項(xiàng)任務(wù)都是深思熟慮的,教師及時(shí)地分析總結(jié)歸納,不僅使學(xué)生對(duì)所學(xué)知識(shí)的鞏固,而且進(jìn)一步擴(kuò)展學(xué)生的計(jì)算思維能力。
采用任務(wù)驅(qū)動(dòng)教學(xué)法不再?gòu)?qiáng)調(diào)系統(tǒng)開(kāi)發(fā)的成功與否,而是強(qiáng)調(diào)學(xué)生在系統(tǒng)設(shè)計(jì)過(guò)程中的收獲。每位學(xué)生通過(guò)對(duì)具體問(wèn)題分析、討論、解決,不斷訓(xùn)練自己的計(jì)算思維能力,通過(guò)以小組方式進(jìn)行一個(gè)小規(guī)模系統(tǒng)的設(shè)計(jì),將學(xué)生的計(jì)算思維能力提高了一個(gè)層次。
4 結(jié)語(yǔ)
在程序設(shè)計(jì)課程研究性教學(xué)過(guò)程中不斷滲透計(jì)算思維的思想,更加利于學(xué)生對(duì)知識(shí)的掌握,同時(shí)利于提高計(jì)算思維能力,推動(dòng)學(xué)生創(chuàng)新能力的進(jìn)一步發(fā)展。我們從學(xué)校實(shí)際出發(fā),提出整合教學(xué)內(nèi)容,對(duì)基本語(yǔ)法的問(wèn)題式教學(xué)、基本控制結(jié)構(gòu)的案例教學(xué)及模塊化設(shè)計(jì)的任務(wù)驅(qū)動(dòng)教學(xué)等研究性教學(xué)法進(jìn)行探討,以期使教師能夠擺脫教材束縛,將理論與實(shí)驗(yàn)課時(shí)、課內(nèi)和課外充分利用,更好地發(fā)揮教學(xué)的自主性,促進(jìn)學(xué)生的計(jì)算思維能力的提高。
參考文獻(xiàn):
[1] Jeannette M.Wing.Computational Thinking[J].Communications of the ACM,2006,49(3):33-35.
[2] 何欽銘,陸漢權(quán),馮博琴. 計(jì)算機(jī)基礎(chǔ)教學(xué)的核心任務(wù)是計(jì)算思維能力的培養(yǎng)[J]. 中國(guó)大學(xué)教學(xué),2010( 9):5-9.
[3] 徐風(fēng)生. 研究性教學(xué)的理論探討與實(shí)踐[J]. 高等理科教育,2012(6):44-48.
[4] 徐新海,林宇斐. 注重計(jì)算機(jī)思維的啟發(fā)式C語(yǔ)言語(yǔ)法教學(xué)[J]. 計(jì)算機(jī)教育,2014(9):1-4.
[5] 唐芳. 案例教學(xué)法與任務(wù)驅(qū)動(dòng)教學(xué)法的比較[J]. 順德職業(yè)技術(shù)學(xué)院學(xué)報(bào),2011(10):36-37
[6] 周彩英. C語(yǔ)言程序設(shè)計(jì)[M]. 北京:清華大學(xué)出版社,2011.
[7] 牟琴,譚良,周雄峻. 基于計(jì)算思維的任務(wù)驅(qū)動(dòng)式教學(xué)模式的研究[J]. 現(xiàn)代教育技術(shù),2011(6): 44-49.