計算機程序設計實踐教改與革新思索

時間:2022-06-04 04:21:00

導語:計算機程序設計實踐教改與革新思索一文來源于網友上傳,不代表本站觀點,若需要原創文章可咨詢客服老師,歡迎參考。

計算機程序設計實踐教改與革新思索

由于軟件編程技術及方法的日新月異和社會對高校計算機相關專業學生的軟件能力要求的不斷提高,高校的程序設計類課程的門類越來越多,僅面向對象程序設計類課程就有VisualC++,VisualBasic,net編程,Java程序設計等。但長期的教學經驗說明,當學生學習了一大堆編程語言后,解決實際問題的能力并沒有明顯提高,動手能力和創新能力不強,不能較快適應社會對軟件開發人才的需求。鑒于此,從程序設計類課程實踐教學計劃的制定、實踐教學質量保障、拓展實驗實踐教學時間和空間、實踐教學項目設計與監督等方面提出一系列改革和創新的思路和方法。

1制定合理的編程類實踐課程教學計劃

實踐教學大綱是實踐課程開設質量的重要保證,同時,實踐教學計劃是整個教學計劃的重要組成部分。在制定實踐教學計劃時,要充分考慮自己學校的特色、學生的實際情況和社會實際需求,以《中國計算機科學與技術學科教程2002(CCC2002)》和《高等學校計算機科學與技術專業實踐教學體系與規范》等為指導,以對所培養學生的目標定位為歸宿,制定和不斷修訂實踐教學計劃。制定系列化的編程類課程體系和編程類課程群[1-2],以Java程序設計實踐課程的開設為例,可以分階段開設,按完整的Java技術路線組織,如在低年級開設“JavaSE程序設計和應用”課程及其實踐課程,在較高年級開設“JavaEE程序設計和應用”和“JavaME程序設計和應用”課程及其實踐課程。這樣,可以有效避免學生在學習了一門編程語言基礎后,出現繼續深入的困難和技術“斷線”現象,如只學完了JavaSE部分的知識,不知道進一步的Java學習方向等[3]。目前,大多數院校開設的程序設計類課程是以專業選修課程的形式進行的,因此,指導學生有針對性地進行選課非常重要,如:學生選修了“Java程序設計”的先修課,在高年級時可以建議其去選修“JavaWeb編程”課程;若學生選修了“VB程序設計”的先修課,在高年級時可以建議其去選修“ASP(ASP.net)Web編程”課程等。在選課系統中增設關于每門課程的內容簡介和授課教師的介紹,這樣做有以下好處:一是在課程名稱字面上就可以看出授課的重點,可以回避學生從一個籠統的“XX程序設計”名稱上產生誤會,認為這門課可以將該編程語言的所有技術都包含進去;二是通過課程內容簡介,讓學生更加透明地了解每門不同程序設計課程的授課重點,從而根據自己的知識需求和興趣有目的地選擇課程。所有代程序設計課程的教師共同參與,集思廣益地制定實踐教學計劃。這樣做,一方面可以保證實踐教學計劃的完整和系統,避免低層次的重復和課程沖突;另一方面,可以讓教師從更高高度把握實踐教學規劃,而不僅是只關注自己所教授的那門編程課程。將實踐教學系統地規劃到理論教學、實驗課、課程設計、學年和畢業設計以及創新實踐等各個不同階段和各部分中,逐步落實,如圖1所示。

2以實際問題為出發點,以社會需求為歸宿

為了切實培養學生發現問題、解決問題、實際動手、交流和表達、持續學習、適應和協調、組織能力等綜合能力[4],需要從以下幾個方面入手。

2.1實踐項目的設計應以實際應用為背景

任何的應用和創新都是源于現實的需求,再小的實踐項目,都需要有調研與需求分析過程。引導學生在編程實踐時學會思考“某一種編程方法會運用在哪些實際項目中”、“哪些是通用的軟件模塊”、“接口方法如何”、“如何將不同成員開發的模塊集成在一起,怎樣測試”、“在單臺計算機上開發并測試的項目如何到網絡環境下”、“能用嗎”、“如何改進”等問題,是鍛煉和提高學生獨立思考能力的重要途徑。教師自身要研究社會對計算機軟件人才的具體要求、研究如何培養學生,以發展的眼光注重培養學生獨立思考、分析和解決實際應用問題的能力。

2.2明確畢業走向,提高學生實踐能力

經驗表明,計算機軟件相關專業學生在畢業后,大體有以下幾種走向:考研深造、直接進公司從事計算機軟件開發、通過考公務員等方式進入事業型單位從事技術性或文職型工作崗位等。因此,在高年級階段,應引導學生明確就業意向,進而有針對性地強化其專業技能。

