[摘 要]程序設(shè)計(jì)是一門(mén)實(shí)踐性很強(qiáng)的課程,其強(qiáng)調(diào)技能和思維的訓(xùn)練。文章從程序設(shè)計(jì)課程在線實(shí)踐教學(xué)的問(wèn)題出發(fā),針對(duì)如何訓(xùn)練編程技能、提升計(jì)算思維能力和做好在線實(shí)踐教學(xué)進(jìn)行了實(shí)例研討,列舉了五種引導(dǎo)方法,旨在使學(xué)生能按教學(xué)要求進(jìn)行程序設(shè)計(jì)實(shí)踐。
[關(guān)鍵詞]實(shí)踐教學(xué);程序設(shè)計(jì);在線教育
[中圖分類(lèi)號(hào)]G642;TP311 [文獻(xiàn)標(biāo)識(shí)碼]A [文章編號(hào)]1008-7656(2021)05-0034-06
引言
程序設(shè)計(jì)是計(jì)算機(jī)類(lèi)專業(yè)的一門(mén)核心基礎(chǔ)課程,也是一門(mén)實(shí)踐性很強(qiáng)的課程。學(xué)習(xí)這門(mén)課程需要掌握復(fù)雜的語(yǔ)法規(guī)則,還需要能動(dòng)手編寫(xiě)程序解決問(wèn)題。對(duì)于初學(xué)程序設(shè)計(jì)課程的學(xué)生,剛開(kāi)始能讀懂例題程序,但動(dòng)手寫(xiě)程序卻感覺(jué)較難,需要課程教師手把手指導(dǎo)編寫(xiě)程序。通過(guò)在線教育學(xué)習(xí)的學(xué)生,程序設(shè)計(jì)課程的整個(gè)教學(xué)環(huán)節(jié)全部在網(wǎng)絡(luò)上完成。怎樣有效引導(dǎo)在線教育的學(xué)生學(xué)習(xí)該課程,強(qiáng)化他們的動(dòng)手編程技能,做好這門(mén)課程的實(shí)踐環(huán)節(jié),需要進(jìn)一步探討。
一、程序設(shè)計(jì)課程的在線教學(xué)現(xiàn)狀
程序設(shè)計(jì)課程是一門(mén)比較難學(xué)的課程,因此,很多高校對(duì)這門(mén)課程的教學(xué)模式、方法等方面作了很多研究,提出各種教學(xué)改革措施。
(一)程序設(shè)計(jì)課程的在線實(shí)踐教學(xué)現(xiàn)狀
大部分開(kāi)設(shè)有程序設(shè)計(jì)課程的普通高校,都使用了在線評(píng)測(cè)系統(tǒng)作為學(xué)生實(shí)訓(xùn)編程作業(yè)與考試提交的平臺(tái)。在線作業(yè)與考試評(píng)測(cè)系統(tǒng),即在線評(píng)測(cè)(online judge,OJ)系統(tǒng),該系統(tǒng)最早是應(yīng)用于ACM國(guó)際大學(xué)生程序設(shè)計(jì)競(jìng)賽,隨著多年的發(fā)展和應(yīng)用,很多高校也搭建起自己的OJ系統(tǒng),用于開(kāi)展程序設(shè)計(jì)類(lèi)課程實(shí)踐教學(xué),例如浙江大學(xué)的ZOJ、北京大學(xué)的POJ、杭州電子科技大學(xué)的HDUOJ等,這些高校的評(píng)測(cè)系統(tǒng)很好地應(yīng)用在程序設(shè)計(jì)課程的教學(xué)中[1]。其中,使用率較高的是北京大學(xué)的在線評(píng)測(cè)系統(tǒng),實(shí)訓(xùn)編程練習(xí)的題庫(kù)也較多。由此可見(jiàn),程序設(shè)計(jì)課程使用在線評(píng)測(cè)系統(tǒng)作為實(shí)踐教學(xué)輔助系統(tǒng),有利于訓(xùn)練學(xué)生的編程技能,也為教師省去了許多批改程序作業(yè)的工作,提高了教學(xué)效率,也便于教師開(kāi)展實(shí)踐教學(xué)。
在成人高等院校中,對(duì)于程序設(shè)計(jì)課程,由于成人學(xué)生是利用業(yè)余時(shí)間學(xué)習(xí),存在學(xué)習(xí)時(shí)間相對(duì)較短、督促不足等情況[2],很多成人學(xué)校對(duì)該課程的考核側(cè)重于理論方面,采用傳統(tǒng)的選擇、填空、閱讀程序問(wèn)答題等考核方式,實(shí)踐編程方面的訓(xùn)練不足。
(二)程序設(shè)計(jì)課程的在線實(shí)踐教學(xué)指導(dǎo)主要采用的方式
隨著在線教育的發(fā)展,程序設(shè)計(jì)課程也在線上開(kāi)展實(shí)踐教學(xué),主要的教學(xué)指導(dǎo)方式有使用遠(yuǎn)程視頻課堂介紹課程中的具體實(shí)踐、實(shí)踐輔助教學(xué)平臺(tái)、用互動(dòng)交流平臺(tái)指導(dǎo)、實(shí)訓(xùn)過(guò)程自動(dòng)提示與評(píng)判等。實(shí)踐輔助教學(xué)平臺(tái)主要是提供給學(xué)生編程實(shí)訓(xùn)作業(yè)提交與編程實(shí)踐操作考試的平臺(tái),目前大多還是使用在線評(píng)測(cè)系統(tǒng)(OJ)。實(shí)踐互動(dòng)交流平臺(tái)主要是使用QQ群、QQ遠(yuǎn)程協(xié)助、遠(yuǎn)程操控、TeamViewer、向日葵等遠(yuǎn)程工具,以及釘釘、微信群等各種社會(huì)性交互工具作為在線互動(dòng)交流平臺(tái)[3]。而使用專門(mén)在線教學(xué)平臺(tái)的院校,一般相應(yīng)的平臺(tái)提供有交流互動(dòng)的論壇,教師與學(xué)生可以在論壇交流,例如,MOOCs教學(xué)交互主要發(fā)生在MOOC論壇中[4]。實(shí)訓(xùn)過(guò)程自動(dòng)提示與評(píng)判,是程序設(shè)計(jì)過(guò)程中使用單元測(cè)試模塊測(cè)試學(xué)生的程序,給予錯(cuò)誤信息和啟示性提示,從而讓學(xué)生獲得即時(shí)反饋和成績(jī)[5]。
二、在線程序設(shè)計(jì)課程實(shí)踐教學(xué)存在的問(wèn)題
(一)在線教育學(xué)生的知識(shí)水平各異
參加在線教育學(xué)習(xí)的學(xué)生,知識(shí)水平各異,他們的自學(xué)能力相差也較大,而且成人教育學(xué)生存在工學(xué)矛盾的緣故,可以用于自主學(xué)習(xí)的時(shí)間較少,因此,完全參照普通高校的教學(xué)方法不太適用。
(二)部分在線程序設(shè)計(jì)課程的實(shí)踐訓(xùn)練效果需要提升
對(duì)于初學(xué)程序設(shè)計(jì)的學(xué)生,面對(duì)各種復(fù)雜的語(yǔ)法,如何獨(dú)立編程解決問(wèn)題,是一件較困難的事,需要教師在旁邊引導(dǎo),手把手教學(xué)生操作,提示學(xué)生如何入手寫(xiě)程序,并及時(shí)糾正學(xué)生寫(xiě)程序出現(xiàn)的各種錯(cuò)誤操作。而對(duì)于沒(méi)有教師在旁邊指導(dǎo)的在線教育學(xué)生,很難把程序設(shè)計(jì)課程學(xué)好,這也是很多在線教育開(kāi)展實(shí)踐性較強(qiáng)的課程效果不理想的主要原因之一。
使用OJ系統(tǒng)作為程序設(shè)計(jì)實(shí)踐教學(xué)平臺(tái),對(duì)于實(shí)施面授課程開(kāi)展程序設(shè)計(jì)教學(xué)的學(xué)生,提供了較好的編程訓(xùn)練平臺(tái)。而對(duì)于通過(guò)遠(yuǎn)程在線教育授課的學(xué)生,這種僅僅在在線評(píng)測(cè)系統(tǒng)上提供實(shí)訓(xùn)題目、提交程序、反饋程序結(jié)果對(duì)錯(cuò),而沒(méi)有教師在旁邊實(shí)時(shí)指導(dǎo)的學(xué)習(xí)模式,學(xué)生在做編程實(shí)訓(xùn)時(shí),會(huì)出現(xiàn)寫(xiě)程序作業(yè)題無(wú)從下手的情況,或是沒(méi)有嚴(yán)格遵循在線課堂教師講的編程思路和操作方法設(shè)計(jì)、編寫(xiě)與調(diào)試程序。動(dòng)手編寫(xiě)程序的技能原本就不容易掌握,導(dǎo)致在線教育學(xué)生學(xué)習(xí)程序設(shè)計(jì)課程的效果不太理想,實(shí)際動(dòng)手設(shè)計(jì)、調(diào)試程序的能力需要加強(qiáng)。
(三)有效在線輔導(dǎo)的人力和時(shí)間成本偏高
前文提到的使用單元測(cè)試實(shí)現(xiàn)自動(dòng)提示和自動(dòng)評(píng)判的方法應(yīng)用于程序設(shè)計(jì)過(guò)程中[5],提示指導(dǎo)側(cè)重于檢測(cè)、判定學(xué)生設(shè)計(jì)程序作業(yè)的結(jié)果,給予學(xué)生程序作業(yè)打分以及錯(cuò)誤提示信息,對(duì)學(xué)生的編程過(guò)程提供了有效的幫助。但教師需要花費(fèi)較多的時(shí)間在編程的準(zhǔn)備工作中,實(shí)現(xiàn)方法不夠便捷;另一方面,出現(xiàn)學(xué)生看到編程實(shí)訓(xùn)作業(yè)無(wú)從下手或者未按照編寫(xiě)規(guī)則書(shū)寫(xiě)程序的情況。
在線互動(dòng)答疑,是為在線教育學(xué)生提供輔導(dǎo)的平臺(tái),學(xué)生遇到問(wèn)題可以通過(guò)答疑平臺(tái)提問(wèn)。而作為初學(xué)者,當(dāng)不知道如何入手時(shí),提出的問(wèn)題大多是“這題怎么做?”“我不會(huì)做,怎么辦?”等,表現(xiàn)出沒(méi)有思路。這時(shí)在答疑平臺(tái)的指導(dǎo)教師,需要大量時(shí)間對(duì)學(xué)生一對(duì)一回復(fù),引導(dǎo)學(xué)生一步一步地做實(shí)踐題目。如果簡(jiǎn)單地發(fā)給學(xué)生正確的實(shí)踐程序題答案,就達(dá)不到訓(xùn)練學(xué)生編程技能的效果。這樣的在線答疑、輔導(dǎo)方式需要耗費(fèi)大量的人力和時(shí)間,但實(shí)際較難真正指導(dǎo)到位。如何彌補(bǔ)在線教育缺少指導(dǎo)教師做實(shí)踐提示和引導(dǎo)的不足,讓自學(xué)程序設(shè)計(jì)的初學(xué)者更容易掌握用程序解決問(wèn)題的技能,找到一種便捷、有效的引導(dǎo)方法,是一個(gè)值得探討的問(wèn)題。
三、基于技能和思維訓(xùn)練的實(shí)踐教學(xué)方法探討
(一)編程技能和思維訓(xùn)練的重要性與方法
周以真教授認(rèn)為,計(jì)算思維是運(yùn)用計(jì)算機(jī)科學(xué)的基礎(chǔ)概念進(jìn)行問(wèn)題求解、系統(tǒng)設(shè)計(jì)、以及人類(lèi)行為理解等涵蓋計(jì)算機(jī)科學(xué)之廣度的一系列思維活動(dòng)[6]。程序設(shè)計(jì)課程是計(jì)算思維教學(xué)的重點(diǎn),尤其程序設(shè)計(jì)算法是解決問(wèn)題的方法,是計(jì)算思維的內(nèi)容[7]。而這解決問(wèn)題的方法需要通過(guò)一系列的強(qiáng)化訓(xùn)練才可以培養(yǎng)出來(lái)。計(jì)算思維的核心是抽象,而程序設(shè)計(jì)是從總體設(shè)計(jì)到細(xì)化實(shí)現(xiàn)的過(guò)程,是從抽象描述到具體實(shí)現(xiàn)的過(guò)程。程序設(shè)計(jì)方法中強(qiáng)調(diào)的逐步求精技術(shù),更是設(shè)計(jì)過(guò)程的抽象表現(xiàn)。程序設(shè)計(jì)實(shí)踐教學(xué)的目標(biāo)就是要學(xué)生學(xué)會(huì)抽象的設(shè)計(jì)方法,并用抽象思想指導(dǎo)實(shí)踐操作過(guò)程的每一步。抽象教育的另一個(gè)內(nèi)容是要強(qiáng)化學(xué)生的歸納、抽象能力。
在線教育課程通常是一位教師面對(duì)眾多學(xué)生的教學(xué)模式,實(shí)踐教學(xué)過(guò)程,教師較難通過(guò)網(wǎng)絡(luò)長(zhǎng)時(shí)間遠(yuǎn)程實(shí)時(shí)指導(dǎo)多個(gè)學(xué)生,很多時(shí)候就是學(xué)生自己獨(dú)立思考及動(dòng)手實(shí)踐。為了讓學(xué)生在做程序?qū)嵱?xùn)習(xí)題時(shí),可以像面授課堂的實(shí)訓(xùn)操作一樣,在有引導(dǎo)的狀態(tài)下做編程實(shí)訓(xùn),需要在設(shè)計(jì)實(shí)訓(xùn)題目時(shí),在題目中給學(xué)生一些提示的信息,引導(dǎo)和啟發(fā)學(xué)生分析問(wèn)題、設(shè)計(jì)程序的框架,讓學(xué)生遵循在線課堂教師講的編程思路,強(qiáng)化訓(xùn)練學(xué)生的編程技能,訓(xùn)練他們自覺(jué)地用計(jì)算思維指導(dǎo)程序設(shè)計(jì)實(shí)踐。
學(xué)生的技能學(xué)習(xí)是一個(gè)循序漸進(jìn)的過(guò)程,在設(shè)計(jì)實(shí)踐編程題目時(shí),要根據(jù)課程針對(duì)不同的知識(shí)點(diǎn),從入門(mén)到提升階段分別設(shè)計(jì)不同層次的實(shí)踐編程題目,讓學(xué)生從入門(mén)開(kāi)始,循序漸進(jìn)地做題訓(xùn)練、提升編程技能。
(二)實(shí)踐編程題目設(shè)計(jì)案例
設(shè)計(jì)編寫(xiě)程序是一個(gè)逐步擴(kuò)展程序、逐步填空的過(guò)程[8]。在設(shè)計(jì)實(shí)踐編程題目時(shí),要按照這個(gè)思路設(shè)計(jì)提示,引導(dǎo)學(xué)生遵循計(jì)算思維,用逐步求精的程序設(shè)計(jì)方法解答題目。
1. 強(qiáng)化訓(xùn)練用計(jì)算思維解決問(wèn)題
“a+b問(wèn)題”是入門(mén)級(jí)的實(shí)訓(xùn)編程題目,對(duì)初學(xué)程序設(shè)計(jì)的學(xué)生,關(guān)鍵要讓他們遵循“自頂向下、逐步求精”的設(shè)計(jì)方法,圖1所示的提示在于引導(dǎo)學(xué)生寫(xiě)程序時(shí),采用逐步擴(kuò)展的方式設(shè)計(jì)程序。引導(dǎo)學(xué)生編寫(xiě)程序遵循“保證書(shū)寫(xiě)程序的每一步編譯是正確的”[8]的操作方法。
2. 訓(xùn)練程序語(yǔ)句的編寫(xiě)規(guī)則
在程序設(shè)計(jì)課程中,讓學(xué)生養(yǎng)成良好的編寫(xiě)程序習(xí)慣尤其重要,在程序擴(kuò)展過(guò)程中間的每一步,保證程序都能正確通過(guò)編譯,而且可測(cè)試運(yùn)行,那樣可以避免少出錯(cuò)。下頁(yè)圖2通過(guò)引導(dǎo)方式強(qiáng)化if條件復(fù)合語(yǔ)句框架的編寫(xiě)規(guī)則、操作過(guò)程,讓學(xué)生在實(shí)踐訓(xùn)練中用這樣逐步填空的方式設(shè)計(jì)程序,減少編譯錯(cuò)誤。引導(dǎo)學(xué)生在長(zhǎng)期的實(shí)踐訓(xùn)練中掌握逐步求精的程序設(shè)計(jì)方法和操作方法。
3. 引導(dǎo)學(xué)生使用通用框架解決新問(wèn)題
程序設(shè)計(jì)課程的語(yǔ)法規(guī)則繁多,課堂講授的某些新知識(shí)時(shí)會(huì)出現(xiàn)一次呈現(xiàn)太多程序語(yǔ)法規(guī)則的情況,學(xué)生難以全部記住,以致于在聽(tīng)課時(shí)似乎明白了,但由于語(yǔ)法規(guī)則多,到實(shí)踐編寫(xiě)程序時(shí),卻不知從何入手編寫(xiě)程序,未能做到靈活應(yīng)用課程學(xué)習(xí)的新知識(shí),沒(méi)有真正掌握相應(yīng)新知識(shí)的使用。為了讓學(xué)生更容易掌握新知識(shí),圖3是在設(shè)計(jì)實(shí)踐編程題目時(shí),給予的提示讓學(xué)生回想起課堂講授的順序掃描字符串的方法,引導(dǎo)學(xué)生學(xué)會(huì)寫(xiě)程序讀取字符串的單個(gè)字符。通過(guò)解決圖3“單詞變換”題目的問(wèn)題,讓學(xué)生用已學(xué)知識(shí)的通用框架解決新問(wèn)題,從而強(qiáng)化學(xué)生設(shè)計(jì)循環(huán)控制語(yǔ)句的能力,引導(dǎo)學(xué)生學(xué)會(huì)用循環(huán)編寫(xiě)程序讀取字符串中各個(gè)字符的方法。
4. 從解決具體問(wèn)題中訓(xùn)練歸納、抽象的能力
程序設(shè)計(jì)除了有正確的思想方法,要實(shí)現(xiàn)設(shè)計(jì),還需要學(xué)習(xí)了解編程語(yǔ)言知識(shí)細(xì)節(jié)[8]。在用程序解決問(wèn)題時(shí),經(jīng)歷從具體問(wèn)題中歸納、再抽象的過(guò)程。圖4的“計(jì)算存款收益”題目引導(dǎo)學(xué)生從解決本金為1000元計(jì)算一年、二年、三年后的本息總額的具體問(wèn)題入手,再歸納、抽象化到計(jì)算本金為M元n年的通用問(wèn)題,讓學(xué)生遵循、體會(huì)這樣的認(rèn)知過(guò)程,更好地培養(yǎng)學(xué)生計(jì)算思維的能力。
5. 引導(dǎo)學(xué)生學(xué)習(xí)設(shè)計(jì)函數(shù),訓(xùn)練分解問(wèn)題的能力
學(xué)好程序設(shè)計(jì),就需要學(xué)習(xí)解決問(wèn)題的方法。解決問(wèn)題是一個(gè)逐步細(xì)化的過(guò)程。在設(shè)計(jì)程序時(shí),采用的自頂向下逐步求精的方法,就是把復(fù)雜的問(wèn)題分成多個(gè)獨(dú)立的小問(wèn)題, 逐步細(xì)化,直到小的問(wèn)題可以較好地解決為止。在這樣設(shè)計(jì)過(guò)程中,把復(fù)雜問(wèn)題分解,在程序?qū)崿F(xiàn)中,就是分解成獨(dú)立的模塊,進(jìn)行模塊化設(shè)計(jì)。用函數(shù)式編程可以較好地實(shí)現(xiàn)模塊化設(shè)計(jì)程序。因此,學(xué)會(huì)用函數(shù)設(shè)計(jì)與編寫(xiě)程序,是學(xué)習(xí)程序設(shè)計(jì)課程的重要功課。而對(duì)于初學(xué)者,不習(xí)慣運(yùn)用函數(shù)設(shè)計(jì)方法,如下頁(yè)圖5中的習(xí)題,目的就是引導(dǎo)學(xué)生正確設(shè)計(jì)函數(shù),習(xí)慣于用函數(shù)實(shí)現(xiàn)逐步求精設(shè)計(jì)過(guò)程。
四、結(jié)語(yǔ)
經(jīng)過(guò)近幾年的實(shí)踐教學(xué),使用文中的這種方法設(shè)計(jì)在線評(píng)測(cè)系統(tǒng)的編程實(shí)踐題目,比單純提供問(wèn)題描述的題目,學(xué)生更容易獨(dú)立動(dòng)手編程,同時(shí)也能讓學(xué)生養(yǎng)成用正確的思維和操作方法指導(dǎo)編程實(shí)踐的良好習(xí)慣,較好地訓(xùn)練及提高學(xué)生的程序設(shè)計(jì)實(shí)踐技能。對(duì)于在線程序設(shè)計(jì)課程的教育,可節(jié)省在線答疑、指導(dǎo)的成本,對(duì)培養(yǎng)學(xué)生程序設(shè)計(jì)技能也是一種有效的方法。
[參考文獻(xiàn)]
[1]苗桂君,劉勇,許南山,等.在線評(píng)測(cè)系統(tǒng)在程序設(shè)計(jì)類(lèi)教學(xué)中的應(yīng)用研究[J].計(jì)算機(jī)教育,2016(9):157-162.
[2]張偉龍,孟玉琴.ACM在線評(píng)測(cè)系統(tǒng)在成人高等教育程序設(shè)計(jì)類(lèi)課程中的應(yīng)用初探[J].中國(guó)新技術(shù)新產(chǎn)品,2010(6):45.
[3]孟凡樓,高永存.計(jì)算機(jī)工程類(lèi)課程在線教學(xué)研究與實(shí)踐[J].教育教學(xué)論壇,2020(44):243-244.
[4]孫洪濤,鄭勤華,陳麗.中國(guó)MOOCs教學(xué)交互狀況調(diào)查研究[J].開(kāi)放教育研究,2016(1):72-79.
[5]張治國(guó).在程序設(shè)計(jì)學(xué)習(xí)過(guò)程中使用單元測(cè)試實(shí)現(xiàn)自動(dòng)提示和自動(dòng)評(píng)判[A]. Science and Engineering Research Center.Proceedings of 2021 International Conference on Modern Education and Humanities Science (ICMEHS2021)[C].Science and Engineering Research Center:Science and Engineering Research Center,2021:4.
[6]Jeannette M. Wing. Computational thinking[J]. Communications of the ACM, 2006, 49(3) : 33-35.
[7]龔沛曾,楊志強(qiáng).大學(xué)計(jì)算機(jī)基礎(chǔ)教學(xué)中的計(jì)算思維培養(yǎng)[J].中國(guó)大學(xué)教學(xué),2012(5):51-54.
[8]趙馮平,張翠蓮,黃鐳.基于知識(shí)與能力導(dǎo)引的程序設(shè)計(jì)課程作業(yè)在線評(píng)測(cè)系統(tǒng)[J].廣西廣播電視大學(xué)學(xué)報(bào),2020(2):19-23.
[作者簡(jiǎn)介]張翠蓮,廣西開(kāi)放大學(xué)工程師,碩士,研究方向:計(jì)算機(jī)課程教學(xué)。
[責(zé)任編輯 韋書(shū)令]