顏 佳,王泉德,艾 波
(1.武漢大學(xué)電子信息學(xué)院 湖北 武漢 430072;2.武漢工程大學(xué) 湖北 武漢 430205)
目前大多數(shù)高校將“C語言程序設(shè)計(jì)”作為電子信息類專業(yè)的專業(yè)必修課程,授課對(duì)象往往是大一新生。該課程主要介紹了程序設(shè)計(jì)的基本思想和基本方法,其教學(xué)環(huán)節(jié)主要包括理論教學(xué)和實(shí)踐教學(xué)。課程為后續(xù)專業(yè)課程的學(xué)習(xí)和實(shí)踐奠定了程序設(shè)計(jì)的基礎(chǔ),為培養(yǎng)電子信息類專業(yè)人才服務(wù)[1-2]。作為具有較強(qiáng)實(shí)踐性的課程,該課程的實(shí)踐教學(xué)環(huán)節(jié)占有很大的比重,以提高學(xué)生的程序設(shè)計(jì)和編程能力。本文在電子信息類專業(yè)C 語言程序設(shè)計(jì)實(shí)踐教學(xué)中,探索根據(jù)本專業(yè)的特點(diǎn)和人才培養(yǎng)要求,以學(xué)生為中心,以專業(yè)能力為本位,在教學(xué)內(nèi)容的設(shè)計(jì)和考核的方式上進(jìn)行研究和實(shí)踐,從而在鍛煉學(xué)生編程思維的同時(shí)提高學(xué)生的專業(yè)認(rèn)知度,為后續(xù)的專業(yè)課學(xué)習(xí),學(xué)科競(jìng)賽和科研打下堅(jiān)實(shí)基礎(chǔ)。
目前電子信息類專業(yè)的C 語言程序設(shè)計(jì)課程的教學(xué)采用以掌握程序設(shè)計(jì)的基本概念為基礎(chǔ),以基本算法實(shí)現(xiàn)為指引,以提高使用計(jì)算機(jī)高級(jí)語言設(shè)計(jì)和實(shí)現(xiàn)算法的能力的培養(yǎng)為中心,引導(dǎo)學(xué)生掌握程序設(shè)計(jì)的方法。通過上機(jī)實(shí)踐培養(yǎng)學(xué)生編寫代碼能力,同時(shí)使學(xué)生具備代碼查錯(cuò)、簡(jiǎn)單調(diào)試的能力,培養(yǎng)學(xué)生使用計(jì)算機(jī)解決實(shí)際問題的能力。但是,實(shí)際的實(shí)踐教學(xué)環(huán)節(jié)中存在以下問題:
目前市面上還沒有專門針對(duì)某一具體專業(yè)背景的C語言程序設(shè)計(jì)教材。因此,設(shè)計(jì)實(shí)踐教學(xué)內(nèi)容時(shí)完全以通識(shí)類教材為主,那么實(shí)踐內(nèi)容就往往圍繞著“數(shù)據(jù)的各種運(yùn)算和處理”,“字符串的各種處理”等來展開[3-4]。這種傳統(tǒng)內(nèi)容的反復(fù)演練不僅會(huì)導(dǎo)致學(xué)生失去對(duì)本專業(yè)的學(xué)習(xí)興趣和自信心,缺少專業(yè)學(xué)習(xí)的動(dòng)力,甚至產(chǎn)生對(duì)電子信息類專業(yè)的“誤解”。不少學(xué)生在多次上機(jī)后會(huì)說他們是“用著Visual Studio,干著Excel 的活”。因此,為了使大一新生迅速了解其專業(yè)特點(diǎn)和需要掌握的專業(yè)技能,并提升他們對(duì)本專業(yè)的興趣,在本課程的實(shí)踐教學(xué)中需要融入更多具有專業(yè)特色的案例或問題。這樣,一方面可以讓學(xué)生學(xué)習(xí)更有目標(biāo)性;另一方面也能夠提早使學(xué)生適應(yīng)專業(yè)實(shí)踐方式,提升專業(yè)的認(rèn)同感和學(xué)習(xí)的自信心。
本課程的實(shí)踐教學(xué)通常在理論教學(xué)的某個(gè)知識(shí)點(diǎn)或章節(jié)講授完成后進(jìn)行。例如,講授完循環(huán)結(jié)構(gòu)后會(huì)設(shè)計(jì)若干道編程題目來掌握單層和雙層循環(huán)結(jié)構(gòu)和相關(guān)控制語句。講授完數(shù)組后也會(huì)設(shè)計(jì)若干題目來掌握一維和二維數(shù)組的定義和使用。但是,這兩次實(shí)驗(yàn)內(nèi)容的設(shè)計(jì)往往是獨(dú)立的,或者無相關(guān)性。這種形式確實(shí)可以鍛煉學(xué)生的編程能力,但由于貫穿性不夠,無法使學(xué)生深刻體會(huì)新知識(shí)強(qiáng)相關(guān)性的優(yōu)勢(shì)以及培養(yǎng)學(xué)生從小問題到大項(xiàng)目的連續(xù)性問題解決能力。
目前,本課程實(shí)踐教學(xué)的考核方式通常是:教師每次為學(xué)生布置上機(jī)題目,學(xué)生在指定時(shí)間內(nèi)完成并根據(jù)完成情況獲得分?jǐn)?shù)[5-6]。這種方式的好處是學(xué)生分階段完成知識(shí)點(diǎn)的學(xué)習(xí)任務(wù),有助于學(xué)生及時(shí)掌握知識(shí)點(diǎn)并使教師及時(shí)了解學(xué)生的編程能力。但是這種單一的考核形式有礙于學(xué)生綜合素質(zhì)的培養(yǎng),對(duì)優(yōu)秀學(xué)生的激勵(lì)性較差,并且對(duì)后續(xù)學(xué)生參與大學(xué)生電子設(shè)計(jì)競(jìng)賽,“互聯(lián)網(wǎng)+”創(chuàng)新創(chuàng)業(yè)大賽等學(xué)科競(jìng)賽和科研項(xiàng)目的能力培養(yǎng)不夠。
針對(duì)此類問題已有很多研究,例如課程設(shè)計(jì)改革,實(shí)踐教學(xué)手段和教材等[7-12],并取得了一定的成果。但是上述研究大多沒考慮C 語言程序設(shè)計(jì)與電子信息類其他專業(yè)課程之間的關(guān)系,而作為一門專業(yè)基礎(chǔ)課程,這恰恰是本課程教學(xué)中需要重點(diǎn)面對(duì)和解決的問題。本文從本課程的實(shí)踐教學(xué)入手,結(jié)合電子信息類專業(yè)特色,從實(shí)踐教學(xué)內(nèi)容設(shè)計(jì)和教學(xué)考核方式兩個(gè)方面進(jìn)行探索和研究。
本課程的實(shí)踐教學(xué)按照理論教學(xué)的順序共安排8 次。每次上機(jī)實(shí)踐內(nèi)容如表1 中所示,所涉及的知識(shí)點(diǎn)主要包括C 語言的三大基本結(jié)構(gòu)(順序,選擇與循環(huán)結(jié)構(gòu)),數(shù)組,函數(shù),指針和結(jié)構(gòu)體等。每次上機(jī)題目為10 道左右,難度從易到難,并且每次上機(jī)均導(dǎo)入與電子信息類專業(yè)某門專業(yè)課有關(guān)的題目1―2 道。這些題目來自專業(yè)課的具體教學(xué)內(nèi)容但是進(jìn)行了適當(dāng)簡(jiǎn)化,來適應(yīng)每次上機(jī)實(shí)踐的要求。例如“單片機(jī)原理與應(yīng)用”“數(shù)字信號(hào)處理”“數(shù)字圖像處理”“語音信號(hào)處理”和“通信原理”等課程就是否適合提取出相應(yīng)的專業(yè)問題來給大一的學(xué)生嘗試實(shí)現(xiàn)。表1 中給出了每次實(shí)踐內(nèi)容中所涉及的專業(yè)特色題目(表中僅列出了部分題目)及其來源。從學(xué)生角度出發(fā),我們選取的專業(yè)課程以信號(hào)類課程為主,考量的原因是這類問題中有些知識(shí)點(diǎn)理論相對(duì)簡(jiǎn)單,處理過程及結(jié)果直觀,更容易讓還沒有專業(yè)知識(shí)背景的大一學(xué)生所接受。這樣一來,不讓他們產(chǎn)生懼怕心理,能讓學(xué)生將C語言知識(shí)拓展到實(shí)際應(yīng)用中。
表1 C 語言程序設(shè)計(jì)上機(jī)實(shí)踐內(nèi)容中的專業(yè)特色問題
例如,在第一次上機(jī)內(nèi)容中除了常規(guī)的順序和選擇結(jié)構(gòu)程序題目外,還增加了RGB 和HIS 顏色空間轉(zhuǎn)換的題目,該題目來自我院電子信息類專業(yè)學(xué)生大三所需學(xué)習(xí)的“數(shù)字圖像處理”課程中的“彩色圖像處理”章節(jié)。該轉(zhuǎn)換公式利用選擇結(jié)構(gòu),輸入和輸出語句即可完成,比常規(guī)題目更容易讓學(xué)生提前了解到以后專業(yè)領(lǐng)域要研究的具體問題;在第二次上機(jī)內(nèi)容中除了常規(guī)的“數(shù)據(jù)求和”等循環(huán)結(jié)構(gòu)經(jīng)典題目外,還增加了“周期信號(hào)的產(chǎn)生”這一問題,該問題選自于專業(yè)必修課程“數(shù)字信號(hào)處理”。該題目要求學(xué)生設(shè)計(jì)一個(gè)程序能產(chǎn)生正弦和余弦信號(hào),該問題利用循環(huán)語句即可完成,并且能夠使學(xué)生對(duì)數(shù)字信號(hào)有初步認(rèn)識(shí),如果配合一些庫函數(shù)的使用,學(xué)生還能直接將所產(chǎn)生的信號(hào)波形繪制出來,形成從代碼到圖形的直觀認(rèn)識(shí)。第三次上機(jī)中引入了經(jīng)典的直方圖均衡化操作處理。直方圖均衡化是一種常用的圖像灰度調(diào)整操作,例如可以用來解決圖像的過曝和曝光不足的問題。在這門課中,我們不會(huì)過多地講解專業(yè)知識(shí),而是給出具體方法,讓學(xué)生編程實(shí)現(xiàn)均衡化的過程并分析比較處理前后直方圖分布的不同,再進(jìn)一步地思考這種新的分布對(duì)圖像所引起的變化。
目前,在C 語言程序設(shè)計(jì)的實(shí)踐課中,每次的上機(jī)題目之間往往沒有相關(guān)性和繼承性,即之前練習(xí)過的問題在后續(xù)上機(jī)中并沒有進(jìn)行深入和延展。這樣的教學(xué)安排不利于學(xué)生對(duì)課程整體性的把握,也不利于培養(yǎng)學(xué)生鉆研問題的能力,而這種能力在高年級(jí)的專業(yè)課學(xué)習(xí)或競(jìng)賽科研中尤為重要。因此,我們采用了一種遞進(jìn)式的實(shí)踐教學(xué)方式,即對(duì)于某一專業(yè)問題,我們對(duì)問題進(jìn)行分解和簡(jiǎn)化,然后依據(jù)教學(xué)進(jìn)度,在若干次上機(jī)中難度逐步遞增地讓學(xué)生進(jìn)行思考和設(shè)計(jì),最終培養(yǎng)起能解決這一專業(yè)問題的能力。
例如,我們幾乎在每次上機(jī)內(nèi)容中均安排了與“信號(hào)濾波”相關(guān)的題目,經(jīng)過多次練習(xí),在最后一次的綜合訓(xùn)練中,學(xué)生能真正完成一個(gè)圖像空間域?yàn)V波程序,包括均值濾波和中值濾波等,并能比較上述兩種濾波方法的處理效果,這一問題正是專業(yè)課“數(shù)字圖像處理”中的核心教學(xué)內(nèi)容。該案例的遞進(jìn)式實(shí)踐內(nèi)容安排如表2 所示。從表中可以看出,實(shí)踐題目的安排從三個(gè)數(shù)據(jù)的處理可以采用三個(gè)變量的方式完成,到十個(gè)數(shù)據(jù)的處理時(shí)就必須采用循環(huán)結(jié)構(gòu)來完成,到需要保存原始數(shù)據(jù)時(shí)就必須使用數(shù)組的知識(shí)點(diǎn)來完成,到二維數(shù)據(jù)時(shí)就得借助二維數(shù)組來完成,到最后圖像二維數(shù)據(jù)的綜合處理需要加上函數(shù)及指針等章節(jié)的知識(shí)。從一維信號(hào)到二維信號(hào);從在主函數(shù)中完成所有工作到將濾波器設(shè)計(jì)成單獨(dú)函數(shù)來完成程序。這樣的安排有利于學(xué)生逐步了解專業(yè)性問題,并且易上手,易實(shí)踐,調(diào)動(dòng)了學(xué)生的學(xué)習(xí)積極性。遞進(jìn)式的實(shí)踐教學(xué)安排能夠使所學(xué)知識(shí)點(diǎn)和程序設(shè)計(jì)方法的練習(xí)更有目的性,加深學(xué)生對(duì)不同知識(shí)點(diǎn)之間聯(lián)系的理解。
表2 “信號(hào)濾波”的遞進(jìn)式實(shí)踐教學(xué)安排
C 語言程序設(shè)計(jì)課程是一門實(shí)踐性很強(qiáng)的課程,通常其實(shí)踐教學(xué)部分的考核方式是每次上機(jī)實(shí)踐后提交上機(jī)報(bào)告進(jìn)行評(píng)分。這種考核方式由于不需要學(xué)生當(dāng)場(chǎng)完成編程任務(wù)并檢查,導(dǎo)致教師不能準(zhǔn)確掌握學(xué)生的真實(shí)編程能力。我們采用了形式豐富的實(shí)踐教學(xué)考核方式:平時(shí)的現(xiàn)場(chǎng)考核,學(xué)生講解問題和小組合作等。多元化考核方式不但能明確地反映學(xué)生在學(xué)習(xí)過程中哪個(gè)環(huán)節(jié)薄弱,及時(shí)補(bǔ)漏,而且還能激發(fā)學(xué)生自主學(xué)習(xí)的積極性。
每次上機(jī)實(shí)踐時(shí),為學(xué)生布置上機(jī)題目,學(xué)生在指定時(shí)間內(nèi)完成并根據(jù)答題數(shù)量和質(zhì)量實(shí)時(shí)獲得成績(jī)。每次上機(jī)實(shí)踐的內(nèi)容不超出已授課的知識(shí)點(diǎn)范圍,使得學(xué)生能夠反復(fù)練習(xí)某種編程思想,并熟練應(yīng)用。這種分階段地完成各個(gè)知識(shí)點(diǎn)的學(xué)習(xí)并在規(guī)定時(shí)間內(nèi)完成考核任務(wù),不僅有助于學(xué)生及時(shí)掌握自身編程的不足,也能讓教師及時(shí)發(fā)現(xiàn)學(xué)生上機(jī)中的共性問題,在后期教學(xué)中進(jìn)行調(diào)整和講授。
C語言的課堂教學(xué)過程中往往采用的是“教師講,學(xué)生聽”的灌輸式教學(xué)法。那么在實(shí)踐教學(xué)環(huán)節(jié)中,可以采用“學(xué)生講,大家聽”的方式來對(duì)課堂教學(xué)方式進(jìn)行補(bǔ)充。對(duì)于每次上機(jī)中具有代表性的題目,教師可以選取其中完成較好的學(xué)生來給大家講解其思考過程,程序框架和實(shí)現(xiàn)代碼,并讓其他學(xué)生來對(duì)其程序進(jìn)行提問,最后教師來總結(jié)。例如每次上機(jī)內(nèi)容的最后1―2 道問題往往涉及一些算法和思維方式的選取,合適的算法才能較快地解決問題。而學(xué)生們盡管都會(huì)編出程序得到正確結(jié)果,但他們的思路是百花齊放的,其中有的程序既簡(jiǎn)潔又高效,這種程序就可以拿出來給學(xué)生講解。這樣,學(xué)生不再只是被動(dòng)地接受教師傳授的知識(shí),他們能積極與教師配合,主動(dòng)參與到教學(xué)活動(dòng)中,使自身的學(xué)習(xí)能力和綜合素質(zhì)不斷提高。
無論是本專業(yè)后續(xù)的專業(yè)課實(shí)踐中,還是大學(xué)生電子設(shè)計(jì)競(jìng)賽等活動(dòng)中均需要學(xué)生以團(tuán)隊(duì)的形式完成某一項(xiàng)任務(wù)。基于此,考慮到前七次實(shí)踐均是學(xué)生獨(dú)立完成所有上機(jī)題目的編程,所以在最后一次“綜合訓(xùn)練”實(shí)踐中,鼓勵(lì)學(xué)生組成小組,自行討論并確定題目,自行分配組員任務(wù),團(tuán)結(jié)合作,共同完成考核任務(wù)。例如五子棋游戲設(shè)計(jì)這一問題,每個(gè)小組若由三人組成,那么他們的分工可以采用如下的形式:一人負(fù)責(zé)整體框架的設(shè)計(jì)和主函數(shù)的編寫及函數(shù)參數(shù)的設(shè)計(jì);一人負(fù)責(zé)棋盤的繪制函數(shù);一人負(fù)責(zé)判斷游戲是否結(jié)束及下子是否合理函數(shù)的設(shè)計(jì)。這樣的安排,他們就必須以團(tuán)隊(duì)的形式進(jìn)行合作、討論甚至爭(zhēng)辯,最終形成一個(gè)完整的作品。這一考核形式不僅激發(fā)了學(xué)生的團(tuán)隊(duì)合作精神,也更符合他們未來從事程序開發(fā)工作的形式。
我們對(duì)我院2015―2017 級(jí)三個(gè)試點(diǎn)班學(xué)生的C語言程序設(shè)計(jì)基礎(chǔ)期末成績(jī)進(jìn)行了分析與統(tǒng)計(jì),如表3 中所示。其中2015 和2016 級(jí)學(xué)生采用的是標(biāo)準(zhǔn)的實(shí)踐教學(xué)形式,2017 級(jí)學(xué)生采用的是導(dǎo)入了專業(yè)特色教學(xué)內(nèi)容和考核方式的形式。從考試成績(jī)看,2017 級(jí)學(xué)生取得優(yōu)秀(90-100分)的學(xué)生成績(jī)比例在50%左右,不及格人數(shù)僅為1 人。對(duì)比可以看出:在實(shí)踐教學(xué)中引入了專業(yè)特色內(nèi)容后,學(xué)生對(duì)課堂知識(shí)的掌握程度和編程能力提升明顯。
表3 2015―2017 級(jí)試點(diǎn)班學(xué)生C語言程序設(shè)計(jì)期末成績(jī)分布
我們對(duì)2017 級(jí)該班學(xué)生進(jìn)行了跟蹤調(diào)查,還分析了他們后續(xù)專業(yè)課學(xué)習(xí),學(xué)科競(jìng)賽和科研等情況。從數(shù)據(jù)可以看出,2017 級(jí)該班學(xué)生的整體專業(yè)能力有了大幅提升,其中專業(yè)課平均成績(jī)超過90 分的學(xué)生占32%,超過30 人主持或參與了國(guó)家級(jí)及校級(jí)大學(xué)生創(chuàng)新創(chuàng)業(yè)項(xiàng)目,發(fā)表論文十余篇,申請(qǐng)專利超過30 項(xiàng);獲得校級(jí)以上學(xué)科競(jìng)賽獎(jiǎng)項(xiàng)60 余項(xiàng)。正是由于他們?cè)诖笠坏腃 語言程序設(shè)計(jì)實(shí)踐中更早地了解了本專業(yè)課程,產(chǎn)生了專業(yè)認(rèn)同感,進(jìn)而引發(fā)了他們對(duì)專業(yè)課程學(xué)習(xí)的興趣,參與學(xué)科競(jìng)賽和進(jìn)入實(shí)驗(yàn)室從事科研活動(dòng)的熱情。這也證明了本文提出的實(shí)踐教學(xué)研究的突出效果。
在電子信息類專業(yè)學(xué)習(xí)中,C 語言程序設(shè)計(jì)課程的學(xué)習(xí)是為后續(xù)課程服務(wù)的。針對(duì)該專業(yè)中C 語言程序設(shè)計(jì)實(shí)踐教學(xué)存在的專業(yè)特色缺乏,實(shí)踐內(nèi)容貫穿性不夠和考核形式單一等問題,本文分別從多層次的實(shí)踐教學(xué)內(nèi)容設(shè)計(jì)和形式多樣化的教學(xué)考核方式兩方面進(jìn)行了探索和研究。在實(shí)踐教學(xué)內(nèi)容的設(shè)計(jì)上主要采用了專業(yè)知識(shí)的逐步導(dǎo)入和遞進(jìn)式的實(shí)踐教學(xué)實(shí)施等方法,在教學(xué)考核上主要采用了現(xiàn)場(chǎng)考核,學(xué)生講解及小組合作等形式來實(shí)現(xiàn)考核的多樣化。這樣的做法能夠使得大一學(xué)生在完成C 語言程序設(shè)計(jì)課程的同時(shí),提高其專業(yè)認(rèn)知度和學(xué)習(xí)興趣,為后續(xù)的專業(yè)課學(xué)習(xí),競(jìng)賽和科研打下堅(jiān)實(shí)基礎(chǔ)。