章品正
(東南大學計算機學院,江蘇 南京 210096)
“程序設(shè)計實踐環(huán)節(jié)”是“C++程序設(shè)計”的后續(xù)課程[1]。通?!癈+程序設(shè)計”的教學環(huán)節(jié)中以逐個知識點的教學為主,因而學生缺乏系統(tǒng)的實踐鍛煉?!俺绦蛟O(shè)計實踐環(huán)節(jié)”強調(diào)系統(tǒng)的實踐,使得學生有機會系統(tǒng)地掌握知識,增強發(fā)現(xiàn)并糾正編程錯誤的能力,培養(yǎng)查閱文獻資料及維護編程文檔的習慣[2]。通過該環(huán)節(jié)的培養(yǎng),對于學生后續(xù)專業(yè)課程學習和畢業(yè)設(shè)計工作實施都大有裨益[3-4]。但目前由于教學條件的限制,該課程教學面臨教與學兩方面問題[5]。
一方面是當前本科教學過程中,一年級基礎(chǔ)課程量大,分配給程序設(shè)計課程的時間有限,而大部分學生在入學之前都沒有編程經(jīng)驗。另一方面,是教師授課時偏重語法要點,而忽視程序設(shè)計的根本在于解決工程實際中的問題。
為了解決以上問題,本文提出以培養(yǎng)學生學習興趣為核心,結(jié)合啟發(fā)與互動式教學的“程序設(shè)計實踐環(huán)節(jié)”教學模式:①針對具備較好編程基礎(chǔ)知識的計算機專業(yè)學生,可將教學重點放在培養(yǎng)學生解決實際問題的能力上。在教學方法上突出學習興趣的培養(yǎng),突出編程實踐能力與習慣的培養(yǎng),提高課堂外自學能力;②將“C++程序設(shè)計”課程的春季學期后半程學習與“程序設(shè)計實踐環(huán)節(jié)”的教學相結(jié)合,做到實踐教學提前介入,使得該課程橫跨春季學期與短學期。春季學期設(shè)置12學時的授課與20學時的上機輔導用于布置任務及程序設(shè)計模式的教學。我們將任務分為基礎(chǔ)鍛煉部分(計算器與模板編程)和擴展訓練部分(設(shè)計一個教師指定的管理系統(tǒng))。完成該任務可視為達到擴展訓練部分的要求;③學生必須利用暑假時間完成基礎(chǔ)鍛煉部分的任務及擴展訓練部分的編程準備,同時告知用于暑假學習答疑的網(wǎng)絡答疑聯(lián)系方法。
“程序設(shè)計實踐環(huán)節(jié)”教學方案設(shè)計時,可以根據(jù)學生是否愿意結(jié)合自己需求與遇到問題進行任務設(shè)計將學生分為兩類(甲類和乙類),分別給出具體的實施方案。通過這種方式可以讓所有的學生均得以提高自身的編程能力。
對于甲類學生,我們采用了以下實施方案。
1)在布置任務階段就明確告知學生,對于自選題目的考核不是僅看最后結(jié)果,還注重問題的發(fā)現(xiàn)及平時資料的獲取收集。我們注重過程鍛煉且允許失敗。考核要求為在完成自選題目過程中作好記錄與階段總結(jié)。階段總結(jié)包括:①在題目方案設(shè)計階段的資料總結(jié)、方案設(shè)計報告和面向?qū)ο蟪绦蛟O(shè)計說明;②在方案實施階段對于遇到的問題以及解決方法的記錄,平時小組討論的記錄;③題目完成后的成功經(jīng)驗匯總或題目完成失敗后的經(jīng)驗總結(jié)。
2)在程序設(shè)計教學實踐環(huán)節(jié)的開始階段明確鼓勵學生按照特長與興趣進行組隊,通過團隊協(xié)作培養(yǎng)學生分工合作、互相討論與幫助。
3)在題目完成過程中,支持模仿更鼓勵集成創(chuàng)新。學生要通過各種途徑查找與自己需求相關(guān)的算法與范例,通過適當改進算法與范例并應用到自己的程序當中,使得程序更加穩(wěn)健合理。
4)要求所有選擇組隊完成自己設(shè)計任務的學生,必須在春季學期完成兩道基礎(chǔ)題目(計算器和使用模板設(shè)計矩陣計算)。對于能夠完成的學生,要求他們在暑假期間充分做好調(diào)研,同時完成軟件系統(tǒng)設(shè)計工作。要求組長完成程序框架的設(shè)計以及功能模塊的劃分。如果該學生不能按時完成,則要求他轉(zhuǎn)入普通組。
5)教師要在短學期了解各個項目小組的工作進展并給予指導。采用小組答辯形式進行最終評分,評分時邀請其余項目小組中完成較好的學生加入評委組,對各個項目小組的成果進行答辯式評審。
在目前經(jīng)歷過的五輪教學過程中,能夠完成以上實施方案的甲類學生不足三成。對于其余學生即乙類學生,則編為普通組,對他們的能力培養(yǎng)采用以下實施方案。
1)根據(jù)學生已掌握的基本知識和基本技能,選擇合適的題目。確定計算器和使用模板類設(shè)計實現(xiàn)矩陣計算這兩道題目作為基本題目。學生通過這兩道題目的練習能夠融會貫通已經(jīng)掌握的知識,調(diào)動學習積極性,積累展開進一步學習的信心。
2)對于在春季學期沒有按時完成這兩道基礎(chǔ)題目的學生,要求在暑假期間通過網(wǎng)絡手段與教師及時交流來解決問題。對于完成這兩道基礎(chǔ)題目的學生,則利用暑假期間做好在短學期完成擴展訓練題目的準備。包括系統(tǒng)的軟件結(jié)構(gòu)體系的設(shè)計與必要知識的儲備。
3)短學期期間,教師通過一對一的提問,并根據(jù)學生的回答給出其平時成績的得分。教師在短學期結(jié)束時候,結(jié)合學生平時表現(xiàn)及編別程序代碼的有效性以及實驗報告的規(guī)范性,給出每個學生的最終評分。
上述方案已在我院三屆學生中實施,取得了很好的效果。對于乙類普通組學生,我們將重點放在基礎(chǔ)能力鍛煉上,加強實驗環(huán)節(jié)的編程實踐,使得學生在每一次上機之前做好準備,明確實驗中需要完成的任務并在規(guī)定的時間內(nèi)完成任務。對于甲類學生,在實驗講解中提示要點,讓學生帶著問題更主動地投入課后學習和課間答疑討論中。我們還鼓勵2~4名學生組成項目小組完成較大規(guī)模的自擬題目,并由學生自己確定解決方案。課程結(jié)束后,由學生上講臺答辯。
在具體實施中,我們對橫跨兩個學期的程序設(shè)計實踐課程成績的評定方式進行了改革。將評分工作分解為對學生平時學習態(tài)度的記錄,對學生課后自學情況的評價;通過實驗過程交流對學生在實驗中的回答情況進行考評,結(jié)合學生最終提交項目報告與學生答辯情況進行綜合評分。
在近三年的教學實踐過程中,涌現(xiàn)出許多優(yōu)秀的學生項目,現(xiàn)在僅舉兩例進行說明。
一組學生以自學的方式掌握Visual Studio 2008開發(fā)環(huán)境后,研發(fā)了一款比VC 6.0更加界面友好的科學計算器。他們在算法方面自學逆波蘭式知識,使設(shè)計的計算器功能更加完備。相關(guān)的文檔和軟件源代碼可在東南大學計算機學院影像實驗室網(wǎng)站上下載(http://www.imagetech.com.cn/zh-hans/node/176)。程序界面如圖1所示。

圖1 計算器運行界面
另一組學生解決了學習英語過程中遇到檢索單詞的困難。例如,看到brunt(中文意思是沖擊),有時會錯想到“直率的”,但查閱普通字典,甚至金山詞霸都很難直接從中文意思檢索到英文該詞或其相似詞。針對這個問題他們提出基于動態(tài)規(guī)劃的有限分隔最長公共子串算法與改進的最小編輯距離算法進行相似單詞查找與比對。在操作時通過輸入待查詢字符串,即可實現(xiàn)詞庫內(nèi)相似單詞搜索。搜索結(jié)果按相似度降序列出。如單詞本身存在于詞庫中,通常第一個輸出單詞是原單詞。如果輸入單詞錯誤,此程序可給出拼寫正確的相似單詞,因而也可以用作帶有拼寫糾錯功能的軟件。除了相似單詞搜索,目前還能夠結(jié)合輸入單詞子串和單詞意思進行查詢。例如“+escent”搜索含有子串“escent”的單詞,“=花”搜索詞義中含有“花”的單詞。程序最終結(jié)果聚類輸出,使得相似度接近的被分到同一類。他們開發(fā)的智能字典圖形運行界面及以“blunt”為輸入的相似匹配結(jié)果如圖2所示。程序源代碼可在如下網(wǎng)址 http://www.imagetech.com.cn/upload/luckzpz/DictionarySource.rar下載。

圖2 智能字典圖形用戶界面
本文針對程序設(shè)計的實踐環(huán)節(jié)現(xiàn)在存在的問題,探討了培養(yǎng)學生的學習興趣的途徑與鍛煉學生分析問題、解決問題能力的方法。同時介紹了近年來在該課程教學改革中取得的經(jīng)驗與成果。實踐表明,本文提出的方法有利于學生掌握和鞏固已學到的語法知識,有利于培養(yǎng)規(guī)范的編程習慣,為后續(xù)課程、課外研學和畢業(yè)設(shè)計打下良好的基礎(chǔ)。同時對于部分優(yōu)秀學生培養(yǎng)了他們自學能力、團隊合作能力與自我表達能力。
[1]教育部高等學校計算科學與技術(shù)教學指導委員會.高等學校計算機科學與技術(shù)專業(yè)發(fā)展戰(zhàn)略研究報告暨專業(yè)規(guī)范(試行)[M].北京:高等教育出版社,2006
[2]Matthias Felleisen.How to design programs[M].北京:人民郵電出版社,2003
[3]耿國華.程序設(shè)計能力培養(yǎng)模式的探索與實踐[J].北京:中國大學教學,2009,3:30-32
[4]賴曉晨.程序設(shè)計課程創(chuàng)新教學模式探索[J].北京:中國大學教學,2008,7:42-44
[5]張敏霞.程序設(shè)計語言課程教學方法改革的探索與實踐[J].北京:中國高教研究,2004,2:90-90