- 相關(guān)推薦
軟件工程專(zhuān)業(yè)程序設計課程群創(chuàng )建論文
摘要:程序設計課程群是軟件工程專(zhuān)業(yè)系列課程的重要組成部分,建設該課程群有利于提高學(xué)生程序設計能力,進(jìn)而提高就業(yè)競爭力。分析了學(xué)生在學(xué)習程序設計課程中的一些問(wèn)題,提出了程序設計課程群的主要知識和能力體系要求,通過(guò)精講課程主要內容、大規模開(kāi)展程序設計訓練、課程設計、改革考核與評價(jià)方式等方法進(jìn)行課程群教學(xué)改革,取得了較好的教學(xué)效果。
關(guān)鍵詞:軟件工程;程序設計;課程群;建設;實(shí)踐
軟件工程專(zhuān)業(yè)的培養目標是面向我國軟件產(chǎn)業(yè)培養急需的工程應用型人才。軟件產(chǎn)業(yè)的發(fā)展要求學(xué)生具備較強的系統分析、設計、開(kāi)發(fā)與維護能力[1]。為培養學(xué)生軟件系統方面的相關(guān)能力,許多高校的軟件工程專(zhuān)業(yè)都設置了系列課程模塊,如程序設計課程模塊、網(wǎng)絡(luò )技術(shù)課程模塊、計算機體系和操作系統課程模塊、軟件工程課程模塊等,這些模塊往往是一些單獨課程的組合,有很多學(xué)生學(xué)了這門(mén)課程,又忘記了那門(mén)課程,到畢業(yè)時(shí)專(zhuān)業(yè)能力達不到社會(huì )所要求的層次。程序設計課程群是軟件工程專(zhuān)業(yè)系列課程的重要組成部分,其承載的技能培養目標是專(zhuān)業(yè)培養的子目標[2],處于非常重要的地位。課程群建設是專(zhuān)業(yè)建設的一部分[3],有利于打通課程知識脈絡(luò ),避免課程內容重復或前后脫節,使前后連貫,內容融合,進(jìn)而獲得整體優(yōu)勢[4]。程序設計課程群主要培養計算思維能力、算法設計與分析能力、程序設計與實(shí)現能力和系統分析開(kāi)發(fā)能力[5]。學(xué)生通過(guò)程序設計課程群的學(xué)習,可掌握1~2門(mén)程序設計語(yǔ)言,更進(jìn)一步理解程序設計方法,熟練掌握常用的數據結構和算法,形成良好的程序設計風(fēng)格,可獨立分析、設計和開(kāi)發(fā)中小型軟件系統。所以對程序設計課程群進(jìn)行研究并積極實(shí)踐對專(zhuān)業(yè)培養目標的實(shí)現具有重要現實(shí)意義。
1問(wèn)題分析
目前,大多數高校信息類(lèi)相關(guān)專(zhuān)業(yè)都開(kāi)設了程序設計系列課程,一般為C語(yǔ)言程序設計、數據結構與算法、java程序設計等。許多高校都將C程序設計作為第一門(mén)程序設計課程[6],一般安排在第一學(xué)期或者第二學(xué)期,學(xué)完C語(yǔ)言之后,再學(xué)其他程序設計課程,如數據結構等。由于C語(yǔ)言本身比較靈活且語(yǔ)法內容比較多,對于初學(xué)者來(lái)說(shuō)并不太好掌握。一些教師在授課過(guò)程中,沒(méi)有站在軟件設計的高度思考教學(xué)內容,往往過(guò)多地強調語(yǔ)言成分的語(yǔ)法和語(yǔ)義,而忽視了計算思維能力[7]的培養,使學(xué)生從開(kāi)始就扎進(jìn)程序設計語(yǔ)言的細枝末節中去,忽略了軟件工程思想的滲透,到最后學(xué)生掌握了一些語(yǔ)法,卻不能寫(xiě)出較為優(yōu)美的程序或沒(méi)有形成較好的程序設計思維和風(fēng)格。算法是程序的靈魂,數據結構和算法在課程群中具有基礎和核心地位[8]。在實(shí)際教學(xué)過(guò)程中,學(xué)生普遍反映數據結構和算法課程抽象難學(xué),在學(xué)習和實(shí)際應用中出現的問(wèn)題比較多,很難寫(xiě)出能正確運行的程序,學(xué)習過(guò)程中成就感不強,學(xué)完之后還是不知道如何應用,很難達到預期的效果。由于在前期的學(xué)習中,程序設計基礎沒(méi)有打牢,對常用的數據結構和算法沒(méi)有真正掌握,模塊化程序設計思維沒(méi)有有效建立,良好的程序設計風(fēng)格沒(méi)有形成,導致后續的高級面向對象語(yǔ)言程序設計學(xué)習很難深入,最終導致軟件分析與設計能力得不到有效的提升。
2程序設計課程群建設
我校軟件工程專(zhuān)業(yè)采取校企合作辦學(xué)模式,由吉首大學(xué)和中軟國際共同建設,企業(yè)參與人才培養的全過(guò)程,在具體實(shí)施過(guò)程中,學(xué)校側重于理論教學(xué)部分,企業(yè)側重于實(shí)踐教學(xué)部分[9]。程序設計課程群是軟件工程專(zhuān)業(yè)課程體系的重要組成部分,企業(yè)參與討論與建設,確定該課程群以軟件設計能力培養為主線(xiàn),以C語(yǔ)言程序設計、數據結構、面向對象技術(shù)、算法設計與分析幾門(mén)課程為基礎組建課程群,C語(yǔ)言程序設計開(kāi)設在第一、二學(xué)期,數據結構、面向對象技術(shù)、算法設計與分析分別開(kāi)設在第三、四、五學(xué)期,第六學(xué)期可開(kāi)設JavaWeb程序設計或Asp.NetWeb程序設計,使課程群在能力構建和開(kāi)設形式方面形成一個(gè)不間斷的體系。
3程序設計課程群實(shí)施
3.1精講課程主要內容,提高程序設計能力
課程組教師首先需要站在軟件分析與設計的角度研究各門(mén)課程在課程群中的地位和作用,把課程群中的系列課程作為一個(gè)有機的整體,研究各門(mén)課程的主要教學(xué)內容,針對課程重點(diǎn)、難點(diǎn)、疑惑點(diǎn)進(jìn)行精講,做到理論與實(shí)踐課并重,有效提高學(xué)生程序設計水平。在課程群系列課程中,由于第一門(mén)課程是后續系列課程的基礎,所以學(xué)生必須掌握它。在C語(yǔ)言的教學(xué)中,要滲透軟件分析與設計的思想,把握程序的主要框架,不糾纏于一些細枝末節的語(yǔ)法。函數是C語(yǔ)言教學(xué)中的重點(diǎn),需要重點(diǎn)突破,從模塊設計的角度來(lái)考慮函數設計,對于一個(gè)具體的函數,則要掌握函數的返回類(lèi)型、參數類(lèi)型以及參數個(gè)數。如用函數處理一個(gè)數組時(shí),需要傳遞數組的首地址和數組的規模,首地址用指針表示,數組的規模則有兩種表示方法,一是數組的長(cháng)度,二是數組的起始下標和結束下標,這兩種方式可能會(huì )分別應用到不同的地方,如果教師一直不提示第二種方法,則將來(lái)學(xué)生在寫(xiě)數組做參數的遞歸程序時(shí)可能會(huì )遇到困難。從多年的教學(xué)實(shí)踐來(lái)看,如果學(xué)生真正掌握了函數設計方法,再加上必要的算法知識,一般情況下,程序設計就會(huì )變得得心應手而且十分有趣;對于數據結構課程,采取以數據存儲(內存)為主線(xiàn)的方法,將重點(diǎn)放在數據的存儲和相關(guān)算法方面,在算法實(shí)現時(shí)滲透模塊化的思想,需注意頭文件和實(shí)現文件的定義,因為數據結構內容具有很強的連貫性且程序的初始化工作較多,如鏈表的具體應用則先要建立鏈表、樹(shù)的遍歷和節點(diǎn)的查找等則先要建立樹(shù)、圖的遍歷和最短路徑及關(guān)鍵路徑等則先要建立圖,在實(shí)驗過(guò)程中有意識地把一些基礎工作放入頭文件,則會(huì )極大地提高實(shí)驗的效率;在面向對象技術(shù)教學(xué)中,以面向對象程序設計的方法為核心,以語(yǔ)言中的面向對象機制為主要內容,在適當的時(shí)候引入《ThinkinginC++》、《EffectiveC++》、《ThinkinginJa-va》等優(yōu)秀書(shū)籍中的一些思想和經(jīng)驗,要注重面向對象程序設計過(guò)程中大的程序框架的合理性以及具體處理算法的正確性;在講授算法設計與分析的時(shí)候,應集中精力將主要算法講透,直到學(xué)生學(xué)懂為止,在實(shí)現算法時(shí),應充分運用面向對象設計的思想,將算法封裝在類(lèi)中;在web程序設計教學(xué)中,采用案例驅動(dòng)的方式,精講軟件項目設計中的主要方法和主要問(wèn)題,培養學(xué)生工程化設計思想。精講的目的是讓學(xué)生多練,精講之后要布置任務(wù)并為學(xué)生提供練習環(huán)境和相關(guān)指導,必須充分發(fā)揮教師主導和學(xué)生主體作用,教師要認真檢查學(xué)生的作業(yè)、實(shí)驗和練習情況,及時(shí)糾正問(wèn)題,引導學(xué)生運用軟件工程的思想設計程序,培養學(xué)生良好的程序設計思維和程序設計風(fēng)格,激發(fā)學(xué)生自覺(jué)學(xué)習和實(shí)現相關(guān)算法,最終提高程序設計能力。
3.2大規模開(kāi)展程序設計訓練,培養程序設計能力
為培養學(xué)生算法設計與分析能力,學(xué)院在晚上和周末開(kāi)放了實(shí)驗室,在實(shí)驗室搭建了ACM在線(xiàn)測評系統(ACMOnlineJudgeSystem),并接入了校園網(wǎng),結合C程序設計、數據結構與算法等課程部署了大量習題。學(xué)院利用課余時(shí)間,有計劃組織學(xué)生進(jìn)入實(shí)驗室進(jìn)行編程訓練,并為每次訓練配備了指導教師。平時(shí),學(xué)生也可以在寢室登錄平臺進(jìn)行訓練。教師在講授C程序設計等課程的時(shí)候,要求學(xué)生利用課余時(shí)間在A(yíng)CM平臺上完成至少上百道題的訓練,并將完成情況計入課程的平時(shí)成績(jì)。通過(guò)大規模開(kāi)展在線(xiàn)程序設計訓練,學(xué)生的程序設計能力有了明顯的提高。
3.3開(kāi)展課程設計訓練,培養工程化設計思想
在課程群中除開(kāi)設理論課程對應的實(shí)驗項目之外,還針對整門(mén)課程開(kāi)設了綜合性課程設計項目,如C語(yǔ)言課程設計、面向對象技術(shù)課程設計、javaweb課程設計,單個(gè)課程設計周期為1-4周。學(xué)院課程設計項目主要由企業(yè)教師指導完成,該類(lèi)項目采用分組形式,在組內模擬軟件企業(yè)運行模式設置相關(guān)崗位角色,學(xué)生在仿真企業(yè)環(huán)境中,利用仿真的軟件開(kāi)發(fā)項目,進(jìn)行輪崗和角色體驗,培養學(xué)生的軟件工程應用能力、軟件項目開(kāi)發(fā)與測試能力、職業(yè)素質(zhì)等,從而使學(xué)生熟悉軟件項目開(kāi)發(fā)流程和規范,養成良好的軟件開(kāi)發(fā)習慣。課程設計結束時(shí),要求學(xué)生演示并講解自己的項目開(kāi)發(fā)情況,由學(xué)院教師和企業(yè)教師組成評定小組進(jìn)行評分。
3.4改革考核與評價(jià)方式,理論與實(shí)踐、平時(shí)與期末相結合
理論與實(shí)踐相結合。程序設計課程群內的課程都是實(shí)踐性很強的課程,其目的是運用所學(xué)的知識解決實(shí)際問(wèn)題,決定了課程的期末考核要綜合考慮理論和實(shí)踐兩部分內容。理論部分主要考查學(xué)生對基本概念的理解和對基本知識的掌握情況,實(shí)踐部分側重考查學(xué)生的綜合應用能力,這兩部分成績(jì)都在期末完成,占課程總成績(jì)的60%左右。平時(shí)與期末相結合。期末考核重在體現學(xué)習的結果,平時(shí)成績(jì)則側重于體現學(xué)習過(guò)程,在課程總成績(jì)中,平時(shí)成績(jì)占40%左右,即一門(mén)課程約有40分來(lái)自平時(shí)的學(xué)習過(guò)程。平時(shí)成績(jì)一般由出勤、作業(yè)和平時(shí)實(shí)驗情況、課程設計情況組成。在學(xué)期開(kāi)始第一堂課的時(shí)候將課程評分方式告知每一個(gè)學(xué)生,必須抓緊平時(shí)的學(xué)習,若平時(shí)分小于20分,則取消課程考試資格或直接將課程總成績(jì)記為不及格。
4結語(yǔ)
程序設計課程群對培養學(xué)生計算思維能力、算法設計與分析能力、系統分析與設計能力具有重要作用。本文分析了學(xué)生在課程群學(xué)習中遇到的一些問(wèn)題,從軟件分析與設計的角度對課程群進(jìn)行建設與改革,提出了以C語(yǔ)言程序設計、數據結構、面向對象技術(shù)、算法設計與分析等幾門(mén)課程為基礎組建程序設計課程群,給出了課程群的主要知識與能力體系要求,通過(guò)精講課程主要內容、大規模有組織地開(kāi)展程序設計訓練、企業(yè)教師指導課程設計、改革考核與評價(jià)方式等方法進(jìn)行教學(xué)改革,學(xué)生的程序設計能力得了到較大的提高。
參考文獻
。1]韋迎春,文俊浩,陳蜀宇.以能力培養為核心構建示范性軟件學(xué)院實(shí)踐教學(xué)體系[J].中國高等教育,2011(2):49-50.
。2]喬付,王國權,張鳳武.CDIO理念下計算機程序設計課程群建設探索[J].內蒙古師范大學(xué)學(xué)報,2011,24(11):39-41.
。3]孫雷,王新.計算機專(zhuān)業(yè)程序設計課程群的研究與實(shí)踐[J].教育教學(xué)論壇,2013(11):222-224.
。4]翁偉,吳克壽,吳蕓,等.程序設計課程群建設探索與實(shí)踐[J].計算機教育,2009(23):123-125.
。5]王海舜,蔣巍。诔绦蛟O計能力培養的軟件設計類(lèi)課程群架構[J].計算機教育,2012(2):23-26.
。6]萬(wàn)臣,謝芳,胡泉.計算機專(zhuān)業(yè)程序設計課程群的建設與研究[J].合肥工業(yè)大學(xué)學(xué)報:社會(huì )科學(xué)版,2009,23(1):33-36.
。7]汪紅兵,姚琳,武航星,等.C語(yǔ)言程序設計課程中的計算思維探析[J].中國大學(xué)教學(xué),2014(9):59-62.
。8]熊回香.數據結構課程與信息化人才培養的關(guān)系研究[J].高等理科教育,2008(5):43-46.
。9]周清平,王曉波,徐洪智,等.平臺化思維模式助推高校軟件工程專(zhuān)業(yè)綜合改革[J].中國高等教育,2015(8):58-60.