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