白魚秀
(榆林學(xué)院 信息工程學(xué)院, 榆林 719000)
“計算機(jī)導(dǎo)論”課程是計算機(jī)專業(yè)的一門專業(yè)基礎(chǔ)課,也是該專業(yè)的導(dǎo)入課程。它不僅是連接高中與大學(xué)的橋梁,更負(fù)擔(dān)著指引學(xué)生專業(yè)入門、調(diào)動學(xué)生學(xué)習(xí)興趣的重任,使學(xué)生對整個大學(xué)四年的學(xué)習(xí)課程有一個系統(tǒng)概括性的認(rèn)識。
但是,目前“計算機(jī)導(dǎo)論”課程教學(xué)中存在很多問題。(1) “計算機(jī)導(dǎo)論”課程涉及的知識面廣但不精[1],傳統(tǒng)的計算機(jī)導(dǎo)論課程都是由一個老師講授所有課程內(nèi)容,按照教材簡單介紹后續(xù)專業(yè)課程,因?qū)I(yè)術(shù)語太多,理論太枯燥,不易理解,學(xué)生聽的云里霧里,對四年的專業(yè)課程沒有一個初步的認(rèn)識,進(jìn)而對課程不能產(chǎn)生強(qiáng)烈的興趣。(2) 學(xué)生高中教育環(huán)境不同,對計算機(jī)接觸的程度大不相同,水平參差不齊,學(xué)生在大一缺乏計算機(jī)背景的條件下,短時間內(nèi)系統(tǒng)的理解計算機(jī)體系結(jié)構(gòu)是一個相當(dāng)艱巨的任務(wù)[2]。(3) 傳統(tǒng)的“計算機(jī)導(dǎo)論”課程教學(xué)中,理論和實踐相脫節(jié),教師只是單純的講授理論課程,而學(xué)生幾乎沒有實踐,致使學(xué)生對所學(xué)的內(nèi)容只是表面上了解,沒有深層次的理解。
CDIO是一種先進(jìn)的工程教育理念和工程人才培養(yǎng)模式。代表構(gòu)思、設(shè)計、實現(xiàn)和運(yùn)作(Conceive-Design-Implement-Operate)[3]。它以產(chǎn)品研發(fā)到產(chǎn)品運(yùn)行的生命周期為載體,讓學(xué)生以主動的、實踐的、課程之間有機(jī)聯(lián)系的方式學(xué)習(xí)工程[4]。
基于“計算機(jī)導(dǎo)論”課程的重要性,引入CDIO模式進(jìn)行理論和實踐相結(jié)合的教學(xué)改革。進(jìn)而更好地促進(jìn)學(xué)生學(xué)習(xí)的主動性和積極性,并從中了解課程之間的有機(jī)聯(lián)系。
基于CDIO模式的教學(xué)改革,由單一教師講授改為多人擔(dān)當(dāng)專業(yè)授課,每個老師講授自己所帶專業(yè)課程內(nèi)容,這樣更容易把握每門課程的重點和難點,及如何切入學(xué)生的學(xué)習(xí)興趣點。“計算機(jī)導(dǎo)論”課程力圖幫學(xué)生構(gòu)建一個初步的計算機(jī)專業(yè)知識體系框架[5],計算機(jī)專業(yè)知識結(jié)構(gòu)圖,如圖1所示。
它包含了大學(xué)四年所學(xué)的所有專業(yè)課程,單純給學(xué)生講授此圖,學(xué)生還是對課程體系之間的關(guān)聯(lián)無法理解。基于計算機(jī)知識體系結(jié)構(gòu),結(jié)合“計算機(jī)導(dǎo)論”課程內(nèi)容和課時安排,將課程內(nèi)容劃分為8個模塊,如表1所示。
每個模塊講授4個課時,每周講授一個模塊,這樣學(xué)生就有更多的時間去查找相關(guān)資料,進(jìn)一步了解相應(yīng)模塊的內(nèi)容。
基于傳統(tǒng)“計算機(jī)導(dǎo)論”缺乏實踐性,學(xué)生水平參差不齊的弊端,該“計算機(jī)導(dǎo)論”課程改革主要以“漢諾塔”游戲為主線,從游戲構(gòu)思、設(shè)計、實現(xiàn)到運(yùn)作的每個環(huán)節(jié)貫穿在8個模塊中,通過學(xué)習(xí)專業(yè)核心課程全過程的CDIO項目,使得學(xué)生通過“做中學(xué)”,建立一個完整的計算機(jī)專業(yè)體系結(jié)構(gòu)架構(gòu)。并且采用任務(wù)驅(qū)動、合作討論的方式,學(xué)生之間互幫互助,鍛煉學(xué)生探究、創(chuàng)新和團(tuán)隊合作能力。
漢諾塔問題是計算機(jī)程序中的經(jīng)典問題[6]。漢諾塔問題:漢諾塔由A,B,C 3根桿子組成。A桿上由N個(N>1)圓盤,盤的尺寸大小不等,大盤在下,小盤在上。要求將A桿上所有圓盤移至C桿。但是每次只允許移動一個圓盤,在移動過程中始終要保持大盤在下,小盤在上。提示:在移動過程中可借助B桿臨時存放圓盤,也可將從A桿移出的圓盤重新移回A桿。
圖1 計算機(jī)專業(yè)知識結(jié)構(gòu)圖
表1 “計算機(jī)導(dǎo)論”課程模塊劃分
課程之初,介紹計算機(jī)數(shù)學(xué)基礎(chǔ)課時,教師引入“漢諾塔”問題。首先從1-2個圓盤開始,然后提出3個圓盤,讓學(xué)生合作討論解決,進(jìn)一步提出4個圓盤該如何解決。將學(xué)生的思維向“如何尋找最有效的序列”引導(dǎo),優(yōu)化移動步驟,將問題聚焦于不同的圓盤數(shù)完成操作最少需要的步數(shù)。啟發(fā)學(xué)生思考“第一環(huán)移動到哪個桿子上”更有利于解決漢諾塔問題,從而找出規(guī)律。從1~4依次進(jìn)行探索,運(yùn)用表格對“漢諾塔”問題進(jìn)行記錄分析,為發(fā)現(xiàn)規(guī)律提供數(shù)據(jù)支持,培養(yǎng)學(xué)生抽象化實際問題的能力,進(jìn)而指導(dǎo)學(xué)生找出規(guī)律,如表2所示。
表2 “漢諾塔”問題數(shù)學(xué)分析
課程之中,掌握“漢諾塔”問題的移動規(guī)律和操作步驟后,啟發(fā)學(xué)生思考如何用程序設(shè)計語言實現(xiàn)復(fù)雜數(shù)學(xué)問題,引入程序設(shè)計基礎(chǔ)內(nèi)容。我們一般可以理解4個圓盤的移動規(guī)律,但是如果更多圓盤,5個或者以上的圓盤,我們解決問題就需要花費(fèi)很多的時間,所以借助程序設(shè)計語言實現(xiàn)任意多個圓盤的移動規(guī)律。首先講解C語言基礎(chǔ)知識,了解C語言的基本語法規(guī)則及其使用后,指導(dǎo)學(xué)生用C語言實現(xiàn)移動1-2個圓盤的情形,進(jìn)而思考如何實現(xiàn)任意多個圓盤的移動規(guī)律,引入數(shù)據(jù)結(jié)構(gòu)和算法基礎(chǔ)。根據(jù)得到的“漢諾塔”移動規(guī)律,運(yùn)用C語言遞歸實現(xiàn)任意多個圓盤的移動。如表3所示。
表3 “漢諾塔”問題C語言遞歸實現(xiàn)
若要實現(xiàn)漢諾塔網(wǎng)絡(luò)游戲,該如何設(shè)計友好的圖形化界面,如何設(shè)計數(shù)據(jù)庫存儲玩家昵稱、游戲時長,并展示玩家排行榜等信息。后續(xù)數(shù)據(jù)庫和軟件工程等模塊,引導(dǎo)學(xué)生互相探討實踐。最終,以小組為單位采用工程的方法合作整理“漢諾塔游戲”軟件工程設(shè)計文檔,完成整個“漢諾塔”游戲的設(shè)計與實現(xiàn)。
筆者依托本校2016,2017級計算機(jī)科學(xué)與技術(shù)專業(yè)學(xué)生,實踐了此“計算機(jī)導(dǎo)論”教學(xué)方法。實際跟蹤學(xué)生學(xué)習(xí)該課程發(fā)現(xiàn),該方法極大的激發(fā)了學(xué)生的學(xué)習(xí)積極性,調(diào)動了學(xué)生的實踐動手能力,使得學(xué)生理論知識水平和實踐動手能力顯著提高,進(jìn)而提高了學(xué)生對該課程的認(rèn)可度。相對于傳統(tǒng)教學(xué)方法,采用該教學(xué)方法,學(xué)生上課更加積極認(rèn)真,主動去探索、分析和解決問題,從而提高了教學(xué)效果。
通過對“計算機(jī)導(dǎo)論”課程模塊的劃分,并由生動有趣的漢諾塔游戲入手,闡述清楚實際問題到計算機(jī)求解的過程和方法。強(qiáng)化了學(xué)生運(yùn)用計算機(jī)解決和優(yōu)化問題的能力。同時,學(xué)生在設(shè)計和實現(xiàn)游戲的過程中,了解了將在大學(xué)四年學(xué)習(xí)知識內(nèi)容的框架思路和脈絡(luò),為今后深入學(xué)習(xí)專業(yè)知識奠定了良好的基礎(chǔ)。