盧華燈,李婷妤
(湖南廣播電視大學(xué) 網(wǎng)絡(luò)資源系,湖南 長沙410004)
理實(shí)一體化教學(xué)法即理論實(shí)踐一體化教學(xué)法,它突破以往理論與實(shí)踐脫節(jié)的現(xiàn)象,使得教學(xué)環(huán)節(jié)相對(duì)集中。它強(qiáng)調(diào)充分發(fā)揮教師的主導(dǎo)作用,通過設(shè)定教學(xué)任務(wù)和教學(xué)目標(biāo),讓師生雙方邊教、邊學(xué)、邊做,全程構(gòu)建素質(zhì)和技能培養(yǎng)框架,豐富課堂教學(xué)和實(shí)踐教學(xué)環(huán)節(jié),提高教學(xué)質(zhì)量[1-2]。理實(shí)一體化教學(xué)將某一知識(shí)技能模塊的理論課程教學(xué)與實(shí)踐教學(xué)融合交替進(jìn)行,達(dá)到學(xué)習(xí)、實(shí)踐、理解、掌握螺旋上升的正向循環(huán),符合學(xué)生的認(rèn)知規(guī)律;在理實(shí)一體化程序設(shè)計(jì)類課程的教學(xué)實(shí)踐過程中,存在理論教學(xué)和編程實(shí)踐切換門檻高、巡堂指導(dǎo)工作量大且效率低等問題。
迭代式項(xiàng)目驅(qū)動(dòng)教學(xué)模式是對(duì)項(xiàng)目驅(qū)動(dòng)教學(xué)模式的細(xì)化,它將項(xiàng)目按照知識(shí)點(diǎn)進(jìn)行分解、重新排序,形成前后知識(shí)相關(guān)的多個(gè)功能迭代項(xiàng)目,通過項(xiàng)目的迭代開發(fā)過程完成對(duì)知識(shí)的學(xué)習(xí)、運(yùn)用[3]。這種教學(xué)法有利于學(xué)生掌握項(xiàng)目開發(fā)所需的知識(shí),有利于從整體上把握課程各個(gè)知識(shí)點(diǎn)的運(yùn)用場(chǎng)景,為以后開發(fā)完整的項(xiàng)目提供借鑒作用。將迭代式項(xiàng)目驅(qū)動(dòng)教學(xué)法應(yīng)用于理實(shí)一體化教學(xué)環(huán)境,更好地發(fā)揮理實(shí)一體化教學(xué)的效果。
Gitee(碼云)是一個(gè)國內(nèi)云代碼托管服務(wù),與Github類似,利用開源分布式代碼版本管理工具Git構(gòu)建。碼云專為開發(fā)者提供穩(wěn)定、高效、安全的云端軟件開發(fā)協(xié)作平臺(tái),無論是個(gè)人、團(tuán)隊(duì)或是企業(yè),都能夠用碼云實(shí)現(xiàn)代碼托管、項(xiàng)目管理、協(xié)作開發(fā)[4]。
迭代式項(xiàng)目驅(qū)動(dòng)教學(xué)法結(jié)合了項(xiàng)目驅(qū)動(dòng)的目標(biāo)準(zhǔn)確和知識(shí)遞進(jìn)有序的優(yōu)點(diǎn);理實(shí)一體化教學(xué)強(qiáng)調(diào)理論與實(shí)踐的相互作用,提高教學(xué)效果。在兩者相結(jié)合應(yīng)用于程序設(shè)計(jì)類課程的編程實(shí)踐的過程中,筆者發(fā)現(xiàn)存在如下一些問題:①課程教學(xué)進(jìn)度不容易把控,往往會(huì)因?yàn)閷W(xué)生的某個(gè)非本次課程的技能要求而拖延整個(gè)教學(xué)進(jìn)度;②學(xué)生實(shí)踐指導(dǎo)環(huán)節(jié)費(fèi)時(shí)耗力,并且學(xué)習(xí)效果難以有效跟蹤、記錄、重現(xiàn),不易形成共有經(jīng)驗(yàn);③課內(nèi)實(shí)踐內(nèi)容與課外實(shí)踐內(nèi)容不易共享,編程過程不能無縫延續(xù)。
基于Gitee理實(shí)一體化迭代式項(xiàng)目驅(qū)動(dòng)教學(xué)法,致力于克服上述困難,發(fā)揮兩種教學(xué)法的優(yōu)勢(shì)。利用Git的代碼版本管理功能,構(gòu)建細(xì)粒度的教學(xué)案例,包括迭代式項(xiàng)目實(shí)踐案例、編程實(shí)踐錯(cuò)誤案例等,并為各個(gè)案例打上Tag(標(biāo)識(shí));利用Gitee中的云代碼共享實(shí)現(xiàn)項(xiàng)目案例的分享,提高程序設(shè)計(jì)類課程理實(shí)一體化的教學(xué)效果。
理實(shí)一體化教學(xué)實(shí)施過程中,理論教學(xué)和實(shí)踐教學(xué)之間的切換較普通教學(xué)模式要更頻繁,要求單次理論和實(shí)踐循環(huán)覆蓋更小的知識(shí)技能范圍,從而使得理論學(xué)習(xí)和實(shí)踐運(yùn)用之間的門檻更低,知識(shí)技能更易掌握。根據(jù)學(xué)生注意力集中曲線,理論學(xué)習(xí)的時(shí)間最好控制在13分鐘以內(nèi),以減少注意力失焦現(xiàn)象的發(fā)生[5]。因此需要更加細(xì)粒度地構(gòu)建知識(shí)模塊和實(shí)踐模塊,使得理論學(xué)習(xí)環(huán)節(jié)和實(shí)踐學(xué)習(xí)環(huán)節(jié)的切換更加順暢。
細(xì)粒度教學(xué)案例庫包括知識(shí)講解案例庫和知識(shí)實(shí)踐項(xiàng)目庫,前者用于知識(shí)的理論學(xué)習(xí)和驗(yàn)證,后者用于知識(shí)的運(yùn)用實(shí)踐。構(gòu)建細(xì)粒度迭代式項(xiàng)目案例庫一般分3個(gè)步驟:①整理項(xiàng)目所需知識(shí)列表;②構(gòu)建知識(shí)講解案例庫;③構(gòu)建細(xì)粒度迭代式項(xiàng)目庫。以HTML5高級(jí)編程課程的“移動(dòng)端旅游網(wǎng)站頁面”項(xiàng)目為例,使用Gitee構(gòu)建細(xì)粒度的教學(xué)案例庫的過程如下。
3.1.1 整理項(xiàng)目所需知識(shí)列表
移動(dòng)端旅游網(wǎng)站頁面項(xiàng)目的開發(fā)步驟主要有:①構(gòu)建頁面的整體結(jié)構(gòu)代碼;②使用樣式表調(diào)整整體布局;③細(xì)化各個(gè)模塊的結(jié)構(gòu)代碼;④細(xì)化各個(gè)模塊的樣式代碼。根據(jù)開發(fā)步驟,項(xiàng)目所涉及的知識(shí)見表1。
3.1.2 構(gòu)建知識(shí)講解案例庫
根據(jù)表1的知識(shí)技能要求,構(gòu)建對(duì)應(yīng)的理論講解案例庫。教師在介紹所需的理論知識(shí)時(shí),利用講解案例庫驗(yàn)證所講授的知識(shí),學(xué)生可以根據(jù)案例庫模仿驗(yàn)證。每個(gè)案例都提供一個(gè)基礎(chǔ)框架,放置于一個(gè)項(xiàng)目中,存放在Gitee云代碼托管服務(wù)上,并利用Git打上Tag(標(biāo)記)和注釋,以便案例的快速定位和選用。知識(shí)技能與講解案例對(duì)應(yīng)見表2。
以case1為例,從案例準(zhǔn)備和使用兩個(gè)方面,詳細(xì)介紹講解案例框架代碼的使用場(chǎng)景。
案例準(zhǔn)備環(huán)節(jié):教師在編寫“案例1:整體結(jié)構(gòu)”代碼框架時(shí),給當(dāng)前代碼打標(biāo)記和注釋(見表3命令1),教師在當(dāng)前項(xiàng)目中繼續(xù)編輯代碼,完成案例1的功能,為其打上case1_ok標(biāo)記(見表3命令2),依次繼續(xù)完成case2、case3、case4、case5等教學(xué)案例。
案例使用環(huán)節(jié):教師課堂知識(shí)講解完成后,切換到案例1進(jìn)行知識(shí)驗(yàn)證實(shí)驗(yàn)演示,首先查看項(xiàng)目中所有的標(biāo)記(見表3命令3),找到案例1對(duì)應(yīng)的標(biāo)記,然后使用checkout切換到對(duì)應(yīng)標(biāo)記(見表3命令4)。這時(shí)的代碼就是案例1的框架代碼,教師和學(xué)生都可以在案例1的框架代碼基礎(chǔ)上,進(jìn)行案例1對(duì)應(yīng)知識(shí)的驗(yàn)證實(shí)驗(yàn)。
表1 移動(dòng)端旅游網(wǎng)站頁面知識(shí)技能分析表
表2 知識(shí)技能與講解案例對(duì)應(yīng)
表3 Git 標(biāo)記使用示例
3.1.3 構(gòu)建細(xì)粒度迭代式項(xiàng)目庫
項(xiàng)目庫的構(gòu)建與講解案例庫的構(gòu)建和組織類似,它用于學(xué)生對(duì)知識(shí)技能的實(shí)際運(yùn)用,這是學(xué)生知識(shí)內(nèi)化的重要環(huán)節(jié)。項(xiàng)目庫的構(gòu)建順序依據(jù)項(xiàng)目編碼實(shí)現(xiàn)的一般順序進(jìn)行,各個(gè)版本之間存在遞進(jìn)關(guān)系,前面迭代項(xiàng)目的成果就是下一個(gè)迭代的開始。
以移動(dòng)端旅游網(wǎng)站頁面項(xiàng)目為例,細(xì)粒度迭代式項(xiàng)目庫的構(gòu)建設(shè)計(jì)見表4。根據(jù)網(wǎng)頁設(shè)計(jì)的一般步驟,將移動(dòng)端旅游網(wǎng)站頁面項(xiàng)目細(xì)分為10個(gè)迭代步驟。各個(gè)迭代步驟中所用到的知識(shí)技能分別對(duì)應(yīng)前期知識(shí)講解和驗(yàn)證實(shí)踐環(huán)節(jié)中的講解案例代碼,這為完成項(xiàng)目提供了技術(shù)參考。
理實(shí)一體化教學(xué)要求教師關(guān)注學(xué)生的實(shí)踐過程,糾正學(xué)生在實(shí)踐過程中錯(cuò)誤。
教師在巡堂指導(dǎo)糾正學(xué)生編程實(shí)踐的錯(cuò)誤過程中,對(duì)于有共性的錯(cuò)誤,利用Gitee的云服務(wù)功能,將有bug代碼、修正后代碼打上不同Tag和注釋共享到代碼云中,整理成編程實(shí)踐常見錯(cuò)誤庫并共享。使得一個(gè)錯(cuò)誤及其解決途徑成為所有同學(xué)的經(jīng)驗(yàn)。
以移動(dòng)端旅游網(wǎng)站頁面項(xiàng)目為例,介紹實(shí)踐錯(cuò)誤庫的具體構(gòu)建過程:
(1)進(jìn)入項(xiàng)目實(shí)踐環(huán)節(jié)后,教師巡堂指導(dǎo),其中某位同學(xué)向教師提問“我的文字怎么不能居中顯示,我是按照案例庫中的方法進(jìn)行的”;
表4 移動(dòng)端旅游網(wǎng)站頁面細(xì)粒度迭代式項(xiàng)目庫
(2)教師在檢查代碼的過程中,覺得這是一個(gè)有共性的錯(cuò)誤,于是就將其打上Err1標(biāo)記和“文字不能居中顯示”(見表5命令1);
(3)然后跟該同學(xué)講解如何修正該錯(cuò)誤,在解決問題后,將正確的代碼打上Err1_ok標(biāo)記和注釋(見表5命令2);
(4)完成后將兩個(gè)標(biāo)記的代碼均上傳到Gitee云代碼托管服務(wù)中(見表5命令3),實(shí)現(xiàn)錯(cuò)誤的共享;
(5)教師在課上檢索(見表5命令4)和查看(剪標(biāo)5命令5)編程錯(cuò)誤及解決方式,與其他同學(xué)分享錯(cuò)誤經(jīng)驗(yàn)。
上述過程收集并共享了一個(gè)編程錯(cuò)誤及解決方案,教師可在課后整理本次課程的有價(jià)值的錯(cuò)誤,形成編程實(shí)踐錯(cuò)誤庫,便于課后檢索和使用,形成共同經(jīng)驗(yàn),提高巡堂效果。
表5 構(gòu)建實(shí)踐錯(cuò)誤庫Git命令使用示例
文獻(xiàn)[6—7]中提出的師生協(xié)同教學(xué)法、問題驅(qū)動(dòng)式教學(xué)法,是由教師發(fā)布實(shí)驗(yàn)任務(wù)項(xiàng)目,學(xué)生Fork后完成,并提交到任務(wù)中。這是一個(gè)有效的提高學(xué)生編程能力的方式。
由于GitHub對(duì)于國內(nèi)用戶而言,訪問速度比較慢,筆者選用Gitee布置課后編程實(shí)踐作業(yè),并要求學(xué)生分步驟提交編程的各個(gè)環(huán)節(jié),以此記錄學(xué)生編寫代碼的全過程。通過學(xué)生所提交的共享編程作業(yè)項(xiàng)目,分析學(xué)生所提交的代碼,教師可以觀察作業(yè)項(xiàng)目從無到有的一個(gè)完整的過程,以及學(xué)生的編程步驟,從而判斷學(xué)生編程思路是否清晰。
利用Gitee云代碼服務(wù)器的共享特性,可以將課堂項(xiàng)目進(jìn)行擴(kuò)展,所編寫的驗(yàn)證性實(shí)驗(yàn)代碼,可以為課后編程實(shí)踐提供參考,實(shí)現(xiàn)課內(nèi)編程與課外編程無縫銜接,實(shí)現(xiàn)編程思路的無間斷。利用Gitee分階段提交作業(yè)時(shí)所留下的時(shí)間戳,可以分析學(xué)生的編碼時(shí)間,減少作業(yè)抄襲的現(xiàn)象,培養(yǎng)學(xué)生編程習(xí)慣。
我們以HTML5高級(jí)編程課程的移動(dòng)端旅游網(wǎng)站網(wǎng)頁設(shè)計(jì)項(xiàng)目為例,基于Gitee云代碼托管服務(wù)平臺(tái)改進(jìn)了理實(shí)一體化環(huán)境下程序設(shè)計(jì)類課程迭代式項(xiàng)目驅(qū)動(dòng)教學(xué)的過程,充分利用該平臺(tái)分布式代碼版本管理、云共享等特性,構(gòu)建細(xì)粒度迭代式項(xiàng)目庫,降低了學(xué)生理論學(xué)習(xí)與實(shí)踐切換的難度;構(gòu)建錯(cuò)誤代碼庫,利用Gitee共享能力,將個(gè)別學(xué)生的編程錯(cuò)誤經(jīng)驗(yàn),轉(zhuǎn)換為所有學(xué)生共同經(jīng)驗(yàn),提高了巡堂指導(dǎo)的效果;利用Gitee的軟件項(xiàng)目協(xié)同開發(fā)功能,記錄了學(xué)生編程實(shí)踐過程,培養(yǎng)了學(xué)生編程習(xí)慣,有效提高了教學(xué)效果。