江 燕
(南京審計(jì)大學(xué)金審學(xué)院,江蘇 南京 210033)
響應(yīng)國(guó)家號(hào)召科創(chuàng)精神,落實(shí)省科協(xié)的“科創(chuàng)江蘇”三年計(jì)劃,江蘇省計(jì)算機(jī)學(xué)會(huì)于2021年4月24日舉辦了“基于信息技術(shù)國(guó)有自主可控科教實(shí)踐創(chuàng)新”產(chǎn)教融合研討會(huì),會(huì)議強(qiáng)調(diào):緊扣科技自立自強(qiáng),著力解決“卡脖子”問(wèn)題,加快建立自主可控的產(chǎn)業(yè)鏈體系是當(dāng)務(wù)之急。會(huì)上南京知名高校教授先后做了精彩的報(bào)告,提出了“基于信創(chuàng)平臺(tái)構(gòu)建培養(yǎng)系統(tǒng)能力的課程體系和實(shí)踐體系”,指出了人才的培養(yǎng)是實(shí)現(xiàn)國(guó)有自主可控最有效的方法。而當(dāng)前高等教育存在的問(wèn)題是培養(yǎng)的學(xué)生缺乏解決復(fù)雜問(wèn)題的能力。一方面學(xué)生有些眼高手低,另一方面是大部分教學(xué)內(nèi)容缺乏高階性和創(chuàng)新性,需要進(jìn)一步改進(jìn)。因此,為了讓學(xué)生能更好地掌握和運(yùn)用專業(yè)知識(shí),會(huì)遷移知識(shí),會(huì)創(chuàng)新,對(duì)大學(xué)專業(yè)課程進(jìn)行改革有著重大的意義?!癈語(yǔ)言程序設(shè)計(jì)”是計(jì)算機(jī)相關(guān)專業(yè)學(xué)生入學(xué)后學(xué)習(xí)的第一門編程類課程,是后續(xù)各種編程類課程的基礎(chǔ)。然而,學(xué)生普遍覺(jué)得 C語(yǔ)言理論性強(qiáng),內(nèi)容抽象,知識(shí)點(diǎn)零碎,難以掌握。因此,“C語(yǔ)言程序設(shè)計(jì)”課程改革,對(duì)提高教學(xué)質(zhì)量和培養(yǎng)高素質(zhì)應(yīng)用型人才具有十分重要的意義。
“C語(yǔ)言程序設(shè)計(jì)”是普通本科計(jì)算機(jī)科學(xué)與技術(shù)相關(guān)專業(yè)的一門專業(yè)基礎(chǔ)課。通過(guò)本課程的教學(xué)和學(xué)習(xí),要求學(xué)生掌握C語(yǔ)言的基本概念、各種數(shù)據(jù)類型的特點(diǎn)及使用技巧和各種語(yǔ)句的用法,掌握以函數(shù)、指針為特征的C語(yǔ)言模塊化設(shè)計(jì)方法,熟悉文件的操作和使用,達(dá)到具有運(yùn)用C語(yǔ)言進(jìn)行程序設(shè)計(jì)的能力。
“C語(yǔ)言程序設(shè)計(jì)”的前導(dǎo)課程是“大學(xué)計(jì)算機(jī)基礎(chǔ)”“計(jì)算機(jī)導(dǎo)論”,后續(xù)課程有“數(shù)據(jù)結(jié)構(gòu)”“編譯原理”等,它起到承上啟下的橋梁作用。
“C語(yǔ)言程序設(shè)計(jì)”課程具有“內(nèi)容抽象,理論性強(qiáng),實(shí)踐要求高”的特點(diǎn),對(duì)學(xué)生的邏輯思維能力要求高,學(xué)生學(xué)習(xí)難度較大,采用以往單一的線下課堂教學(xué)模式,較難達(dá)到滿意的教學(xué)質(zhì)量,出現(xiàn)的問(wèn)題有以下幾個(gè)方面。
對(duì)于編程類的課程,普遍存在這樣的問(wèn)題:線下課堂受課時(shí)限制,無(wú)法對(duì)課程進(jìn)行充分的針對(duì)性輔導(dǎo)和作業(yè)反饋。針對(duì)這一問(wèn)題,可以考慮利用MOOC平臺(tái)上的在線課程,幫助學(xué)生完成知識(shí)點(diǎn)復(fù)習(xí)、習(xí)題解析、編程題演示及自主練習(xí)環(huán)節(jié)??紤]到學(xué)生學(xué)習(xí)時(shí)間的安排和自覺(jué)性,MOOC課程構(gòu)建建議采用“串講復(fù)習(xí)視頻+易錯(cuò)題講解+練習(xí)題+答疑討論”的形式,避免與線下授課內(nèi)容高度重合,讓學(xué)生能更高效率地完成相關(guān)知識(shí)點(diǎn)的復(fù)習(xí)和強(qiáng)化,而不會(huì)產(chǎn)生乏味的、對(duì)付的情緒。
線上的串講視頻可幫助學(xué)生梳理知識(shí)點(diǎn),把握重難點(diǎn);更關(guān)鍵的是線上的OJ自動(dòng)批改功能,可實(shí)現(xiàn)學(xué)生代碼題的批改和調(diào)試錯(cuò)誤的顯示,能有效地延展了線下課堂的教學(xué)時(shí)間,彌補(bǔ)線下指導(dǎo)存在的不足。
在以往的教學(xué)過(guò)程中發(fā)現(xiàn)有部分學(xué)生會(huì)中途自我放棄,究其原因,大致有以下兩個(gè)方面:
(1)這部分學(xué)生大多是學(xué)習(xí)過(guò)程中出現(xiàn)問(wèn)題而又不主動(dòng)解決問(wèn)題,積壓?jiǎn)栴}跟不上講授進(jìn)度而中途產(chǎn)生畏難心理,自我放棄。
(2)若這部分學(xué)生占比較大,就要考慮課程內(nèi)容安排是否合理。如果內(nèi)容安排不太符合一般認(rèn)知規(guī)律,讓學(xué)生一開始就覺(jué)得困難重重,無(wú)法掌握,產(chǎn)生消極心理也是可以理解的。
針對(duì)這一現(xiàn)象,一方面要想辦法提高學(xué)生的學(xué)習(xí)興趣,另一方面教師也應(yīng)對(duì)授課內(nèi)容以及課時(shí)安排和順序做適當(dāng)?shù)恼{(diào)整。
根據(jù)多年的任課經(jīng)驗(yàn),內(nèi)容分為基礎(chǔ)和進(jìn)階兩個(gè)部分比較合適?;A(chǔ)部分包括: “第一個(gè)C程序”,基本數(shù)據(jù)類型、運(yùn)算符及表達(dá)式、基本流程結(jié)構(gòu)、自定義函數(shù)、變量作用域、指針、數(shù)組、結(jié)構(gòu)體;通過(guò)基礎(chǔ)部分的學(xué)習(xí),學(xué)生能完成一個(gè)簡(jiǎn)單的成績(jī)管理系統(tǒng)設(shè)計(jì),學(xué)生小有成就感的同時(shí),也已初步了解開發(fā)一個(gè)小系統(tǒng)的過(guò)程;在此基礎(chǔ)上,教師再?gòu)膶W(xué)生已設(shè)計(jì)的簡(jiǎn)單系統(tǒng)提出優(yōu)化方案,引入進(jìn)階部分的內(nèi)容。進(jìn)階部分包括:動(dòng)態(tài)分配存儲(chǔ)空間、鏈表、文件的讀入、導(dǎo)出和讀寫操作。學(xué)生通過(guò)這部分的學(xué)習(xí),逐步優(yōu)化自己之前設(shè)計(jì)的系統(tǒng),達(dá)到教學(xué)目的和要求。
除了課程內(nèi)容調(diào)整之外,練習(xí)題的設(shè)置也很關(guān)鍵。如果一開始就讓學(xué)生覺(jué)得每道題都很難,無(wú)從下手,那樣會(huì)很大程度打擊他們的積極性。可以考慮設(shè)置階梯式的練習(xí),從易到難,逐步加大難度,讓學(xué)生有種“升級(jí)打怪”的成就感,讓學(xué)習(xí)過(guò)程顯得輕松一些;另外,也建議選取一些趣味性強(qiáng)或貼近生活的練習(xí)題,避免出現(xiàn)一個(gè)成績(jī)管理系統(tǒng)一路走到黑的乏味現(xiàn)象。比如,練習(xí)銀行存款利率的計(jì)算、超市商品價(jià)格的打折計(jì)算、雞兔同籠問(wèn)題、富翁與陌生人打賭之類的題目,就比求數(shù)學(xué)公式的根、尋找素?cái)?shù)、輸出楊輝三角形這類抽象問(wèn)題,更有吸引力,學(xué)生更愿意去思考和動(dòng)手。
C語(yǔ)言理論性強(qiáng),內(nèi)容抽象,知識(shí)點(diǎn)零碎,難以掌握,這可能與習(xí)慣了宏觀思維,初次接觸編程,一時(shí)無(wú)法建立編程思維有關(guān)。從教師的角度看,可以考慮從以下幾方面進(jìn)行改善。
2.3.1 選擇合適的教材,注重知識(shí)的系統(tǒng)性、習(xí)題的趣味性和實(shí)用性
教材是學(xué)生學(xué)習(xí)課程的第一手資料,好的合適的教材能讓學(xué)習(xí)事半功倍。目前覺(jué)得高等教育出版社出版的、蘇小紅等主編的《C語(yǔ)言程序設(shè)計(jì)(第4版)》,兼具趣味性和實(shí)用性,教材以應(yīng)用為背景,案例內(nèi)容緊密結(jié)合實(shí)踐,舉一反三,融會(huì)貫通,尤其側(cè)重錯(cuò)誤案例的分析和講解[1],而且每個(gè)章節(jié)上都有視頻二維碼,供學(xué)生手機(jī)掃碼觀看和學(xué)習(xí)。另外,第4版也在第3版的基礎(chǔ)上增加了章節(jié)知識(shí)點(diǎn)梳理和安全編碼的內(nèi)容,使得教材更貼合目前的需求。
2.3.2 注重問(wèn)題求解思路的分析
在演練中側(cè)重培養(yǎng)學(xué)生的邏輯思維和解決問(wèn)題能力,而不是單純的碼代碼。盡可能采用“一體化”的教學(xué)手段,教師講完知識(shí)點(diǎn)后,能演示典型例題的求解,先幫助學(xué)生理清求解的思路,再演示如何把算法變成代碼,然后再設(shè)置練習(xí)題讓學(xué)生自己動(dòng)手練習(xí),這樣學(xué)生邊學(xué)邊練,及時(shí)鞏固掌握知識(shí)點(diǎn),效果會(huì)比較好。
2.3.3 讓課件內(nèi)容“隨時(shí)可見”
現(xiàn)在學(xué)生普遍使用智能手機(jī),可以借此便利,讓學(xué)生課后能隨時(shí)通過(guò)手機(jī)翻閱課件查看內(nèi)容。個(gè)人感覺(jué)雨課堂還不錯(cuò),不僅可以發(fā)布附帶講解語(yǔ)音的手機(jī)課件,也能發(fā)布客觀題試卷,定時(shí)收卷自動(dòng)判分。一來(lái)學(xué)生隨時(shí)可以翻閱復(fù)習(xí),梳理知識(shí)點(diǎn),理清知識(shí)脈絡(luò)。二來(lái)學(xué)生也可以隨時(shí)查看之前的考題答案及解析。
2.3.4 鼓勵(lì)多實(shí)踐多思考
要掌握一門語(yǔ)言關(guān)鍵還在于練習(xí)。線上資源無(wú)論是慕課的還是雨課堂的,設(shè)置足夠多的練習(xí),鼓勵(lì)學(xué)生多多練習(xí),從練習(xí)中鞏固、加深知識(shí)點(diǎn),并從實(shí)踐中不斷的修正自己的認(rèn)知。
隨著我國(guó)“互聯(lián)網(wǎng)+”行動(dòng)計(jì)劃的實(shí)施,社會(huì)對(duì)復(fù)合型人才的需求越來(lái)越大,對(duì)高校人才培養(yǎng)也提出了更高的要求。因而,課程授課內(nèi)容也要考慮增加或加強(qiáng),接軌社會(huì)需求。
“互聯(lián)網(wǎng)+”時(shí)代下,越來(lái)越多的系統(tǒng)連接到公網(wǎng)上對(duì)外提供服務(wù),這些系統(tǒng)面臨著來(lái)自各方的攻擊,系統(tǒng)中的安全漏洞就會(huì)逐漸被暴露并被加以利用。據(jù)國(guó)家安全漏洞庫(kù)(CNNVD)發(fā)布的漏洞通報(bào)顯示,目前系統(tǒng)漏洞數(shù)量呈逐年上升態(tài)勢(shì)[2]。信息系統(tǒng)的安全受到危害,必然會(huì)危害到存在于信息系統(tǒng)之中的信息的安全。而據(jù)統(tǒng)計(jì),平均1 500行代碼就會(huì)有一個(gè)漏洞。而且,目前超過(guò)30%的軟件安全漏洞都由緩沖區(qū)溢出導(dǎo)致。緩沖區(qū)溢出漏洞的成因是程序員忽略了數(shù)組的邊界檢查、向小塊內(nèi)存區(qū)域填入過(guò)多的內(nèi)容,造成相鄰區(qū)域被意外覆蓋而導(dǎo)致的[2,3]。預(yù)防緩沖區(qū)溢出屬于程序設(shè)計(jì)課程的范疇,在教學(xué)中應(yīng)向?qū)W生講解緩沖區(qū)溢出的危害以及黑客利用該漏洞發(fā)起攻擊的方式和過(guò)程,引入安全編碼規(guī)范的內(nèi)容,引導(dǎo)學(xué)生編寫具有高安全質(zhì)量的程序。
信息不能脫離它的載體而孤立存在,信息系統(tǒng)的安全受到危害,必然會(huì)危害到存在于信息系統(tǒng)之中的信息的安全。因而,培養(yǎng)學(xué)生整體安全觀的安全思維至關(guān)重要。
增加計(jì)算機(jī)程序設(shè)計(jì)競(jìng)賽類試題、游戲設(shè)計(jì)類試題、解決日常生活問(wèn)題類試題等[4],提高程序的實(shí)用價(jià)值,也提高學(xué)生對(duì)C語(yǔ)言編程技能的認(rèn)可度和學(xué)習(xí)興趣。
進(jìn)一步地結(jié)合密碼學(xué)和網(wǎng)絡(luò)空間安全的知識(shí)[2],設(shè)置練習(xí)題,讓學(xué)生樹立具有網(wǎng)絡(luò)安全意識(shí),在編程過(guò)程中,盡量減少或避開可能出現(xiàn)的代碼安全漏洞。
引入單片機(jī)C編程[5],將位運(yùn)算和字節(jié)運(yùn)算應(yīng)用到流水燈等開關(guān)量控制,用仿真軟件展現(xiàn)流水燈和LED數(shù)碼管的動(dòng)態(tài)控制結(jié)果(仿真結(jié)果見圖1、圖2),形象生動(dòng),一方面加深對(duì)位運(yùn)算、字節(jié)運(yùn)算和程序流程結(jié)構(gòu)的知識(shí),一方面也能激發(fā)學(xué)生對(duì)該課程的學(xué)習(xí)興趣。
圖1 原理
圖2 運(yùn)行結(jié)果顯示
動(dòng)態(tài)逼真的仿真現(xiàn)象,能激發(fā)學(xué)生學(xué)習(xí)興趣,一方面,鞏固C程序設(shè)計(jì)課程的基本知識(shí),另一方面,契合物聯(lián)網(wǎng)時(shí)代對(duì)綜合人才的需求,拓展學(xué)習(xí)C在微機(jī)控制上的應(yīng)用,進(jìn)一步提高學(xué)生的實(shí)踐能力和解決實(shí)際問(wèn)題的能力。
有不少學(xué)生都在課程設(shè)計(jì)周才真正搞懂C語(yǔ)言的語(yǔ)法、規(guī)范和函數(shù)參數(shù)的傳遞問(wèn)題。甚至有學(xué)生夸張地說(shuō)“我學(xué)一學(xué)期,還不如這3天學(xué)得多”。
為激發(fā)他們的自主思考、遷移知識(shí)的潛能,課程設(shè)計(jì)周的設(shè)計(jì),可以考慮給予學(xué)生適當(dāng)?shù)淖杂砂l(fā)揮空間。內(nèi)容可以考慮“多題選一”的方式,每個(gè)題目只設(shè)定必須達(dá)到的基本功能,學(xué)生在完成基本功能后,可以自行添加額外的功能。這樣不拘泥于一格,一方面不會(huì)出現(xiàn)大批雷同系統(tǒng),另一方面能有效梳理知識(shí)和完成課程知識(shí)的初階遷移。
鼓勵(lì)學(xué)生參加“藍(lán)橋杯”等競(jìng)賽,進(jìn)一步調(diào)動(dòng)學(xué)生的學(xué)習(xí)積極性和培養(yǎng)其知識(shí)遷移的能力。
“C語(yǔ)言程序設(shè)計(jì)”是面向計(jì)算機(jī)相關(guān)專業(yè)學(xué)生的一門專業(yè)核心課程,學(xué)生普遍覺(jué)得 C語(yǔ)言理論性強(qiáng),內(nèi)容抽象,知識(shí)點(diǎn)零碎,難以掌握。采用線上線下融合,課堂延展性強(qiáng);注重知識(shí)的系統(tǒng)性、習(xí)題的趣味性和實(shí)用性,選擇合適的教材,按照一般的認(rèn)知規(guī)律設(shè)置課程講授內(nèi)容和講授順序,有利于提高學(xué)生的學(xué)習(xí)積極性和持久性;將網(wǎng)絡(luò)編程安全意識(shí)融入授課設(shè)計(jì),培養(yǎng)學(xué)生整體安全觀的安全思維;引入單片機(jī)C編程案例,拓展學(xué)習(xí),對(duì)接“萬(wàn)物互聯(lián)”的社會(huì)需求。