王振鐸,王振輝,邊 倩,陳綏陽(yáng),3
(1.西安思源學(xué)院 電子信息工程學(xué)院,陜西 西安 710038;2.西安翻譯學(xué)院 工程技術(shù)學(xué)院,陜西 西安710105;3.西安交通大學(xué) 信息科學(xué)系,陜西 西安 710049)
重在設(shè)計(jì)能力的程序設(shè)計(jì)類課程教學(xué)改革與實(shí)踐
王振鐸1,王振輝2,邊 倩1,陳綏陽(yáng)1,3
(1.西安思源學(xué)院 電子信息工程學(xué)院,陜西 西安 710038;2.西安翻譯學(xué)院 工程技術(shù)學(xué)院,陜西 西安710105;3.西安交通大學(xué) 信息科學(xué)系,陜西 西安 710049)
程序設(shè)計(jì)是軟件技術(shù)專業(yè)學(xué)生必須掌握的技能,但教學(xué)效果往往不盡人意,歸根結(jié)底是忽略了程序設(shè)計(jì)重在“設(shè)計(jì)”的本質(zhì)。文中分析了課程現(xiàn)存問(wèn)題,提出以培養(yǎng)設(shè)計(jì)能力為核心的教改思路,通過(guò)“認(rèn)識(shí)、設(shè)計(jì)、提高”三個(gè)階段的教學(xué),逐步改善學(xué)生程序“設(shè)計(jì)”能力。實(shí)踐表明,由于抓住了課程本質(zhì),并采取了有效的措施,課程教學(xué)質(zhì)量明顯提高。
設(shè)計(jì);改革;逆向工程;心理學(xué)
程序設(shè)計(jì)語(yǔ)言是軟件技術(shù)專業(yè)學(xué)生的核心課程,目的是培養(yǎng)學(xué)生的邏輯思維能力。該類課程一直是師生倍感頭疼的課程。程序設(shè)計(jì)難教也難學(xué),源于計(jì)算機(jī)語(yǔ)言本身高度的抽象性和嚴(yán)密的邏輯性。為了提高該類課程的教學(xué)效果和質(zhì)量,西安翻譯學(xué)院在軟件服務(wù)外包專業(yè)程序設(shè)計(jì)課程中,大膽嘗試、創(chuàng)新,從課程本質(zhì)出發(fā),提出一系列具體的改革和實(shí)踐措施,供同行參考。
1.忽視課程本質(zhì)。程序設(shè)計(jì)(Programming)是給出解決特定問(wèn)題程序的過(guò)程,是軟件構(gòu)造活動(dòng)中的重要組成部分。程序設(shè)計(jì)往往以某種程序設(shè)計(jì)語(yǔ)言為工具,給出這種語(yǔ)言下的程序。程序設(shè)計(jì)過(guò)程應(yīng)當(dāng)包括分析、設(shè)計(jì)、編碼、測(cè)試、排錯(cuò)等不同階段[1]。從中可以看出,程序設(shè)計(jì)包括分析問(wèn)題,設(shè)計(jì)算法,用特定的語(yǔ)言實(shí)現(xiàn)等過(guò)程,編程只是其中實(shí)現(xiàn)的部分,更重要的是分析和設(shè)計(jì)。如果學(xué)生不具備問(wèn)題分析和解決的能力,又如何編寫程序呢?
目前,程序設(shè)計(jì)類課程的教學(xué)目標(biāo)過(guò)多地將重點(diǎn)放在語(yǔ)法規(guī)則的掌握上,而忽視了學(xué)生實(shí)際解決問(wèn)題能力的培養(yǎng)[2]。我們?cè)谌粘=虒W(xué)中發(fā)現(xiàn),上課認(rèn)真的學(xué)生,能夠掌握程序設(shè)計(jì)的語(yǔ)法,也能夠模仿書上的例題編寫程序,但要解決一個(gè)實(shí)際的問(wèn)題,就顯得束手無(wú)策了。更有些學(xué)生在學(xué)習(xí)幾門程序設(shè)計(jì)語(yǔ)言課程后,無(wú)奈地表示只能編寫簡(jiǎn)單的“Hello World”程序,體現(xiàn)出學(xué)生缺乏程序設(shè)計(jì)的思想,沒(méi)有解決問(wèn)題的思路和方法。
2.缺乏對(duì)“設(shè)計(jì)”的認(rèn)識(shí)。日常生活中,“設(shè)計(jì)”一詞出現(xiàn)的頻率很高,“網(wǎng)頁(yè)設(shè)計(jì)”、“裝潢設(shè)計(jì)”等,我們發(fā)現(xiàn)“網(wǎng)頁(yè)設(shè)計(jì)”課程學(xué)生學(xué)習(xí)的主動(dòng)性和興趣就很高,原因很明顯,現(xiàn)在學(xué)生每天都與網(wǎng)站、網(wǎng)頁(yè)打交道,已經(jīng)具備對(duì)網(wǎng)頁(yè)內(nèi)容和形式的認(rèn)識(shí),再經(jīng)過(guò)專業(yè)學(xué)習(xí),必然可以自行設(shè)計(jì)一個(gè)網(wǎng)站。但編程對(duì)于學(xué)生來(lái)講是一個(gè)新生事物,從未接觸過(guò),缺乏對(duì)程序設(shè)計(jì)的認(rèn)識(shí),故“覺(jué)得老虎吃天,無(wú)從下手”。
3.缺乏設(shè)計(jì)型的實(shí)踐環(huán)節(jié)。程序設(shè)計(jì)目的是利用計(jì)算機(jī)技術(shù)解決現(xiàn)實(shí)生活中的問(wèn)題,教師應(yīng)在教材的基礎(chǔ)上,引入生活中實(shí)際的問(wèn)題,讓學(xué)生解決。而現(xiàn)在的實(shí)驗(yàn),往往以驗(yàn)證實(shí)驗(yàn)為主,缺乏設(shè)計(jì)性、綜合性、研究性的實(shí)驗(yàn),忽視了學(xué)生動(dòng)手能力和創(chuàng)造能力的培養(yǎng),造成學(xué)生缺乏知識(shí)活學(xué)活用的能力。
鑒于上述問(wèn)題,我們?cè)诮虒W(xué)過(guò)程中通過(guò)“認(rèn)識(shí)”、“設(shè)計(jì)”、“提高”三階段培養(yǎng)學(xué)生的程序設(shè)計(jì)思想和能力。
1.認(rèn)識(shí)階段。認(rèn)識(shí)階段是課程教學(xué)的起始階段,主要目的是加強(qiáng)學(xué)生對(duì)程序設(shè)計(jì)的認(rèn)識(shí)。即“為什么要學(xué)習(xí)程序設(shè)計(jì)?程序設(shè)計(jì)能為我們做什么?”在學(xué)習(xí)的初期,如果教師引導(dǎo)不當(dāng),就會(huì)導(dǎo)致學(xué)生目標(biāo)缺失,學(xué)習(xí)動(dòng)力喪失,直接后果便是:上課不認(rèn)真聽(tīng)講,實(shí)踐時(shí)無(wú)所事事,一學(xué)期下來(lái)一無(wú)所獲。那么,如何加強(qiáng)學(xué)生對(duì)程序設(shè)計(jì)的認(rèn)識(shí)呢?我們主要采用以下方式。①認(rèn)識(shí)實(shí)習(xí)。在學(xué)生入學(xué)后,立即進(jìn)行認(rèn)識(shí)實(shí)習(xí),能夠加強(qiáng)學(xué)生對(duì)專業(yè)和工作崗位的認(rèn)識(shí)。這是我們改革的第一個(gè)創(chuàng)新之處,其他兄弟院校,僅僅停留在校內(nèi)入學(xué)教育的形式上。我們的具體做法是,通過(guò)與軟件園區(qū)企業(yè)建立校企合作,將學(xué)生的入學(xué)教育放到真實(shí)的企業(yè)環(huán)境中,除了參觀企業(yè)外,更主要的是請(qǐng)企業(yè)的工程師現(xiàn)場(chǎng)講解軟件開(kāi)發(fā)的具體工作和崗位要求,使同學(xué)們加強(qiáng)對(duì)軟件開(kāi)發(fā)中設(shè)計(jì)重要性的認(rèn)識(shí),為學(xué)習(xí)程序設(shè)計(jì)課程打下良好的基礎(chǔ)。實(shí)習(xí)結(jié)束,要求學(xué)生認(rèn)真書寫實(shí)習(xí)報(bào)告,以便加強(qiáng)學(xué)生的認(rèn)識(shí)和實(shí)習(xí)的效果。②作品展示。通過(guò)大量的軟件演示,讓學(xué)生理解程序設(shè)計(jì)在具體生活中的應(yīng)用。在參觀同時(shí),允許學(xué)生具體操作軟件,系統(tǒng)地理解軟件的功能,理解作者的設(shè)計(jì)思路,例如:我們?cè)趈ava課程教學(xué)過(guò)程中,將學(xué)生作品、學(xué)生成績(jī)管理系統(tǒng)讓學(xué)生操作使用,除了增強(qiáng)學(xué)生的認(rèn)識(shí)外,還可以提高學(xué)生學(xué)習(xí)的興趣。③聘請(qǐng)企業(yè)技術(shù)專家和優(yōu)秀畢業(yè)生進(jìn)行專題講座或座談。俗話說(shuō)得好“外來(lái)的和尚好念經(jīng)”,通過(guò)聘請(qǐng)軟件企業(yè)專業(yè)技術(shù)人員,定期開(kāi)展技術(shù)講座,和公司作品展示等方式提高學(xué)生對(duì)程序設(shè)計(jì)的作用的認(rèn)識(shí);同時(shí),邀請(qǐng)本專業(yè)的優(yōu)秀畢業(yè)生回校介紹工作經(jīng)驗(yàn)。這些實(shí)實(shí)在在的經(jīng)驗(yàn)和技能對(duì)學(xué)生提高興趣和加強(qiáng)認(rèn)識(shí)會(huì)起到不可忽視的作用。
2.設(shè)計(jì)階段。設(shè)計(jì)階段是課程的核心階段,目標(biāo)是通過(guò)教學(xué)和實(shí)踐培養(yǎng)學(xué)生程序設(shè)計(jì)的邏輯思維能力。主要采用以下3種方法進(jìn)行培養(yǎng)。①“軟件逆向工程”思想的應(yīng)用。軟件逆向工程(Software Reverse Engineering)又稱軟件反向工程,是指從可運(yùn)行的程序系統(tǒng)出發(fā),運(yùn)用反匯編、系統(tǒng)分析、程序理解等多種計(jì)算機(jī)技術(shù),對(duì)軟件的結(jié)構(gòu)、流程、算法、代碼等進(jìn)行逆向拆解和分析,推導(dǎo)出軟件產(chǎn)品的源代碼、設(shè)計(jì)原理、結(jié)構(gòu)、算法、處理過(guò)程、運(yùn)行方法及相關(guān)文檔等[3]。初學(xué)程序設(shè)計(jì)語(yǔ)言的學(xué)生,往往掌握了程序設(shè)計(jì)語(yǔ)法,仍然不能編寫出良好的程序,歸根結(jié)底是學(xué)生沒(méi)有程序設(shè)計(jì)的思想,不能在頭腦中形成良好的設(shè)計(jì)思路,即沒(méi)有實(shí)現(xiàn)目標(biāo)的良好方法,故在設(shè)計(jì)的初級(jí)階段,采用軟件逆向工程的思想,先給出結(jié)果,然后從結(jié)果逆推實(shí)現(xiàn)的過(guò)程,學(xué)生詳細(xì)分析實(shí)現(xiàn)的步驟,再結(jié)合語(yǔ)法實(shí)現(xiàn)。例如:在輸出九九乘法表程序的講解過(guò)程中,教師可以先給出乘法表的輸出結(jié)果,然后分析乘法表是如何得到的,學(xué)生可以容易地想到利用雙循環(huán)結(jié)構(gòu)實(shí)現(xiàn),這樣利用逆向工程方法,使學(xué)生“有的放矢”,通過(guò)這種方式使學(xué)生認(rèn)識(shí)到在該階段中理解程序設(shè)計(jì)的核心在于“設(shè)計(jì)”,改變學(xué)生直接編程的習(xí)慣。②程序流程圖。在程序編寫前,應(yīng)具有解決實(shí)際問(wèn)題的思路,程序流程圖是思路的圖形表示方法,要求學(xué)生掌握程序流程圖的繪制問(wèn)題的求解過(guò)程,這樣能夠切實(shí)加強(qiáng)學(xué)生分析問(wèn)題和解決問(wèn)題能力的培養(yǎng)。這也是我們改革的又一創(chuàng)新之處,有教師認(rèn)為流程圖只有在企業(yè)中才廣泛應(yīng)用,學(xué)生畫流程圖和編程一樣具有難度,那么不這樣改革,我們?nèi)绾闻囵B(yǎng)符合企業(yè)要求的人才呢?為了降低學(xué)習(xí)的難度,我們分兩個(gè)階段進(jìn)行,第一階段,培養(yǎng)學(xué)生用自然語(yǔ)言描述問(wèn)題求解過(guò)程的能力。第二階段,待學(xué)生能夠用書面語(yǔ)言描述后,在詳細(xì)講解流程圖的符號(hào)和畫法,將自然語(yǔ)言的描述改為流程圖描述。學(xué)生畫出流程圖后,教師要求學(xué)生進(jìn)行講解或答辯,加深流程圖設(shè)計(jì)過(guò)程的認(rèn)識(shí),有助于基礎(chǔ)弱的同學(xué)共同提高。分成兩個(gè)階段進(jìn)行,大大提高了學(xué)生利用流程圖分析問(wèn)題的能力。③設(shè)計(jì)心理學(xué)的應(yīng)用?!霸O(shè)計(jì)”最終是為用戶服務(wù)的,要設(shè)計(jì)符合用戶要求的產(chǎn)品,在沒(méi)有詳盡的用戶需求時(shí),可以使用設(shè)計(jì)心理學(xué),想用戶所想,這無(wú)疑是對(duì)思維的又一有效鍛煉方式。教師在教學(xué)過(guò)程中可以將現(xiàn)實(shí)生活中的任務(wù),分配給學(xué)生,讓他們身為用戶,充分發(fā)揮想象力,激發(fā)了學(xué)生的自我創(chuàng)新能力的培養(yǎng)。
3.提高階段。提高階段是課程的最終階段,目標(biāo)是培養(yǎng)學(xué)生的綜合實(shí)踐能力。為了提高學(xué)生的創(chuàng)新思維能力,我們?cè)诮虒W(xué)中采用校內(nèi)課程實(shí)訓(xùn)和校外生產(chǎn)實(shí)習(xí)兩種形式。校內(nèi)課程實(shí)訓(xùn):在程序設(shè)計(jì)類課程中增加了兩周的綜合實(shí)訓(xùn),讓學(xué)生利用所學(xué)的語(yǔ)言解決身邊存在的實(shí)際問(wèn)題。實(shí)訓(xùn)題目來(lái)源于教師的科研子課題和學(xué)生自擬題目,這樣大大提高了學(xué)生自主開(kāi)發(fā)和設(shè)計(jì)的意愿,教師的工作從手把手教到輔助指導(dǎo)學(xué)生。校外生產(chǎn)實(shí)習(xí):由我院專業(yè)對(duì)口合作企業(yè),提供相應(yīng)的實(shí)習(xí)崗位,分配學(xué)生具體的工作,學(xué)生應(yīng)用所學(xué)知識(shí),自行完成工作任務(wù),在學(xué)生階段,達(dá)到和企業(yè)無(wú)縫鏈接,畢業(yè)時(shí)就可以具有崗位所需技能。
程序設(shè)計(jì)類課程需要記憶的語(yǔ)法多、枯燥,學(xué)生學(xué)習(xí)積極性不高,實(shí)踐能力弱,傳統(tǒng)的教學(xué)方式無(wú)法達(dá)到良好的教學(xué)效果。結(jié)合我院專業(yè)實(shí)際情況,對(duì)程序設(shè)計(jì)課程教學(xué)方法進(jìn)行改革,利用三階段教學(xué)法,即“認(rèn)識(shí)階段,加強(qiáng)認(rèn)識(shí)”、“設(shè)計(jì)階段、培養(yǎng)能力”、“提高階段、強(qiáng)化實(shí)踐”,真正抓住了課程本質(zhì),使學(xué)生意識(shí)到“設(shè)計(jì)”在程序編寫中的重要性,初步掌握了“設(shè)計(jì)”的能力,動(dòng)手實(shí)踐能力明顯提高,教學(xué)效果和質(zhì)量明顯改觀。
[1]鐘志水,姚珺.大學(xué)計(jì)算機(jī)應(yīng)用基礎(chǔ)[M].重慶:重慶大學(xué)出版社,2012.
[2]章逸,帥晉明.計(jì)算機(jī)專業(yè)《程序設(shè)計(jì)類課程導(dǎo)論》的改革與實(shí)踐[J].江西教育學(xué)院學(xué)報(bào),2011,32(6):65-67.
[3]金淘,童水光.逆向工程技術(shù)[M].北京:機(jī)械工業(yè)出版社,2003.
[4]鄧銳,趙莉,湯旭蓉,彭順生.表象訓(xùn)練提高程序類課程教學(xué)效果之實(shí)證研究[J].中國(guó)校外教育,2012,(5):168-169.
[5]劉振霞,梁偉,楊愛(ài)新.高職程序設(shè)計(jì)類課程“教學(xué)做”一體化教學(xué)模式的研究與實(shí)踐 [J].中國(guó)科教創(chuàng)新導(dǎo)刊,2012,(11):77-78.
[6]孫連云.關(guān)于提高程序設(shè)計(jì)類課程教學(xué)效果的新探索[J].農(nóng)業(yè)網(wǎng)絡(luò)信息,2008,(8):111-113.
[7]周正國(guó).基于項(xiàng)目的高職院校程序設(shè)計(jì)類課程改革探討[J].長(zhǎng)江大學(xué)學(xué)報(bào)(自然科學(xué)版)理工,2012,7(9):165-166.
[8]馬雪英,王桂平.以能力為導(dǎo)向的程序設(shè)計(jì)類課程教學(xué)體系[J].計(jì)算機(jī)教育,2011,(4):74-78.
G642.0
A
1674-9324(2014)20-0039-02
陜西省教育科學(xué)十二五規(guī)劃課題SGH12549資助。