徐洪智 蔡國民
(吉首大學(xué) 軟件服務(wù)外包學(xué)院,湖南張家界 427000)
?
軟件工程專業(yè)程序設(shè)計課程群建設(shè)研究與實踐
徐洪智蔡國民
(吉首大學(xué)軟件服務(wù)外包學(xué)院,湖南張家界427000)
摘要:程序設(shè)計課程群是軟件工程專業(yè)系列課程的重要組成部分,建設(shè)該課程群有利于提高學(xué)生程序設(shè)計能力,進而提高就業(yè)競爭力。分析了學(xué)生在學(xué)習(xí)程序設(shè)計課程中的一些問題,提出了程序設(shè)計課程群的主要知識和能力體系要求,通過精講課程主要內(nèi)容、大規(guī)模開展程序設(shè)計訓(xùn)練、課程設(shè)計、改革考核與評價方式等方法進行課程群教學(xué)改革,取得了較好的教學(xué)效果。
關(guān)鍵詞:軟件工程;程序設(shè)計;課程群;建設(shè);實踐
軟件工程專業(yè)的培養(yǎng)目標(biāo)是面向我國軟件產(chǎn)業(yè)培養(yǎng)急需的工程應(yīng)用型人才。軟件產(chǎn)業(yè)的發(fā)展要求學(xué)生具備較強的系統(tǒng)分析、設(shè)計、開發(fā)與維護能力[1]。為培養(yǎng)學(xué)生軟件系統(tǒng)方面的相關(guān)能力,許多高校的軟件工程專業(yè)都設(shè)置了系列課程模塊,如程序設(shè)計課程模塊、網(wǎng)絡(luò)技術(shù)課程模塊、計算機體系和操作系統(tǒng)課程模塊、軟件工程課程模塊等,這些模塊往往是一些單獨課程的組合,有很多學(xué)生學(xué)了這門課程,又忘記了那門課程,到畢業(yè)時專業(yè)能力達(dá)不到社會所要求的層次。程序設(shè)計課程群是軟件工程專業(yè)系列課程的重要組成部分,其承載的技能培養(yǎng)目標(biāo)是專業(yè)培養(yǎng)的子目標(biāo)[2],處于非常重要的地位。課程群建設(shè)是專業(yè)建設(shè)的一部分[3],有利于打通課程知識脈絡(luò),避免課程內(nèi)容重復(fù)或前后脫節(jié),使前后連貫,內(nèi)容融合,進而獲得整體優(yōu)勢[4]。程序設(shè)計課程群主要培養(yǎng)計算思維能力、算法設(shè)計與分析能力、程序設(shè)計與實現(xiàn)能力和系統(tǒng)分析開發(fā)能力[5]。學(xué)生通過程序設(shè)計課程群的學(xué)習(xí),可掌握1~2門程序設(shè)計語言,更進一步理解程序設(shè)計方法,熟練掌握常用的數(shù)據(jù)結(jié)構(gòu)和算法,形成良好的程序設(shè)計風(fēng)格,可獨立分析、設(shè)計和開發(fā)中小型軟件系統(tǒng)。所以對程序設(shè)計課程群進行研究并積極實踐對專業(yè)培養(yǎng)目標(biāo)的實現(xiàn)具有重要現(xiàn)實意義。
1問題分析
目前,大多數(shù)高校信息類相關(guān)專業(yè)都開設(shè)了程序設(shè)計系列課程,一般為C語言程序設(shè)計、數(shù)據(jù)結(jié)構(gòu)與算法、java程序設(shè)計等。許多高校都將C程序設(shè)計作為第一門程序設(shè)計課程[6],一般安排在第一學(xué)期或者第二學(xué)期,學(xué)完C語言之后,再學(xué)其他程序設(shè)計課程,如數(shù)據(jù)結(jié)構(gòu)等。由于C語言本身比較靈活且語法內(nèi)容比較多,對于初學(xué)者來說并不太好掌握。一些教師在授課過程中,沒有站在軟件設(shè)計的高度思考教學(xué)內(nèi)容,往往過多地強調(diào)語言成分的語法和語義,而忽視了計算思維能力[7]的培養(yǎng),使學(xué)生從開始就扎進程序設(shè)計語言的細(xì)枝末節(jié)中去,忽略了軟件工程思想的滲透,到最后學(xué)生掌握了一些語法,卻不能寫出較為優(yōu)美的程序或沒有形成較好的程序設(shè)計思維和風(fēng)格。
算法是程序的靈魂,數(shù)據(jù)結(jié)構(gòu)和算法在課程群中具有基礎(chǔ)和核心地位[8]。在實際教學(xué)過程中,學(xué)生普遍反映數(shù)據(jù)結(jié)構(gòu)和算法課程抽象難學(xué),在學(xué)習(xí)和實際應(yīng)用中出現(xiàn)的問題比較多,很難寫出能正確運行的程序,學(xué)習(xí)過程中成就感不強,學(xué)完之后還是不知道如何應(yīng)用,很難達(dá)到預(yù)期的效果。
由于在前期的學(xué)習(xí)中,程序設(shè)計基礎(chǔ)沒有打牢,對常用的數(shù)據(jù)結(jié)構(gòu)和算法沒有真正掌握,模塊化程序設(shè)計思維沒有有效建立,良好的程序設(shè)計風(fēng)格沒有形成,導(dǎo)致后續(xù)的高級面向?qū)ο笳Z言程序設(shè)計學(xué)習(xí)很難深入,最終導(dǎo)致軟件分析與設(shè)計能力得不到有效的提升。
2程序設(shè)計課程群建設(shè)
我校軟件工程專業(yè)采取校企合作辦學(xué)模式,由吉首大學(xué)和中軟國際共同建設(shè),企業(yè)參與人才培養(yǎng)的全過程,在具體實施過程中,學(xué)校側(cè)重于理論教學(xué)部分,企業(yè)側(cè)重于實踐教學(xué)部分[9]。程序設(shè)計課程群是軟件工程專業(yè)課程體系的重要組成部分,企業(yè)參與討論與建設(shè),確定該課程群以軟件設(shè)計能力培養(yǎng)為主線,以C語言程序設(shè)計、數(shù)據(jù)結(jié)構(gòu)、面向?qū)ο蠹夹g(shù)、算法設(shè)計與分析幾門課程為基礎(chǔ)組建課程群,C語言程序設(shè)計開設(shè)在第一、二學(xué)期,數(shù)據(jù)結(jié)構(gòu)、面向?qū)ο蠹夹g(shù)、算法設(shè)計與分析分別開設(shè)在第三、四、五學(xué)期,第六學(xué)期可開設(shè)Java Web程序設(shè)計或Asp.Net Web程序設(shè)計,使課程群在能力構(gòu)建和開設(shè)形式方面形成一個不間斷的體系。主要知識和能力體系構(gòu)建過程如表1所示。
表1 程序設(shè)計課程群知識和能力體系構(gòu)建
3程序設(shè)計課程群實施
3.1精講課程主要內(nèi)容,提高程序設(shè)計能力
課程組教師首先需要站在軟件分析與設(shè)計的角度研究各門課程在課程群中的地位和作用,把課程群中的系列課程作為一個有機的整體,研究各門課程的主要教學(xué)內(nèi)容,針對課程重點、難點、疑惑點進行精講,做到理論與實踐課并重,有效提高學(xué)生程序設(shè)計水平。
在課程群系列課程中,由于第一門課程是后續(xù)系列課程的基礎(chǔ),所以學(xué)生必須掌握它。在C語言的教學(xué)中,要滲透軟件分析與設(shè)計的思想,把握程序的主要框架,不糾纏于一些細(xì)枝末節(jié)的語法。函數(shù)是C語言教學(xué)中的重點,需要重點突破,從模塊設(shè)計的角度來考慮函數(shù)設(shè)計,對于一個具體的函數(shù),則要掌握函數(shù)的返回類型、參數(shù)類型以及參數(shù)個數(shù)。如用函數(shù)處理一個數(shù)組時,需要傳遞數(shù)組的首地址和數(shù)組的規(guī)模,首地址用指針表示,數(shù)組的規(guī)模則有兩種表示方法,一是數(shù)組的長度,二是數(shù)組的起始下標(biāo)和結(jié)束下標(biāo),這兩種方式可能會分別應(yīng)用到不同的地方,如果教師一直不提示第二種方法,則將來學(xué)生在寫數(shù)組做參數(shù)的遞歸程序時可能會遇到困難。從多年的教學(xué)實踐來看,如果學(xué)生真正掌握了函數(shù)設(shè)計方法,再加上必要的算法知識,一般情況下,程序設(shè)計就會變得得心應(yīng)手而且十分有趣;對于數(shù)據(jù)結(jié)構(gòu)課程,采取以數(shù)據(jù)存儲(內(nèi)存)為主線的方法,將重點放在數(shù)據(jù)的存儲和相關(guān)算法方面,在算法實現(xiàn)時滲透模塊化的思想,需注意頭文件和實現(xiàn)文件的定義,因為數(shù)據(jù)結(jié)構(gòu)內(nèi)容具有很強的連貫性且程序的初始化工作較多,如鏈表的具體應(yīng)用則先要建立鏈表、樹的遍歷和節(jié)點的查找等則先要建立樹、圖的遍歷和最短路徑及關(guān)鍵路徑等則先要建立圖,在實驗過程中有意識地把一些基礎(chǔ)工作放入頭文件,則會極大地提高實驗的效率;在面向?qū)ο蠹夹g(shù)教學(xué)中,以面向?qū)ο蟪绦蛟O(shè)計的方法為核心,以語言中的面向?qū)ο髾C制為主要內(nèi)容,在適當(dāng)?shù)臅r候引入《Thinking in C++》、《Effective C++》、《Thinking in Java》等優(yōu)秀書籍中的一些思想和經(jīng)驗,要注重面向?qū)ο蟪绦蛟O(shè)計過程中大的程序框架的合理性以及具體處理算法的正確性;在講授算法設(shè)計與分析的時候,應(yīng)集中精力將主要算法講透,直到學(xué)生學(xué)懂為止,在實現(xiàn)算法時,應(yīng)充分運用面向?qū)ο笤O(shè)計的思想,將算法封裝在類中;在web程序設(shè)計教學(xué)中,采用案例驅(qū)動的方式,精講軟件項目設(shè)計中的主要方法和主要問題,培養(yǎng)學(xué)生工程化設(shè)計思想。精講的目的是讓學(xué)生多練,精講之后要布置任務(wù)并為學(xué)生提供練習(xí)環(huán)境和相關(guān)指導(dǎo),必須充分發(fā)揮教師主導(dǎo)和學(xué)生主體作用,教師要認(rèn)真檢查學(xué)生的作業(yè)、實驗和練習(xí)情況,及時糾正問題,引導(dǎo)學(xué)生運用軟件工程的思想設(shè)計程序,培養(yǎng)學(xué)生良好的程序設(shè)計思維和程序設(shè)計風(fēng)格,激發(fā)學(xué)生自覺學(xué)習(xí)和實現(xiàn)相關(guān)算法,最終提高程序設(shè)計能力。
3.2大規(guī)模開展程序設(shè)計訓(xùn)練,培養(yǎng)程序設(shè)計能力
為培養(yǎng)學(xué)生算法設(shè)計與分析能力,學(xué)院在晚上和周末開放了實驗室,在實驗室搭建了ACM在線測評系統(tǒng)(ACM Online Judge System),并接入了校園網(wǎng),結(jié)合C程序設(shè)計、數(shù)據(jù)結(jié)構(gòu)與算法等課程部署了大量習(xí)題。學(xué)院利用課余時間,有計劃組織學(xué)生進入實驗室進行編程訓(xùn)練,并為每次訓(xùn)練配備了指導(dǎo)教師。平時,學(xué)生也可以在寢室登錄平臺進行訓(xùn)練。教師在講授C程序設(shè)計等課程的時候,要求學(xué)生利用課余時間在ACM平臺上完成至少上百道題的訓(xùn)練,并將完成情況計入課程的平時成績。通過大規(guī)模開展在線程序設(shè)計訓(xùn)練,學(xué)生的程序設(shè)計能力有了明顯的提高。
3.3開展課程設(shè)計訓(xùn)練,培養(yǎng)工程化設(shè)計思想
在課程群中除開設(shè)理論課程對應(yīng)的實驗項目之外,還針對整門課程開設(shè)了綜合性課程設(shè)計項目,如C語言課程設(shè)計、面向?qū)ο蠹夹g(shù)課程設(shè)計、java web課程設(shè)計,單個課程設(shè)計周期為1-4周。學(xué)院課程設(shè)計項目主要由企業(yè)教師指導(dǎo)完成,該類項目采用分組形式,在組內(nèi)模擬軟件企業(yè)運行模式設(shè)置相關(guān)崗位角色,學(xué)生在仿真企業(yè)環(huán)境中,利用仿真的軟件開發(fā)項目,進行輪崗和角色體驗,培養(yǎng)學(xué)生的軟件工程應(yīng)用能力、軟件項目開發(fā)與測試能力、職業(yè)素質(zhì)等,從而使學(xué)生熟悉軟件項目開發(fā)流程和規(guī)范,養(yǎng)成良好的軟件開發(fā)習(xí)慣。課程設(shè)計結(jié)束時,要求學(xué)生演示并講解自己的項目開發(fā)情況,由學(xué)院教師和企業(yè)教師組成評定小組進行評分。
3.4改革考核與評價方式,理論與實踐、平時與期末相結(jié)合
理論與實踐相結(jié)合。程序設(shè)計課程群內(nèi)的課程都是實踐性很強的課程,其目的是運用所學(xué)的知識解決實際問題,決定了課程的期末考核要綜合考慮理論和實踐兩部分內(nèi)容。理論部分主要考查學(xué)生對基本概念的理解和對基本知識的掌握情況,實踐部分側(cè)重考查學(xué)生的綜合應(yīng)用能力,這兩部分成績都在期末完成,占課程總成績的60 %左右。
平時與期末相結(jié)合。期末考核重在體現(xiàn)學(xué)習(xí)的結(jié)果,平時成績則側(cè)重于體現(xiàn)學(xué)習(xí)過程,在課程總成績中,平時成績占40 %左右,即一門課程約有40分來自平時的學(xué)習(xí)過程。平時成績一般由出勤、作業(yè)和平時實驗情況、課程設(shè)計情況組成。在學(xué)期開始第一堂課的時候?qū)⒄n程評分方式告知每一個學(xué)生,必須抓緊平時的學(xué)習(xí),若平時分小于20分,則取消課程考試資格或直接將課程總成績記為不及格。
4結(jié)語
程序設(shè)計課程群對培養(yǎng)學(xué)生計算思維能力、算法設(shè)計與分析能力、系統(tǒng)分析與設(shè)計能力具有重要作用。本文分析了學(xué)生在課程群學(xué)習(xí)中遇到的一些問題,從軟件分析與設(shè)計的角度對課程群進行建設(shè)與改革,提出了以C語言程序設(shè)計、數(shù)據(jù)結(jié)構(gòu)、面向?qū)ο蠹夹g(shù)、算法設(shè)計與分析等幾門課程為基礎(chǔ)組建程序設(shè)計課程群,給出了課程群的主要知識與能力體系要求,通過精講課程主要內(nèi)容、大規(guī)模有組織地開展程序設(shè)計訓(xùn)練、企業(yè)教師指導(dǎo)課程設(shè)計、改革考核與評價方式等方法進行教學(xué)改革,學(xué)生的程序設(shè)計能力得了到較大的提高。
參 考 文 獻
[1]韋迎春,文俊浩,陳蜀宇.以能力培養(yǎng)為核心 構(gòu)建示范性軟件學(xué)院實踐教學(xué)體系[J].中國高等教育,2011(2):49-50.
[2]喬付,王國權(quán),張鳳武.CDIO理念下計算機程序設(shè)計課程群建設(shè)探索[J].內(nèi)蒙古師范大學(xué)學(xué)報,2011,24(11):39-41.
[3]孫雷,王新.計算機專業(yè)程序設(shè)計課程群的研究與實踐[J].教育教學(xué)論壇,2013(11):222-224.
[4]翁偉,吳克壽,吳蕓,等.程序設(shè)計課程群建設(shè)探索與實踐[J].計算機教育,2009(23):123-125.
[5]王海舜,蔣巍巍.基于程序設(shè)計能力培養(yǎng)的軟件設(shè)計類課程群架構(gòu)[J].計算機教育, 2012(2):23-26.
[6]萬臣,謝芳,胡泉.計算機專業(yè)程序設(shè)計課程群的建設(shè)與研究[J].合肥工業(yè)大學(xué)學(xué)報:社會科學(xué)版,2009,23(1):33-36.
[7]汪紅兵,姚琳,武航星,等. C 語言程序設(shè)計課程中的計算思維探析[J].中國大學(xué)教學(xué),2014(9):59-62.
[8]熊回香.數(shù)據(jù)結(jié)構(gòu)課程與信息化人才培養(yǎng)的關(guān)系研究[J].高等理科教育,2008(5):43-46.
[9]周清平,王曉波,徐洪智,等.平臺化思維模式助推高校軟件工程專業(yè)綜合改革[J].中國高等教育,2015(8):58-60.
The Study and Practice of Programming Course Group Constructing for Software Engineering Specialty
XU Hongzhi CAI Guomin
(Jishou University School of Software and Service Outsourcing, Hunan Zhangjiajie 427000)
AbstractThe programming courses group is an important part of the course series in Software Engineering Specialty. The group can do favor to improve the programming ability of students and promote their employment competition. The paper analyzes the problem in the programming course, proposes the requirements of the main knowledge and ability system in programming courses group. By detailed teaching, scaled program training, course design, test and evaluating, the method optimizes the teaching effect obviously.
Key wordssoftware Engineering; programming; course group; construction; practice
文章編號:1009-0312(2016)01-0119-04
中圖分類號:G642.0
文獻標(biāo)識碼:A
作者簡介:徐洪智(1974—),男,湖南長沙人,副教授,主要從事軟件工程專業(yè)教學(xué)與管理研究。
基金項目:湖南省普通高?!笆濉睂I(yè)綜合改革試點項目(湘教通[2012]266號);吉首大學(xué)教學(xué)改革重點項目(2014SYJG005)。
收稿日期:2015-12-06