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