趙曉榮,陳傳明,夏蕓,陶濤
(安徽師范大學計算機與信息學院,安徽蕪湖 241000)
習近平總書記強調,各類課程與思想政治理論課通向同行,堅持教書和育人相統一[1]。由“思想政治教育課程”轉換為“課程思政”[2],將思想政治教育融入各個專業課程的課堂教學中。工科教育改革中提出的“新工科”[3]推動現有工科專業的改革創新,探索符合工程教育規律和時代特征的新培養模式,同時要求計算機類專業教育過程中更加注重對學生應用能力和創新能力的培養。高等教育在“課程思政”和“新工科”背景下,遇到了新的挑戰,計算機類專業課程教學過程中需要強調工程技術應用和創新能力的培養,同時挖掘課程思政元素,實現價值引領和知識傳授同行。面向對象程序設計課程是計算機專業的核心基礎課程之一,開設于大一下學期,選擇Java 語言進行課程教學。對于大學一年級的學生,課程教學過程中價值引領和知識傳授同等重要。本文以面向對象程序設計課程為例,設計可行、有效的課程思政案例。
在傳統計算機專業課程的教學過程中,教師和學生均傾向于專業知識的學習和訓練,對于課程思政的理解和學習較少。近年來,眾多從事計算機專業教學的高校教師結合學科專業和課程特點,從不同的維度開展了一系列的課程思政元素的挖掘和探索[4-5]。
面向對象程序設計強調以面向對象的模式來分析問題、設計程序,如何在教學過程中融入課程思政內容,學者們進行了相關研究,提出了自己的觀點并進行了探索。張翔等人提出了從課程融合、師資培訓、開展多樣化課程思政活動促進課程思政的融合[6];李金忠詳細分析了該課程的理論和實踐教學內容中各個模塊內容蘊含的思政元素,并結合多樣化的教學方法和實踐活動將課程思政有機地融入教學過程[7];高虎從教師自學、思政元素切入、課程資料、師生互動等方面進行了課程思政實踐的探索[8]。
隨著研究的深入和思政教育的持續改進,面向對象程序設計課程的課程思政教學和相關建設取得了較多成果,但是仍舊存在思政案例融入不夠自然、思政教育效果不理想等問題,這些問題可能對學生的專業學習和思政教育都產生不良影響。本文圍繞“立德樹人”和“專業知識教學”兩個核心任務,設計符合專業特點和課程特征的思政案例,從知識點講解和思維啟發兩個維度進行課程思政探索和實踐,促進課程思政元素更自然地融入面向對象程序設計教學之中,實現價值引領和知識傳授同行。
“類的繼承”一節是本門課程中類與對象基礎知識之后的重要內容,是以已存在的類作為父類、新增成員變量和方法建立新子類的特性。通過“類的繼承”特性設計程序能夠提升代碼的復用率并減少程序中重復的代碼量,在軟件開發過程中能夠大大縮短開發周期、降低成本。在中國共產黨發展歷程中,回顧百年黨史,汲取奮進力量,續寫輝煌篇章,是我們每一個人的時代使命。繼承黨的優良傳統,結合時代特色續寫新篇章,和“類的繼承”思想一致,在“類的繼承”教學過程中融入“百年黨史的發展與傳承”實例,加強課程的育人效果。
“類的繼承”之前主要講授了Java 的基礎語法知識和類與對象,學生對Java 語法、程序結構以及類與對象基本概念具有了初步的認識。“類的繼承”是本課程中重要的章節內容,繼承也是Java 的重要特性,本節課程從知識、能力、育人三個方面設置了三個教學目標,詳細的教學目標如表1所示,要求學生掌握“類的繼承”基本知識并能夠基于父類和類的繼承性快速設計軟件程序,同時引入思政元素,實現思想政治方面的教育引導。