2.2.1加強基本編程思維和方法的訓練編程思維和方法的訓練對程序設計能力的培養具有決定性作用。對學生要進行面向過程和面向對象編程思想和其對應的基本編程方法的引導,達到讓學生由此及彼、觸類旁通地學習其他編程語言和技術。若沒有培養起學生基本編程思想和能力,即便學生學習了再多門類的編程語言,仍不能提高能力,有時反而還會導致學生在各種編程語言和技術中徘徊不定,遇到問題不能快速進行編程和技術選型。

2.2.2培養科研型、技術工程型人才在學生具備了基本編程思維和技能的基礎上,可以考慮引導學生在高年級階段根據自己的畢業走向有針對性地強化編程訓練,以快速適應即將面臨的新環境和新挑戰。對于準備考研深造的學生,可以將他們吸收到教師科研隊伍中。這樣,可以潛移默化地讓學生盡早熟悉科研工作,掌握正確的科研方法,提高科研意識,鍛煉分析問題、解決問題的能力,培養嚴謹求實的科研作風[5]。舉例來說,教師可以在自己運用Matlab進行科學計算、數字圖像處理、Simulink仿真、遺傳算法與神經網絡等智能算法研究時,通過帶動學生參與其中,讓學生不僅奠定一定科研基礎,還會熟悉Matlab及其相關編程方法、運用Multisim進行電路系統的設計和仿真[6]等。對于將自己畢業走向確定為軟件項目開發等的學生,可以將其吸納到教師軟件項目開發小組中來,或吸納到由指導教師牽頭并組建的學生軟件項目開發小組中,讓學生熟悉實際軟件項目的開發流程和方法。在實際項目開發過程中,更進一步明確自己的技術選型,在社會需求量較大的眾多軟件技術如VisualC++、.Net技術、Java技術等中鎖定一種,進而鍛煉和培養學生進行實際項目開發的能力。

2.3鼓勵學生通過專業資格認證

對于所有學生,首先都應鼓勵他們通過專業資格認證,如參加全國計算機等級考試四級中的四級網絡工程師、四級數據庫工程師、四級軟件測試工程師方向考試,軟件工程師、系統架構師資格認證考試,SUN公司的Java技術認證,Cisco公司的網絡技術認證等。通過這些專業資格認證的考試的準備和資格獲得,可以幫助學生明確自己的專業方向,而且對該方向產生更大興趣和信心。其次,要鼓勵學生積極參與各級各類的專業程序設計競賽,如ACM競賽、ITAT競賽以及其他競賽。通過參與競賽,拔高學生的編程高度、拓展編程視野、培養創新精神和能力。

3拓展實踐教學的時間和空間

通常,實踐教學被納入正常的教學學時中,學時有限、實驗室固定,這對于綜合性、創新性實驗的開展很不利。

3.1充分利用優質資源,拓展實驗平臺

以利用北京大學的“北京大學程序在線評測系統(POJ)”為例,該系統具有可以運用各類編程語言進行在線程序編寫和即時評測的強大功能,其上的題目具有實用性、趣味性和很高的創新性,可以充分地幫助學生提高通過編程解決反映工作和生活實際問題的能力[7],從而充分調動學生的主動性、積極性和創造性,激發學生的創新思維和創新意識,逐漸掌握獨立思考問題、解決問題的方法,提高其創新實踐的能力。引進或自行研制開發基于Web工作流的程序設計綜合管理系統[8-9]。通過該系統,由教師在課前提交實踐項目的目的、要求、內容等,讓學生在實踐課前通過該平臺預習實踐內容、查閱資料,進行相關的設計和初步實現,課后書寫實踐報告并通過該平臺提交。教師評閱完畢后,學生可以看到批閱結果,根據批閱意見,繼續完善實踐項目。同時,教師可以將自己積累多年的程序設計項目、程序設計方法、歷屆優秀學生的程序設計作品和實用開發工具等在該平臺上,以供學生共享。開通師生用于交流程序設計經驗的論壇和即時答疑空間。

3.2軟件創新實驗室建設

成立計算機軟件創新實驗室的最終目的,是培養學生獨立承攬實際軟件工程項目的能力,和進行計算機軟件相關科研能力的培養,使學生具有快速適應社會需求或深造發展的需求能力。

3.2.1軟件創新實踐開展流程和制度建設

