宋琦,王冠宇,張力生
(1.重慶郵電大學(xué)軟件工程學(xué)院,重慶 400065;2.重慶郵電大學(xué)光電工程學(xué)院,重慶 400065)
軟件工程專業(yè)作為一種應(yīng)用型專業(yè),要求學(xué)生在學(xué)習(xí)軟件工程專業(yè)的理論知識(shí)基礎(chǔ)上,能夠熟練掌握軟件開(kāi)發(fā)方法,熟悉軟件項(xiàng)目開(kāi)發(fā)過(guò)程,具有較強(qiáng)的軟件開(kāi)發(fā)實(shí)踐能力和較好的工程素養(yǎng)?!禖++程序設(shè)計(jì)》課程不僅是軟件工程專業(yè)的核心課程,也是引導(dǎo)學(xué)生學(xué)習(xí)程序設(shè)計(jì)的入門課程。只有掌握了C++語(yǔ)言,才能了解計(jì)算機(jī)操作系統(tǒng)的內(nèi)核代碼,理解計(jì)算機(jī)的運(yùn)作原理,從而進(jìn)一步深入學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)、編譯原理等專業(yè)課程。同時(shí),作為軟件工程專業(yè)的入門課程,《C++程序設(shè)計(jì)》課程在轉(zhuǎn)換學(xué)生編程思維、培養(yǎng)學(xué)生專業(yè)興趣、引導(dǎo)學(xué)生進(jìn)行軟件項(xiàng)目開(kāi)發(fā)等方面都起著決定性的作用。然而,由于該課程自身的語(yǔ)法知識(shí)復(fù)雜、重點(diǎn)和難點(diǎn)較多、深入理解難度較大;且對(duì)于剛剛接觸計(jì)算機(jī)語(yǔ)言的學(xué)生來(lái)講,很難轉(zhuǎn)換思維去理解計(jì)算機(jī)的語(yǔ)言。這就導(dǎo)致了《C++程序設(shè)計(jì)》課程開(kāi)設(shè)普遍,卻收效甚微。因此,在《C++程序設(shè)計(jì)》課程的教學(xué)過(guò)程中,改進(jìn)教學(xué)方法、優(yōu)化教學(xué)過(guò)程是十分必要的。本文介紹了采用“321”教學(xué)模式進(jìn)行《C++程序設(shè)計(jì)》課程教學(xué),經(jīng)過(guò)實(shí)踐,收到了良好的效果。
傳統(tǒng)的《C++程序設(shè)計(jì)》教學(xué),多停留在學(xué)習(xí)該語(yǔ)言語(yǔ)法知識(shí)的層面上,更多的關(guān)注了語(yǔ)言本身。而對(duì)《C++程序設(shè)計(jì)》的本質(zhì)思想和語(yǔ)言在計(jì)算機(jī)內(nèi)部的處理機(jī)制等更基礎(chǔ)、更深入的理論考慮的不夠多。這使得學(xué)生感覺(jué)課程枯燥、無(wú)聊,在一定程度上影響了學(xué)生的學(xué)習(xí)興趣。
傳統(tǒng)的教學(xué)觀念,是以教師為中心,以教師講授為主,忽略了對(duì)學(xué)生的參與程度,同時(shí)學(xué)生也很少進(jìn)行主動(dòng)學(xué)習(xí)和動(dòng)手實(shí)踐,僅滿足于教師在課堂上講授的內(nèi)容,這不利于學(xué)生學(xué)習(xí)興趣的養(yǎng)成,不利于學(xué)生獨(dú)立思考。
傳統(tǒng)的計(jì)算機(jī)教育中,往往重理論輕實(shí)踐,過(guò)分強(qiáng)調(diào)知識(shí)的理論深度和系統(tǒng)性,而忽略了各學(xué)科知識(shí)間的聯(lián)系,特別是忽視了理論知識(shí)的應(yīng)用。這使得畢業(yè)生抱怨在學(xué)校沒(méi)有實(shí)踐機(jī)會(huì),學(xué)習(xí)空洞理論,求職無(wú)門而面臨巨大的就業(yè)壓力。軟件工程專業(yè)程序設(shè)計(jì)課程的培養(yǎng)目標(biāo)是讓學(xué)生理解程序設(shè)計(jì)的基本原理、掌握程序的開(kāi)發(fā)流程、具有獨(dú)立開(kāi)發(fā)的能力,最終培養(yǎng)能夠編寫(xiě)高質(zhì)量代碼,并能調(diào)試代碼缺陷和完成模塊設(shè)計(jì)工作的工程型、應(yīng)用型人才。然而,實(shí)際教學(xué)過(guò)程中,理論知識(shí)全部放在課堂上講解,不加強(qiáng)上機(jī)操作,這導(dǎo)致學(xué)生只停留在課堂上所接收的理論知識(shí)上,缺乏實(shí)際編程經(jīng)驗(yàn),甚至課程結(jié)束后,很多學(xué)生不會(huì)編程、不會(huì)調(diào)試。
按照以工程教育為主導(dǎo)的應(yīng)用型軟件人才培養(yǎng)模式改革與創(chuàng)新的總體思路,根據(jù)CDIO(Conceive構(gòu)思、Design設(shè)計(jì)、Implement實(shí)現(xiàn)、Operate運(yùn)作)工程教育模式的教育理念[1-2],以培養(yǎng)軟件工程專業(yè)應(yīng)用型人才為目標(biāo),經(jīng)過(guò)實(shí)踐,本課程采用“321”教學(xué)模式,取得了良好的教學(xué)效果。
教師怎樣講授程序的運(yùn)行過(guò)程,才能達(dá)到使學(xué)生可以接受、可以理解計(jì)算機(jī)程序運(yùn)行過(guò)程中,內(nèi)存是如何變化的、函數(shù)是如何調(diào)用的、棧是如何管理的。我們通過(guò)單步調(diào)試方式來(lái)講解程序的運(yùn)行過(guò)程,同時(shí)配以對(duì)反匯編代碼的講解和演示來(lái)觀察程序運(yùn)行過(guò)程中內(nèi)存的變化情況以及函數(shù)的調(diào)用過(guò)程。此外,還配合一定的數(shù)據(jù)結(jié)構(gòu)和編譯原理知識(shí),使學(xué)生了解計(jì)算機(jī)內(nèi)存的管理方法和機(jī)制。從而達(dá)到理論與實(shí)踐相結(jié)合,加深學(xué)生對(duì)計(jì)算機(jī)程序設(shè)計(jì)的理解。
2008年美國(guó)新墨西哥州圣胡安學(xué)院的高級(jí)教學(xué)設(shè)計(jì)師David Penrose提出了微課程的概念,他認(rèn)為“微課程是一個(gè)知識(shí)挖掘的框架,我們將告訴學(xué)者在哪里挖,需要挖些什么。我們將對(duì)這一過(guò)程進(jìn)行監(jiān)督?!盵3]我國(guó)的一些專家認(rèn)為,微課是指在注意力集中的有效時(shí)間,有著明確的教學(xué)目標(biāo),內(nèi)容短小,能集中說(shuō)明一個(gè)問(wèn)題的“微型課程”。[4]微課通常是一段視頻,只針對(duì)某個(gè)知識(shí)點(diǎn)或?qū)W習(xí)環(huán)節(jié)的重點(diǎn)、難點(diǎn)展開(kāi),并不是完整的課堂。
“321”教學(xué)模式是指:每節(jié)課2個(gè)知識(shí)點(diǎn),每個(gè)知識(shí)點(diǎn)采用“微課”+“操作”+“反饋”的學(xué)習(xí)方式,其中“微課”3分鐘,“操作”20分鐘,“反饋”1分鐘。充分體現(xiàn)由以教師為中心轉(zhuǎn)向以學(xué)生為中心,以教師講授為主轉(zhuǎn)向以學(xué)生操作為主的教學(xué)新模式。
重慶郵電大學(xué)軟件工程學(xué)院該課程使用的是《C++程序設(shè)計(jì)教程(修訂版)——設(shè)計(jì)思想與實(shí)現(xiàn)》[5],該教材的特點(diǎn)是:從C++的特色寫(xiě)起,以類型定義、識(shí)別、匹配為中心,注重編程質(zhì)量;從自身學(xué)習(xí)經(jīng)歷寫(xiě)起;從初學(xué)角度寫(xiě)起,點(diǎn)透要害,巧做取舍;打破文字描述的框框,追求通俗易懂。我們?cè)谏钊胙芯拷滩牡幕A(chǔ)上,結(jié)合前幾年的教學(xué)經(jīng)驗(yàn)積累[6-7],創(chuàng)新性的把該課程全部設(shè)置在機(jī)房進(jìn)行,每節(jié)課設(shè)置2個(gè)知識(shí)點(diǎn),每個(gè)知識(shí)點(diǎn)采用3分鐘左右的“微課”形式讓學(xué)生快速掌握;接下來(lái)學(xué)生針對(duì)每個(gè)知識(shí)點(diǎn)進(jìn)行20分鐘左右的實(shí)際上機(jī)操作,通過(guò)編寫(xiě)、編譯、運(yùn)行和調(diào)試每個(gè)知識(shí)點(diǎn)對(duì)應(yīng)的程序?qū)嵗?,加深?duì)該知識(shí)點(diǎn)的理解和掌握。在學(xué)生練習(xí)過(guò)程中,教師進(jìn)行觀察和指導(dǎo),對(duì)學(xué)生遇到的問(wèn)題隨時(shí)解答,快速幫助學(xué)生理解知識(shí)點(diǎn)。同時(shí),教師也會(huì)匯總學(xué)生遇到的共通問(wèn)題,在學(xué)生練習(xí)結(jié)束后,進(jìn)行1分鐘左右的重難點(diǎn)反饋。為了提高學(xué)生理解的效率,我們對(duì)學(xué)生進(jìn)行了分組,練習(xí)過(guò)程中,組內(nèi)成員以好帶差、快帶慢的方式跟教師一同指導(dǎo)本組成員,并進(jìn)行組內(nèi)討論。這種方式不僅有效提高了學(xué)生對(duì)知識(shí)理解的效率,增強(qiáng)了實(shí)際問(wèn)題解決的能力,同時(shí)還鍛煉了學(xué)生的團(tuán)隊(duì)意識(shí)。
以while循環(huán)語(yǔ)句為例。我們從一個(gè)簡(jiǎn)單的問(wèn)題入手:求1+2+3+…+10的累加和。針對(duì)這個(gè)問(wèn)題,首先分析問(wèn)題的解題思路,進(jìn)而得出解決該問(wèn)題的步驟。接下來(lái)將每一步對(duì)應(yīng)到計(jì)算機(jī)程序中,并轉(zhuǎn)換成C++語(yǔ)言所表示的語(yǔ)句,直至形成完整的程序。最后,根據(jù)形成的程序總結(jié)出while循環(huán)語(yǔ)句的語(yǔ)法結(jié)構(gòu)。如圖2所示。該過(guò)程以3分鐘微課的形式進(jìn)行,接下來(lái)給學(xué)生20分鐘時(shí)間對(duì)該知識(shí)點(diǎn)上進(jìn)行消化和吸收。學(xué)生首先自主上機(jī)調(diào)試微課例題的求和程序,從中理解while循環(huán)語(yǔ)句的使用方法和作用。同時(shí),我們還對(duì)該知識(shí)點(diǎn)配備了2個(gè)練習(xí)題:“計(jì)算隨機(jī)給定的15個(gè)數(shù)的平均數(shù)”和“百錢買百雞問(wèn)題”,兩個(gè)練習(xí)題由淺入深、由簡(jiǎn)到難。學(xué)生可以根據(jù)自己的理解情況進(jìn)行練習(xí),保證了對(duì)知識(shí)點(diǎn)的理解和應(yīng)用。此過(guò)程中,任課教師會(huì)進(jìn)行巡視,隨時(shí)指導(dǎo)學(xué)生操作,解答學(xué)生練習(xí)過(guò)程中所發(fā)現(xiàn)的問(wèn)題。練習(xí)結(jié)束后,教師針對(duì)學(xué)生練習(xí)中出現(xiàn)較多的問(wèn)題,用1分鐘左右以簡(jiǎn)練的語(yǔ)言進(jìn)行講評(píng)和強(qiáng)調(diào)。
圖1
圖2
我們的C++程序設(shè)計(jì)課程設(shè)置學(xué)時(shí)為64學(xué)時(shí),全部安排在機(jī)房進(jìn)行授課。每個(gè)機(jī)房安排65人左右,人手一臺(tái)機(jī)器,一名任課教師配備一名助理教師共同指導(dǎo)學(xué)生練習(xí)操作,使用“紅蜘蛛軟件”對(duì)學(xué)生用機(jī)進(jìn)行統(tǒng)一管理和監(jiān)控以輔助教學(xué)。每次課程安排連上四節(jié)課,每節(jié)課2個(gè)知識(shí)點(diǎn),確保每次課學(xué)生都能得到充分的練習(xí)。因此,學(xué)生對(duì)知識(shí)掌握的很快,問(wèn)題能得到及時(shí)的解答,保證了知識(shí)的充分接受、應(yīng)用能力和動(dòng)手能力大幅度提高。
“321”教學(xué)模式,合理并有效的分配了課堂時(shí)間。以往45分鐘的課堂,學(xué)生能保持注意力集中的時(shí)間不足五分之一。一節(jié)課下來(lái),即使教師在講臺(tái)上表演得再精彩,學(xué)生能掌握的知識(shí)僅僅5%。而我們的方式,能使學(xué)生始終專注于程序,不僅掌握了知識(shí),且學(xué)會(huì)了應(yīng)用。
CDIO教育模式就是強(qiáng)調(diào)學(xué)生在實(shí)踐,也就是“做”的過(guò)程中學(xué)習(xí)知識(shí)、掌握知識(shí)、運(yùn)用知識(shí)。我們以課內(nèi)實(shí)踐和課外實(shí)踐相結(jié)合的模式加強(qiáng)對(duì)學(xué)生實(shí)踐能力的培養(yǎng)。針對(duì)不同的知識(shí)點(diǎn),我們配以大量相應(yīng)的題庫(kù),學(xué)生完全可以在題庫(kù)上展開(kāi)實(shí)踐,充分的進(jìn)行代碼閱讀、理解、調(diào)試和運(yùn)行。在課外實(shí)踐環(huán)節(jié)中,對(duì)學(xué)生進(jìn)行分組項(xiàng)目訓(xùn)練,展開(kāi)團(tuán)隊(duì)項(xiàng)目開(kāi)發(fā)。項(xiàng)目開(kāi)發(fā)過(guò)程中,需要按照項(xiàng)目開(kāi)發(fā)的完整流程進(jìn)行,熟悉項(xiàng)目開(kāi)發(fā)流程中各個(gè)階段的目的、任務(wù)和成果物,同時(shí)也體會(huì)團(tuán)隊(duì)合作的重要性。采用項(xiàng)目開(kāi)發(fā)訓(xùn)練,可以變抽象為具體,變枯燥為有趣,讓學(xué)生樂(lè)于去學(xué)習(xí)。項(xiàng)目開(kāi)發(fā)結(jié)束后,也會(huì)根據(jù)實(shí)際情況,進(jìn)行成果物的展示、評(píng)估和測(cè)試驗(yàn)收。
此外,我們通過(guò)競(jìng)賽機(jī)制來(lái)激發(fā)學(xué)生的學(xué)習(xí)興趣,設(shè)置讀程序、調(diào)試程序和編寫(xiě)程序比賽[8],如圖3所示,以團(tuán)隊(duì)或個(gè)人方式參賽,從而引導(dǎo)學(xué)生自主學(xué)習(xí)。目前,該程序競(jìng)賽已成功舉辦四屆,學(xué)生反響良好,有力地促進(jìn)了課堂教學(xué),增加了學(xué)生學(xué)習(xí)的主動(dòng)性,很好地體現(xiàn)了我們所提出的“321”教學(xué)模式的有效性。
圖3
《C++程序設(shè)計(jì)》課程作為軟件工程專業(yè)的入門課程,具有理論與實(shí)踐并重的特點(diǎn)。對(duì)后續(xù)其他專業(yè)課程的學(xué)習(xí),培養(yǎng)合格的軟件工程型人才起著關(guān)鍵的作用。本文針對(duì)現(xiàn)階段該門課程存在的教學(xué)問(wèn)題,提出了“321”教學(xué)模式,該方法在我院實(shí)際教學(xué)過(guò)程中已經(jīng)得到了驗(yàn)證,取得了良好的效果。
[1]查建中.論“做中學(xué)”戰(zhàn)略下的CDIO模式[J].高等工程教育研究,2008(3):1-6.
[2]李竹林.基于CDIO教育理念的高校計(jì)算機(jī)專業(yè)課程教學(xué)改革探討[J].教育與職業(yè),2012(20):127-128.
[3]Shieh D.These Lectures are Gone in 60 Seconds[J].Chronicle of Higher Education,2009,55(26):A1-A13.
[4]黎加厚.微課的含義與發(fā)展[J].中小學(xué)信息技術(shù),2013(4):10-12.
[5]錢能.C++程序設(shè)計(jì)教程(修訂版)——設(shè)計(jì)思想與實(shí)現(xiàn)[M].北京:清華大學(xué)出版社,2009.7.
[6]張化川,楊林,黎在萬(wàn).基于計(jì)算思維的計(jì)算機(jī)表達(dá)式教學(xué)方法實(shí)踐[J].現(xiàn)代計(jì)算機(jī),2017,(5):7-10.
[7]張化川,黎在萬(wàn),張力生.深化考試改革推動(dòng)編程類課程教學(xué)改革[J].現(xiàn)代計(jì)算機(jī),2016,(7):16-19.
[8]軟件工程學(xué)院2017年計(jì)算機(jī)程序閱讀能力競(jìng)賽成功舉行.http://xwzx.cqupt.edu.cn/cqupt_xwzx/news.jsp?id=37002.