表1 “類的繼承”教學目標
學生已經掌握了Java 中if、for 等語句和基本語法的使用,對于類的定義以及使用具有了基礎的認識和應用能力,但是面向對象程序設計思想以及“類與對象”概念知識運用不夠熟練,所以在“類的繼承”章節中需要在鞏固“類與對象”思想的編程應用,然后再引入繼承和子類的概念,結合對比分析、情景案例、案例實現等教學方法,使學生掌握“類的繼承”相關知識以及編程應用,增強代碼的編寫能力以及復用性,同時通過課程思政元素融入課堂教學增強學生的思想政治覺悟和學習的主動性。
“類的繼承”是類與對象相關知識擴展的內容,所以通過實例中類的定義和對比分析的方式讓學生自主總結什么是類的繼承以及子類的定義等基礎知識,同時增強學生獨立思考和自主學習的能力;然后結合黨的指導思想發展史進一步講授類的繼承特性,運用案例引出、對比分析、案例實現等教學方法使學生更深刻地理解“類的繼承”,引導學生使用發展的眼光認識黨的發展歷史,進一步引導學生用發展的眼光對待自己的學習與成長,實現“立德樹人”和“專業知識傳授”兩個核心教學目標。
本節課主要分為新課導入、知識講授和案例講解、應用實踐、回顧總結四個階段。
1)新課導入
導課階段采用之前的Person 類實例進行新課內容導入,既可以幫助學生復習鞏固類與對象的知識,又可以自然過渡到新課內容。首先基于表2中左邊一列的Person 類引導學生分析定義右邊一列的Student類,進行對比分析總結這兩個類的異同點——兩個類的定義中第2-15行代碼是相同的。相比于Person類,Student類僅新增了一個成員變量schoo(l第4行)和兩個成員方法(第17-22行),這種情形下使用類的常規定義會產生很多重復的代碼。在程序開發過程中可以利用“類的繼承”減少重復代碼的編寫、提高程序開發效率。本階段總結分析了為什么學習類的繼承,能夠較好地激發學生的學習動力。繼而引出“類的繼承”和“子類的定義”的基本概念。

表2 Person類和Student類
2)知識講授和案例講解
結合Person 類和Student 類實例講解“類的繼承、子類和父類”的基礎概念,然后介紹子類的定義以及extends關鍵字的使用方法,引導學生基于繼承的概念重新定義Student子類,利用實例輔助新課內容的講授和知識點的理解。
然后以黨的指導思想發展史為例,從馬克思主義到習近平新時代中國特色社會主義思想的不斷探索和完善,講述指導思想的繼承和創新,選擇“毛澤東思想”和“習近平新時代中國特色社會主義思想”類繪制其UML 圖,如圖1 所示,引導學生理解“類的繼承”概念和使用方法,同時進一步鞏固對于百年黨史的認識,增強學生的政治素養。