實際軟件項目的開發應具有嚴格的流程,在指導教師的帶領下,由學生組成創新實驗小組,創新實驗項目由指導教師規劃和安排,進入創新實驗室時應向計算機科學學院報送創新實驗項目安排表或軟件項目投標書等。完成創新實驗和實際軟件項目開發時,在條件允許的情況下應將相關資料和成果歸檔保存。軟件創新實踐項目和軟件項目開發一定要以“系統觀點”進行,即問題或大或小,都要通盤考慮,按照系統科學方法[10]和軟件工程方法進行,如圖2所示。組織項目開發人員,首先,進行角色劃分,如項目負責人、系統分析和設計人員、編碼和美工設計人員等,然后,當系統設計完成后,就要明確分配任務,形成任務分解表并落實到個人。由于學生進行實際項目開發的經驗不足,可由指導教師擔任項目的總負責人,定期督促和檢查項目進度和估算項目成本等[11]。在創新實驗室日常管理環節上,可以建立在指導教師的監督下,讓全體參與創新實踐的學生形成排班和輪流值日的管理制度[12]。

3.2.2軟件創新實驗實施方案

由指導教師牽頭,引導學生創新小組進行課題研究、承攬軟件開發項目和創新實踐探索研究[13]。課題研究一般是由教師吸收學生參與到研究的課題中,共同完成大型的實踐項目。指導教師帶領學生創新團隊承攬學校及校外的應用開發項目,進行項目開發。由主持實踐教學改革項目的教師帶領其他教師和學生進入創新實驗室,組織實施和完成“以應用為核心”、“以本科學生為主體”的創新性實踐教學改革項目。

4實踐項目的設計與監督

4.1實踐項目的原創性和創新性

實踐項目設計的原創性和創新性在很大程度上決定著實踐教學的質量。在長期程序設計教學過程中,發現學生在平時實踐、學年論文(設計)、畢業論文(設計)以及實際項目開發過程中原創性差和缺乏創新性等問題,究其原因有:

(1)為了與程序設計理論教學配套,平時的程序設計實踐項目中“驗證性”項目和沒有實際應用背景的“示例性”項目比重較大。

(2)一些通用性的程序設計實踐項目,諸如“XX管理系統的設計和實現”、“XX網站的開發與實現”等的相關開放資源非常多,其整個軟件的設計開發背景和需求、分析和設計過程,以及實現的全部源碼都是有現成可參考的。若實踐項目如此命題,則導致部分學生將查閱參考資料變成了“復制—粘貼”,這樣,不僅沒有達到良好的實踐效果,反而還讓一些學生養成了不勞而獲、抄襲剽竊的壞習氣。

(3)虛擬和籠統的實踐項目較多,比如對系統的設計和開發背景是自定的而不是源于實際用戶的開發需求等。學生在完成過程中,沒有經歷分析和解決實際應用問題的磨礪過程。因此,在引導學生進行項目實踐的過程中,在對其進行各階段指導和檢查時,必須嚴格把關,對實踐項目題目的設計本身應具有很強的針對性、原創性和創新性。不斷引導學生從身邊做起,積極主動地發現需求,比如:在歷屆的全國計算機等級考試中,發現有個別考生攜帶U盤等電子介質作弊的問題,教師應引導學生去探究和開發一種能夠監控和防止利用電子介質作弊的軟件;學校的各機關部門和學院都有開發和維護各自部門網站、開發學生管理系統、財務管理系統等需求,這些需求往往很具體,具有特殊要求和差異性,教師可以引導學生項目開發團隊承攬和開發這些項目;教師面臨缺乏專有的與學生進行在線溝通和交流的系統和在線收發、批閱作業的系統,可以將這樣的需求作為學生畢業設計的題目等。

4.2加強對學生實踐效果的檢驗和監督

要注重從貫穿整個本科實踐教學的各個環節,諸如各項編程類基礎實踐項目、創新性和研究性實踐項目、各級各類的專業程序設計競賽、本科學年設計、本科畢業設計等具體環節入手,全程監督和檢查學生的實踐能力。改革對學生程序設計課程考核的機制,加大實踐考核在成績、能力評價中的比重;教師通過對學生所做的實踐項目進行提問、討論、答辯等方式,了解每個學生在實踐中存在的問題和實踐效果,發現不足,進而有的放矢地改善程序設計實踐效果。

5結束語

計算機程序設計類課程實踐教學的改革和創新是一項系統工程,涉及到實踐教學計劃的合理制定、實踐教學的目標定位,以及改革和實施創新實踐教學方法等方面,逐步落實、層層推進這些措施,才可能為應用型、創新性、復合型計算機軟件人才培養做出應有的貢獻。