李繪卓 李郁峰 唐峻
摘要:為提高學(xué)生分析問題和解決問題的綜合實踐能力,提出在C++面向?qū)ο蟪绦蛟O(shè)計課程中引入項目案例演變教學(xué)法。根據(jù)知識點分層次設(shè)計可持續(xù)進(jìn)化的教學(xué)實踐案例,以項目驅(qū)動的模式組織教學(xué)過程,充分調(diào)動師生積極性,使學(xué)生以滾雪球模式學(xué)習(xí)完善課程知識體系,逐步提高程序設(shè)計實踐能力。
關(guān)鍵詞:項目案例演變教學(xué)法;C++面向?qū)ο蟪绦蛟O(shè)計;教學(xué)改革
0.引言
面向?qū)ο蟪绦蛟O(shè)計語言C++具有更高的代碼可重用性、可擴充性和易維護(hù)等特點,是開發(fā)大型軟件的主流方法。據(jù)TIOBE編程協(xié)會2013年2月最新編程語言流行趨勢排行榜顯示,在前5位最受歡迎的編程語言中,C++仍然在列。國內(nèi)高校一般都將C++面向?qū)ο蟪绦蛟O(shè)計課程作為計算機及相關(guān)專業(yè)的主干課程。探索C++面向?qū)ο蟪绦蛟O(shè)計課程的高效教學(xué)方法,對于提高計算機相關(guān)專業(yè)學(xué)生程序設(shè)計這一核心能力具有重要意義。
傳統(tǒng)的C++課程教學(xué)注重學(xué)生對知識點的學(xué)習(xí),在教學(xué)過程中一般采用知識講解并輔以針對知識點要求學(xué)生掌握的編碼實驗,而對如何提高學(xué)生的面向?qū)ο蟪绦蚍治瞿芰蛯崿F(xiàn)能力等方面的關(guān)注不夠,偏離培養(yǎng)學(xué)生程序設(shè)計實踐能力這一核心目標(biāo),為后續(xù)課程教學(xué)增加難度。為了幫助學(xué)生在C++課程學(xué)習(xí)中理解面向?qū)ο缶幊趟枷氩⒂行岣叱绦蛟O(shè)計實踐能力,筆者在該課程的教學(xué)改革中引入案例項目演變教學(xué)法,建設(shè)一系列適合課程知識點可持續(xù)進(jìn)化的案例,以項目驅(qū)動的教學(xué)組織模式促使學(xué)生掌握綜合知識的運用并切實提高程序設(shè)計實踐能力,改變C++面向?qū)ο蟪绦蛟O(shè)計傳統(tǒng)教學(xué)模式的枯燥特點,提高了教學(xué)雙方的積極性。
1.理論及實驗教學(xué)中的若干問題
由于語言類課程在計算機專業(yè)課程體系中占有重要地位,因此目前國內(nèi)高校對于語言類課程教學(xué)進(jìn)行了大量的改革嘗試,一般的思路是加強實踐教學(xué)環(huán)節(jié)建設(shè),如開展案例教學(xué)、引入任務(wù)驅(qū)動教學(xué)模式、增加課程設(shè)計環(huán)節(jié)等,部分高校還引入CDIO工程教育模式。筆者也在改進(jìn)語言類課程教學(xué)方面作出大量嘗試,如加大實驗教學(xué)環(huán)節(jié)比例、引入在線評判系統(tǒng)和案例教學(xué)等,力求使學(xué)生通過案例庫的訓(xùn)練達(dá)到掌握相關(guān)知識點的目標(biāo),這些教學(xué)改革在實踐中取得了一定成果,但仍然存在一些深層次的問題。
1)教學(xué)案例缺乏整體性和實用性。
在教學(xué)案例的設(shè)計上,以往的案例是圍繞知識點進(jìn)行設(shè)計,導(dǎo)致各章節(jié)的案例相互獨立,案例之間缺乏關(guān)聯(lián)。學(xué)生在這種案例的實踐中,很難對面向?qū)ο蟪绦蛟O(shè)計這一課程涉及的知識體系做到承上啟下、整體性的理解,在課程學(xué)習(xí)中沒有主導(dǎo)線索并忽視對知識鏈的構(gòu)造。
2)實驗教學(xué)內(nèi)容單一。
雖然過去的教學(xué)改革中加大了實驗環(huán)節(jié)在總課程中的比例,但是實驗教學(xué)任務(wù)仍然由教師根據(jù)課程知識體系進(jìn)行設(shè)計,包括大量驗證性實驗及部分設(shè)計性實驗。這種模式的實驗設(shè)計由于是為了配合理論課教學(xué)內(nèi)容,往往強調(diào)離散知識點的學(xué)習(xí),而忽視了學(xué)生對課程綜合知識體系的學(xué)習(xí),因此學(xué)生很難得到綜合運用課程知識解決實際問題的訓(xùn)練。
與此同時,以往的實驗設(shè)計模式忽視了學(xué)生的個性化特點,采用統(tǒng)一的實驗要求并不能適應(yīng)每個學(xué)生的發(fā)展需要,因此實驗內(nèi)容往往顯得較為平淡,不能很好地激發(fā)學(xué)生的創(chuàng)新意識和自主學(xué)習(xí)意識。
2.基于工程案例演變的教學(xué)改革
針對以上問題,我們在教學(xué)建設(shè)成果的基礎(chǔ)上,從2009年起,圍繞切實提高程序設(shè)計實踐能力的核心目標(biāo),按照由簡入繁的案例項目演變教學(xué)思路,加大教學(xué)案例建設(shè)和教學(xué)方法改進(jìn)力度,形成了符合地方本科院校程序設(shè)計課程的教學(xué)模式。
2.1演變教學(xué)法概述
通過分析傳統(tǒng)教學(xué)模式存在的問題,我們在C++面向?qū)ο蟪绦蛟O(shè)計的課程設(shè)計中,引入案例項目演變教學(xué)法,其基本思路是將整個教學(xué)過程分解為若干教學(xué)環(huán)節(jié),每個環(huán)節(jié)都由若干教學(xué)案例和一個實踐項目組成。在每個教學(xué)環(huán)節(jié)中,首先確定教學(xué)主線,提取出核心知識點授課思路并以此為設(shè)計案例的基本依據(jù)。教師通過小型教學(xué)案例解析基礎(chǔ)知識點,讓學(xué)生理解并掌握核心概念和技術(shù)。在完成上述環(huán)節(jié)的教學(xué)任務(wù)后,我們采用任務(wù)驅(qū)動教學(xué)法,通過一個教學(xué)項目整合所有知識點,讓學(xué)生鞏固已有知識并加以實踐。隨著教學(xué)的推進(jìn),學(xué)生逐步完善現(xiàn)有的教學(xué)項目,實現(xiàn)知識的更新和技能的提高。整個教學(xué)過程是一個舉一反三的過程,也是知識和技能的進(jìn)化過程。
根據(jù)C++面向?qū)ο蟪绦蛟O(shè)計的課程特點,我們以培養(yǎng)學(xué)生程序設(shè)計能力為主線,重點培養(yǎng)學(xué)生的面向?qū)ο蟪绦蛟O(shè)計能力、邏輯分析能力和編程能力,將課程知識體系分為4個層次:類與對象、繼承與派生、重載與多態(tài)、流與STL。圍繞學(xué)生程序設(shè)計實踐能力逐步提高這一核心目標(biāo),我們將這4個層次的知識體系融入課堂教學(xué)案例和階段實驗案例,設(shè)計以演變教學(xué)法為核心思想的遞進(jìn)式教學(xué)案例和教學(xué)過程。C++演化教學(xué)實驗案例的設(shè)計如圖1所示。教學(xué)案例隨著教學(xué)環(huán)節(jié)的推進(jìn),對學(xué)生知識和技能的訓(xùn)練將逐步提高,而訓(xùn)練的逐步推進(jìn)將形成一個小型的程序設(shè)計項目,然后再以項目為驅(qū)動綜合訓(xùn)練學(xué)生靈活運用各層次知識體系的能力,實現(xiàn)提高學(xué)生程序設(shè)計實踐能力的目標(biāo)。
2.2基于演變教學(xué)的案例設(shè)計
基于演變的教學(xué)中,除了理論知識教學(xué)外,選擇將典型性、完整性、實用性的案例實踐貫穿于理論知識中極為重要。教師在案例的設(shè)計中應(yīng)當(dāng)遵循案例在整個教學(xué)過程中的連貫性。隨著理論知識的深入,可以進(jìn)一步將教學(xué)案例遷移到下一個教學(xué)環(huán)節(jié)并逐步對教學(xué)案例加以改進(jìn)和完善。教學(xué)案例經(jīng)過滾雪球的疊加方式,不僅令理論知識得到積累,還完善和擴充項目軟件功能,保持前后知識點的關(guān)聯(lián)性,使得程序也越來越貼近實際應(yīng)用,激發(fā)了學(xué)生的學(xué)習(xí)興趣,提高了學(xué)生解決實際問題的能力,從而實現(xiàn)知識和技能兩方面的進(jìn)化。在教學(xué)過程中,如何設(shè)計這樣的教學(xué)案例是關(guān)鍵。根據(jù)多年的教學(xué)實踐經(jīng)驗,目前我們已總結(jié)出一批教學(xué)案例,對其中兩個案例予以簡單介紹。
1)簡單的食物鏈。endprint
該題目意在通過程序模擬一個簡單的食物鏈,通過模擬食物鏈生存規(guī)則觀察食物鏈中各生物的生存狀態(tài)。食物鏈的選擇可以有多種,如青草→野兔→狐貍→狼、河谷類植物→昆蟲→食蟲鳥→鷹等。
2)員工管理工具。
該程序設(shè)計實現(xiàn)一個小型企業(yè)的員工管理軟件。一般的企業(yè)包括普通員工、財務(wù)人員、管理人員3類人員。案例需實現(xiàn)企業(yè)基本信息管理、工作任務(wù)安排、財務(wù)管理等。
案例的講授過程分成4個層次,對應(yīng)理論教學(xué)過程中的4個階段。案例分析過程見表1。
2.3基于演變教學(xué)的實驗教學(xué)設(shè)計
理論教學(xué)負(fù)責(zé)講解面向?qū)ο蟪绦蛟O(shè)計分析的基本方法以及實現(xiàn)手段,實驗教學(xué)除了驗證理論教學(xué)的內(nèi)容外,更為重要的是強化理論知識并將其靈活運用到程序設(shè)計中,提高分析問題和解決問題的能力。在實驗教學(xué)環(huán)節(jié)中,我們根據(jù)案例項目演變教學(xué)思想設(shè)計了一系列實驗題目。該系列實驗題目之間在知識點應(yīng)用上具有進(jìn)化性的特點,每一個題目在知識點應(yīng)用上都是承上啟下、層次推進(jìn)。同時,我們在題目選擇上也允許學(xué)生不但可以選擇新的題目,而且可以對前期題目進(jìn)行重構(gòu)改進(jìn),使得學(xué)生可以根據(jù)自己的情況選擇實驗題目,滿足學(xué)生多層次的需求,激發(fā)學(xué)習(xí)興趣。學(xué)生通過獨立或協(xié)作完成項目實踐,既驗證了所學(xué)理論知識,又鍛煉了解決問題的實踐能力,同時還能增強下一階段學(xué)習(xí)信心。在連續(xù)兩年的教學(xué)改革實踐中,我們共設(shè)計出12個作業(yè)題目,見表2。
在設(shè)計這些題目時,我們給出不同的層次實現(xiàn)要求,可以將這些題目做成一個小的控制臺程序,也可繼續(xù)擴展,如通過加入MFC、QT等UI設(shè)計后開發(fā)成一個小軟件工具,從而滿足不同層次學(xué)生的需求,有利于激發(fā)學(xué)生的編程興趣,培養(yǎng)學(xué)生“樂于學(xué)、勤于練、善于思”的習(xí)慣。與此同時,在實驗課的實際運行過程中,我們還需要考慮實驗管理以及實驗考核等問題,并且在這些環(huán)節(jié)也進(jìn)行了改革。
1)加強管理。
提前分發(fā)作業(yè)題目,讓學(xué)生有充分的時間選題和作準(zhǔn)備。
2)考核。
程序考核在很多情況下,往往只注重程序的運行結(jié)果以及是否具有豐富的功能,而忽略設(shè)計過程。我們采用小答辯方式,由教師提問,考查學(xué)生的程序設(shè)計情況,同時參考運行情況和實現(xiàn)的功能,既可以全面衡量學(xué)生對知識的掌握情況,又可以避免相互抄襲現(xiàn)象。
3)案例的可復(fù)用性。
該課程所用案例可同時用于同期開始的課程或后續(xù)課程的分析案例,如軟件測試技術(shù)、需求工程、軟件過程分析、項目管理等課程。
3.面向?qū)ο蟪绦蛟O(shè)計演變教學(xué)法改革效果
在應(yīng)用案例項目演變教學(xué)法的教學(xué)實踐中,C++面向?qū)ο蟪绦蛟O(shè)計課程教學(xué)取得了良好的效果。學(xué)生在課程學(xué)習(xí)中無論是在理論環(huán)節(jié)還是在實驗環(huán)節(jié)都受到了充分訓(xùn)練。在理論環(huán)節(jié)中,通過教師對彼此相互銜接且具有知識點進(jìn)化特色的案例群的講解,學(xué)生逐層理解了理論知識點和基本概念;在實驗環(huán)節(jié)中,以項目為驅(qū)動的方式實現(xiàn)了學(xué)生對理論知識點的驗證,在提高學(xué)生實踐技能的同時加深學(xué)生對理論知識的理解。
目前C++面向?qū)ο蟪绦蛟O(shè)計演變教學(xué)法已推廣運行了兩屆,共計300名學(xué)生接受了課程訓(xùn)練。案例項目演變教學(xué)法使學(xué)生的知識和技能隨著教學(xué)的推進(jìn)而進(jìn)化和更新。通過一個從基礎(chǔ)到高端、從理論到技能的學(xué)習(xí)過程,學(xué)生實現(xiàn)了從簡單的小案例學(xué)習(xí)理論知識,再通過項目鍛煉實踐技能。經(jīng)過案例群和課程項目的訓(xùn)練,學(xué)生知識體系和實踐能力不斷改進(jìn)和完善,學(xué)生不僅學(xué)習(xí)到知識和技能,還能感受到技術(shù)的發(fā)展歷程,積累了更多的開發(fā)經(jīng)驗,提高了職業(yè)素養(yǎng)。
在兩屆的教改實踐中,我們發(fā)現(xiàn)演變教學(xué)法相比其他的教學(xué)方法,能更好地將理論與實踐相結(jié)合,特別適合C++面向?qū)ο蟪绦蛟O(shè)計課程。學(xué)生在學(xué)習(xí)中通過案例項目演化教學(xué)法,始終能體會到理論教學(xué)中所學(xué)知識和實驗教學(xué)中獲得實踐能力的不斷積累和提升過程,并且由于在案例解析中的高參與度,學(xué)生提高了主動分析問題和提出解決方案的能力。在教師的指導(dǎo)下完成項目能夠增加學(xué)生的學(xué)習(xí)成就感,更能幫助學(xué)生樹立起完成下一階段任務(wù)的自信,大大提高學(xué)生學(xué)習(xí)效率以及教學(xué)質(zhì)量。
4.結(jié)語
傳統(tǒng)的案例教學(xué)在面向?qū)ο蟪绦蛘n程中已經(jīng)推廣多年,但在面向?qū)ο蟪绦蛟O(shè)計思想的培養(yǎng)方面取得的效果并不理想。演變教學(xué)法應(yīng)用在面向?qū)ο蟪绦蛟O(shè)計中,能夠兼顧理論與實踐教學(xué),提高學(xué)生參與度,體現(xiàn)知識和技能的進(jìn)化過程。經(jīng)過實踐說明,該方法能有效地提高教學(xué)效果。此外,由于該教學(xué)法在課程內(nèi)容的選取、課程教學(xué)設(shè)計以及案例設(shè)計等方面均有較高要求,因此在實施過程中應(yīng)該注重教學(xué)團(tuán)隊建設(shè),加強團(tuán)隊分工協(xié)作,以提高教學(xué)效果。endprint