彭源,孫超超
(上海電力大學(xué)計算機科學(xué)與技術(shù)學(xué)院,上海 200090)
隨著計算機技術(shù)的發(fā)展,程序設(shè)計已經(jīng)成為許多理工學(xué)科的研究中必不可少的一項基本技能。在我校,高級程序設(shè)計C++課程一直是計算機專業(yè),信息安全專業(yè)以及網(wǎng)絡(luò)工程專業(yè)一年級學(xué)開設(shè)的一門專業(yè)基礎(chǔ)課程。其他部分學(xué)科也將其納入基礎(chǔ)課的范疇。課程的任務(wù)是介紹C++面向過程的編程知識,主要培養(yǎng)學(xué)生的動手編程能力和軟件設(shè)計的邏輯思維能力,為后繼課程的學(xué)習(xí)和工作打下基礎(chǔ)。
由于學(xué)生之前從未接觸過面向?qū)ο蟪绦蛟O(shè)計的思想,從計算機程序設(shè)計語言和面向?qū)ο蟮慕嵌瓤紤]問題存在著一定的障礙,同時,這門課程,內(nèi)容多,動手能力要求較高,因此在接受和掌握的過程具有一定的難度。
一門課程的教學(xué),不僅需要老師對本門課程有深入的了解和細致的備課,在教學(xué)方法上也應(yīng)該不斷改進,盡量從學(xué)生理解的角度出發(fā),改進教學(xué)方法,使得學(xué)生易于接受和理解,從而提高教學(xué)的效果。下面是對理論教學(xué)方法改進的一些思考。
面向?qū)ο蟮某绦蛟O(shè)計方法雖然比起以前面向過程的語言更為人性化,但對于學(xué)生而言,仍覺得十分抽象,在具體的教學(xué)實踐中,選擇一些學(xué)生生活中較為熟悉的概念和實例,會幫助學(xué)生更好地理解和掌握抽象的知識點。在教學(xué)手段上采用“問題驅(qū)動式”的教學(xué),以課堂上動態(tài)編程、問題和結(jié)果動態(tài)呈現(xiàn)的方式組織教學(xué)內(nèi)容。
例如,對程序設(shè)計時“如何表示人這個概念”的問題進行分析,引導(dǎo)對概念進行抽象的思路。人都具有姓名、性別等屬性,也可以進行諸如吃飯、休息等行為,從而引出Human 類的概念和定義如下:

和現(xiàn)實中一個具體的人進行對應(yīng),引出對象的概念。并定義對象如下:
Human Jane;
學(xué)生是人這個概念中的一種特殊的情況,除了具有人的所有屬性和行為之外,也具有自己特有的行為和屬性,如具有學(xué)號,可以進行寫作等行為。從而引出繼承的概念并定義如下:

