李長(zhǎng)榮 吳 迪
摘要:程序設(shè)計(jì)基礎(chǔ)是軟件工程專業(yè)的一門重要的專業(yè)基礎(chǔ)課程。為提升教學(xué)和實(shí)踐質(zhì)量,本文從課堂教學(xué)、實(shí)踐教學(xué)等方面展開(kāi)討論,介紹了一些成功的經(jīng)驗(yàn),最后提出了應(yīng)進(jìn)一步探究的問(wèn)題。
關(guān)鍵詞:軟件工程;程序設(shè)計(jì);課堂教學(xué);實(shí)踐
中圖分類號(hào): G642文獻(xiàn)標(biāo)識(shí)碼:A
1緒論
程序設(shè)計(jì)基礎(chǔ)是軟件工程專業(yè)學(xué)生必修的一門很重要的專業(yè)基礎(chǔ)課程,如何讓學(xué)生較好地掌握程序設(shè)計(jì)的思路和方法,尤其是面向?qū)ο蟮谋容^抽象的分析方法和編程技術(shù),是程序設(shè)計(jì)課程必須解決的問(wèn)題。
筆者結(jié)合多年來(lái)從事程序設(shè)計(jì)教學(xué)的經(jīng)驗(yàn)與體會(huì),對(duì)軟件工程專業(yè)的程序設(shè)計(jì)基礎(chǔ)課程教學(xué)方式和方法做了一定程度的研究,在安排教學(xué)進(jìn)程、課堂教學(xué)和實(shí)踐教學(xué)中進(jìn)行了實(shí)驗(yàn)探索,以求推動(dòng)教學(xué)改革,提高教學(xué)質(zhì)量。
2合理安排教學(xué)進(jìn)程
程序設(shè)計(jì)基礎(chǔ)這門課程從知識(shí)體系來(lái)講,包括結(jié)構(gòu)化程序設(shè)計(jì)、面向?qū)ο蟪绦蛟O(shè)計(jì)和算法三大塊。這些內(nèi)容如果全部講授完成需要一百多個(gè)課時(shí),但考慮到課程安排、教學(xué)資源等因素該課程的課時(shí)縮減到56學(xué)時(shí),在有限的學(xué)時(shí)內(nèi),如何在完成教學(xué)內(nèi)容的同時(shí)又保證教學(xué)質(zhì)量成為教師棘手的問(wèn)題。
針對(duì)程序設(shè)計(jì)基礎(chǔ)課程內(nèi)容多的特性,第一學(xué)期開(kāi)設(shè)了計(jì)算機(jī)導(dǎo)論和C語(yǔ)言等先修課程,第二學(xué)期開(kāi)設(shè)的程序設(shè)計(jì)基礎(chǔ)課程的重點(diǎn)是面向?qū)ο缶幊毯瓦壿嬎季S的培養(yǎng),第三學(xué)期的后續(xù)課程安排了數(shù)據(jù)結(jié)構(gòu)與算法(C++語(yǔ)言描述),這樣學(xué)生們能在掌握編程基礎(chǔ)的情況下集中學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)和算法的設(shè)計(jì)與實(shí)現(xiàn)。這樣,課程體系連貫性較強(qiáng),每門課程也能突出自己的重點(diǎn)內(nèi)容,程序設(shè)計(jì)基礎(chǔ)課程也能在有限的時(shí)間內(nèi)實(shí)現(xiàn)最理想的教學(xué)效果。學(xué)生們經(jīng)過(guò)由淺入深、逐層遞進(jìn)的學(xué)習(xí),既能保持學(xué)習(xí)興趣,又為下門課程的學(xué)習(xí)打下堅(jiān)實(shí)的基礎(chǔ)。
為了增強(qiáng)學(xué)生學(xué)習(xí)的興趣,程序設(shè)計(jì)基礎(chǔ)課程教學(xué)內(nèi)容上還增加了6學(xué)時(shí)的可視化編程初步知識(shí),引導(dǎo)學(xué)生更好地掌握一到二種集成開(kāi)發(fā)環(huán)境的使用,激發(fā)學(xué)生課余時(shí)間學(xué)習(xí)的熱情。但界面設(shè)計(jì)內(nèi)容不宜過(guò)多,以免分散學(xué)生們對(duì)程序設(shè)計(jì)的注意力。
3課堂教學(xué)
針對(duì)齊齊哈爾大學(xué)軟件工程專業(yè)學(xué)生們的特點(diǎn),在課堂教學(xué)中,我們采用以下創(chuàng)新的教學(xué)模式,培養(yǎng)學(xué)生認(rèn)知能力和創(chuàng)新能力。
3.1學(xué)生們自由發(fā)揮模式
傳統(tǒng)課堂經(jīng)常出現(xiàn)教師滿堂灌,聽(tīng)話的學(xué)生被動(dòng)記筆記,不聽(tīng)話的學(xué)生睡覺(jué)、聊天的現(xiàn)象。為了讓學(xué)生們?cè)诮虒W(xué)中處于中心地位,主動(dòng)積極的吸收知識(shí),筆者通過(guò)精心備課,充分準(zhǔn)備問(wèn)題。首先,在第一課時(shí),主要講解編程原理和方法,通過(guò)啟發(fā)式提問(wèn)的方式,引導(dǎo)學(xué)生積極參與到課堂中來(lái);第二課時(shí),講解案例源碼,引導(dǎo)學(xué)生分組討論源碼的實(shí)現(xiàn)方法和改進(jìn)方案,然后,給學(xué)生們自由提問(wèn)和表達(dá)思想的時(shí)間,教師最后予以點(diǎn)評(píng)和總結(jié)。
這種教學(xué)模式要求教師首先記住所有學(xué)生們的姓名和聽(tīng)課習(xí)慣,這樣才能因材施教。然后教師需要精心準(zhǔn)備教學(xué)內(nèi)容,并有能力對(duì)課堂上的突發(fā)情況予以處理,因?yàn)閷W(xué)生們理解問(wèn)題的角度可能和教師不同,自由提問(wèn)和表述,容易打亂教師的正常教學(xué)思維。最后教師要對(duì)學(xué)生們錯(cuò)誤的觀點(diǎn)予以改正,正確的觀點(diǎn)予以鼓勵(lì)和肯定。例如,有的學(xué)生提出的問(wèn)題過(guò)于簡(jiǎn)單,是不需要解釋的,教師也要注意表達(dá)方式,不要挫傷學(xué)生們的積極性和進(jìn)取精神。
3.2有趣的案例驅(qū)動(dòng)教學(xué)模式
針對(duì)應(yīng)用型課程的特點(diǎn),每一堂課都通過(guò)若干問(wèn)題引導(dǎo),然后通過(guò)生動(dòng)有趣的案例介紹解決問(wèn)題的方法,最后歸納出一般規(guī)律或概念。經(jīng)實(shí)踐證明這種方法行之有效,減少了學(xué)生們?cè)趯W(xué)習(xí)上的困難。
例如,在類和對(duì)象這一章中,提問(wèn)數(shù)據(jù)成員和成員函數(shù)如何根據(jù)實(shí)際情況確定,構(gòu)造函數(shù)的用法,對(duì)象如何生成等問(wèn)題。接著,針對(duì)常用的學(xué)生成績(jī)統(tǒng)計(jì)表,編寫計(jì)算學(xué)生單科成績(jī)、平均成績(jī)、最高分等的程序,來(lái)介紹解決上面問(wèn)題的方法。通過(guò)分析考試科目、學(xué)生姓名、學(xué)號(hào)等確定數(shù)據(jù)成員,分析成績(jī)統(tǒng)計(jì)功能確定成員函數(shù),哪些成績(jī)需要保存、返回和處理。根據(jù)不同班級(jí)人數(shù)確定動(dòng)態(tài)指針對(duì)象數(shù)組。這些為類的實(shí)現(xiàn)和封裝做好了準(zhǔn)備。同樣,擴(kuò)展開(kāi)來(lái),學(xué)生們也可以按照學(xué)生成績(jī)統(tǒng)計(jì)的分析方法實(shí)現(xiàn)類似的教師工資統(tǒng)計(jì)、公司員工績(jī)效考核系統(tǒng)。
3.3多媒體、板書和運(yùn)行程序結(jié)合模式
首先,抽象的概念和理論采用多媒體演示。在程序設(shè)計(jì)基礎(chǔ)教學(xué)中,當(dāng)涉及到較多抽象的概念理論,例如指針值的動(dòng)態(tài)變化,只有通過(guò)多媒體演示,使學(xué)生直觀形象地看到了內(nèi)存中變量動(dòng)態(tài)變化的過(guò)程,才能感覺(jué)指針也不難理解。
接著,涉及到編程教學(xué)時(shí),教師需要在黑板上板書程序,按步驟講解程序設(shè)計(jì)的思路和過(guò)程,重點(diǎn)強(qiáng)調(diào)邏輯性、條理性。程序如果多媒體演示程序的話,速度較快,學(xué)生的思路跟不上,效果不好。
最后,程序結(jié)果是否正確,必須運(yùn)行程序來(lái)證實(shí)。這樣,把多媒體、板書和程序運(yùn)行有機(jī)結(jié)合起來(lái),收到了很好的效果,吸引了更多的學(xué)生們認(rèn)真聽(tīng)課,為上機(jī)實(shí)驗(yàn)打下了基礎(chǔ)。所以,整個(gè)課堂教學(xué)有效的模式是:多媒體、板書和程序運(yùn)行的有機(jī)結(jié)合。
3.4學(xué)科滲透模式
筆者在教學(xué)過(guò)程中發(fā)現(xiàn)學(xué)生們對(duì)數(shù)學(xué)、英語(yǔ)的重要性認(rèn)識(shí)程度不夠,如何讓他們認(rèn)識(shí)到數(shù)學(xué)、英語(yǔ)等對(duì)程序設(shè)計(jì)的思維方式和編程能力培養(yǎng)的重要性,是亟待解決的問(wèn)題。
例如,學(xué)生們數(shù)學(xué)課上學(xué)習(xí)了矩陣的基本運(yùn)算,都是在草紙上運(yùn)算完成向量和矩陣作業(yè)。筆者通過(guò)課堂上矩陣相乘的實(shí)例,引導(dǎo)他們使用編程解決矩陣運(yùn)算問(wèn)題。同樣,筆者在課堂上講解了加密和解密,從文件中讀取一篇英文課文,加密后,再寫入文件。這樣,計(jì)算機(jī)與學(xué)生們正在學(xué)習(xí)的數(shù)學(xué)、英語(yǔ)課程相結(jié)合,大大提高了學(xué)生的學(xué)習(xí)編程、英語(yǔ)和數(shù)學(xué)熱情,培養(yǎng)了他們的創(chuàng)新能力,符合“一專多能”的培養(yǎng)模式,有利于他們的就業(yè)。對(duì)教師來(lái)說(shuō),也積累了寶貴的學(xué)科滲透教學(xué)經(jīng)驗(yàn),有利于教學(xué)科研的同步提高。
4實(shí)踐教學(xué)
實(shí)踐教學(xué)是培養(yǎng)軟件工程專業(yè)學(xué)生實(shí)踐能力、科研能力、綜合素質(zhì)的重要實(shí)踐教學(xué)環(huán)節(jié)。
實(shí)驗(yàn)教學(xué)、課外小組和課程設(shè)計(jì)是重要的實(shí)踐教學(xué)環(huán)節(jié),和課堂教學(xué)質(zhì)量相互影響。課堂上聽(tīng)懂的內(nèi)容,迫切需要在實(shí)踐中加以驗(yàn)證和提高,而實(shí)踐教學(xué),讓學(xué)生在實(shí)踐中理解和鞏固課堂知識(shí),在實(shí)踐中培養(yǎng)實(shí)際動(dòng)手能力,改掉了很多大學(xué)生眼高手低的毛病。實(shí)踐性教學(xué)在本課程中主要體現(xiàn)為上機(jī)實(shí)驗(yàn)、課程設(shè)計(jì)和課下小組三個(gè)部分。
4.1上機(jī)實(shí)驗(yàn)
上機(jī)實(shí)驗(yàn)作為最基礎(chǔ)的部分,在課堂教學(xué)中需要按照進(jìn)程穿插進(jìn)行,根據(jù)教學(xué)內(nèi)容將實(shí)驗(yàn)內(nèi)容分兩部分:基礎(chǔ)性實(shí)驗(yàn)和設(shè)計(jì)性實(shí)驗(yàn)。每一部分的實(shí)驗(yàn)都有明確的實(shí)驗(yàn)要求、實(shí)驗(yàn)?zāi)康摹⒃O(shè)計(jì)思路、操作步驟等內(nèi)容。實(shí)驗(yàn)題目具有代表性和典型性。
基礎(chǔ)性實(shí)驗(yàn)主要是鞏固學(xué)生的基本知識(shí)、訓(xùn)練學(xué)生的編程基本技能和培養(yǎng)學(xué)生基本的程序設(shè)計(jì)能力。實(shí)驗(yàn)題目如熟悉開(kāi)發(fā)平臺(tái),函數(shù)調(diào)用、動(dòng)態(tài)指針、簡(jiǎn)單的類聲明和使用、對(duì)象等實(shí)驗(yàn)?;A(chǔ)性實(shí)驗(yàn)一般安排10學(xué)時(shí)。
設(shè)計(jì)性實(shí)驗(yàn)是學(xué)生根據(jù)已經(jīng)掌握的基本知識(shí)、基本理論、基本技能,按照實(shí)驗(yàn)教師給出的實(shí)驗(yàn)題目和要求,運(yùn)用類的繼承、類的封裝、類的多態(tài)性等核心機(jī)制來(lái)解決特定問(wèn)題的程序設(shè)計(jì)實(shí)驗(yàn),并分析實(shí)驗(yàn)結(jié)果,撰寫實(shí)驗(yàn)報(bào)告。實(shí)驗(yàn)題目如學(xué)生成績(jī)管理系統(tǒng),電子通信錄等,要求綜合運(yùn)用類和對(duì)象、封裝、繼承和多態(tài)性的思想來(lái)設(shè)計(jì)和實(shí)現(xiàn),安排6學(xué)時(shí)。
針對(duì)學(xué)生多,實(shí)驗(yàn)教師少的情況,筆者開(kāi)發(fā)了B/S架構(gòu)的c++實(shí)驗(yàn)在線幫助系統(tǒng),學(xué)生們?cè)趯?shí)驗(yàn)室中,可以以聊天問(wèn)答的形式,對(duì)調(diào)試過(guò)程中遇到的問(wèn)題,得到電子教師的幫助意見(jiàn)。該系統(tǒng)關(guān)鍵在于知識(shí)庫(kù)的建立和根據(jù)關(guān)鍵詞檢索答案算法設(shè)計(jì)。該系統(tǒng)將老師們從相似問(wèn)題重復(fù)回答的囚籠中解脫出來(lái),從而專注于編程思路和方法的講解,不僅降低了教師們的勞動(dòng)強(qiáng)度,也提升了學(xué)生們的學(xué)習(xí)效率。自試用以來(lái),雖然該系統(tǒng)有時(shí)答非所問(wèn),但這種在線答疑形式受到了學(xué)生們的普遍歡迎。
4.2課下學(xué)習(xí)小組
課下學(xué)習(xí)小組就是優(yōu)秀或有興趣的學(xué)生組成小團(tuán)隊(duì),參與到教師所負(fù)責(zé)的科研、教研項(xiàng)目中,學(xué)有所用。教師們也可以根據(jù)他們的特長(zhǎng)和興趣愛(ài)好,有針對(duì)性的因材施教,從而進(jìn)一步提高他們的實(shí)際應(yīng)用能力。例如有的學(xué)生特別熱衷于網(wǎng)絡(luò)游戲,筆者引導(dǎo)有游戲愛(ài)好的學(xué)生們組合在一起,研究游戲外掛,這個(gè)小組志同道合,研究熱情高漲,不僅平時(shí)和教師積極交流,而且在網(wǎng)絡(luò)上和其他游戲外掛制作者交流,從而認(rèn)識(shí)到編程在游戲外掛中重要作用,增強(qiáng)了他們學(xué)習(xí)程序設(shè)計(jì)基礎(chǔ)的興趣和努力程度。
4.3課程設(shè)計(jì)
課程設(shè)計(jì)是實(shí)踐教學(xué)的重要組成部分,上機(jī)實(shí)驗(yàn)大多是消化上課內(nèi)容,學(xué)生們模仿多于創(chuàng)新,不利于培養(yǎng)學(xué)生們的啟發(fā)式思維和實(shí)際解決問(wèn)題的能力。所以,課程設(shè)計(jì)是在基本教學(xué)內(nèi)容完成之后的綜合練習(xí),一般三個(gè)星期內(nèi)完成。課題強(qiáng)調(diào)具有實(shí)用性、技術(shù)先進(jìn)性和創(chuàng)新性,有一定規(guī)模和功能相對(duì)完整的軟件系統(tǒng),例如有的學(xué)生做的NBA球員管理系統(tǒng),建立了球員類,火箭隊(duì)繼承了這個(gè)球員類,還利用文件讀寫數(shù)據(jù),軟件即具有一定的規(guī)模,。學(xué)生們通過(guò)集中時(shí)間的強(qiáng)化學(xué)習(xí)和訓(xùn)練,能更好的貫穿和總結(jié)軟件開(kāi)發(fā)思想和技術(shù),鍛煉了分析、修改和設(shè)計(jì)程序的動(dòng)手能力。
教師需要提供課程設(shè)計(jì)的樣例及上幾屆學(xué)生們的優(yōu)秀作品,供學(xué)生們參考和下載。學(xué)生們分組閱讀分析相關(guān)的小規(guī)?;虼笠?guī)模軟件的源代碼及結(jié)構(gòu)并討論,然后合作進(jìn)行開(kāi)發(fā),此時(shí)教師可就具體問(wèn)題對(duì)各個(gè)組的學(xué)生進(jìn)行指導(dǎo)。課程設(shè)計(jì)完成后,學(xué)生們要參加答辯,演示程序,上交源代碼和課程設(shè)計(jì)報(bào)告。
5仍存在的問(wèn)題
程序設(shè)計(jì)基礎(chǔ)課程在軟件工程專業(yè)中經(jīng)過(guò)幾年的建設(shè),在教學(xué)、科研、師資、實(shí)驗(yàn)室建設(shè)等方面取得了可喜的成績(jī),教學(xué)效果良好,學(xué)生的上課和實(shí)驗(yàn)的積極性得到提高,并且得到其他兄弟院校同行的認(rèn)可。但本課程也還存在一些不足之處,主要體現(xiàn)在:
(1) 對(duì)學(xué)生成績(jī)?cè)u(píng)價(jià)體系還有待完善,例如如何避免“一考定終身”,需要根據(jù)上面提到的各個(gè)方面對(duì)該生進(jìn)行量化評(píng)分。
(2) 對(duì)新教師的培養(yǎng)還需進(jìn)一步加強(qiáng),新教師普遍思路活躍,與學(xué)生們交互好,但課堂的組織教學(xué)能力和創(chuàng)新教學(xué)能力需要進(jìn)一步提高。
(3) 完善教學(xué)網(wǎng)站和實(shí)驗(yàn)輔助教學(xué)網(wǎng)站的建設(shè),改變傳統(tǒng)的課堂交互,讓學(xué)生們隨時(shí)、隨地和教師交流。這需要教師改變教學(xué)觀念,由課堂灌輸式教學(xué)、課下放羊教學(xué)改為課堂引導(dǎo)教學(xué)、課下指導(dǎo)教學(xué)。
6結(jié)論
軟件工程專業(yè)的程序設(shè)計(jì)基礎(chǔ)課程教學(xué)主要講述面向?qū)ο蟮幕靖拍睢⑺枷牒蛯?shí)現(xiàn)方法。本文結(jié)合筆者的教學(xué)經(jīng)驗(yàn)和軟件開(kāi)發(fā)實(shí)踐經(jīng)驗(yàn),根據(jù)一般院校的軟件工程學(xué)生們的共性,在教學(xué)的創(chuàng)新模式、實(shí)踐教學(xué)的內(nèi)容體系等方面提出了一些觀點(diǎn)和建議,希望能讓學(xué)生們有扎實(shí)的編程基礎(chǔ),能更好地掌握軟件系統(tǒng)開(kāi)發(fā)的相關(guān)技能,為他們?cè)谲浖袠I(yè)的就業(yè)奠定基礎(chǔ)。
參考文獻(xiàn):
[1] 駱斌,王浩然. 軟件工程專業(yè)程序設(shè)計(jì)類課程的設(shè)計(jì)[J]. 吉林大學(xué)學(xué)報(bào),2005,(23).
[2] 張冬云. 《程序設(shè)計(jì)語(yǔ)言》教學(xué)與專業(yè)課結(jié)合,培養(yǎng)學(xué)生計(jì)算機(jī)應(yīng)用能力[J]. 廣西大學(xué)學(xué)報(bào),2001,(23).
[3] 吳文虎. 程序設(shè)計(jì)基礎(chǔ)(第二版)[M]. 北京:清華大學(xué)出版社,2007.
[4] 化志章,揭安全,甘登文. 計(jì)算機(jī)與現(xiàn)代化[J]. 2002(12).
[5] 張麗梅. 案例教學(xué)法的研究與教學(xué)實(shí)踐[J]. 黑龍江教育,2006(3).
[6] 侯麗敏. 基于網(wǎng)絡(luò)的智能答疑系統(tǒng)的研究與實(shí)現(xiàn)[D]. 河南大學(xué),2005.
Research on Programming Design Course Teaching for Software Engineering Major
LI Chang-rong, WU Di
(College of computer and control engineer, Qiqihaer University, Qiqihaer 161006, China)
Abstract: Programming design is an important professional basic course of software engineering major. In order to improve the teaching and practical quality, this paper discusses the classroom teaching and practical teaching, introduces the successful experience, and future research content.
Key words: software engineering; programming design; classroom teaching; practice