司慧琳,李 素
(北京工商大學(xué) 計(jì)算機(jī)學(xué)院,北京 100048)
面向?qū)ο蟪绦蛟O(shè)計(jì)是一門理論性和實(shí)踐性均較強(qiáng)的課程,對(duì)學(xué)生編程能力要求較高,屬于計(jì)算機(jī)科學(xué)與技術(shù)等專業(yè)的基礎(chǔ)課程。該課程主要介紹面向?qū)ο蟮母拍詈驮O(shè)計(jì)方法,圍繞面向?qū)ο蟮姆庋b性、繼承性和多態(tài)性,重點(diǎn)介紹類和對(duì)象、友元和靜態(tài)、繼承和組合、重載與多態(tài)性、異常處理等基本語(yǔ)法[1]。該課程側(cè)重于學(xué)生面向?qū)ο缶幊陶Z(yǔ)法理解和實(shí)踐的編程能力培養(yǎng),使其能夠運(yùn)用面向?qū)ο笏枷牒头椒ǚ治龊颓蠼庥?jì)算機(jī)領(lǐng)域應(yīng)用軟件設(shè)計(jì)與開發(fā)問題。
北京工商大學(xué)自2014年開始在計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)開設(shè)面向?qū)ο蟪绦蛟O(shè)計(jì)課程,采用C++語(yǔ)言,基于Moodle(Modular Object-Oriented Dynamic Learning Environment)平臺(tái)上的面向?qū)ο缶幊填}庫(kù)進(jìn)行教學(xué)?;诖?,本文分析當(dāng)前面向?qū)ο蟪绦蛟O(shè)計(jì)課程教學(xué)中存在的問題,并提出針對(duì)性改革措施,以期提高教學(xué)效果和人才培養(yǎng)質(zhì)量。
作為C語(yǔ)言程序設(shè)計(jì)的后續(xù)課程,面向?qū)ο蟪绦蛟O(shè)計(jì)課程肩負(fù)著承上(兼容C,但C++以對(duì)象為中心,側(cè)重軟件應(yīng)用)、啟下(為Java及后續(xù)編程實(shí)訓(xùn)課程打基礎(chǔ))的作用,需要持續(xù)激發(fā)學(xué)生的編程熱情。教學(xué)早期有些學(xué)生對(duì)封裝語(yǔ)法掌握比較薄弱,只能機(jī)械地重復(fù)書本上的源碼示例;通過課堂講授、編程練習(xí)和師生互動(dòng),教學(xué)中期大多數(shù)學(xué)生能夠跟上課程進(jìn)度,但繼承和多態(tài)的語(yǔ)法比封裝更難以理解,且代碼編寫量更大,此時(shí)有些學(xué)生開始力不從心,逐漸掉隊(duì),喪失學(xué)習(xí)興趣和積極性。究其原因,傳統(tǒng)教學(xué)存在學(xué)生編程練習(xí)量少、教師反饋不及時(shí)、未能實(shí)時(shí)了解每個(gè)學(xué)生練習(xí)情況等弊端。
北京工商大學(xué)開設(shè)的面向?qū)ο蟪绦蛟O(shè)計(jì)課程于大一下學(xué)期開課,此時(shí)學(xué)生掌握的C代碼短而簡(jiǎn)單,而C++語(yǔ)言編寫的面向?qū)ο蟠a長(zhǎng)且復(fù)雜。學(xué)生在編程過程中碰到語(yǔ)法錯(cuò)誤時(shí),即使開發(fā)工具給出了錯(cuò)誤提示,部分學(xué)生也不具備糾錯(cuò)能力。隨著課程深入,學(xué)生出現(xiàn)的程序邏輯錯(cuò)誤增多,有些學(xué)生無(wú)從下手,難以完成編程訓(xùn)練,影響編程能力提升。出現(xiàn)這種現(xiàn)象的原因是學(xué)生編程訓(xùn)練量不夠,而代碼糾錯(cuò)和調(diào)試能力訓(xùn)練是一個(gè)長(zhǎng)期過程。
在在線判題(Online Judge,OJ)系統(tǒng)中,用戶可以在線提交程序源代碼,系統(tǒng)對(duì)源代碼進(jìn)行編譯和執(zhí)行,并通過預(yù)先設(shè)計(jì)的測(cè)試數(shù)據(jù)檢驗(yàn)程序源代碼的正確性。能提供在線編程評(píng)測(cè)的OJ平臺(tái)有很多,例如:ITbegin作為一個(gè)在線編程與互動(dòng)教學(xué)相結(jié)合的網(wǎng)站,提供了基于C++的面向?qū)ο笳n程和相關(guān)編程題,但題量偏少,且只能對(duì)源代碼提供編譯和執(zhí)行功能,不提供測(cè)試數(shù)據(jù)檢驗(yàn)程序源代碼的正確性;LeetCode 平臺(tái)上題目豐富,可以進(jìn)行在線測(cè)試,能夠指出錯(cuò)誤數(shù)據(jù),并支持多種主流語(yǔ)言(C/C++、Python、Java等),但該平臺(tái)大部分題目側(cè)重于經(jīng)典算法或數(shù)據(jù)結(jié)構(gòu)的編程訓(xùn)練,不涉及基于C++的面向?qū)ο缶幊填}訓(xùn)練;Moodle平臺(tái)是一款免費(fèi)開源教育平臺(tái),其面向?qū)ο蟮哪K化動(dòng)態(tài)學(xué)習(xí)環(huán)境既適合在線教學(xué),又可作為傳統(tǒng)教學(xué)的補(bǔ)充,同時(shí)也適合構(gòu)建混合式教學(xué)模式,在開源學(xué)習(xí)系統(tǒng)中獲得了較高評(píng)價(jià)[2]。
2012年,北京工商大學(xué)C語(yǔ)言程序設(shè)計(jì)課程組在Moodle平臺(tái)上創(chuàng)建了一個(gè)C語(yǔ)言題庫(kù),對(duì)學(xué)生的C語(yǔ)言編程能力提升起到了良好的促進(jìn)作用。面向?qū)ο蟪绦蛟O(shè)計(jì)課程作為后續(xù)課程,采用Moodle平臺(tái)訓(xùn)練和教學(xué)是順理成章的設(shè)想,能持續(xù)有效地提高學(xué)生的學(xué)習(xí)興趣和編程訓(xùn)練熱情,鞏固和提升編程能力。2014年,課題組篩選傳統(tǒng)教學(xué)中面向?qū)ο蟪绦蛟O(shè)計(jì)的經(jīng)典編程題目[1,3],依托Moodle平臺(tái)題庫(kù)進(jìn)行呈現(xiàn),運(yùn)用前置或后置預(yù)設(shè)代碼等手段限定其以面向?qū)ο笳Z(yǔ)法實(shí)現(xiàn),配備多組測(cè)試用例校驗(yàn)源代碼的正確性,在Moodle平臺(tái)上建立了一個(gè)支持C++的面向?qū)ο缶幊填}庫(kù)以訓(xùn)練學(xué)生面向?qū)ο蟮木幊棠芰ΑMㄟ^在教學(xué)實(shí)踐中不斷完善,目前該題庫(kù)已擁有120個(gè)左右面向?qū)ο缶幊填}目。為完成該題庫(kù)訓(xùn)練,學(xué)生需要編寫的代碼約有4 000行,訓(xùn)練量比傳統(tǒng)教學(xué)大得多。掌握一門程序設(shè)計(jì)語(yǔ)言的最佳途徑就是多練習(xí),大量編程訓(xùn)練有利于學(xué)生掌握面向?qū)ο蟮恼Z(yǔ)法和提升面向?qū)ο蟮木幊棠芰Α?/p>
2014年,課題組將面向?qū)ο缶幊填}庫(kù)運(yùn)用到課程教學(xué)中后,深感現(xiàn)有教材不具有輔助學(xué)生完成平臺(tái)編程練習(xí)的針對(duì)性,因此重新編寫并出版了一本教材,該教材側(cè)重面向?qū)ο蟮木幊逃?xùn)練。為明確訓(xùn)練具體語(yǔ)法主題,所有示例和習(xí)題都提供了相應(yīng)的輸入輸出測(cè)試用例,部分習(xí)題還預(yù)設(shè)了前置或后置代碼,限定學(xué)生所寫的代碼需采用面向?qū)ο髮?shí)現(xiàn)。該配套教材還附有4套模擬卷和從多年教學(xué)實(shí)踐中收集整理的初學(xué)者面向?qū)ο缶幊虇栴}集[4]。
2.3.1 基于Moodle平臺(tái)的教學(xué)互動(dòng)
教學(xué)互動(dòng)手段分為面對(duì)面答疑、Moodle平臺(tái)討論區(qū)及微信群或QQ群在線答疑等,其中Moodle平臺(tái)討論區(qū)是互動(dòng)交流的主要場(chǎng)所,師生通過發(fā)帖和回帖的方式在線交流,其他學(xué)生可通過瀏覽帖子旁觀和參與解決問題,這是獲得編程經(jīng)驗(yàn)的途徑之一。Moodle平臺(tái)上的編程題目通過多組測(cè)試用例、成績(jī)分值設(shè)定、折扣比例和提交截止時(shí)間等方式有效激發(fā)學(xué)生編程熱情,學(xué)生為了在規(guī)定時(shí)間內(nèi)通過平臺(tái)用例測(cè)試拿到滿分會(huì)主動(dòng)向老師提問。這意味著基于Moodle平臺(tái)題庫(kù)進(jìn)行授課的教師不僅需要更多時(shí)間和精力去答疑,而且需要隨時(shí)關(guān)注和及時(shí)回復(fù)學(xué)生提問,并隨之調(diào)整課程進(jìn)度。
2.3.2 基于 Moodle平臺(tái)的實(shí)時(shí)反饋評(píng)價(jià)體系
Moodle平臺(tái)自帶GCC、G++等編譯器,學(xué)生在該平臺(tái)上提交程序,平臺(tái)自動(dòng)評(píng)判所提交代碼并給予分?jǐn)?shù)反饋,既給教師節(jié)省了大量批改作業(yè)的精力和時(shí)間,又能保證每個(gè)參加編程訓(xùn)練的學(xué)生得到實(shí)時(shí)反饋評(píng)價(jià)。Moodle平臺(tái)在系統(tǒng)中記錄學(xué)生完成編程訓(xùn)練的各項(xiàng)成績(jī),并且提供了多樣化成績(jī)計(jì)算方式及彈性分值調(diào)整功能,以便教師對(duì)學(xué)生編程訓(xùn)練情況進(jìn)行實(shí)時(shí)有效的監(jiān)控。Moodle平臺(tái)還提供了將學(xué)生練習(xí)成績(jī)導(dǎo)出為Excel文件的功能,教師可對(duì)學(xué)生成績(jī)進(jìn)一步分析,獲取其練習(xí)詳情,針對(duì)學(xué)生普遍存在的問題及時(shí)調(diào)整教學(xué)內(nèi)容。此外,教師還可在Moodle平臺(tái)的討論區(qū)公布學(xué)生每周練習(xí)題目完成情況,督促學(xué)生完成編程練習(xí)。然而,Moodle平臺(tái)的自動(dòng)評(píng)分方式也存在局限性,例如Moodle平臺(tái)會(huì)對(duì)符合C++語(yǔ)法,以及用例和預(yù)設(shè)代碼所需的代碼自動(dòng)判滿分,至于提交的代碼實(shí)現(xiàn)方法是否滿足面向?qū)ο笤O(shè)計(jì)要求,是否滿足題目要求,其判定不甚準(zhǔn)確。
2.3.3 基于混合學(xué)習(xí)的教學(xué)模式
線上+線下的混合式教學(xué)可將學(xué)習(xí)者引入深度學(xué)習(xí)[5]。教學(xué)過程中以Moodle平臺(tái)題庫(kù)訓(xùn)練為主,輔以課堂提問、課后筆試練習(xí)和筆試小測(cè)驗(yàn)等傳統(tǒng)教學(xué)方法,將平臺(tái)在線學(xué)習(xí)與面授相結(jié)合,構(gòu)建了一種既能發(fā)揮課堂學(xué)習(xí)中教師主導(dǎo)作用,又能使學(xué)生通過自我學(xué)習(xí)建構(gòu)知識(shí)體系的學(xué)習(xí)方式。
采用機(jī)考與筆試結(jié)合的課程考核評(píng)價(jià)方法。教學(xué)早期利用Moodle平臺(tái)實(shí)時(shí)反饋和評(píng)價(jià)的優(yōu)勢(shì),以機(jī)考形式督促學(xué)生進(jìn)行編程訓(xùn)練;中期需完成1套筆試模擬卷;后期除在Moodle平臺(tái)進(jìn)行編程訓(xùn)練外,還需完成2~3套筆試模擬卷。期末考試以筆試方式考核學(xué)生對(duì)語(yǔ)法概念的掌握程度。面向?qū)ο蟪绦蛟O(shè)計(jì)課程混合式教學(xué)目標(biāo)與相應(yīng)措施如表1所示。
Table 1 The content of curriculum objectives and corresponding measures表1 課程教學(xué)目標(biāo)與對(duì)應(yīng)措施
改革方案實(shí)施后取得較好教學(xué)效果。2017-2021年間面向?qū)ο蟪绦蛟O(shè)計(jì)課程的學(xué)評(píng)教成績(jī)?nèi)绫?所示(數(shù)據(jù)來(lái)源于學(xué)校教務(wù)管理系統(tǒng))??梢钥闯觯?年間該課程的學(xué)評(píng)教成績(jī)均在90分以上,學(xué)生對(duì)課程的總體滿意程度較高。
Table 2 Assessment of teaching results表2 學(xué)評(píng)教成績(jī)
2017-2021年間面向?qū)ο蟪绦蛟O(shè)計(jì)課程的總評(píng)成績(jī)?nèi)绫?所示(數(shù)據(jù)來(lái)源于學(xué)校教務(wù)管理系統(tǒng))??梢钥闯?,平臺(tái)題庫(kù)訓(xùn)練對(duì)于學(xué)生掌握課程內(nèi)容大有裨益,即使2020年春季受疫情影響全程采用線上授課,與其他4年的線下教學(xué)相比,學(xué)生平均成績(jī)和最高分差異性不大,教學(xué)質(zhì)量比較穩(wěn)定,說明教學(xué)改革達(dá)到了預(yù)期效果。
Table 3 Analysis of students' overall course assessment results表3 學(xué)生課程總評(píng)成績(jī)分析
針對(duì)面向?qū)ο蟪绦蛟O(shè)計(jì)課程傳統(tǒng)教學(xué)中存在的一系列問題,課題組建立了基于Moodle平臺(tái)的編程題庫(kù),以提高學(xué)生學(xué)習(xí)興趣,增強(qiáng)其代碼調(diào)試、糾錯(cuò)和項(xiàng)目開發(fā)能力;基于Moodle平臺(tái)題庫(kù)編寫了配套教材,提供面向平臺(tái)題庫(kù)的針對(duì)性輔導(dǎo);開展了混合式教學(xué)探索,基于Moodle平臺(tái)的教學(xué)互動(dòng)和實(shí)時(shí)反饋評(píng)價(jià)調(diào)整教學(xué)內(nèi)容與進(jìn)度,取得了優(yōu)異的教學(xué)成效,即使期間受到疫情影響,學(xué)生成績(jī)依然保持穩(wěn)中有升。后續(xù)將進(jìn)一步完善編程題庫(kù),充分與實(shí)際應(yīng)用相結(jié)合,以提升學(xué)生解決現(xiàn)實(shí)問題的能力。