林宏,王東,左欣,何依蕾
(1.貴州師范學院教育信息網絡中心,貴州貴陽 550018;2.貴州師范學院數學與大數據學院,貴州貴陽 550018)
面向對象程序設計是計算機類本科專業的核心基礎課程[1],兼具理論與實踐的雙重要求[2]。課程多以Java語言為基礎,旨在培養本科生使用“面向對象”思維和相關編程語言解決實際問題的能力,為學生后續的課程學習、課程設計、畢業設計及從事編程開發工作等奠定技術基礎,屬于“飯碗”類課程。長期以來,該課程在作者學校仍沿襲以“教師為中心”的傳統教學模式,教師“滿堂灌”、學生“被動學”、課堂互動少、學生的學習積極性和主動性不高、學生編程能力普遍較弱等問題較為突出,課程改革已迫在眉睫。
“對分課堂”是復旦大學張學新教授提出的新型教學模式,是一線教師在多年教學改革與探索過程中的優秀選擇。該教學模式的核心是將課堂時間一分為二,在教師精講的基礎上留一半時間給學生討論,并在兩者間引入心理學的內化吸收環節,讓學生主動、有準備地參加課堂討論[3]。“對分課堂”模式充分把學生的積極性和主動性調動起來,充分將學生的潛力挖掘出來,對提升教育教學質量有重要的推進作用。近10年來,有大量教育工作者采用“對分課堂”教學模式融合其他教學方法和各類信息化教學平臺進行混合課程改革,取得了豐碩成果。但在“對分課堂”應用于實踐性較強的編程類課程時,在有效結合編程課堂特點進行精講、拓展傳統課堂討論形式、規避課堂討論“冷場”、與各類信息化教學平臺有機融合等方面,尚有較大的探究空間。
2019年起,作者所在高校的計算機科學與技術本科專業對面向對象程序設計課程實施了以“對分課堂”為引領的混合教學模式改革,從理論講授、實踐教學、課程評價三個方面進行了全面重構與優化。在理論講授部分,有機整合傳統課堂和討論課堂的優勢,將另一半時間交給學生,讓學生在主動探究和參與課堂討論的過程中喚醒成就感,有效解決了“教師不好教、學生不好學”的矛盾[4];在實踐教學方面,基于“對分課堂”理念進行實踐內容的精講并組織學生討論,實現了實驗報告的無紙化管理和實驗代碼的機器自動評分和查重,錄制了軟件項目開發微課(如圖1),指導學生進行課程設計,實踐教學效果提升明顯;在理論課程評價方面,使用了“碼學堂”智慧教學平臺,實現了理論知識及Java編程題的在線測試與自動評分,形成“課前小測+課后測試+期末測試”的立體評價體系,評價方式更注重過程性評價,更科學高效;本次課程改革還高度關注學生的課堂表現,引入了“課堂活躍度”與“課堂表現”兩個評價指數,開發了學生課堂表現量化管理微信小程序(如圖2),將學生的平時表現量化為平時成績,在切實激勵學生積極探索和主動學習方面做了有益的探索。對比發現,課程改革后計算機科學與技術專業的三個年級學生在學習積極性、總體成績、課程設計作品質量等方面有較大提高,學生的編程能力普遍提升。

圖1 軟件項目開發微課

圖2 “對分課堂”中學生平時表現量化評價微信小程序
根據面向對象程序設計教學大綱安排,課程理論講授為48學時,每次課2節連上。在實施對分課堂策略前,先將授課內容按2 節/次進行詳細拆分,并根據難易程度及內容特點靈活選用“對分”模式。學生在前續課程中已學過C語言程序設計課程,故在Java語言概述、數據類型、輸入輸出、運算符、表達式、控制語句等偏重“面向過程”的內容中,采用旨在“趁熱打鐵”的“當堂對分”模式[5];在講授面向對象編程(類的特性及應用)、數組與字符串、圖形編程、異常處理、多線程、網絡編程、JDBC等內容時,則以“隔堂對分”為主。除新內容的首次課以教師講授為主外,其余每次第1節課則組織學生進行課堂討論,第2節則精講和布置下次討論準備任務,給學生預留足夠消化吸收知識的時間和空間,詳細安排如表1。在實際教學活動中,“當堂”與“隔堂”也不是絕對劃分的,可根據實際的教學進展進行微調,只需牢牢把握“尊重和保障學生參與權,預留一半時間讓學生積極主動學習和討論”的基本原則即可。

