摘要:針對(duì)程序設(shè)計(jì)課程考核辦法的現(xiàn)狀,分析現(xiàn)存課程考核辦法使課程教學(xué)過(guò)程偏離課程的培養(yǎng)目標(biāo),提出以技能為導(dǎo)向的全新課程考核體系。該體系通過(guò)3個(gè)循序漸進(jìn)的考核指標(biāo):開(kāi)發(fā)環(huán)境的使用、TLOC(Total Line of Coding,編程累計(jì)行數(shù))以及SLOC(Source Line of Coding,單個(gè)程序行數(shù))來(lái)引導(dǎo)教與學(xué),使學(xué)生具備較強(qiáng)的編程技能、計(jì)算思維和創(chuàng)新思維能力。
關(guān)鍵詞:程序設(shè)計(jì)課程;考核體系;TLOC;SLOC;課程設(shè)計(jì)
考核是評(píng)價(jià)學(xué)生課程學(xué)習(xí)效果及驗(yàn)證課程培養(yǎng)目標(biāo)的有效手段??己藘?nèi)容和考核方式的設(shè)定對(duì)于課程的教學(xué)過(guò)程會(huì)產(chǎn)生一定的導(dǎo)向作用,課程考核體系會(huì)在本質(zhì)上影響課程的培養(yǎng)方向,決定課程的培養(yǎng)目標(biāo)是否合理并得以實(shí)現(xiàn)。合適的課程考核體系能夠指引學(xué)生以正確的方式學(xué)習(xí)課程內(nèi)容,提高學(xué)生的學(xué)習(xí)興趣,督促學(xué)生積極主動(dòng)地學(xué)習(xí),更能修正課程的教學(xué)方向及培養(yǎng)目標(biāo),使之適應(yīng)時(shí)代需求,滿(mǎn)足創(chuàng)新型、開(kāi)拓型人才的需要,指引課程向正確的、先進(jìn)的方向前進(jìn);而不合理的考核體系則會(huì)牽制教學(xué)活動(dòng)偏離課程的培養(yǎng)目標(biāo),偏離新時(shí)代對(duì)課程的需求。因此,建立合理的考核體系對(duì)于學(xué)生的培養(yǎng)和課程的進(jìn)步至關(guān)重要。
1 程序設(shè)計(jì)課程的特點(diǎn)及現(xiàn)有考核辦法的不足
程序設(shè)計(jì)課程作為我國(guó)高等教育培養(yǎng)計(jì)劃中必修的計(jì)算機(jī)基礎(chǔ)課程,有很多不同于其他課程的特點(diǎn):
1)普QXprO8Od20kbf6HqCLy6Ue71uMyPTWiFRVD44cJ6Jg8=及范圍廣,授課對(duì)象眾多。
在我國(guó),文、理、工、醫(yī)、農(nóng)、法等高等院校絕大多數(shù)專(zhuān)業(yè)學(xué)生都必修程序設(shè)計(jì)課程,并且針對(duì)不同專(zhuān)業(yè)開(kāi)設(shè)了包括C、C++、VB、C#等多個(gè)分支,課程的授課范圍很廣,授課對(duì)象眾多。
2)課程的實(shí)踐性強(qiáng),實(shí)用性強(qiáng)。
程序設(shè)計(jì)課程中的大部分內(nèi)容需要學(xué)生進(jìn)行上機(jī)實(shí)踐才能更好地理解和掌握,具有很強(qiáng)的實(shí)踐性。同時(shí),該課程內(nèi)容在學(xué)生的課程設(shè)計(jì)、畢業(yè)設(shè)計(jì)、各種競(jìng)賽以及職業(yè)生涯中都得到了廣泛應(yīng)用。
3)以培養(yǎng)學(xué)生的編程思維和開(kāi)發(fā)技能為目標(biāo),與其他語(yǔ)言課程有巨大的區(qū)別。
程序設(shè)計(jì)課程的教學(xué)雖然依附于一門(mén)具體的程序設(shè)計(jì)語(yǔ)言,但是與傳統(tǒng)的語(yǔ)言課程有很大的區(qū)別:程序設(shè)計(jì)課程的目的不是教授語(yǔ)言,具體的程序設(shè)計(jì)語(yǔ)言在該課程中只是一個(gè)工具,課程不僅要求理解、記憶該門(mén)語(yǔ)言的詞法、語(yǔ)法等內(nèi)容,其最終目標(biāo)是通過(guò)一門(mén)程序設(shè)計(jì)語(yǔ)言,培養(yǎng)學(xué)生的計(jì)算思維和編程設(shè)計(jì)技能,培養(yǎng)學(xué)生使用計(jì)算機(jī)技術(shù),尤其使用程序設(shè)計(jì)和軟件開(kāi)發(fā)技術(shù)來(lái)解決實(shí)際應(yīng)用問(wèn)題的能力。因此,這與傳統(tǒng)語(yǔ)言課程的課程要求和課程目標(biāo)是大不相同的。
課程的考核體系要吻合課程的特點(diǎn),體現(xiàn)課程的培養(yǎng)目標(biāo)。然而,當(dāng)前程序設(shè)計(jì)課程的考核體系還存在很多不足。
目前,國(guó)內(nèi)大部分高校對(duì)于程序設(shè)計(jì)課程的考核包括兩個(gè)部分:平時(shí)作業(yè)(或?qū)嶒?yàn)任務(wù))與期末考試。對(duì)于平時(shí)作業(yè),部分高校實(shí)現(xiàn)了電子版的提交,但更多學(xué)校還是使用紙質(zhì)虛擬編程,教師根據(jù)學(xué)生提交的電子文檔或者紙質(zhì)作業(yè)進(jìn)行打分;期末考試多數(shù)學(xué)校采用的是紙質(zhì)方式,更多是考核學(xué)生對(duì)一門(mén)程序設(shè)計(jì)語(yǔ)言的詞法、語(yǔ)法的掌握情況,部分學(xué)校期末考試采用了機(jī)考方式,但也僅僅是在傳統(tǒng)紙質(zhì)考核的基礎(chǔ)上增加了對(duì)開(kāi)發(fā)環(huán)境簡(jiǎn)單應(yīng)用的考查。
這種考核體系使得教師的教和學(xué)生的學(xué)過(guò)分集中在程序設(shè)計(jì)語(yǔ)言本身,教學(xué)過(guò)程中過(guò)多糾纏于語(yǔ)言細(xì)節(jié),對(duì)學(xué)生編程技能和計(jì)算思維涉及不多。很多學(xué)生在學(xué)完該課程之后依然不會(huì)編程,甚至對(duì)開(kāi)發(fā)環(huán)境的使用都不是很熟悉,如調(diào)試和幫助都有很大問(wèn)題,更別提借助程序設(shè)計(jì)技能來(lái)輔助畢業(yè)設(shè)計(jì)、解決實(shí)際應(yīng)用問(wèn)題。因此,針對(duì)課程的培養(yǎng)目標(biāo)和時(shí)代對(duì)創(chuàng)新型人才的需求,設(shè)計(jì)以技能為導(dǎo)向的程序設(shè)計(jì)課程考核體系至關(guān)重要。
2 以技能為導(dǎo)向的程序設(shè)計(jì)課程考核體系
以技能為導(dǎo)向的程序設(shè)計(jì)課程考核體系包括3個(gè)階段的考核,分別為初級(jí)的開(kāi)發(fā)環(huán)境使用情況考核、中級(jí)的基本編程技能考核和高級(jí)的開(kāi)拓創(chuàng)新技能考核。每個(gè)考核階段有其獨(dú)立的考核指標(biāo),以下對(duì)這3個(gè)階段進(jìn)行詳細(xì)介紹。
1)開(kāi)發(fā)環(huán)境使用情況考核。
教學(xué)過(guò)程中,大部分教師都有過(guò)這樣的經(jīng)歷:課程馬上要結(jié)束了,學(xué)生還不會(huì)調(diào)試程序,甚至連簡(jiǎn)單的編譯錯(cuò)誤信息都讀不懂,不會(huì)使用幫助來(lái)輔助自我學(xué)習(xí)。由于大部分開(kāi)發(fā)環(huán)境是英文版的,不可否認(rèn)造成這種狀況的原因之一是學(xué)生的英文功底不夠扎實(shí)。但如果把全部原因都?xì)w結(jié)在外語(yǔ)水平上就太過(guò)牽強(qiáng)了。筆者認(rèn)為,造成這種后果的最主要原因還是學(xué)生在真實(shí)開(kāi)發(fā)環(huán)境中歷練太少,實(shí)踐時(shí)太過(guò)依賴(lài)教師。為了避免發(fā)生這種狀況,以技能為導(dǎo)向的程序設(shè)計(jì)課程考核體系中的第一環(huán)節(jié)就強(qiáng)調(diào)學(xué)生對(duì)于開(kāi)發(fā)環(huán)境的使用。
開(kāi)發(fā)環(huán)境使用情況的考核包括常用菜單的使用、怎樣使用MsDN或網(wǎng)絡(luò)資源獲取幫助及調(diào)試技術(shù),其中尤以獲取幫助和調(diào)試技術(shù)為重。
開(kāi)發(fā)環(huán)境中的常用菜單基本在經(jīng)歷過(guò)一到兩次實(shí)驗(yàn)后學(xué)生就能熟練使用,因此這部分內(nèi)容的考查一般不成問(wèn)題,考核題目可以設(shè)計(jì)為新建一個(gè)程序文件并最終生成可執(zhí)行文件等。
強(qiáng)調(diào)獲取幫助的能力考查主要是為了實(shí)現(xiàn)學(xué)生的自我學(xué)習(xí)和自主學(xué)習(xí),只有當(dāng)學(xué)生能夠具備充足的獲取幫助能力,才能夠在自我實(shí)踐的過(guò)程中隨時(shí)解決遇到的問(wèn)題,提高其自主學(xué)習(xí)、挑戰(zhàn)難題的積極性和信心。例如,在一次考核中設(shè)計(jì)的題目是“編寫(xiě)C程序?qū)崿F(xiàn)聲音文件的播放”,大部分同學(xué)從未見(jiàn)過(guò)這樣的要求,大多數(shù)教材中也沒(méi)有涉及多媒體的處理,因此就要求學(xué)生能夠使用開(kāi)發(fā)環(huán)境的MSDN或者網(wǎng)上提供的函數(shù)手冊(cè),甚至是網(wǎng)絡(luò)論壇上某些程序愛(ài)好者的帖子來(lái)找到恰當(dāng)?shù)慕鉀Q辦法。
調(diào)試技術(shù)是大多數(shù)學(xué)生不太熟悉、不愿深究的問(wèn)題,這種情況的出現(xiàn)與課程日常作業(yè)和書(shū)中例題太相似、實(shí)驗(yàn)任務(wù)難度不高、實(shí)驗(yàn)教師指導(dǎo)過(guò)程大包大攬有很大關(guān)系。實(shí)驗(yàn)任務(wù)難度太低或者與書(shū)中例題太相像都會(huì)失去調(diào)試的必要性,而實(shí)驗(yàn)過(guò)程中一旦程序出現(xiàn)問(wèn)題,很多教師根本就是一手包攬直接幫忙把程序調(diào)試正確。久而久之,學(xué)生輕視了調(diào)試技術(shù)的重要性,即使教學(xué)過(guò)程中教師強(qiáng)調(diào)調(diào)試技術(shù)并專(zhuān)門(mén)設(shè)計(jì)題目來(lái)教授,但是調(diào)試技術(shù)的重要性仍無(wú)法深入學(xué)生內(nèi)心。所以,新的考核體系中,除了在日常實(shí)驗(yàn)任務(wù)中增加需要進(jìn)行調(diào)試才能解決的題目,例如,提供一些包含簡(jiǎn)單的算法或邏輯錯(cuò)誤的程序讓學(xué)生借助于調(diào)試來(lái)完成修正。還增加了對(duì)調(diào)試技術(shù)的專(zhuān)門(mén)考核,如借助于條件斷點(diǎn)讀取循環(huán)過(guò)程中滿(mǎn)足某一個(gè)條件時(shí)某個(gè)變量的當(dāng)前值等。
通過(guò)對(duì)開(kāi)發(fā)環(huán)境使用情況的考核,敦促學(xué)生熟練使用開(kāi)發(fā)環(huán)境,是課程后續(xù)過(guò)程中快速、正確解決問(wèn)題所需的基本技能。
2)基本編程技能考核。
基本編程技能是指學(xué)生能夠熟練應(yīng)用程序設(shè)計(jì)中的各種控制結(jié)構(gòu),熟練使用程序設(shè)計(jì)語(yǔ)言中的各種語(yǔ)句、函數(shù)等,強(qiáng)調(diào)基本的計(jì)算思維和編程思想的培養(yǎng),注重借助于程序設(shè)計(jì)技能完成初級(jí)應(yīng)用問(wèn)題求解的能力。此階段的考核指標(biāo)為T(mén)LOCt(Total Line of Coding,累計(jì)編程行數(shù))。
由于程序設(shè)計(jì)課程實(shí)踐性強(qiáng)、學(xué)習(xí)難度大,學(xué)生需要通過(guò)大量的練習(xí)才能成功培養(yǎng)其自身的計(jì)算思維和編程思想。因此,基本編程技能考核階段跨越了幾乎整個(gè)課程學(xué)期,涵蓋了幾十甚至上百個(gè)簡(jiǎn)單應(yīng)用題目的求解。例如,2012年,西北工業(yè)大學(xué)程序設(shè)計(jì)課程組規(guī)定學(xué)生完成60道編程題,TLOC必須大于800行才能獲得及格成績(jī);如果學(xué)生想要獲得90分以上的成績(jī)則必須完成100道編程題,TLOC必須大于1500行。對(duì)于此階段如此大的實(shí)踐強(qiáng)度不僅需要學(xué)生全力以赴、教師全力配合,更需要相關(guān)教學(xué)軟件的支撐。對(duì)此,西北工業(yè)大學(xué)程序設(shè)計(jì)課程組開(kāi)發(fā)了在線作業(yè)管理和自動(dòng)評(píng)閱系統(tǒng),根據(jù)學(xué)生學(xué)號(hào)不同向其個(gè)人網(wǎng)絡(luò)硬盤(pán)空間中分發(fā)不同的題目,有效地避免學(xué)生之間互相抄襲作業(yè)的現(xiàn)象;通過(guò)在作業(yè)完成過(guò)程中設(shè)置游戲關(guān)卡和恰當(dāng)?shù)募?lì)措施來(lái)調(diào)動(dòng)學(xué)生的實(shí)踐積極性;通過(guò)在課程的網(wǎng)絡(luò)社區(qū)中提供針對(duì)實(shí)驗(yàn)題目的視頻幫助、文本資料等建立學(xué)生解決問(wèn)題的自信;通過(guò)使用網(wǎng)絡(luò)硬盤(pán)實(shí)現(xiàn)作業(yè)分發(fā)、提交及保存等一系列管理工作來(lái)解決教師難以管理海量作業(yè)數(shù)據(jù)的難題;通過(guò)使用作業(yè)在線自動(dòng)評(píng)閱功能將教師從繁重的作業(yè)批改工作中解脫出來(lái)。
以上各種措施保證了對(duì)學(xué)生基本編程技能的公正、客觀的考核。學(xué)生經(jīng)歷此階段后,具備基本的計(jì)算思維和編程思想,對(duì)程序設(shè)計(jì)的含義有了較深的理解,
3)開(kāi)拓創(chuàng)新能力的考核。
第二個(gè)考核階段過(guò)后,學(xué)生對(duì)語(yǔ)言的使用基本沒(méi)有問(wèn)題了,解決簡(jiǎn)單的應(yīng)用問(wèn)題也無(wú)壓力。但是,課程的培養(yǎng)目標(biāo)是希望學(xué)生能夠借助于程序設(shè)計(jì)來(lái)解決實(shí)際應(yīng)用或本專(zhuān)業(yè)中較大、較復(fù)雜的應(yīng)用問(wèn)題,甚至解決其職業(yè)生涯中可能遇到的問(wèn)題。因此,學(xué)生具備基本編程技能之后,仍需對(duì)其進(jìn)行拔高培養(yǎng)和更高要求,即要求學(xué)生具備一定的開(kāi)拓創(chuàng)新能力,具備使用程序設(shè)計(jì)知識(shí)解決較大、較復(fù)雜應(yīng)用問(wèn)題的強(qiáng)計(jì)算能力。而用來(lái)衡量學(xué)生開(kāi)拓創(chuàng)新能力的主要指標(biāo)是學(xué)生使用程序設(shè)計(jì)解決實(shí)際應(yīng)用問(wèn)題的難度和復(fù)雜度。用來(lái)描述其所解決的問(wèn)題難度和復(fù)雜度的標(biāo)準(zhǔn)當(dāng)屬SLOCt(Source Line of Coding,單個(gè)程序代碼行數(shù)),即為了解決這個(gè)應(yīng)用問(wèn)題而編寫(xiě)的代碼行數(shù)。一般來(lái)說(shuō),SLOC指標(biāo)值越大,代表該程序所解決的實(shí)際應(yīng)用問(wèn)題難度和復(fù)雜度越大。因此,考核體系中借助于SLOC作為此階段的考核指標(biāo),如2012年,西北工業(yè)大學(xué)程序設(shè)計(jì)課程組就規(guī)定學(xué)生必須完成一個(gè)SLOC大于200行的project才能及格,必須完成一個(gè)關(guān)聯(lián)Windows、OpenGL、圖形與視覺(jué)、機(jī)器人專(zhuān)題之一且SLOC大于200行的project才算優(yōu)秀。
因此,在此考核階段借鑒國(guó)外先進(jìn)的計(jì)算機(jī)教育理論,采用課程設(shè)計(jì)的方式來(lái)考核學(xué)生的開(kāi)拓創(chuàng)新能力。教師提出對(duì)學(xué)生課程設(shè)計(jì)的技術(shù)、工作量等硬性要求后,提供給學(xué)生各種難度系數(shù)、各個(gè)專(zhuān)業(yè)領(lǐng)域的不同設(shè)計(jì)題目,并允許學(xué)生根據(jù)自己的專(zhuān)業(yè)和愛(ài)好等實(shí)際情況進(jìn)行課程設(shè)計(jì)的自主選題,學(xué)生應(yīng)提交解決某一個(gè)實(shí)際問(wèn)題的程序或軟件。課程設(shè)計(jì)相較于傳統(tǒng)的期末考試有下面兩個(gè)優(yōu)點(diǎn):
①進(jìn)行課程設(shè)計(jì)時(shí),學(xué)生面對(duì)一個(gè)實(shí)際的應(yīng)用問(wèn)題,需要通過(guò)思考來(lái)決定該如何使用課程中所學(xué)知識(shí)進(jìn)行問(wèn)題的求解,培養(yǎng)學(xué)生的編程技能和開(kāi)拓創(chuàng)新思維。
②課程要求學(xué)生完成的課程設(shè)計(jì)作品是針對(duì)初具規(guī)模的實(shí)際應(yīng)用問(wèn)題進(jìn)行求解,這個(gè)作品的制作將持續(xù)相當(dāng)長(zhǎng)的時(shí)間,甚至整個(gè)課程的學(xué)習(xí)周期。學(xué)生能夠在課程的從始到終都有一種主動(dòng)學(xué)習(xí)的動(dòng)力,能夠把原本的期末考試壓力分散在整個(gè)課程設(shè)計(jì)制作周期里,很大程度上杜絕了傳統(tǒng)考試中學(xué)習(xí)過(guò)程中松散、考試前突擊的不良學(xué)習(xí)方式,最大程度上確保了課程的每一個(gè)環(huán)節(jié)都具有良好的教學(xué)效果。
為了將課程設(shè)計(jì)順利地進(jìn)行下去,教師需要在課程設(shè)計(jì)過(guò)程中以現(xiàn)場(chǎng)技術(shù)指導(dǎo)、網(wǎng)絡(luò)教學(xué)等多種途徑給學(xué)生提供技術(shù)支持,建立學(xué)生完成項(xiàng)目的自信。同時(shí),大量的課程設(shè)計(jì)作品批改也會(huì)耗去教師的大量精力,因此課程組開(kāi)發(fā)了相關(guān)軟件來(lái)輔助課程設(shè)計(jì)作品的批閱。
新的課程考核體系中取消了傳統(tǒng)的期末考試,但通過(guò)3個(gè)考核階段的扎實(shí)訓(xùn)練確保了學(xué)生在學(xué)習(xí)過(guò)程中做到腳踏實(shí)地,獲得每一個(gè)學(xué)習(xí)階段的良好效果,最終促成課程培養(yǎng)目標(biāo)的達(dá)成。
3 實(shí)行效果
以技能為主導(dǎo)的程序設(shè)計(jì)課程考核體系從2009年開(kāi)始在西北工業(yè)大學(xué)部分專(zhuān)業(yè)實(shí)行,到2012年已推廣到全校的課程教學(xué)中,這種考核體系對(duì)學(xué)生和教師都產(chǎn)生了很大的影響。
每個(gè)學(xué)生平均一個(gè)學(xué)期完成超過(guò)80個(gè)題目,用來(lái)完成基本編程技能的訓(xùn)練,TLOC指標(biāo)值為1500,達(dá)到了CC2005建議標(biāo)準(zhǔn)。學(xué)生所完成的課程設(shè)計(jì)題目涉及界面編程、數(shù)據(jù)庫(kù)編程、網(wǎng)絡(luò)編程、多媒體以及圖形圖像處理等各種領(lǐng)域,SLOC平均在300行以上。通過(guò)這種考核體系的考核要求后,學(xué)生具備較強(qiáng)的編程能力和開(kāi)拓創(chuàng)新思維,能夠積極參加各種軟件競(jìng)賽,申請(qǐng)軟件專(zhuān)利等。
教師在教學(xué)過(guò)程中不再糾纏于語(yǔ)言的具體細(xì)節(jié),而更加注重培養(yǎng)學(xué)生的程序設(shè)計(jì)方法和開(kāi)發(fā)技能,教師的教學(xué)過(guò)程更加清晰,主次分明。同時(shí)由于新的考核體系下有相關(guān)教學(xué)軟件群組的支持,教師用以管理和批改作業(yè)、處理期末考試等事宜的工作量大幅減少,從而有更多的精力去思索課程的前進(jìn)方向。
4 結(jié)語(yǔ)
采用以技能為主導(dǎo)的課程考核體系對(duì)課程進(jìn)行考核,在我校試點(diǎn)運(yùn)行效果良好。它克服了傳統(tǒng)考試中的考前突擊、課程效果不佳等弊端,強(qiáng)調(diào)學(xué)生編程技能和開(kāi)拓創(chuàng)新思維的培養(yǎng),考查了學(xué)生使用計(jì)算機(jī)工具進(jìn)行實(shí)際應(yīng)用問(wèn)題求解和自主創(chuàng)新的能力,這符合課程目標(biāo)和課程發(fā)展趨勢(shì)的要求,也貼合計(jì)算機(jī)教育的發(fā)展方向。
(見(jiàn)習(xí)編輯:劉麗麗;編輯:郭田珍)