段延超 呂永飛 李 鑫
河南開封科技傳媒學院 河南開封 475001
我國高等院校分為研究型大學、應用型大學、技能型大學。《國家中長期教育改革和發展規劃綱要(2010—2020年)》指出:“不斷優化高等教育結構,優化學科專業、類型、層次結構,促進多學科交叉和融合,重點擴大應用型、復合型、技能型人才培養規模。”[1]
國家對應用型人才培養日益重視。為了培養高質量的計算機類應用型人才,提升學生的綜合編程能力是十分重要的。
C#是計算機類本科生學習的編程語言之一,C#程序設計課程屬于比較典型的應用型課程。通過該課程的學習,學生應能熟悉.NET Framework框架,掌握Visual Studio開發工具的使用,掌握C#的基礎語法,掌握面向對象的思想,熟悉常用類的使用,掌握文件讀取,掌握數據庫讀取等,還需掌握WinFrom桌面應用程序、WPF桌面應用程序、ASP.NET網站、嵌入式等其中至少一種方向的開發技術。
本文討論C#程序設計課程在應用型人才培養的教學探索,旨在提高學生對編程語言的理解程度,提升學生對“數據結構”“數據庫”等課程的貫通能力,提升學生的編程能力、促進產教融合等,為社會主義現代化建設培養出高素質的應用型人才[2]。
大多應用型院校在教學中存在很多問題,不利于應用型人才的培養,其培養的學生不能滿足社會和企業的要求[3]。下面從C#程序設計課程的角度分析應用型人才培養在教學中所面臨的主要問題。
國內高校普遍為計算機類新生開設C/C++課程作為入門級的編程語言課程。偏軟件方向的計算機類學生還會學習到Python、Java、C#等編程語言課程。一方面,C#程序設計課程一般在講授完C、C++和Java等編程語言課程后才會講授。因此,大部分學生認為既然已經學習了其他編程語言,C#學不學無關緊要。另一方面,C#編程語言吸收了C、C++、Java等多門編程語言的優點,特別是與Java編程語言基礎語法高度重合,在講授到相類似的知識點時,造成學生已經掌握的假象。另外,互聯網公司招聘Java工程師的薪資和人數要遠多于C#工程師的,這也是學生不予重視課程的主要原因之一。
編程語言類課程需要學生勤加思考、多加練習,才能更好地掌握編程語言。在學習完C#語言基礎后,學生會繼續學習與Java等語言差別較大的知識點,如WinForm、WPF桌面應用程序的開發等。然而,由于學生在課程前期不予重視,中后期學習便有了難度。這就導致了學生理論課不重視,實驗課不愿動腦思考、不愿意多敲代碼,從而無法跟上后續課程的講解,引發了學生畏學情緒。
編程語言類授課模式一般分為理論和實驗兩個獨立課程。在多媒體教室講授理論課程,讓學生掌握基礎理論知識;在機房引導學生做實驗,對理論課程進行驗證,特別是提高學生的編程能力。然而,通過調查發現,在理論課上遇到問題,很少有學生在實驗課去驗證問題和解決問題。另外,實驗內容采用教材中的實驗,未能根據學生掌握的情況重新設計。因此,導致理論課程與實驗課程結合不緊密的情況出現。
由于教材各章節知識點較為獨立,按照章節逐個講解,導致知識點過于零碎。例如,在講授完數組和集合后,提問學生數組和集合的差別,大多只能簡單地說出如何使用數組、集合,但不能回答出兩者的異同處。再者,課程的先修課程包含數據庫,在講解完ADO.NET訪問數據庫后,只有少數學生能理解C#程序設計課程和“數據庫”課程之間的聯系。在課程全部結束后,大多數學生只能根據需求寫出具有某個功能的代碼段,而不能系統地、完整地開發一個完整的項目。
根據多個國內招聘網站的招聘需求分析,C#工程師職位要求:本科生要精通C#語言,熟悉WPF、WinForm、ASP.NET開發技術,熟悉常規框架的使用,熟悉數據庫技術等。然而,教師受課時限制很少能講解常用框架、設計模式等方面知識,學生往往不能滿足企業招聘要求。
應用型人才的培養從培養目標、培養方案、教學模式、教學評價、學校制度等方面改革,形成全新的人才培養體系[4]。C#程序設計課程教學改革的重點是提高學生的編程能力,通過完整項目將所有知識點串聯起來,而不是停留在只學習語法基礎上。分析國內高校在教學中普遍存在的問題,需要對教學模式進行改革。具體改革內容從以下幾方面進行探索,實施了教學改革后,發現學生編程能力和成績普遍得到了提高。
3.1.1 對比教學
由于C#的基礎語法與Java相似度較高,與C++、Python等也有很多相似之處。為解決學生對課程重視程度不高的問題,在講授C#基礎語法的同時,采用對比教學的方式,講解C#與Java、C++等編程語言的異同,引起學生的興趣,提升學生對課程的重視程度。在讓學生掌握C#基礎語法的同時,也提升對其他編程語言的理解。對比教學講解如表1所示。

