馬丁 齊歌 鄭麗萍
摘 要:面向對象程序設計是一門強調抽象思維、實踐性校強的專業核心課程。為提高教學質量與學習效果,本研究針對傳統授課方式存在的問題,遵循以學為中心的先進理念,從教學目標、教學策略與設計、考核評價三個方面提出了系統的、切實可行的改革方案,并在實踐中取得了良好的效果。
關鍵詞:以學為中心;面向對象程序設計;教學改革
面向對象程序設計是河南工業大學軟件工程專業的核心課程,在程序設計類課程中起著承前啟后的作用。課程以C++作為編程語言,要求學生能夠闡釋面向對象程序設計的基本概念,能夠掌握C++語言的抽象、封裝、繼承、多態、輸入輸出、模板等技術,能夠使用C++面向對象程序設計思想和技術分析、解決復雜的工程問題。經過十幾年的課程建設與改革,課程團隊擁有豐富的教學經驗,也積累了大量的課程資源。但是,囿于傳統課堂授課以教師為中心的方式,學生在教師的引領下經常陷于被動的學習狀態。學生課堂參與度不高,學習的積極性和主動性較差,分析、評價、創新等高階教學目標難以達成,這些問題已成為制約課程教學和學生提高學習成效的主要障礙。
近年,隨著翻轉課堂教學模式在高校的推廣和應用,工程認證背景下OBE(Outcomes-based Education,
基于學習產出的教育模式)教學策略的深度融合,以及教育部推進高校教學改革,打造“金課”,建設一流本科課程的要求,課程團隊基于OBE理念,依據一流本科課程建設要求,借助智慧教學平臺和互聯網工具,對面向對象程序設計課程改革進行了深入探索,從教學目標、教學策略與設計、考核評價等方面提出了系統的改革思路,并在實踐中取得了良好的效果。
一、融合課程思政的多維度深層次教學目標設定
面向對象程序設計課程教學目標不僅包含淺層次的“理解+記憶”,還包括學科專屬知識與技能、高階思維能力、人文價值觀、職業準備、個人發展、思政育人等多維度深層次目標。教學目標的設定除了編程能力培養、主流價值觀形成、溝通與交流能力培養、終身學習能力培養等方面,還加入了思政育人的目標,涉及社會主義核心價值觀、技能觀、職業精神等方面。
(一)學科專屬知識與技能
能夠闡釋使用C++語言和面向對象技術解決軟件工程復雜問題的基本方法和原理,并能夠有效應用面向對象程序設計方法和C++編程語言在復雜面向對象程序開發中進行系統概要設計和詳細設計。其中涉及的基礎知識主要包括抽象、封裝、繼承、多態、輸入輸出、模板等。
(二)高階思維能力
能夠考察和比較當前流行的C++集成開發工具及其工作平臺,總結其優缺點;能夠使用其中的一款進行代碼的編寫與調試,具備良好的編程習慣,代碼風格嚴謹,注釋規范;能夠應用面向對象的思想將現實中的實際問題轉化為面向對象世界的編程問題;能夠使用統一建模語言UML設計問題所需的類和繼承層次結構,完成概要設計;能夠使用C++語言按照設計方案完成系統的詳細實踐。
(三)人文價值觀
能夠從哲學的角度思考面向對象程序設計思想的實質,明白事物本身的性質、結構及事物之間的聯系;密切關注當今社會IT行業的熱點話題,能夠利用所學的知識對社會上的觀點進行分析、比較、評價和預測,能夠向他人進行解釋和簡單的科普。
(四)工作與事業準備
尊重他人的觀點,學會溝通與交流,學會提問與回答;具備良好的團隊合作精神,能夠與其他學生組成2—3人討論小組,協作解決復雜的工程問題。在討論過程中,能夠正確發表自己的觀點和吸取他人建議,增強團隊合作與知識共享的意識。
(五)個人發展
能從面向對象的編程思想中體會使用計算機模擬現實世界的思路與方法;掌握主動學習方法,找到適合自己的C++學習路線;學會利用豐富的網絡資源推動自己的學習,如在線開放課程、在線測試平臺等;能夠及時跟蹤C++語言的發展狀況,考察其應用行業,關注新標準和新領域,保持學生對課程的新鮮感和求知欲,培養學生主動學習的能力,促進終身學習意識的形成。
(六)思政育人
引入國內IT行業的成功案例,分享其成功經驗;剖析軟件工程專業發展歷史和軟件行業領軍人物的奮斗故事,培養學生自信、樂觀、誠實、守信、善于思考與發現的優秀品質;提高學生的編程技能,為社會和人民造福;鼓勵學生利用自己所學的專業知識,積極參與科普活動和應用推廣活動;告誡學生不能將自己的編程技能用于違法犯罪活動。例如,從事黑客行為,攻擊、破壞他人軟件系統,編寫木馬程序、電腦病毒,參與盜版活動,編寫破解軟件等;要引導學生樹立科學的精神和態度,建立科學的思維方式,培養學生的軟件工匠精神。
二、全方位系統化的教學設計
課程教學依據課程執行大綱進行,整個教與學的活動擴展到課前、課堂、課后三個階段,并依據教學目標、教學內容的特點采用測試、討論、案例分析、實踐探究、拓展閱讀、分組討論等多樣化的教學活動。首先,在課前,通過文獻拓展閱讀、在線課程學習、智慧教學平臺學習,讓學生帶著問題走入課堂,通過課前測試檢驗學習的效果。課堂上,根據在線學習的效果選擇教學內容,采用案例分析、視頻學習、網絡檢索、分組討論、辯論賽等教學活動,突破重點,化解難點,擴展知識,并通過隨堂練習進行強化。在課后,通過課后作業、分組任務、思考與討論等幫助學生鞏固所學知識,提升理解廣度與深度,并通過課前測試、課堂提問、章節測試等活動檢驗學習的效果。在具體的實施中,按照執行大綱明確的課前要求、課堂要求、課后要求,將上述近20種教學活動穿插融入20次授課環節中。
執行大綱、教學活動和教學過程的融合,需要借助先進的互聯網工具和貫穿始終的教學策略。課程團隊選用了學習通和Github兩個平臺。其中,學習通可以提供課前任務布置、課初測試、課堂簽到、隨堂測驗、課后作業任務發布、問題討論與反饋、數據統計等功能;Github則為學生提供了代碼管理功能。
結合本課程的特點,提出以下幾種教學策略:
(一)以問題為導向的教學策略
首先,教師在課前的預習環節中拋出問題,這些問題多是與現實場景相關的思考題,學生通過閱讀、檢索文獻,嘗試用面向對象的思維去思考、設計、形成問題的初步模型。
其次,教師通過課堂討論、案例分析、網絡檢索、視頻學習、辯論賽等教學活動對問題進行剖析,充分調動學生學習的積極性;并通過實驗環境,借助UML建模工具將問題轉化為圖形,激發學生的興趣,提升學生的信心,幫助學生形成主動學習的意識。
最后,學生通過課后作業進一步強化分析問題的思路與方法,通過延伸討論和輔導答疑,深化對問題的認識,進一步完善解決問題的方案。
(二)以代碼為導向的教學策略
學生在課前預習課件與視頻的同時,編寫、調試、修改示例中的代碼,將自己的問題在代碼中進行注釋,帶著疑問進入課堂。
在課前測試和隨堂測驗中,設置涉及程序代碼的閱讀與填空,可以進一步發現存在的問題,檢驗學生預習和學習的效果;通過課堂討論、案例展示、調試分析、辯論賽等教學活動進一步對代碼進行剖析,從而幫助學生消除疑問、破解難點;通過實驗環節,找到解決代碼中問題的方法和技巧。
通過課后的作業練習,進一步提升學生編寫代碼的熟練度;通過延伸討論和輔導答疑,深化學生對編碼的認識,使其進一步對代碼進行規范化、優化的修正。
(三)以團隊合作為導向的教學策略
以實驗為例,對于綜合性實驗題目,可以讓3個學生組成一個小組,在以下幾個階段展開團隊合作:
問題分析、設計與UML建模;
在Github上建立代碼庫,編寫、優化、更新代碼;
建立測試用例,進行系統測試。
以辯論賽為例,學生自由結合,組成戰隊,每戰隊包括一名主辯手和3~5名辯手,在以下幾個階段展開團隊合作:
賽前,收集素材,制作PPT,討論辯論策略,模擬展示;
賽中,抽簽決定出場順序,各隊進行論點陳述,自由辯論;
賽后,各戰隊互評,教師總結。
上述導向明確的教學策略,能夠將教學活動無縫地穿插到三個階段的教學過程之中,有效地提升學生分析問題、設計方案、調試編碼的能力及溝通交流的能力,培養學生的團隊合作精神,促進課程教學目標的達成。
三、多元化的考核評價設計
課程團隊依據OBE教學理念,針對課程學習目標達成,以能力評價為核心,設計和實施作業、實驗、考試等多形式多環節考核,增強學生學習的持續性;引入學生互評,增強學生對學習共同體的參與度;教師采用及時性和積極性的評價反饋,激發學生學習的自信心,促進教與學的不斷調整和改進。
(一)建立多元化的學習成果評價機制,增強學生學習的持續性
在考核中,平時的成績不僅涵蓋了傳統的作業和考勤,還包括課前預習、課前測試、課堂測試成績、課堂主觀討論性題目成績。其中,課堂測試與課堂討論均通過學習通的隨堂測試方式進行,分數統一計算。
在作業考核中,共包括8次課后作業,每次作業均需要學生按照要求完成并上傳代碼至Github的對應庫。學生可以隨時查看課程代碼庫和自己代碼庫中的每次作業代碼并做出更新,此舉激發了學生學習的興趣,他們開始主動去使用Github研究和分享自己的代碼。
在實驗考核中,共包括5次實驗,每次實驗前學生均需要做好充分的準備,編寫好當次實驗的代碼,帶著問題進入機房去改進和調試。實驗環節設置了實驗方案設計、代碼撰寫情況、程序運行調試情況、實驗報告質量等考核內容。教師可以充分利用實驗過程交互性強的特性,實時解決學生遇到的問題,推動人文維度目標的達成。隨著程序警告、錯誤逐個消失,報告內容不斷充實、格式愈加規范,學生的信心逐漸增強,學習積極性得到了提升。
提高平時成績和實驗在總成績中所占的比例,從以往的占比30%提升至50%,綜合考量學生平時的表現。這樣可以使學生更加重視預習和復習的過程,重視平時的知識積累,重視每一次代碼編寫和提交的過程,享受編程能力提高帶來的成就感,從而激勵學生主動、自覺地學習,保證持續學習的動力。
在期末考試中,強調能力評價的核心作用,題目著重對應用及分析、綜合能力目標的達成。
(二)及時反饋,持續改進,激勵與鞭策并施
教師每周對平時表現成績、作業成績、實驗成績進行統計和分析,并將當前結果反饋給學生。一方面,有助于教師了解目前課程目標的達成情況和出現的問題,在后續教學過程中及時改進;另一方面,讓學生了解自己目前的學習效果,在后續的學習中及時進行調整,同時對積極向上的學生進行鼓勵,對落后的學生進行鞭策。例如,實時關注每周綜合表現排名后十位的學生及總排名后十位的學生,通過私信交流的方式,了解他們的近況,共同分析表現不佳的原因,并針對不同學生的情況量身定制改進措施。經過交流,大部分學生都能認識到自己的問題,并表示出積極改變的意愿。
對面向對象程序設計課程的教學與實施而言,以學為中心、以成果為導向的教學改革對改善課堂教學質量,促進學生主動、自發學習有著重要作用。課程團隊遵循以學為中心的先進理念,從教學目標、教學策略與設計、考核評價三個方面提出了系統的設計方案。通過在軟件工程專業2018級和2019級兩屆學生中的應用,學生的學習習慣有了明顯的改變,主動學習的意愿明顯增強,對課程的滿意度與日俱增,綜合成績評價較往年有了顯著提高。未來還需要對教學活動及其評價機制進行深入的優化,合理地融入課程思政元素,進一步激發學生的內驅力,保證評價的公平性,培養學生的軟件工匠精神。
參考文獻:
[1]鐘曉流,宋述強,焦麗珍.信息化環境中基于翻轉課堂理念的教學設計研究[J].開放教育研究,2013(1).
[2]施曉秋.遵循專業認證OBE理念的課程教學設計與實施[J].高等工程教育研究,2018(5).
[3]林姍,江南,劉偉.基于工程教育專業認證的面向對象程序設計課程改革[J].計算機教育,2019(7).
[4]吳巖.建設中國“金課”[J].中國大學教學,2018(12).
[5]史儀凱.一流課程建設和教學的關鍵在提升教師的教育教學水平[J].西北工業大學學報(社會科學版),2020(1).
責編:莞 爾