韓冰 郭詠梅 候慧玲
摘 要:面向?qū)ο蟪绦蛟O(shè)計是計算機專業(yè)學(xué)生的專業(yè)基礎(chǔ)課,但學(xué)生普遍反映C++程序設(shè)計語言學(xué)習(xí)難度大,興趣不高,教學(xué)效果差,難以完成即使小項目的編程實現(xiàn)。通過分析教學(xué)過程中存在的問題,例如學(xué)生對控制臺應(yīng)用程序不感興趣、例子老套、與其他課程聯(lián)系少,以提高學(xué)生興趣為導(dǎo)向,培養(yǎng)學(xué)生面向?qū)ο笏季S能力以及編程實踐能力為目標,對面向?qū)ο蟪绦蛟O(shè)計C++教學(xué)方法、教學(xué)內(nèi)容、教學(xué)形式、考核評價手段等進行了一些改革,并通過調(diào)查法、定量分析法對教學(xué)實踐改革的成果進行了總結(jié),結(jié)果也表明,學(xué)生越感興趣,那么對課程的掌握也就越好。
關(guān)鍵詞:興趣;面向?qū)ο蟪绦蛟O(shè)計C++;教學(xué)實踐改革
中圖分類號:TP311 文獻標識碼:A
文章編號:2096-1472(2016)-06-59-02
Abstract:The course Object Oriented Programming is an important professional course of computer science major students,but during the teaching process,many students thought that it was hard to learn C++ programming language,and they were not much interested in it.After having the class,they couldn't program with C++ efficiently and failed in finishing even small project programming.So through analyzing the problems in the teaching process,for instance,students are rarely interested in the console application,the examples used are mostly clichés,the teaching gets little connection with other courses and so on,this paper starts with improving students' interests,and sets the goal that this course could develop the object-oriented thinking and programming practice abilities of students,finally gives some reforms about teaching method,teaching content,teaching form and evaluating method of object-oriented programming C++.It also summarizes the result of the reform in education with survey method and quantitative analysis,all in all,the more students are interested in,the more they understand the content of the course.
Keywords:interest;object-oriented programming C++;reform in education
1 引言(Introduction)
面向?qū)ο蟪绦蛟O(shè)計是高等院校計算機專業(yè)的重要課程,學(xué)習(xí)的具體語言不止一種,例如C++、Java、C#等,雖然語言不同,但基本的面向?qū)ο蟮乃枷攵际窍嗤?。在面向?qū)ο蟪绦蛟O(shè)計教學(xué)中,Michael Dawson[1]將每個知識點的理解和學(xué)習(xí)都通過一個游戲來進行,但需要大量的學(xué)習(xí)及實踐時間,Ronald Shehane、Steven Sherman[2]提出應(yīng)該基于學(xué)習(xí)內(nèi)容,結(jié)構(gòu)和菜單、代碼、編譯、執(zhí)行、調(diào)試、文件組織、輸出等方面來開展教學(xué),并列出了常見錯誤,從學(xué)習(xí)結(jié)果的角度來探索教學(xué)方式和方法,Mutua Stephen等[3]探討了使用可視化編程工具對于教學(xué)和學(xué)習(xí)編程的影響,例如Jeliot3、BlueJ并比較了使用前和使用后學(xué)生的得分分布情況,出發(fā)點也是基于如何激發(fā)學(xué)生對于課程的興趣,使得編程過程更有趣,但要求教師對這些工具非常熟悉。駱斌、邵棟等[4]的教學(xué)理念是培養(yǎng)學(xué)生采用工程化方法構(gòu)建個人及小規(guī)模軟件系統(tǒng)能力為目標,以一個計算實例為線索,循序漸進講授獨立類開發(fā)、多個類開發(fā)、具有圖形用戶界面和網(wǎng)絡(luò)功能的相對復(fù)雜系統(tǒng)開發(fā)。國偉[5]提出在面向?qū)ο蟪绦蜷_發(fā)中學(xué)習(xí)情境的引入會激發(fā)學(xué)生學(xué)習(xí)的興趣。沈煒、莊巧莉[6]提出內(nèi)部視角為出發(fā)點的教學(xué)方法。白霞等[7]提出使用內(nèi)容重組式和方法推動式方法將計算思維能力培養(yǎng)融入C++程序設(shè)計授課過程中,他們認為計算思維不僅對于計算機學(xué)科,而且對于其他學(xué)科也是非常重要的,教學(xué)重點應(yīng)該放在理解程序設(shè)計的理論和方法上。陶乾等[8]提出基于BTEC模式來組織教學(xué),BTEC是根據(jù)職業(yè)導(dǎo)向設(shè)置課程大綱,以學(xué)生為中心進行教學(xué),讓學(xué)生在體驗中學(xué)習(xí),而教師則圍繞學(xué)生的學(xué)習(xí)來實施教學(xué)。但在實施上有些難度,例如讓學(xué)生以項目中不同角色來完成項目,僅針對面向?qū)ο蟪绦蛟O(shè)計一門課來講,難度很大。不管教學(xué)方法和教學(xué)模式有多么不同,學(xué)生在教學(xué)過程中形成積極、主動的學(xué)習(xí)態(tài)度是非常重要的。
本文主要描述在面向?qū)ο蟪绦蛟O(shè)計C++教學(xué)中如何提高學(xué)生興趣,從而更好的掌握面向?qū)ο缶幊趟枷?,最終達到學(xué)生可以具有小項目開發(fā)能力這一目標的教學(xué)實踐以及實踐成果。
2 教學(xué)過程中存在的問題(Problems of teaching process)
不同學(xué)校面向?qū)ο蟪绦蛟O(shè)計C++的先修課程不同,有的直接學(xué)習(xí)C++,有的先修C語言,在本文中以先修C語言為例,主要存在的問題有:(1)通過C語言的學(xué)習(xí),學(xué)生已經(jīng)熟悉面向過程的編程,C++從名字上看很相似,所以學(xué)生開始學(xué)習(xí)時疑問多,興趣不大;(2)C語言建立的是控制臺應(yīng)用程序,C++的教學(xué)中如果也同樣只建立控制臺應(yīng)用程序,很難吸引學(xué)生,學(xué)生的編程積極性普遍不高;(3)課程內(nèi)容抽象,教學(xué)嚴謹?shù)且坏┤狈ι鷦踊顫姡蜁蟠蠼档蛯W(xué)生的積極性和主動性;(4)教材中的例子老套,例如有的教材[9]采用的例子是迭代實現(xiàn)銀行管理信息系統(tǒng),每一章都會把新的知識點加入到已經(jīng)做好的系統(tǒng)中,但是銀行的存取款、利息的計算及支取邏輯本身比較復(fù)雜,增加了學(xué)生實現(xiàn)系統(tǒng)的難度;(5)學(xué)生的實踐非常重要,但是實踐的考評非常困難,很難避免作業(yè)的抄襲,有些作業(yè)中的錯誤個數(shù)、內(nèi)容都一樣;(6)面向?qū)ο蟪绦蛟O(shè)計C++這一課程不是孤立的,與其他課程,例如軟件工程、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)庫技術(shù)、計算機網(wǎng)絡(luò)都有關(guān)系,在教學(xué)過程中只單純以掌握知識點為目標,對學(xué)生學(xué)習(xí)體系的建立、職業(yè)化發(fā)展有不利影響。
3 提高學(xué)習(xí)興趣的措施(Methods to improve students' interests)
在以往的C++教學(xué)過程中存在著以上這些問題,為了解決這些問題,就需要采用以興趣為導(dǎo)向的案例和任務(wù)驅(qū)動教學(xué)法并適當調(diào)整教學(xué)內(nèi)容。愛因斯坦說過:“熱愛是最好的老師”,激活學(xué)生的學(xué)習(xí)興趣,是學(xué)好一門學(xué)科的良好開端和動力。編程語言是枯燥的,面向?qū)ο蟮乃枷?,類的開發(fā),繼承和多態(tài),STL等知識點的掌握以及編程技能的融會貫通都離不開一個前提:學(xué)生有求知欲,學(xué)習(xí)態(tài)度端正。為了實現(xiàn)該目標,可以采取用興趣、知識點和相關(guān)案例相結(jié)合的方式來設(shè)計教學(xué)過程,盡量用對話框程序作為學(xué)生需要完成的目標。
(1)選擇可以激發(fā)學(xué)生興趣的案例
學(xué)生對學(xué)習(xí)該課程帶來的結(jié)果感興趣毋庸置疑[10],學(xué)生們都希望得到學(xué)分以及好成績,另外通過學(xué)習(xí)進行一些系統(tǒng)開發(fā)所帶來的成就感也是結(jié)果之一,所以教師可以在教學(xué)過程中將知識點和一些案例相結(jié)合,然后學(xué)生通過動手實踐掌握知識以及技能。面向?qū)ο蟪绦蛟O(shè)計C++教學(xué)重點主要有類和對象、STL、繼承、多態(tài)等,教師可以根據(jù)不同的教學(xué)重點采用有針對性的案例。
大家普遍對游戲感興趣,如果可以實現(xiàn)簡單游戲開發(fā)學(xué)生會有很強的成就感,所以游戲應(yīng)該作為案例的第一選擇。單個類的設(shè)計比較簡單,但類如果包含其他類的對象或是一個類使用其他類的對象就比較抽象,可以選擇俄羅斯方塊游戲的實現(xiàn)為內(nèi)容,單元格類CCell、游戲區(qū)域類CGrid和方塊類CPiece之間包含、使用的關(guān)系非常適合用于理解類之間的關(guān)系以及實現(xiàn)多個類開發(fā)。STL的內(nèi)容非常廣泛,可以選擇一種容器進行教學(xué),例如vector,計算器程序可以很好的用來理解并掌握vector這一容器。繼承和虛函數(shù)的學(xué)習(xí)可以選擇的案例同樣很多,例如畫圖程序,元素類CElement、圓類Circle、矩形類CRectangle、線段類Cline的實現(xiàn)可以很好的令學(xué)生理解并掌握知識要點。運算符重載的掌握可以根據(jù)一連串的需求為出發(fā)點,例如日期之間的比較,計算相差的天數(shù),相差的秒數(shù)等,通過時間類CTime、日期類CDate、日期時間類CDateTime的實現(xiàn)來進行學(xué)習(xí)。
(2)開發(fā)圖形用戶界面系統(tǒng)
如前文所說,學(xué)生如果一直建立控制臺應(yīng)用程序,對面向?qū)ο蟪绦蛟O(shè)計C++的學(xué)習(xí)興趣會大打折扣,所以應(yīng)盡量建立MFC項目的對話框程序,這樣圖形用戶界面非常容易設(shè)計,只需要專注于程序邏輯。在教學(xué)過程中,教師需要適當引入消息處理機制和MVC框架,案例實現(xiàn)時將MFC類及一些函數(shù)的使用略講。
(3)教學(xué)時運用教學(xué)藝術(shù)
享受學(xué)習(xí)過程,對所學(xué)內(nèi)容感興趣是更高層次的動機,而且對學(xué)習(xí)的激勵有持續(xù)的作用[2]。如果教學(xué)內(nèi)容枯燥無味,教師的講授不能吸引學(xué)生,大部分學(xué)生昏昏入睡、開小差,那么也許教師準備的很充分,仍然不能提高學(xué)生的主動性和積極性,所以教師要掌握上課的節(jié)奏,一旦發(fā)現(xiàn)大家的注意力不集中,可以適當調(diào)劑一下氛圍。面向?qū)ο蟪绦蛟O(shè)計課程的特點是學(xué)生不僅要掌握知識,更要掌握技能,擁有進行小型系統(tǒng)開發(fā)的能力,所以只通過多媒體設(shè)備傳遞知識,學(xué)生很容易注意力不集中,為了提高學(xué)生的動手實踐能力,教師如果能夠直接現(xiàn)場書寫代碼,這種方式更直接,更容易吸引學(xué)生的注意力。
(4)強調(diào)與其他專業(yè)課之間的關(guān)系
在教學(xué)過程中強調(diào)《面向?qū)ο蟪绦蛟O(shè)計C++》與后續(xù)課程之間的關(guān)系,并且通過實例驗證可以更好的激發(fā)學(xué)生學(xué)習(xí)的興趣及積極性。例如訪問數(shù)據(jù)庫或聊天室的建立,一個涉及《數(shù)據(jù)庫技術(shù)》這一課程,一個與《計算機網(wǎng)絡(luò)》《TCP/IP協(xié)議》相關(guān)。
(5)采用側(cè)重學(xué)生實踐能力的考核評價方法
學(xué)生的動手實踐過程非常重要,《面向?qū)ο蟪绦蛟O(shè)計C++》的實踐是通過不同系統(tǒng)開發(fā)來完成的,系統(tǒng)完成的時間先后、完成度、系統(tǒng)功能的擴展都作為評分的標準。為了在一定程度上避免抄襲,要求學(xué)生的項目名、類名中包含自己的名字,每個類、成員名旁要求有注釋。最終的成績實踐占60%,期末試卷成績占30%,平時成績占10%。
4 教學(xué)實踐總結(jié)(Results of teaching practice)
通過以上措施的實施,學(xué)生對《面向?qū)ο蟪绦蛟O(shè)計C++》的興趣濃厚,完成的代碼行數(shù)大約2100行,對93名學(xué)生做問卷調(diào)查后結(jié)果如表1和表2所示。
從以上兩張表可以看出,興趣與掌握程度基本成正比,將近七成學(xué)生通過學(xué)習(xí)實踐基本掌握了C++語言,可以進行小型系統(tǒng)的開發(fā),學(xué)生對游戲的興趣最高。數(shù)據(jù)庫訪問程序因為涉及到后續(xù)課程內(nèi)容,學(xué)生的積極性不是很大。其中對教學(xué)內(nèi)容完全沒有興趣或完全沒有掌握的學(xué)生大部分是C語言基礎(chǔ)差,函數(shù)、指針等沒有掌握,對新的知識也就提不起興趣,所以前期課程的掌握對后續(xù)課程非常重要。
5 結(jié)論(Conclusion)
本文主要論述了在《面向?qū)ο蟪绦蛟O(shè)計C++》教學(xué)過程中,以興趣為導(dǎo)向,調(diào)整教學(xué)方法及內(nèi)容,使得學(xué)生盡可能的掌握用C++開發(fā)系統(tǒng)的能力,教學(xué)過程中應(yīng)多與學(xué)生進行交流,授課時控制語速及課堂節(jié)奏,實踐課時應(yīng)適當增加。如何在有限的課時下,更好的激發(fā)學(xué)生興趣,使得課堂教學(xué)生動有趣,仍然是今后要努力研究的方向。
參考文獻(References)
[1] Michael Dawson.Beginning C++ through game Programming third edition[M].Course Technology PTR,2011.
[2] Ronald Shehane,Steven Sherman.Visual teaching model for introducing programming languages[J].Journal of Instructional Pedagogy,2014(4):1-8.
[3] Mutua Stephen,Wabwoba Franklin.Teaching Computer Programming in the 21st Century[J].International Journal of Science and Technology,2011,1(6):247-252.
[4] 駱斌,邵棟,任桐偉.軟件開發(fā)的編程基礎(chǔ)[M].北京:機械工業(yè)出版社,2012.
[5] 國偉.《C#面向?qū)ο蟪绦蛟O(shè)計課程》教學(xué)改革探討與實踐[J].科技創(chuàng)新導(dǎo)報,2013(02):154.
[6] 沈煒,莊巧莉.基于內(nèi)部視角的C++面向?qū)ο蠼虒W(xué)實踐[J].中國校外教育,2010,4:161-162.
[7] 白霞,高飛,趙娟.基于計算思維的C++面向?qū)ο蟪绦蛟O(shè)計教學(xué)改革[J].計算機教育,2014(11):7-9.
[8] 陶乾,顧春琴.基于BTEC模式的《面向?qū)ο蟪绦蛟O(shè)計》教學(xué)改革與實踐[J].現(xiàn)代計算機,2012(06):37-39.
[9] 鄭莉.C++語言程序設(shè)計[M].北京:清華大學(xué)出版社,2015.
[10] 呂金城.淺談?wù)n堂興趣激勵與高等數(shù)學(xué)教學(xué)改革[J].教育與職業(yè),2006(5):88-89.
作者簡介:
韓 冰(1983-),女,碩士,講師.研究領(lǐng)域:軟件工程,圖形圖像處理.
郭詠梅(1963-),女,碩士,副教授.研究領(lǐng)域:軟件工程,軟件開發(fā).
候慧玲(1982-),女,碩士,講師.研究領(lǐng)域:軟件工程,網(wǎng)絡(luò)工程.