表1 對比教學主要涵蓋知識點
3.1.2 理論實驗一體化
教學改革前,理論課學時和實驗課學時均為32學時,合計64學時。為解決學生對課程有畏學情緒、理論課程與實驗課程結合不緊密的問題,改變理論、實驗分開授課的方式,在保持64學時數不變的前提下,重新設計教學大綱、教學進度表、授課內容等,使課程全部在機房授課。讓學生在練中學、學中練、遇到問題、解決問題,促進學生提高編程能力。
3.1.3 分組管理
為了產生更好的教學效果,對學生進行分組管理,每組人數根據機房每排計算機個數所決定,例如,每排10人組成兩組,每組人數4~6人,每個小組內推選出1名編程能力較強的學生作為組長。組長除了負責指導小組成員學習外,還要向教師反映小組成員學習情況,便于教師根據情況及時調整教學進度。除此之外,成立小組的目的也是為了培養學生的團隊合作能力。各小組需要在學期結束前合作開發完成一個綜合設計的項目。
3.1.4 綜合案例教學
為解決課程知識點零碎,無法形成有機整體和不滿足企業招聘要求的問題,將教材中知識點和企業招聘要求的知識點串聯起來,設計綜合案例(見圖1),形成一個有機的整體,從而引導學生高效學習。綜合案例源碼直接發給學生,源碼主要包含課堂學習和課下自學兩部分內容。課堂學習中的案例由教師講解知識點后,讓學生自主實現類似功能,同時給學生提供解決問題的示范代碼。課下自學中的案例是對C#基礎知識的擴展,學生根據情況自行選擇性學習。綜合教學案例設計好后,不僅極大地提高了教師的教學效率,而且更好地幫助了學生進行自主、系統學習。

圖1 C#程序設計課程綜合案例
3.1.5 課程作業
課程改革后不再設置紙質版作業,全部由電子版作業構成,課程作業分為思維導圖和上機練習兩部分。在講解C#基礎知識期間,每周提交一次思維導圖作業,夯實理論基礎;在講解使用C#開發桌面應用程序等內容期間,以編程為主,對思維導圖不做強制要求。上機練習則要求每次課程結束時都要提交,為了便于教師掌握學生作業完成情況,所有上機練習源碼以章節為單位創建項目放在同一個解決方案中,不再保存為多個解決方案。
將C#程序設計課程分為初期、中期和后期三個階段,其中初期和中期在教學過程中展開,后期采用產教融合的方式在課程結束后展開。初期主要以打牢基礎為目標,系統性地講解本門課程。吸取校外培訓機構如傳智播客等教學模式,提升學生的學習積極性、動手能力[5]。中期設立案例庫,將真實案例、常用架構、模式融入。這可以讓學生完成案例,使學生熟悉一般架構,提高學生個人的編程能力。最后,學生以小組的方式共同完成一個完整的項目,以此培養學生的協同合作能力。后期與學校產業學院共同合作開發項目。通過種方式,既提升了學生的編程能力,也能讓企業從中獲利。
教學改革前,課程考核方式為平時成績占30%(平時成績10%、課堂表現10%、上機作業10%),期末成績占70%。教學改革后,為突出學生動手能力,提高學生編程的主動性,將平時成績占比提升至55%,期末成績占45%。平時成績由課堂考勤、課堂表現、上機作業、綜合大作業四部分組成,分別占10%、10%、20%和15%。其中,綜合大作業是指分組后團隊合作完成的完整的項目開發,旨在考查團隊合作能力。
2021年春季學期(大三下半學期),2019級計算機科學與技術、數據科學與大數據技術專業為教學改革前的上課班級。2022年春季學期(大三下半學期),2020級計算機科學與技術專業和數據科學與大數據技術專業為教學改革后的上課班級。兩個學期的教學均采用線下教學、線下期末考試的方式。現從期末成績(不包含平時成績)、動手能力、學生評價三方面進行分析。

表2 期末成績分析表
兩次期末考試題型、題量、分值均一致,難度近似。根據表2數據不難發現,2020級學生成績在90分以上占比遠多于2019級學生,無不及格學生。其中,2020級計算機科學與技術80分以上的學生占比68%、2020級數據科學 與大數據技術80分以上的學生占比71%。
為了考查學生編程能力,學期的最后一節課會考查學生動手編程能力,主要從項目創建、C#基礎、類的設計、窗體設計、操作數據庫五部分出題。從2019級與2020級編程能力直方圖(見圖2)可以發現,經教學改革后,學生普遍提高了編程能力。

圖2 編程能力分析圖
通過調查問卷發現,2020級上課學生中有83%對教學改革給予支持、12%給予中立、5%不支持。
在教學改革中,也遇到了一些問題。例如,由于授課地點全部在機房,部分學生出現不認真聽講現象,并且,在機房授課不如在多媒體教室與學生互動多。但從教學效果看,教學改革后效果顯著,極大地提高了學生的編程能力與成績。
本文從應用型人才培養的角度出發,分析了C#程序設計課程在傳統授課模式中所面臨的問題,提出了從教學模式、階段教學和考核方式方面進行改革探索。通過教學改革探索,學生明顯提升了應用能力,也達到了國家對應用型人才培養的要求。在以后的教學中,應繼續努力提高教學質量和學生的編程能力。