圖1 類的繼承UML圖
3)應用實踐
根據圖1 所示的UML 圖進行代碼設計和實現。這個階段充分體現學生的主體地位,借助于課件上展示的“類的繼承UML 圖”,引導學生獨立思考如何定義“毛澤東思想”類,基于該類和類的繼承性如何設計實現“習近平新時代中國特色社會主義思想”子類,從編程實現的角度進一步理解類的繼承,增強學生的實踐應用能力。
4)回顧總結
然后結合上述的應用實例總結類的繼承特點、子類的定義、子類中成員的訪問,幫助學生進一步鞏固類的繼承等知識點以及使用方法,增強學生在編程中運用繼承和持續發展的思想,提高軟件程序設計的效率,在自我成長過程中同樣需要保持持續發展的狀態,成為更加優秀的自己。
在本次教學過程中利用案例增強知識點的趣味性。首先選擇熟悉的Person 類和Student 類代碼實例對比分析提出“類的繼承”相關基本概念,重寫Student類的代碼理解“類的繼承”的應用方法實現了本節課程教學的知識目標。應用舉例環節選擇黨的指導思想發展過程實例,分析黨的指導思想發展史中繼承的優良傳統和創新發展,引導學生更深刻地了解黨的歷史和持續發展的特點,并從代碼實現的角度鞏固“類的繼承”知識的應用實踐,實現了本次教學的能力目標。在課堂上的知識總結階段引導學生用持續發展的眼光對待自己的學習與成長,幫助學生形成良好的學習觀,實現了育人目標。
在程序設計中運用這種繼承和持續發展的思想,才能更好地提高代碼的復用率,繼而提升面向對象編程的效率,課堂上使學生參與到該實例的編程實現過程中,符合了“新工科”背景下對于計算機專業學生的新要求,能夠增強學生的應用實踐能力。講授“類的繼承”知識方法的同時使學生進一步加深對于百年黨史的了解,實現了“立德樹人”和“專業知識教學”同行達,到潤物細無聲的課程思政教學效果。經過教研,學生在課后的實驗題目上也取得了較好的成績。
軟件的使用過程中會遇到很多異常的情況,在實際的軟件開發過程中,“異常處理”在處理用戶的各類異常操作、提升軟件的魯棒性和用戶的體驗方面至關重要。“異常處理”是幫助程序在解決問題的過程中捕獲和處理發生的異常情況,使得程序能夠正常運行。只有對所解決的問題進行各類異常分析,才能提高程序的魯棒性和安全性,同時在這一節教學過程中引導學生不斷精益求精,在專業學習和實踐過程中發揚工匠精神,提升職業素養,為進入軟件行業夯實基礎。
“異常處理”之前已經學習了和類與對象、封裝與繼承、接口實現等內容,學生已經具備了面向對象編程的基礎知識能力,本節是軟件開發過程中重要的應用知識。本節課程從知識、能力、育人三個方面設置了三個教學目標,詳細的教學目標如表3所示,不僅要求使學生掌握在編程中使用異常處理機制以及異常類的應用方法,同時在編程過程中發揚工匠精神、精益求精,設計魯棒性更強的程序,增強面向對象編程的成就感和自豪感。

表3 “異常處理”教學目標
學生已經掌握了基于Java 中類和對象進行面向對象編程的基本能力,也在實驗中強化了編程實踐能力,但是設計的程序僅僅能滿足實驗室環境的應用,不具備較強的魯棒性。本節的“異常處理”機制能夠增強程序的魯棒性,結合情景案例、對比分析、案例實現等教學方法,使學生掌握類的異常處理機制以及應用方法,同時通過在教學過程中引導學生不斷精益求精,設計更好地軟件,成為更好的自己。
結合日常軟件使用的體驗和問題,引入本門課的知識,將枯燥的理論知識和實際問題聯系起來,激發學生的學習興趣,學完后也能增強學生的成就感和獲得感。同時異常處理機制能夠提升應用程序的魯棒性,引導學生需要不斷地精益求精、發揚工匠精神,設計使用便利、用戶體驗良好的軟件,在學生心中深植一顆“軟件工程師”的種子。
本節課的教學過程主要分為四個環節:新課導入、知識講授、應用實踐、回顧總結。
1)新課導入
首先由學生熟悉的語音助手相關圖片開啟本節課程教學,提出問題引導學生主動思考參與課堂教學:我們平時會利用語音助手幫助定鬧鐘、到電話等,但是大家回憶一下你的手機助手在遇到它不知道的問題是怎么處理的呢?有些會告訴你正在學習中或者幫你打開瀏覽器搜索,大多數的語音助手遇到異常問題時均會給予我們一定的反饋,這也是提升用戶體驗的設計。現在大家思考一下之前編寫的程序,如圖2所示,如果遇到用戶的異常輸入比如“6 2.4”,會發生什么結果呢?此時結合代碼運行演示,根據異常的運行結果引導學生——我們應該發揮工匠精神不斷精益求精,設計適用性更強的程序,在編程過程中如何提升程序的魯棒性呢?繼而引出本節課的主題——異常處理。

