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