表1 面向對象程序設計“對分課堂”詳細安排表

表2 對分課堂討論任務卡片
“對分課堂”強調教師課堂講授要“精講留白”[6]。根據課程特點,本課的理論講授以Java 編程為抓手,以編程案例驅動的方式進行精講。教師在備課階段將教材中較為細碎的實例進行重構,精心設計出融合多個Java語言特征點,貼近實際項目的編程案例。在案例講授時,教師主要采用了即興編寫代碼的方式“邊打邊講”,讓學生在問題逐步求解的漸進過程中學會編程,一改傳統的直接呈現完整代碼再逐行講解的模式,效果更佳。在實際教學中,即興打代碼的方式也會帶來講授時間上的延長,與精講要求相悖,故精講案例的設計須遵循“力求精煉、切中要點、預留任務”的原則進行,確保精講的同時又不占用學生的討論時間。在講授難度大、行數多的編程案例時,采用了程序填空、關鍵代碼現場即興補全的方式進行講解;講授中的“留白”則要求教師無需做到面面俱到、滿堂包辦,而是要點到為止、留有余地,要根據對分模式和內容特點靈活安排學生的自主學習任務。如:在課程前期以“當堂對分”為主,Java語言特性的內容大部分與C 語言接近,可從Java 與C 語言異同比較的角度引導學生進行對比式學習,提出問題清單,當堂進行分組討論;在講授較復雜的知識點時,則采用“隔堂對分”方式,預留足夠的時間給學生在課下內化吸收或自主拓展。“隔堂對分”需給學生指定明確的準備任務并引入適度的督促考核機制。課下任務可以是上次課刻意留下的待探究內容,也可是預習任務、課下作業等。實際教學中,線上編程作業定時提交、課堂討論的效果評價、隨機點名發言、隨機抽取學生反串教師講解知識點或進行代碼演示等都是有效督促學生主動、按時完成課下任務的較好方式。如:在講授Java中“包”的概念后,安排“隔堂對分”討論準備任務如下:
在激勵學生積極準備和參與課堂討論、防止現場討論“冷場”方面,改革中做了大量嘗試與努力。除了采用傳統的小組討論與發言(5人1組)、全班討論與發言、QQ群討論與答疑等討論形式外,還根據編程課程實踐性強的特點,加入了學生反串教師角色講解演示本人代碼、群內曬代碼截圖、組內成員“傳、幫、帶”互助等方式,進一步拓展了課堂討論的內涵,形成編程課堂大討論模式。為有效評價學生課堂討論的表現,提出了“課堂活躍度指數”和“課堂表現指數”的量化方法。學生在參與學習討論活動時的原始次數,由小組長做好記錄,形成各自的“課堂活躍度指數”;另外,討論課堂要求學生至少參與3次側重個人展示性質的討論活動,如:反串教師講題、總結發言、課堂亮出代碼、編程知識拓展內容分享等,并使用“課堂表現指數”進行量化評價。兩個指數均可折算成平時成績,最終按比例計入期末成績。
本次課程改革將實踐內容拆分為“實驗”及“課程設計”兩門獨立的考查課程,有專門的學分及學時要求。根據實驗大綱安排,將實驗任務重構為多個小案例,任務難度及廣度較理論課堂講授的案例有所提高,實驗要求也更貼近實際軟件項目中的模塊編程需求。如:在數組與集合對象實驗中編寫計算“平均學分績點(GPA)”的程序、在網絡編程實驗中編寫爬蟲程序抽取學校新聞網的文章內容等。每次實驗課,教師會就本次實驗的要求、關鍵技術、注意事項等進行精講,更多時間留給學生討論及實驗,遇到實驗難點問題時,則組織進行討論與總結。實驗涉及的代碼,需經“碼學堂”智慧教學平臺提交、編譯、驗證和查重,實驗報告也需限期上傳至平臺中,方便教師在線批閱和集中管理。
課程設計在課程結束前幾周同步進行,旨在考查學生綜合運用面向對象編程技術解決實際問題的能力。課程設計的任務為:自選主題,使用Java 語言開發一個完整的軟件項目。課程設計涉及Java Swing GUI 編程、數據庫、SQL 及JDBC、MVC 等較多內容,教師以一個具體軟件項目的實現為例,提前錄制了微課開放給學生,幫助學生厘清難點,舉一反三,快速完成從平時單一編程練習到完整項目開發的過渡。此舉有效解決了教師在有限學時中無法兼顧基本內容講授與項目實戰輔導的矛盾,為學生高質量如期完成課程設計奠定了基礎。
面向對象程序設計理論課程采用了“平時成績平均分(含課前小測成績、平時作業成績)×0.4+課堂活躍度評價×0.1+課堂表現評價×0.1+期末考試成績×0.4”的綜合評價模式。其中課前小測、平時作業、期末考試由“碼學堂”智慧教學平臺自動評分;“對分課堂活躍度指數”對學生積極準備并主動參與課堂活動的次數進行量化,計算公式為:本人活躍度指數=本人參與活動次數/本班單人活動次數最大值×100;“對分課堂表現指數”對學生討論課堂上的個人展示進行量化評價,由全班同學現場互評后再求平均分。為支撐上述兩個課堂表現指數的計算和生成,課題組教師專門開發了學生課堂表現量化微信小程序,讓小組長和學生在課堂上借助手機即可完成參與活動的記錄或課堂表現互評打分(打分表原型如表3、表4)。相較于之前“平時作業+期末考試”的簡單評價方式,整個評價體系弱化了終結性考試和大作業的決定性作用,強調平時主動學習的重要性,對學生的主動學習進行反哺與回報,體現了過程性評價的特點[7]。

