李淑琴 ,丁 濛 ,孟 坤
(1.北京信息科技大學(xué) 計(jì)算機(jī)學(xué)院,北京100101;2.感知與計(jì)算智能聯(lián)合實(shí)驗(yàn)室,北京 100101)
程序設(shè)計(jì)能力是當(dāng)代大學(xué)生計(jì)算機(jī)方面的基礎(chǔ)和核心能力,更是計(jì)算機(jī)專(zhuān)業(yè)學(xué)生最重要的職業(yè)能力[1]。如何提高計(jì)算機(jī)專(zhuān)業(yè)學(xué)生的程序設(shè)計(jì)能力,一直是各高校研究的熱點(diǎn)。如果只是對(duì)計(jì)算機(jī)程序設(shè)計(jì)的知識(shí)理論進(jìn)行了解以及掌握是遠(yuǎn)遠(yuǎn)不夠的,只有不斷地對(duì)其進(jìn)行實(shí)踐,強(qiáng)化其應(yīng)用的體驗(yàn)過(guò)程,注重理論和實(shí)踐的結(jié)合,學(xué)生才能得到更加全面的發(fā)展[2]。
高校程序設(shè)計(jì)課程集中在一至二年級(jí)的4個(gè)學(xué)期,主要包括程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)、面向?qū)ο蠹夹g(shù)、數(shù)據(jù)結(jié)構(gòu)等,這些課程一般由基礎(chǔ)教學(xué)和綜合實(shí)踐教學(xué)組成?;A(chǔ)教學(xué)注重課程知識(shí)的講解,并配有課內(nèi)實(shí)踐;綜合實(shí)踐教學(xué)被定位為課程知識(shí)的運(yùn)用,一般由課堂教學(xué)案例和綜合實(shí)踐兩部分構(gòu)成。
雖然學(xué)校和學(xué)生都很重視這些課程,但是學(xué)生學(xué)習(xí)完這些課程后,甚至已到做畢業(yè)設(shè)計(jì)還是不會(huì)調(diào)試和編程序,拿到題目沒(méi)有頭緒,感到無(wú)從下手,編程錯(cuò)誤百出,更有甚者還產(chǎn)生編程恐懼或厭倦情緒。分析其原因主要有以下幾點(diǎn)。
雖然教學(xué)計(jì)劃中程序設(shè)計(jì)課程群的設(shè)置是分層次、遞進(jìn)式教學(xué)體系,但是綜合實(shí)踐教學(xué)存在一定的孤立性,各門(mén)課程之間知識(shí)點(diǎn)聯(lián)結(jié)程度較低,特別是不同課程綜合實(shí)踐教學(xué)案例的設(shè)計(jì)沒(méi)有任何的聯(lián)系,缺乏一定的整體感和連續(xù)性,這種隱形的切割導(dǎo)致學(xué)生對(duì)所學(xué)知識(shí)融會(huì)貫通性差,使得其思路無(wú)法進(jìn)行拓寬。
綜合實(shí)驗(yàn)基本上是圍繞教學(xué)內(nèi)容展開(kāi)的,實(shí)驗(yàn)的內(nèi)容多是為了驗(yàn)證語(yǔ)法或課堂講的知識(shí),使得編程變得枯燥乏味,提不起學(xué)生學(xué)習(xí)的興趣,學(xué)生為完成作業(yè)而上機(jī),長(zhǎng)此以往,就會(huì)對(duì)編程失去興趣。
編程是一個(gè)枯燥的過(guò)程,目前我國(guó)計(jì)算機(jī)程序設(shè)計(jì)課堂中缺乏一定的應(yīng)用體驗(yàn),使得學(xué)生無(wú)法感受到自身所學(xué)的知識(shí)在生活以及工作中應(yīng)用的重要性,直接降低了學(xué)生學(xué)習(xí)相關(guān)知識(shí)內(nèi)容的積極性,從而降低了整體的學(xué)習(xí)質(zhì)量以及效果。
程序設(shè)計(jì)能力的培養(yǎng)是計(jì)算機(jī)教學(xué)的核心所在。在培養(yǎng)學(xué)生能力的過(guò)程中,課程改革勢(shì)在必行。要樹(shù)立以學(xué)生為主體、教師為主導(dǎo)的教學(xué)模式,讓學(xué)生成為學(xué)習(xí)活動(dòng)中的主體,激發(fā)學(xué)生的自主學(xué)習(xí)能力和創(chuàng)造力。課程組、課程群要真正發(fā)揮“群”的作用,在制度上保障教學(xué)師資、教學(xué)內(nèi)容等資源的整合,實(shí)現(xiàn)教學(xué)方式的多樣化。
對(duì)學(xué)生,在入學(xué)教育上就強(qiáng)調(diào)程序設(shè)計(jì)能力對(duì)他們的重要性,讓學(xué)生盡早能夠從整體上了解培養(yǎng)計(jì)劃中離散數(shù)學(xué)、程序設(shè)計(jì)語(yǔ)言、數(shù)據(jù)結(jié)構(gòu)等系列課程在整個(gè)培養(yǎng)體系中所處的位置,這些課程構(gòu)成了一個(gè)有機(jī)的體系,使其懂得計(jì)算機(jī)編程能力并不是學(xué)習(xí)一門(mén)或幾門(mén)課程能夠培養(yǎng)出來(lái)的。在學(xué)習(xí)過(guò)程中,需要學(xué)生具有一定的邏輯思維能力,勤于動(dòng)手。能力的培養(yǎng)需要循序漸進(jìn),要做好長(zhǎng)期作戰(zhàn)的思想準(zhǔn)備。
程序設(shè)計(jì)系列課程的目的除了教給學(xué)生基本的程序設(shè)計(jì)理論外,更重要的是培養(yǎng)學(xué)生的程序設(shè)計(jì)開(kāi)發(fā)能力、邏輯推理能力,使學(xué)生最終應(yīng)用所學(xué)知識(shí)構(gòu)建出各種層次的計(jì)算環(huán)境,并在這些計(jì)算環(huán)境下解決實(shí)際問(wèn)題?;谶@個(gè)目標(biāo),筆者認(rèn)為整個(gè)綜合實(shí)驗(yàn)教學(xué)應(yīng)該站在頂層系統(tǒng)設(shè)計(jì),宏觀把握,從課程到課堂、到內(nèi)容再到評(píng)價(jià),環(huán)環(huán)相扣。覆蓋程序設(shè)計(jì)類(lèi)課程的綜合大題目應(yīng)該具有如下特征。
(1)知識(shí)點(diǎn)覆蓋面廣。設(shè)計(jì)的題目盡量能覆蓋到程序設(shè)計(jì)系列課程中的知識(shí)點(diǎn),設(shè)計(jì)自上而下,實(shí)施自下而上。
(2)趣味性強(qiáng)。設(shè)計(jì)的題目既容易激發(fā)學(xué)生的學(xué)習(xí)興趣,又要使學(xué)生感到實(shí)現(xiàn)有一定的壓力和挑戰(zhàn)性,有利于學(xué)生個(gè)性化的發(fā)揮。
(3)內(nèi)容有層次。綜合實(shí)驗(yàn)課程內(nèi)容的設(shè)置上,應(yīng)該盡可能地分層次、分階段,培養(yǎng)學(xué)生的能力,突出重難點(diǎn),關(guān)注每門(mén)課程的核心內(nèi)容。
(4)評(píng)判標(biāo)準(zhǔn)明確。系列化課程中的每門(mén)課程都有其核心知識(shí)、能力目標(biāo)的要求。課程考核中就重點(diǎn)考核學(xué)生能力目標(biāo)所要求的能力達(dá)成度是否在程序中有所體現(xiàn)。在課程的評(píng)價(jià)方面,可以運(yùn)用質(zhì)性評(píng)價(jià)和量性評(píng)價(jià)的綜合評(píng)價(jià)標(biāo)準(zhǔn)。
在確定總目標(biāo)的前提下,將總目標(biāo)分解到各個(gè)課程的實(shí)踐任務(wù)中,采用任務(wù)驅(qū)動(dòng)的方法實(shí)施。學(xué)生在課程的學(xué)習(xí)中,通過(guò)層次、遞進(jìn)式地完成具體任務(wù),認(rèn)識(shí)不同課程的性質(zhì),不斷體會(huì)各個(gè)課程之間的不同,并隨著所編程序質(zhì)量的提升,喜歡上編程,達(dá)到培養(yǎng)編程能力的目的。學(xué)生在教師幫助下,圍繞一個(gè)共同的任務(wù)活動(dòng)中心完成既定任務(wù)的同時(shí),在問(wèn)題的驅(qū)動(dòng)下進(jìn)行自主探索和互動(dòng)協(xié)作的學(xué)習(xí),使其價(jià)值、潛能、個(gè)性得到充分發(fā)揮。
為了整體構(gòu)想的實(shí)現(xiàn),特別是為了能采用任務(wù)驅(qū)動(dòng)的方式進(jìn)行實(shí)踐教學(xué),筆者所在學(xué)校選擇了計(jì)算機(jī)棋類(lèi)博弈作為一個(gè)具體的、現(xiàn)實(shí)的,且能夠貫穿于本科一二年級(jí)程序設(shè)計(jì)類(lèi)基礎(chǔ)課的主題。首先,下棋是大家喜聞樂(lè)見(jiàn)的娛樂(lè)活動(dòng),趣味性強(qiáng),學(xué)生不會(huì)覺(jué)得陌生。其次,棋類(lèi)博弈算法原理簡(jiǎn)單、內(nèi)涵豐富,是變化無(wú)窮的思維邏輯的研究載體[3]。計(jì)算機(jī)博弈在國(guó)際上作為一個(gè)學(xué)科領(lǐng)域,已經(jīng)開(kāi)展了半個(gè)多世紀(jì)的研究與競(jìng)賽活動(dòng)。第三,棋類(lèi)博弈一直是人工智能領(lǐng)域理論和技術(shù)突破的展示平臺(tái),如1997年的深藍(lán)和2016年的AlphaGo,可以讓學(xué)生近距離感受最前沿的技術(shù)成果。最后,棋類(lèi)博弈完美地將各門(mén)基礎(chǔ)課程有機(jī)地結(jié)合在一起。一個(gè)完整的機(jī)器博弈系統(tǒng)主要包括棋局表示、走法生成、局面評(píng)估以及搜索引擎。棋局表示是對(duì)比賽過(guò)程中形成的棋局的描述,內(nèi)容包括棋子、障礙、空格、走棋的表示,用到學(xué)習(xí)過(guò)的數(shù)據(jù)結(jié)構(gòu);走法生成器是在已形成的棋局下生成可行的走法,涉及對(duì)下棋規(guī)則的描述并根據(jù)規(guī)則生成所有可行走法,是搜索對(duì)象的產(chǎn)生器;評(píng)估函數(shù)是用來(lái)對(duì)棋局進(jìn)行評(píng)估的,是搜索算法的前提;搜索引擎是如何找到最優(yōu)走法,這是計(jì)算機(jī)博弈的核心部分,是對(duì)人類(lèi)思維模擬的最佳體現(xiàn)[4-5]??梢?jiàn),一個(gè)人機(jī)對(duì)戰(zhàn)博弈程序的實(shí)現(xiàn),涉及數(shù)據(jù)結(jié)構(gòu)、算法、編程能力等綜合知識(shí)。
綜上是將計(jì)算機(jī)棋類(lèi)博弈作為整體程序設(shè)計(jì)綜合實(shí)踐課程的一個(gè)重要主題。具體操作如下:在第一次上程序設(shè)計(jì)類(lèi)課程程序設(shè)計(jì)基礎(chǔ)時(shí)就告知學(xué)生,第4學(xué)期前實(shí)現(xiàn)一個(gè)人機(jī)對(duì)戰(zhàn)的AI智能計(jì)算機(jī)博弈系統(tǒng),作為提升編程能力的總目標(biāo)。在第一門(mén)綜合實(shí)踐課上,可以讓學(xué)生根據(jù)自己的興趣和能力選取中國(guó)計(jì)算機(jī)博弈大賽中的任何一個(gè)棋種作為綜合實(shí)驗(yàn)題目,并告知學(xué)生這個(gè)任務(wù)貫穿面向程序設(shè)計(jì)語(yǔ)言、數(shù)據(jù)結(jié)構(gòu)、算法設(shè)計(jì)與分析等專(zhuān)業(yè)課實(shí)踐教學(xué),每學(xué)完一門(mén)課有不同的課程驗(yàn)收標(biāo)準(zhǔn),最終的驗(yàn)收標(biāo)準(zhǔn)是獨(dú)立實(shí)現(xiàn)一個(gè)人機(jī)對(duì)戰(zhàn)博弈系統(tǒng),并參加每年學(xué)校組織的計(jì)算機(jī)博弈比賽。比賽成績(jī)作為課程成績(jī)的一部分,優(yōu)異者被選拔出參加全國(guó)計(jì)算機(jī)博弈大賽,獲得全國(guó)獎(jiǎng)項(xiàng)還可以算作學(xué)校創(chuàng)新實(shí)踐課學(xué)分。
目標(biāo)分解針對(duì)C++、Java編程基礎(chǔ)類(lèi)實(shí)踐課程,設(shè)計(jì)有開(kāi)發(fā)游戲界面等題目。對(duì)于數(shù)據(jù)結(jié)構(gòu)和算法設(shè)計(jì)與分析專(zhuān)業(yè)課實(shí)踐模塊,學(xué)生在實(shí)現(xiàn)游戲界面的基礎(chǔ)上,繼續(xù)開(kāi)發(fā)能實(shí)現(xiàn)人人或人機(jī)對(duì)戰(zhàn)的小程序。針對(duì)科研項(xiàng)目類(lèi)開(kāi)發(fā)實(shí)踐課,學(xué)生在實(shí)現(xiàn)人機(jī)對(duì)戰(zhàn)程序的基礎(chǔ)上,繼續(xù)進(jìn)行AI算法研究,最終實(shí)現(xiàn)具有AI智能的計(jì)算機(jī)博弈程序。具體教學(xué)方案見(jiàn)表1。
表1 基于計(jì)算機(jī)博弈程序設(shè)計(jì)的整體綜合實(shí)踐教學(xué)方案
將能力的培育融入課程變革中,以程序設(shè)計(jì)能力培養(yǎng)為導(dǎo)向的實(shí)踐教學(xué)改革方案應(yīng)自上而下,整體、系統(tǒng)地設(shè)計(jì)綜合實(shí)踐教學(xué)方案,利用任務(wù)驅(qū)動(dòng)實(shí)踐法,層次、遞進(jìn)式地完成具體任務(wù),自下而上將總目標(biāo)分解到各個(gè)課程的實(shí)踐任務(wù)中,以提高學(xué)生編程能力,從而達(dá)到培養(yǎng)學(xué)習(xí)者計(jì)算思維和程序設(shè)計(jì)能力的目的。將學(xué)生喜聞樂(lè)見(jiàn)的、高對(duì)抗性的棋牌游戲作為綜合實(shí)踐教育載體案例,可以將枯燥乏味的語(yǔ)法規(guī)則利用電腦游戲的形式展現(xiàn)在學(xué)生面前,將游戲娛樂(lè)融合進(jìn)程序設(shè)計(jì)類(lèi)實(shí)驗(yàn)課程的教學(xué)實(shí)踐中,在激發(fā)學(xué)生學(xué)習(xí)興趣和學(xué)習(xí)動(dòng)機(jī)的同時(shí),使其形成自主學(xué)習(xí)的習(xí)慣,主動(dòng)進(jìn)入知識(shí)學(xué)習(xí)的情境中,取得較好的效果。