教學(xué)重點在于如何引導(dǎo)學(xué)生了解類是什么、有什么作用;一般類如何構(gòu)成,為什么如此設(shè)計,類在設(shè)計的時候需要注意哪些問題等。通過實際教學(xué),發(fā)現(xiàn)此種方法對學(xué)生的理解和掌握有著良好的促進作用。
隨著技術(shù)的日新月異,各種多媒體教學(xué)手段在課堂上占據(jù)了越的比重越來越大,本課程中,利用了雨課堂等課堂互動輕應(yīng)用工具,將學(xué)生“低頭族”的工具手機,變成課堂回答問題、教師掌握學(xué)習(xí)情況、日??己撕头答伒墓ぞ撸煌瑫r、作業(yè)的提交、資料的發(fā)放、師生即時消息的傳遞等也可以通過互動工具進行,從而強化了教師、學(xué)生之間的即時的課堂互動和溝通。
在課程學(xué)時較為有限的情況下,綜合利用線上資源,突出重點、兼顧全面:具體措施如下:
在有限的理論授課環(huán)節(jié)著重于關(guān)鍵知識點的理解,同步線上C++面向?qū)ο蟪绦蛟O(shè)計等國家精品課程;對于一些重過程、操作性的知識:例如程序調(diào)試步驟、項目中文件的組織等內(nèi)容,以提供錄制或剪切的課后微視頻和在線視頻為主進行掌握,并在課程開展的過程中以一定的手段對知識點的掌握情況進行核實。
引入翻轉(zhuǎn)課堂模式,由學(xué)生進行項目的報告和講解,師生共同討論。結(jié)果證明,每個學(xué)生都能充分發(fā)揮主觀能動性,能動積極主動完成匯報和互評等,同時互評的成績也體現(xiàn)了公開、公平、公正。
為了避免“一考定終身”的情況,考核被分散到課程開展的各個時刻,包括課堂回答問題、翻轉(zhuǎn)課堂成績、及階段性的項目考核和期末考核等。先進的互動應(yīng)用工具可在課堂過程中及時、定時的分發(fā)問題和回收學(xué)生答案,為課堂考核提供了技術(shù)支持;在翻轉(zhuǎn)課堂考核中采用教師主導(dǎo),學(xué)生整體匿名評分的方式進行考核;項目考核鼓勵學(xué)生在課堂已有知識的基礎(chǔ)上進行延伸,教師根據(jù)學(xué)生實際完成情況進行打分;期末考核著重于重點概念和知識點的掌握情況。通過以上多角度、過程化的考核,可較為全面和客觀的評價學(xué)生的掌握情況。
C++程序設(shè)計是一門對動手能力要求很高的課程,大一的學(xué)生剛從高中進入大學(xué)校園,基本上學(xué)習(xí)模式仍處在聽課,理解知識點、做練習(xí)題的階段,對上機沒有太多的重視,而把時間多花在寫作業(yè)上。導(dǎo)致規(guī)則記得很牢,但實際編程卻總是出錯的狀況。
動手能力的培養(yǎng),首先需要學(xué)生的重視,在教學(xué)過程中,應(yīng)著重強調(diào)動手能力培養(yǎng)的重要性。同時通過以下方式,調(diào)動學(xué)生的對動手的積極性和糾正動手能力培養(yǎng)過程中的一些不好的習(xí)慣。
很多學(xué)生對打游戲有著天然的興趣,通過堵和壓的方式并不能有很好的改觀,反而使其更加上癮。不如采取疏和引導(dǎo)的方式,在學(xué)習(xí)任務(wù)已經(jīng)完成的情況下,可以適量的打會游戲作為放松,同時漸進地將其興趣和好奇心由打游戲引導(dǎo)到自己設(shè)計游戲,編程實現(xiàn)一些小游戲上來。
興趣是最好的老師,當學(xué)生開始對游戲究竟是如何實現(xiàn)好奇的時候,學(xué)習(xí)的動力就非常足了。
程序的書寫格式是學(xué)生在學(xué)習(xí)初期經(jīng)常會忽略的一個問題。雖然在課程中強調(diào)了程序應(yīng)當按照鋸齒形的結(jié)構(gòu),每行一個語句進行書寫,但由于程序的書寫格式并不會影響到程序的執(zhí)行,在學(xué)生絞盡腦汁、對出錯的程序來回修改的同時,很少有學(xué)生會注意到書寫的格式問題。
在編程的初期,由于程序比較簡單,不規(guī)范的書寫格式帶來的影響還不能顯見,這也是學(xué)生不重視格式的一個原因。但在后期,程序比較復(fù)雜的情況下,程序的易讀性變差,從書寫格式不規(guī)范的學(xué)生的情況來看,部分學(xué)生就開始放棄,而且出錯的原因中,由于格式不規(guī)范而導(dǎo)致大意出錯的情況屢屢出現(xiàn)。
程序的格式是一個習(xí)慣的問題。對于教師,針對于學(xué)生的特點,需要在實驗的過程中,反復(fù)提及格式書寫的重要性。當學(xué)生出現(xiàn)此類錯誤時,需要再次強調(diào)。以引起學(xué)生高度的重視,最終形成良好的習(xí)慣。
在程序中,‘{’和‘}’、‘[’和‘]’、‘(’和‘)’等都是成對出現(xiàn)的,在學(xué)生的程序設(shè)計過程中,經(jīng)常會有‘}’多了或者少了的情況,針對于此,因當要求學(xué)生在寫出‘{’的同時就寫出‘}’,然后回過頭來在填充一對花括號里面內(nèi)容。這有悖于常規(guī)的如作文、作業(yè)等的書寫順序,但卻是一個很好的防治程序出錯的辦法
學(xué)生在編程中,經(jīng)常會出現(xiàn)想當然的情況,在實驗過程中,針對學(xué)生出現(xiàn)的問題,要考慮到他們出錯的原因,指出本質(zhì)上的錯誤。培養(yǎng)其轉(zhuǎn)變思路,從計算機理解程序的角度來考慮問題。
以學(xué)生經(jīng)常犯的一個錯誤為例:C++中,5/2 結(jié)果是2,而不是數(shù)學(xué)中的2.5。其原因在于同樣是“/”作為除運算符在C++中的表示,當左右兩個操作數(shù)均為整數(shù)的時候表示的是整除;有操作數(shù)為浮點數(shù)時,才表示的是數(shù)學(xué)中常見除運算。因此,若要得到2.5,需將其中的一個操作數(shù)如5 改成5.0,在解答此本題的同時,更重要的是告訴其結(jié)果為2 的原因,引導(dǎo)其思維的改變,從計算機處理的角度而不是常理的角度出發(fā)來思考問題。
課后學(xué)習(xí)也是學(xué)習(xí)的一個組成部分,對于學(xué)生鞏固知識具有舉足輕重的作用。
C++語言規(guī)則多、雜,通過有限時間的編程練習(xí),并不能囊括所有的知識點。上機編程之外,作業(yè)也是很重要的一環(huán),沒有作業(yè)的鞏固,很難希望學(xué)生課后仍記得很牢。
同時,作業(yè)中的程序?qū)W(xué)生編程思路的開展也有很好的幫助,課堂上受學(xué)時的限制,很多編程思路無暇提及,可以展現(xiàn)在作業(yè)中。學(xué)生做題的同時,實際上就接受了此思考問題、解決問題的辦法,有助于學(xué)生開闊思路、提高解決問題的能力。
大量的程序?qū)嵗龑W(xué)生來說非常必要,在學(xué)語言的過程中,語句的規(guī)則比較重要,換個題目,可能學(xué)生就不知道應(yīng)該如何書寫了,通過例題程序,學(xué)生可以方便的找出合適自己的程序結(jié)構(gòu),在學(xué)習(xí)的初期,實例這根拐杖是有必要的。
通過教學(xué)實踐也發(fā)現(xiàn),書上的例題程序遠不能滿足學(xué)生的需求,經(jīng)常會有學(xué)生要求給出更多的實例程序以供參考。
在教學(xué)的最初,需要注意觀察班級的情況,著重培養(yǎng)個別興趣濃厚的學(xué)生,通過鼓勵和表揚以及引導(dǎo)他們解決疑難問題等方式提高他們的學(xué)習(xí)積極性,并從中培養(yǎng)出一些優(yōu)秀的學(xué)生。
此種做法的好處一是可以帶動整個班級的學(xué)習(xí)氣氛。學(xué)生的競爭意識都比較強,有尖子生作為標尺,可以對他們形成一定的壓力,也是他們努力學(xué)習(xí)的動力。另外一個好處是這些學(xué)生可以給其他同學(xué)提供幫助,在教學(xué)的后期,以這些優(yōu)秀的學(xué)生為中心,組成若干學(xué)習(xí)小組,以強化學(xué)生課后的交流,從而提高整個班級的掌握水平。
C++程序設(shè)計是一門實踐性很強的課程,在教學(xué)過程中,不僅要課堂上傳授理論知識,而且也要在實驗中著重培養(yǎng)動手能力。在教師采取一定措施,不斷改進教學(xué)質(zhì)量的同時,學(xué)生的學(xué)習(xí)態(tài)度也是非常關(guān)鍵的,可以通過各種方式調(diào)動學(xué)習(xí)的積極性。