劉美玲 李熹 黃文鈞
摘要:從軟件工程專業(yè)的培養(yǎng)目標(biāo)出發(fā),根據(jù)Java程序設(shè)計課程的特點,結(jié)合廣西民族大學(xué)軟件工程專業(yè)Java課程設(shè)計的教學(xué)實踐,從課程設(shè)計的概念、大綱制定與方案設(shè)計等幾個方面介紹Java課程設(shè)計的作用與具體實施方案,總結(jié)近幾年課程設(shè)計的實踐心得與教學(xué)經(jīng)驗。
關(guān)鍵詞:課程設(shè)計;Java程序設(shè)計;實踐教學(xué);軟件工程
0、引言
軟件工程專業(yè)本科生的培養(yǎng)目標(biāo)是面向軟件產(chǎn)業(yè)界對軟件工程專業(yè)技術(shù)人才的需求,培養(yǎng)具備扎實的計算機科學(xué)技術(shù)基本知識,受過良好的軟件設(shè)計、開發(fā)和工程管理方法基本訓(xùn)練的應(yīng)用型高級技術(shù)人才。
Java程序設(shè)計是軟件工程專業(yè)的一門重要課程,該門課程的課程設(shè)計作為實踐教學(xué)的重要環(huán)節(jié),對培養(yǎng)學(xué)生的學(xué)習(xí)能力、問題分析與解決能力、實踐創(chuàng)新能力起著重要的作用,同時還可以培養(yǎng)學(xué)生的軟件工程思想,提高學(xué)生的軟件開發(fā)能力。
1、什么是課程設(shè)計
課程設(shè)計是學(xué)生在學(xué)完課程之后集中一兩周時間,以個人獨立完成或團隊分工合作等方式,圍繞某一設(shè)計題目進行專業(yè)實踐活動,旨在鞏固、強化、拓展所學(xué)知識,提高學(xué)生實踐操作能力和自學(xué)創(chuàng)新能力,培養(yǎng)學(xué)生團隊合作意識。
課程設(shè)計是針對性較強的實踐教學(xué)環(huán)節(jié),將課程基本理論與工程實際相聯(lián)系的綜合訓(xùn)練,是培養(yǎng)應(yīng)用型人才的一個重要步驟。課程設(shè)計可以使學(xué)生通過查閱資料、分析題目、確定設(shè)計方案等一系列步驟將理論知識與工程實踐相結(jié)合,從而加深對所學(xué)知識的理解與鞏固,提高整體思維能力、綜合應(yīng)用能力和創(chuàng)新能力。
2、Java課程設(shè)計大綱的制定
根據(jù)Java程序設(shè)計課程的教學(xué)大綱要求,制定相應(yīng)的課程設(shè)計大綱,明確課程設(shè)計的目的、任務(wù)要求、時間安排、設(shè)計文檔要求、考核方式、備選課題等。由于課程設(shè)計以個人獨立完成為主,因此課程設(shè)計的難易程度應(yīng)適當(dāng),保證學(xué)生在指定的時間內(nèi)能順利完成。根據(jù)計算機技術(shù)的應(yīng)用范圍與學(xué)生當(dāng)前的知識儲備情況,備選題目可設(shè)置多種類型,如小型桌面軟件類、管理系統(tǒng)類、網(wǎng)絡(luò)編程類等題目,當(dāng)然,學(xué)生也可以自擬題目。課程設(shè)計文檔是學(xué)生對自己的作品在系統(tǒng)總體結(jié)構(gòu)、功能模塊、程序流程圖、類圖、主要算法、遇到的主要問題與解決方法等方面進行說明的文字材料,同時要求學(xué)生在文檔的最后總結(jié)在完成課程設(shè)計過程中的心得體會。
3、Java課程設(shè)計方案
Java課程設(shè)計的實施主要由選題、指導(dǎo)、考核3個環(huán)節(jié)組成,其中,選題是首要的步驟,指導(dǎo)是教師了解學(xué)生遇到的問題和完成進度并給予輔導(dǎo)建議的過程,考核是對學(xué)生的作品進行檢查與評價。
3.1 選題
Java課程設(shè)計題目的設(shè)置要與軟件工程專業(yè)培養(yǎng)目標(biāo)和Java課程的教學(xué)大綱要求相一致。課題應(yīng)盡量滿足理論知識與專業(yè)技術(shù)相結(jié)合、軟件工程理論與項目實際需求相結(jié)合的要求,既要全面覆蓋理論課程所學(xué)知識,適合實踐教學(xué)和啟發(fā)創(chuàng)新,又要聯(lián)系工程實際,并適應(yīng)本專業(yè)的發(fā)展趨勢。課題應(yīng)具有一定的可操作性、設(shè)計性、靈活性、挑戰(zhàn)性和趣味性。課程設(shè)計內(nèi)容難易程度的確定要以中等水平的學(xué)生在規(guī)定時間內(nèi)經(jīng)過努力能完成任務(wù)為依據(jù)。
另外,課題應(yīng)盡可能地與學(xué)生的實際學(xué)習(xí)、生活相關(guān),這樣學(xué)生在調(diào)研、分析設(shè)計時更容易了解需求。例如,學(xué)生成績管理系統(tǒng)、圖書信息管理系統(tǒng)、宿舍管理系統(tǒng)、ATM柜員機模擬程序等課題與學(xué)生的學(xué)習(xí)、生活相關(guān),在使用計算機時常用的計算器、畫圖板、音頻或視頻播放器等都可以作為選題。
在學(xué)生明確課程設(shè)計的大綱要求后,根據(jù)自己對Java語言知識的掌握程度與感興趣的研究方向,可以從課程設(shè)計大綱的備選題目中選擇適合自己的題目,也可以自擬題目。
3.2 指導(dǎo)
在課程設(shè)計中,學(xué)生是主體,教師是主導(dǎo),因此指導(dǎo)應(yīng)講究方法與藝術(shù),最大程度地發(fā)揮教師的導(dǎo)向作用與學(xué)生的主動性與創(chuàng)造性。指導(dǎo)分為兩個階段,第一個階段是對學(xué)生選題的指導(dǎo),第二個階段是學(xué)生在完成課程設(shè)計的過程中教師對學(xué)生的集中輔導(dǎo)與答疑。指導(dǎo)過程同時也是教師對學(xué)生進度的檢查與監(jiān)督過程。
1)選題指導(dǎo)。
教師在指導(dǎo)學(xué)生選題時要說明各種題目的難度與要求,根據(jù)學(xué)生基礎(chǔ)與能力的不同,因材施教,推薦不同的題目,幫助學(xué)生把握好方向。
對于理論基礎(chǔ)好、動手能力強的學(xué)生,可以給他們提供難度較高、有挑戰(zhàn)性的題目;對于理論基礎(chǔ)好動手能力一般的學(xué)生,難度較高、可操作性強的題目可以激發(fā)他們的探索精神、提高動手能力;對于理論基礎(chǔ)與動手能力都一般的學(xué)生來說,難度中等、有可參照原型的題目較適合他們;基礎(chǔ)差的學(xué)生要獨立完成設(shè)計比較困難,因此教師可以建議他們選擇源于教材、難度低的擴展性題目。
2)設(shè)計指導(dǎo)。
學(xué)生在課程設(shè)計的具體執(zhí)行過程中主要由個人獨立設(shè)計與教師指導(dǎo)兩個部分構(gòu)成。個人獨立設(shè)計是學(xué)生利用課余時間對自己的課題進行設(shè)計實現(xiàn)。除此之外,在課程設(shè)計期間,教師安排每周2次,每次4~5學(xué)時在實驗室集中指導(dǎo)與答疑。通過這樣的方式,教師可以參與到學(xué)生的設(shè)計中,了解并開拓學(xué)生的思路,發(fā)現(xiàn)問題并引導(dǎo)如何解決問題,還可以發(fā)掘?qū)W生的潛能,同時也可以對整個課程設(shè)計的過程進行監(jiān)督與管理,提高課程設(shè)計的質(zhì)量與效果。
在Java課程的教學(xué)過程中,教師應(yīng)該逐漸了解學(xué)生的學(xué)習(xí)態(tài)度與學(xué)習(xí)情況,因此,鑒于學(xué)生態(tài)度與基礎(chǔ)不同,教師在設(shè)計的指導(dǎo)上也要因材施教,有針對性。對于理論基礎(chǔ)好、動手能力強的學(xué)生,教師可以引導(dǎo)他們進行深入的探索與研究,進行創(chuàng)新性的設(shè)計,而不僅僅局限在基本設(shè)計要求上。教師要參與他們的設(shè)計中,聽取他們的思路,對有一定創(chuàng)新性、合理的想法給予鼓勵,并給他們提出建議,推薦有關(guān)的資料。由于這類學(xué)生對新技術(shù)的求知欲強,但新技術(shù)在最初應(yīng)用時容易出現(xiàn)問題,所以教師在聽取學(xué)生的思路時,要及時發(fā)現(xiàn)并糾正他們設(shè)計中的不合理成分,引導(dǎo)他們朝著正確的方向前行。
對于理論基礎(chǔ)好動手能力一般的學(xué)生,他們在系統(tǒng)分析與設(shè)計中一般都能夠完成得很好,但是編程實踐的能力欠缺,因此教師通過啟發(fā)式的方法引導(dǎo)學(xué)生,發(fā)揮學(xué)生的理論水平進行創(chuàng)新性的設(shè)計,在系統(tǒng)實現(xiàn)時給學(xué)生推薦參考資料,加強對基礎(chǔ)知識的應(yīng)用能力。endprint
對于大部分理論基礎(chǔ)與動手能力都一般的學(xué)生,教師要幫助學(xué)生加深對理論知識的理解,同時在設(shè)計上多加指導(dǎo)與啟發(fā),引導(dǎo)學(xué)生更為完善地完成設(shè)計,并在設(shè)計中或多或少地表現(xiàn)出一些自己的特色,然后在編碼實現(xiàn)時給予更多實際操作性的指導(dǎo)。
在課程設(shè)計的指導(dǎo)中,除了教師的指導(dǎo),也可以采取“強幫弱”的形式,讓能力較強的學(xué)生參與能力較差的學(xué)生的系統(tǒng)設(shè)計與實現(xiàn)中,促進他們之間的交流與幫助。
3.3 考核
學(xué)生在規(guī)定的時間內(nèi)完成課程設(shè)計之后,教師要對學(xué)生的作品進行考核,考核的目的不僅僅是為了檢查學(xué)生完成的情況,更重要的是給他們一個講解其設(shè)計思路并演示作品的機會??己酥饕扇W(xué)生講解作品分析設(shè)計思路并演示說明作品、教師提問的答辯考核方式,這有助于學(xué)生加強知識的全面理解,培養(yǎng)其語言組織與表達能力、應(yīng)變能力等。
答辯過程要求全班學(xué)生參加,分為學(xué)生自述、教師提問、學(xué)生提問3個環(huán)節(jié)。首先由學(xué)生針對其作品從系統(tǒng)分析、設(shè)計、關(guān)鍵技術(shù)與算法、存在問題等方面進行講解,然后演示作品。之后,教師與其他同學(xué)可以對答辯人的作品從設(shè)計思路、功能、性能、代碼與技術(shù)等方面進行提問。通過答辯,并結(jié)合學(xué)生的設(shè)計說明書、答辯水平、動手能力、獨立分析問題與解決問題的能力、創(chuàng)新精神與學(xué)習(xí)態(tài)度等進行綜合考評。對優(yōu)秀設(shè)計者,給予表揚與鼓勵,并號召其他同學(xué)學(xué)習(xí),在評分時適當(dāng)加分,以調(diào)動學(xué)生進行課程設(shè)計的積極性;對僅完成基本要求的學(xué)生,肯定他們的努力,并鼓勵他們多實踐;對未達到要求的學(xué)生,要求其進行整改或限期令其重做。
4、關(guān)于Java課程設(shè)計的幾點思考
這幾年Java課程設(shè)計的教學(xué)效果表明,課程設(shè)計為學(xué)生鞏固所學(xué)知識并能學(xué)以致用、提高綜合應(yīng)用能力提供了重要的實踐平臺,教師也從課程設(shè)計實踐教學(xué)中獲得了一些有用的經(jīng)驗,為進一步完善課程設(shè)計教學(xué)提供幫助與參考。
1)注意因材施教,根據(jù)學(xué)生的基礎(chǔ)布置不同的課題。
制定課程設(shè)計大綱時,首先制定一個對于大多數(shù)學(xué)生都比較合適的基本實踐要求,然后再針對不同學(xué)生的基礎(chǔ)設(shè)置難易程度不同的課題。這樣對大多數(shù)學(xué)生來說,他們既不會感到實踐要求高不可及,又感覺到有一定的難度,比較有挑戰(zhàn)性。
2)及時發(fā)現(xiàn)并總結(jié)問題,積累經(jīng)驗。
在課程設(shè)計的整個教學(xué)環(huán)節(jié)中,教師要善于從中發(fā)現(xiàn)并總結(jié)問題,給予及時、到位的指導(dǎo)。例如,在指導(dǎo)學(xué)生完成課程設(shè)計時,對于大部分學(xué)生普遍遇到的問題,教師要及時發(fā)現(xiàn)并進行講解;從學(xué)生上交的課程設(shè)計文檔中發(fā)現(xiàn)學(xué)生利用面向?qū)ο蠹夹g(shù)進行程序設(shè)計存在的問題,分析問題產(chǎn)生的原因,以改進教學(xué)方法;在課程設(shè)計答辯考核之后,教師還要對全班課程設(shè)計的情況進行全面總結(jié),不斷改進??傊?,在課程設(shè)計的任何一個環(huán)節(jié),教師都要善于發(fā)現(xiàn)問題,總結(jié)經(jīng)驗。
3)教師要不斷完善自己的知識結(jié)構(gòu)。
從課程設(shè)計的大綱制定、任務(wù)布置到指導(dǎo)與考核都需要教師付出很多時間與精力,而且對教師的專業(yè)知識與能力要求也很高,因此要想保證課程設(shè)計的質(zhì)量與效果,很大程度上取決于教師的責(zé)任心和知識結(jié)構(gòu)的完善。
4)在課程設(shè)計中培養(yǎng)學(xué)生的軟件工程思想。
JaVa程序設(shè)計是軟件工程課程的先修課程,在講授程序設(shè)計語言時,教師可以適當(dāng)灌輸一些軟件工程的思想,讓學(xué)生對軟件開發(fā)的基本過程有初步的認(rèn)識,避免學(xué)生陷入“學(xué)習(xí)程序設(shè)計課程只是學(xué)編程、軟件開發(fā)就是編程”的思想誤區(qū)。實際上,學(xué)生在課程設(shè)計過程中對系統(tǒng)進行分析、設(shè)計、編碼、測試等都體現(xiàn)了軟件工程思想的運用,程序設(shè)計是軟件開發(fā)過程的一個階段,通過課程設(shè)計能夠加深學(xué)生對程序設(shè)計語言的理解,同時也能較好地培養(yǎng)學(xué)生的軟件工程思想,為后續(xù)軟件工程課程的教學(xué)打下良好的基礎(chǔ)。
5)根據(jù)任務(wù)的大小,可適當(dāng)采取小組協(xié)作方式。
在這幾年的Java課程設(shè)計中,由于是面向大二學(xué)生,重點是培養(yǎng)學(xué)生的個人能力,因此任務(wù)的設(shè)計主要以個人能獨立完成為依據(jù)。到了大三、大四,則重點培養(yǎng)團隊合作意識。當(dāng)然,如果課程設(shè)計的任務(wù)量大、難度大,就可以采取小組成員相互協(xié)作的方式完成。教學(xué)過程中可以采用分組比賽、獎勵等措施來激勵各組尤其是知識較弱的學(xué)生不斷求上進,完善自我,增強團隊合作意識和團隊榮譽感。
5、結(jié)語
Java課程設(shè)計已經(jīng)在軟件工程專業(yè)的4屆學(xué)生中進行了實踐,教學(xué)效果表明,課程設(shè)計達到了提高學(xué)生動手能力、學(xué)習(xí)能力與綜合應(yīng)用能力的目的。但是,課程設(shè)計的教學(xué)改革任務(wù)重,如何通過課程設(shè)計實踐提高學(xué)生的知識應(yīng)用能力與實踐水平、培養(yǎng)應(yīng)用型人才是教學(xué)研究不斷探索與實踐的方向。endprint