圖2 整數相除代碼圖
2)知識講授
首先由圖2中例子運行的異常結果引出——程序遇到異常的情況就會拋出異常,程序中沒有考慮各類異常情況的處理時,程序運行就會報錯終止,“異常處理”可以幫助程序處理這類情況,提升程序的魯棒性。然后講授異常的相關基本概念,結合實驗中常見的“ArrayIndexOutOfBoundsException”和“NullPointerException”等異常輔助學生理解異常相關概念,然后講授Java中常見的異常類和異常處理機制——try-catch語句的使用方法。結合圖2 例子代碼在eclipse 中演示異常處理機制的使用,核心代碼如下:
現場編寫代碼演示異常處理機制的應用,運行程序解決異常終止的問題,使學生具有更強的代入感,增強學生對于異常處理機制和異常類的理解。
然后輸入“6 0”,根據出現的異常,引導學生動手編程實現該異常的處理,這樣既滿足了新工科背景下對于實踐能力的培養,同時通過程序的運行實踐增強學生的興趣并提升注意力。總結使用多個catch語句塊捕獲并處理不同的多種異常,同時也可以使用一個catch語句捕獲Exception 類及其異常子類對象處理多種異常,擴展異常處理相關知識。
3)應用實踐
利用求分數類對象的除法操作問題鞏固異常處理機制的使用,此處給予學生5分鐘的思考時間,然后找同學上臺演示如何通過異常處理機制的使用捕獲異常,使學生參與到課堂教學中來,增強學生的實踐能力。
4)回顧總結
首先回顧總結常見的異常相關類、異常處理機制try-catch 語句,然后引導學生思考:對于面向對象程序設計有什么新的認識?引導學生對比分析僅考慮正確性和異常處理兼顧的程序設計過程,增強程序的正確性和魯棒性同樣重要的意識,在編程的過程中不僅要考慮程序的正確性,同時應該精益求精,通過異常處理方法提升程序的魯棒性,這樣才可以提升用戶的體驗,為以后設計優秀的軟件奠定基礎。
本節課主要講授Java中的異常處理,重點介紹了異常類和異常處理機制try-catch語句的使用,使學生構建程序設計過程中異常處理的知識體系,實現了本節課的知識目標。課堂上由語音助手和前面實驗中編寫的代碼實例導入新課,不僅激發了學生的興趣,同時基于前面實驗中的程序和對比學習法,輔助學生理解異常處理的知識,動手編寫程序完成練習,實現能力目標。在課堂總結的環節,引導學生養成不斷探索、精益求精的學習精神,程序設計的過程中,正確性和魯棒性兼顧才能設計更好的軟件、成為一名優秀的軟件工程師,實現育人目標。
在軟件開發過程中異常處理是至關重要的,本次課程通過代碼實例引入“異常處理”概念知識,同時結合編碼實現增強學生對于異常處理機制的使用方法,在程序設計過程中發揚工匠精神、不斷地精益求精,設計能夠應對各種異常情況的程序。教學過程中充分發揮學生的主體地位,設置練習,學生獨立思考編寫程序、共同演示運行結果,增強學生的代入感和成就感,加深對于知識的理解,滿足新工科對于工科教育的要求。學習利用異常處理機制如何設計魯棒性更強的程序的同時,引導學生在學習、生活以及以后的工作中也要不斷地精益求精、發揚工匠精神,才可以開發更優秀的軟件,實現教書和育人同行。經過教研,課后的實驗作業成績反饋中,同學們能夠較好地掌握了異常處理機制的使用方法。
在面向對象程序設計的課程教學中,老師要充分圍繞“立德樹人”和“專業知識教學”的雙重根本任務開展教學活動,落實到每一節課堂中。本文對于本課程的教學過程中兩個思政案例實施過程進行詳細的闡述和思考,以中國共產黨指導思想的發展史案例輔助理解“類的繼承”知識點和“異常處理”知識教學中引導學生在程序設計中不斷精益求精、發揚工匠精神兩種不同的模式進行了課程思政的探索。為了更好地開展課程思政,今后需要進一步探索新工科背景下具有計算機類專業特色的課程思政案例,讓學生可以在學習專業知識的基礎上,同時進行愛國、奉獻、敬業、創新精神教育的熏陶,進而為國家培養出符合中國特色和時代需求的新興人才。