段延超 呂永飛 李 鑫
河南開(kāi)封科技傳媒學(xué)院 河南開(kāi)封 475001
我國(guó)高等院校分為研究型大學(xué)、應(yīng)用型大學(xué)、技能型大學(xué)。《國(guó)家中長(zhǎng)期教育改革和發(fā)展規(guī)劃綱要(2010—2020年)》指出:“不斷優(yōu)化高等教育結(jié)構(gòu),優(yōu)化學(xué)科專業(yè)、類型、層次結(jié)構(gòu),促進(jìn)多學(xué)科交叉和融合,重點(diǎn)擴(kuò)大應(yīng)用型、復(fù)合型、技能型人才培養(yǎng)規(guī)模。”[1]
國(guó)家對(duì)應(yīng)用型人才培養(yǎng)日益重視。為了培養(yǎng)高質(zhì)量的計(jì)算機(jī)類應(yīng)用型人才,提升學(xué)生的綜合編程能力是十分重要的。
C#是計(jì)算機(jī)類本科生學(xué)習(xí)的編程語(yǔ)言之一,C#程序設(shè)計(jì)課程屬于比較典型的應(yīng)用型課程。通過(guò)該課程的學(xué)習(xí),學(xué)生應(yīng)能熟悉.NET Framework框架,掌握Visual Studio開(kāi)發(fā)工具的使用,掌握C#的基礎(chǔ)語(yǔ)法,掌握面向?qū)ο蟮乃枷耄煜こS妙惖氖褂?,掌握文件讀取,掌握數(shù)據(jù)庫(kù)讀取等,還需掌握WinFrom桌面應(yīng)用程序、WPF桌面應(yīng)用程序、ASP.NET網(wǎng)站、嵌入式等其中至少一種方向的開(kāi)發(fā)技術(shù)。
本文討論C#程序設(shè)計(jì)課程在應(yīng)用型人才培養(yǎng)的教學(xué)探索,旨在提高學(xué)生對(duì)編程語(yǔ)言的理解程度,提升學(xué)生對(duì)“數(shù)據(jù)結(jié)構(gòu)”“數(shù)據(jù)庫(kù)”等課程的貫通能力,提升學(xué)生的編程能力、促進(jìn)產(chǎn)教融合等,為社會(huì)主義現(xiàn)代化建設(shè)培養(yǎng)出高素質(zhì)的應(yīng)用型人才[2]。
大多應(yīng)用型院校在教學(xué)中存在很多問(wèn)題,不利于應(yīng)用型人才的培養(yǎng),其培養(yǎng)的學(xué)生不能滿足社會(huì)和企業(yè)的要求[3]。下面從C#程序設(shè)計(jì)課程的角度分析應(yīng)用型人才培養(yǎng)在教學(xué)中所面臨的主要問(wèn)題。
國(guó)內(nèi)高校普遍為計(jì)算機(jī)類新生開(kāi)設(shè)C/C++課程作為入門(mén)級(jí)的編程語(yǔ)言課程。偏軟件方向的計(jì)算機(jī)類學(xué)生還會(huì)學(xué)習(xí)到Python、Java、C#等編程語(yǔ)言課程。一方面,C#程序設(shè)計(jì)課程一般在講授完C、C++和Java等編程語(yǔ)言課程后才會(huì)講授。因此,大部分學(xué)生認(rèn)為既然已經(jīng)學(xué)習(xí)了其他編程語(yǔ)言,C#學(xué)不學(xué)無(wú)關(guān)緊要。另一方面,C#編程語(yǔ)言吸收了C、C++、Java等多門(mén)編程語(yǔ)言的優(yōu)點(diǎn),特別是與Java編程語(yǔ)言基礎(chǔ)語(yǔ)法高度重合,在講授到相類似的知識(shí)點(diǎn)時(shí),造成學(xué)生已經(jīng)掌握的假象。另外,互聯(lián)網(wǎng)公司招聘Java工程師的薪資和人數(shù)要遠(yuǎn)多于C#工程師的,這也是學(xué)生不予重視課程的主要原因之一。
編程語(yǔ)言類課程需要學(xué)生勤加思考、多加練習(xí),才能更好地掌握編程語(yǔ)言。在學(xué)習(xí)完C#語(yǔ)言基礎(chǔ)后,學(xué)生會(huì)繼續(xù)學(xué)習(xí)與Java等語(yǔ)言差別較大的知識(shí)點(diǎn),如WinForm、WPF桌面應(yīng)用程序的開(kāi)發(fā)等。然而,由于學(xué)生在課程前期不予重視,中后期學(xué)習(xí)便有了難度。這就導(dǎo)致了學(xué)生理論課不重視,實(shí)驗(yàn)課不愿動(dòng)腦思考、不愿意多敲代碼,從而無(wú)法跟上后續(xù)課程的講解,引發(fā)了學(xué)生畏學(xué)情緒。
編程語(yǔ)言類授課模式一般分為理論和實(shí)驗(yàn)兩個(gè)獨(dú)立課程。在多媒體教室講授理論課程,讓學(xué)生掌握基礎(chǔ)理論知識(shí);在機(jī)房引導(dǎo)學(xué)生做實(shí)驗(yàn),對(duì)理論課程進(jìn)行驗(yàn)證,特別是提高學(xué)生的編程能力。然而,通過(guò)調(diào)查發(fā)現(xiàn),在理論課上遇到問(wèn)題,很少有學(xué)生在實(shí)驗(yàn)課去驗(yàn)證問(wèn)題和解決問(wèn)題。另外,實(shí)驗(yàn)內(nèi)容采用教材中的實(shí)驗(yàn),未能根據(jù)學(xué)生掌握的情況重新設(shè)計(jì)。因此,導(dǎo)致理論課程與實(shí)驗(yàn)課程結(jié)合不緊密的情況出現(xiàn)。
由于教材各章節(jié)知識(shí)點(diǎn)較為獨(dú)立,按照章節(jié)逐個(gè)講解,導(dǎo)致知識(shí)點(diǎn)過(guò)于零碎。例如,在講授完數(shù)組和集合后,提問(wèn)學(xué)生數(shù)組和集合的差別,大多只能簡(jiǎn)單地說(shuō)出如何使用數(shù)組、集合,但不能回答出兩者的異同處。再者,課程的先修課程包含數(shù)據(jù)庫(kù),在講解完ADO.NET訪問(wèn)數(shù)據(jù)庫(kù)后,只有少數(shù)學(xué)生能理解C#程序設(shè)計(jì)課程和“數(shù)據(jù)庫(kù)”課程之間的聯(lián)系。在課程全部結(jié)束后,大多數(shù)學(xué)生只能根據(jù)需求寫(xiě)出具有某個(gè)功能的代碼段,而不能系統(tǒng)地、完整地開(kāi)發(fā)一個(gè)完整的項(xiàng)目。
根據(jù)多個(gè)國(guó)內(nèi)招聘網(wǎng)站的招聘需求分析,C#工程師職位要求:本科生要精通C#語(yǔ)言,熟悉WPF、WinForm、ASP.NET開(kāi)發(fā)技術(shù),熟悉常規(guī)框架的使用,熟悉數(shù)據(jù)庫(kù)技術(shù)等。然而,教師受課時(shí)限制很少能講解常用框架、設(shè)計(jì)模式等方面知識(shí),學(xué)生往往不能滿足企業(yè)招聘要求。
應(yīng)用型人才的培養(yǎng)從培養(yǎng)目標(biāo)、培養(yǎng)方案、教學(xué)模式、教學(xué)評(píng)價(jià)、學(xué)校制度等方面改革,形成全新的人才培養(yǎng)體系[4]。C#程序設(shè)計(jì)課程教學(xué)改革的重點(diǎn)是提高學(xué)生的編程能力,通過(guò)完整項(xiàng)目將所有知識(shí)點(diǎn)串聯(lián)起來(lái),而不是停留在只學(xué)習(xí)語(yǔ)法基礎(chǔ)上。分析國(guó)內(nèi)高校在教學(xué)中普遍存在的問(wèn)題,需要對(duì)教學(xué)模式進(jìn)行改革。具體改革內(nèi)容從以下幾方面進(jìn)行探索,實(shí)施了教學(xué)改革后,發(fā)現(xiàn)學(xué)生編程能力和成績(jī)普遍得到了提高。
3.1.1 對(duì)比教學(xué)
由于C#的基礎(chǔ)語(yǔ)法與Java相似度較高,與C++、Python等也有很多相似之處。為解決學(xué)生對(duì)課程重視程度不高的問(wèn)題,在講授C#基礎(chǔ)語(yǔ)法的同時(shí),采用對(duì)比教學(xué)的方式,講解C#與Java、C++等編程語(yǔ)言的異同,引起學(xué)生的興趣,提升學(xué)生對(duì)課程的重視程度。在讓學(xué)生掌握C#基礎(chǔ)語(yǔ)法的同時(shí),也提升對(duì)其他編程語(yǔ)言的理解。對(duì)比教學(xué)講解如表1所示。
表1 對(duì)比教學(xué)主要涵蓋知識(shí)點(diǎn)
3.1.2 理論實(shí)驗(yàn)一體化
教學(xué)改革前,理論課學(xué)時(shí)和實(shí)驗(yàn)課學(xué)時(shí)均為32學(xué)時(shí),合計(jì)64學(xué)時(shí)。為解決學(xué)生對(duì)課程有畏學(xué)情緒、理論課程與實(shí)驗(yàn)課程結(jié)合不緊密的問(wèn)題,改變理論、實(shí)驗(yàn)分開(kāi)授課的方式,在保持64學(xué)時(shí)數(shù)不變的前提下,重新設(shè)計(jì)教學(xué)大綱、教學(xué)進(jìn)度表、授課內(nèi)容等,使課程全部在機(jī)房授課。讓學(xué)生在練中學(xué)、學(xué)中練、遇到問(wèn)題、解決問(wèn)題,促進(jìn)學(xué)生提高編程能力。
3.1.3 分組管理
為了產(chǎn)生更好的教學(xué)效果,對(duì)學(xué)生進(jìn)行分組管理,每組人數(shù)根據(jù)機(jī)房每排計(jì)算機(jī)個(gè)數(shù)所決定,例如,每排10人組成兩組,每組人數(shù)4~6人,每個(gè)小組內(nèi)推選出1名編程能力較強(qiáng)的學(xué)生作為組長(zhǎng)。組長(zhǎng)除了負(fù)責(zé)指導(dǎo)小組成員學(xué)習(xí)外,還要向教師反映小組成員學(xué)習(xí)情況,便于教師根據(jù)情況及時(shí)調(diào)整教學(xué)進(jìn)度。除此之外,成立小組的目的也是為了培養(yǎng)學(xué)生的團(tuán)隊(duì)合作能力。各小組需要在學(xué)期結(jié)束前合作開(kāi)發(fā)完成一個(gè)綜合設(shè)計(jì)的項(xiàng)目。
3.1.4 綜合案例教學(xué)
為解決課程知識(shí)點(diǎn)零碎,無(wú)法形成有機(jī)整體和不滿足企業(yè)招聘要求的問(wèn)題,將教材中知識(shí)點(diǎn)和企業(yè)招聘要求的知識(shí)點(diǎn)串聯(lián)起來(lái),設(shè)計(jì)綜合案例(見(jiàn)圖1),形成一個(gè)有機(jī)的整體,從而引導(dǎo)學(xué)生高效學(xué)習(xí)。綜合案例源碼直接發(fā)給學(xué)生,源碼主要包含課堂學(xué)習(xí)和課下自學(xué)兩部分內(nèi)容。課堂學(xué)習(xí)中的案例由教師講解知識(shí)點(diǎn)后,讓學(xué)生自主實(shí)現(xiàn)類似功能,同時(shí)給學(xué)生提供解決問(wèn)題的示范代碼。課下自學(xué)中的案例是對(duì)C#基礎(chǔ)知識(shí)的擴(kuò)展,學(xué)生根據(jù)情況自行選擇性學(xué)習(xí)。綜合教學(xué)案例設(shè)計(jì)好后,不僅極大地提高了教師的教學(xué)效率,而且更好地幫助了學(xué)生進(jìn)行自主、系統(tǒng)學(xué)習(xí)。
圖1 C#程序設(shè)計(jì)課程綜合案例
3.1.5 課程作業(yè)
課程改革后不再設(shè)置紙質(zhì)版作業(yè),全部由電子版作業(yè)構(gòu)成,課程作業(yè)分為思維導(dǎo)圖和上機(jī)練習(xí)兩部分。在講解C#基礎(chǔ)知識(shí)期間,每周提交一次思維導(dǎo)圖作業(yè),夯實(shí)理論基礎(chǔ);在講解使用C#開(kāi)發(fā)桌面應(yīng)用程序等內(nèi)容期間,以編程為主,對(duì)思維導(dǎo)圖不做強(qiáng)制要求。上機(jī)練習(xí)則要求每次課程結(jié)束時(shí)都要提交,為了便于教師掌握學(xué)生作業(yè)完成情況,所有上機(jī)練習(xí)源碼以章節(jié)為單位創(chuàng)建項(xiàng)目放在同一個(gè)解決方案中,不再保存為多個(gè)解決方案。
將C#程序設(shè)計(jì)課程分為初期、中期和后期三個(gè)階段,其中初期和中期在教學(xué)過(guò)程中展開(kāi),后期采用產(chǎn)教融合的方式在課程結(jié)束后展開(kāi)。初期主要以打牢基礎(chǔ)為目標(biāo),系統(tǒng)性地講解本門(mén)課程。吸取校外培訓(xùn)機(jī)構(gòu)如傳智播客等教學(xué)模式,提升學(xué)生的學(xué)習(xí)積極性、動(dòng)手能力[5]。中期設(shè)立案例庫(kù),將真實(shí)案例、常用架構(gòu)、模式融入。這可以讓學(xué)生完成案例,使學(xué)生熟悉一般架構(gòu),提高學(xué)生個(gè)人的編程能力。最后,學(xué)生以小組的方式共同完成一個(gè)完整的項(xiàng)目,以此培養(yǎng)學(xué)生的協(xié)同合作能力。后期與學(xué)校產(chǎn)業(yè)學(xué)院共同合作開(kāi)發(fā)項(xiàng)目。通過(guò)種方式,既提升了學(xué)生的編程能力,也能讓企業(yè)從中獲利。
教學(xué)改革前,課程考核方式為平時(shí)成績(jī)占30%(平時(shí)成績(jī)10%、課堂表現(xiàn)10%、上機(jī)作業(yè)10%),期末成績(jī)占70%。教學(xué)改革后,為突出學(xué)生動(dòng)手能力,提高學(xué)生編程的主動(dòng)性,將平時(shí)成績(jī)占比提升至55%,期末成績(jī)占45%。平時(shí)成績(jī)由課堂考勤、課堂表現(xiàn)、上機(jī)作業(yè)、綜合大作業(yè)四部分組成,分別占10%、10%、20%和15%。其中,綜合大作業(yè)是指分組后團(tuán)隊(duì)合作完成的完整的項(xiàng)目開(kāi)發(fā),旨在考查團(tuán)隊(duì)合作能力。
2021年春季學(xué)期(大三下半學(xué)期),2019級(jí)計(jì)算機(jī)科學(xué)與技術(shù)、數(shù)據(jù)科學(xué)與大數(shù)據(jù)技術(shù)專業(yè)為教學(xué)改革前的上課班級(jí)。2022年春季學(xué)期(大三下半學(xué)期),2020級(jí)計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)和數(shù)據(jù)科學(xué)與大數(shù)據(jù)技術(shù)專業(yè)為教學(xué)改革后的上課班級(jí)。兩個(gè)學(xué)期的教學(xué)均采用線下教學(xué)、線下期末考試的方式?,F(xiàn)從期末成績(jī)(不包含平時(shí)成績(jī))、動(dòng)手能力、學(xué)生評(píng)價(jià)三方面進(jìn)行分析。
表2 期末成績(jī)分析表
兩次期末考試題型、題量、分值均一致,難度近似。根據(jù)表2數(shù)據(jù)不難發(fā)現(xiàn),2020級(jí)學(xué)生成績(jī)?cè)?0分以上占比遠(yuǎn)多于2019級(jí)學(xué)生,無(wú)不及格學(xué)生。其中,2020級(jí)計(jì)算機(jī)科學(xué)與技術(shù)80分以上的學(xué)生占比68%、2020級(jí)數(shù)據(jù)科學(xué) 與大數(shù)據(jù)技術(shù)80分以上的學(xué)生占比71%。
為了考查學(xué)生編程能力,學(xué)期的最后一節(jié)課會(huì)考查學(xué)生動(dòng)手編程能力,主要從項(xiàng)目創(chuàng)建、C#基礎(chǔ)、類的設(shè)計(jì)、窗體設(shè)計(jì)、操作數(shù)據(jù)庫(kù)五部分出題。從2019級(jí)與2020級(jí)編程能力直方圖(見(jiàn)圖2)可以發(fā)現(xiàn),經(jīng)教學(xué)改革后,學(xué)生普遍提高了編程能力。
圖2 編程能力分析圖
通過(guò)調(diào)查問(wèn)卷發(fā)現(xiàn),2020級(jí)上課學(xué)生中有83%對(duì)教學(xué)改革給予支持、12%給予中立、5%不支持。
在教學(xué)改革中,也遇到了一些問(wèn)題。例如,由于授課地點(diǎn)全部在機(jī)房,部分學(xué)生出現(xiàn)不認(rèn)真聽(tīng)講現(xiàn)象,并且,在機(jī)房授課不如在多媒體教室與學(xué)生互動(dòng)多。但從教學(xué)效果看,教學(xué)改革后效果顯著,極大地提高了學(xué)生的編程能力與成績(jī)。
本文從應(yīng)用型人才培養(yǎng)的角度出發(fā),分析了C#程序設(shè)計(jì)課程在傳統(tǒng)授課模式中所面臨的問(wèn)題,提出了從教學(xué)模式、階段教學(xué)和考核方式方面進(jìn)行改革探索。通過(guò)教學(xué)改革探索,學(xué)生明顯提升了應(yīng)用能力,也達(dá)到了國(guó)家對(duì)應(yīng)用型人才培養(yǎng)的要求。在以后的教學(xué)中,應(yīng)繼續(xù)努力提高教學(xué)質(zhì)量和學(xué)生的編程能力。