表3 對分課堂討論活動原始記錄表(小組長用表)

表4 學生課堂表現評分表(學生互評)
教學評價全面使用“碼學堂”智慧教學平臺,支持選擇題、判斷題、填空題、程序填空題、Java 編程題等題型的在線測試。平臺的智能組卷、自動評分、代碼查重、進程監管、監考與防作弊、成績管理等功能,可支撐平時編程作業、開放式作業、期末正式考試等多種測試場景。課題組在該平臺上陸續構建了約5000道相關試題,為課程進行各類在線測試提供了有力保障。
實驗評價方面,舍棄了傳統的紙質實驗報告,基于“碼學堂”平臺完成實驗報告的在線提交、代碼自動評分與查重、主觀內容在線批閱等,實現了無紙化實驗教學管理。實驗成績評定,需結合實驗代碼的機改評分、代碼重復率、實驗報告內容填寫情況等進行綜合評定,減少了教師打分的主觀隨意性。
課程設計是課程的綜合實踐內容,選題參照畢業設計的要求,更加貼近軟件項目開發的實戰需求,是對學生綜合實踐能力的全面檢驗。學生需獨立完成一個完整軟件項目的開發,并在班級進行作品公開展示與答辯,由班級代表及授課教師共同在答辯現場完成作品打分。作品評價圍繞“作品原創性、作品完整性、作品實用性、作品技術創新性、演示與答辯能力、學習與進步歷程分享”等6項指標進行,在評價學生課程設計作品質量的同時,還關注學生在課程設計中主動探索與進步的過程。
“對分課堂”教學模式充分尊重學生的主觀能動性,使師生角色發生了質的改變。學生變為課堂主角,教師則成為課堂引導者,教學活動體現了“以學生為中心”的教育理念[8]。面向對象程序設計課程在實施“對分課堂+智慧教學平臺+微課輔助項目實戰”的混合改革后,學生的學習積極性和主動性、課堂活躍度、課程平均分、課程及格率、課程優良率、課程設計作品質量,較課程改革前均有明顯提高。后續將在對分課堂策略靈活運用、更充分調動學生學習主動性、建立更有效的學生激勵機制、探索更科學的過程性評價體系等方面持續探究,不斷推進人才培養質量的提升。