趙 萍, 薛 亮, 王中林
(1.東華大學 信息科學與技術(shù)學院, 上海 201620;2.寧波財經(jīng)學院 信息與金融學院, 浙江 寧波 315000)
近10年來,隨著硬件之一的顯卡計算能力不斷增強,原來僅停留于理論的人工智能(AI)技術(shù)蓬勃發(fā)展起來,誕生了諸如深度學習、機器學習和神經(jīng)網(wǎng)絡等技術(shù)?,F(xiàn)今,AI技術(shù)已成為最流行的計算機技術(shù)之一,圖像處理、語音識別、自然語言處理等技術(shù)廣泛應用于互聯(lián)網(wǎng)軟件、電子游戲、無人駕駛等領域[3]。與此同時,AI的熱度在當今的本科教學中也得以體現(xiàn),越來越多的高校開設AI相關(guān)課程,甚至開設了AI專業(yè)。為了使培養(yǎng)的學生符合社會發(fā)展的需要,讓學生學習和掌握AI技術(shù)顯得越發(fā)重要。在這樣的背景下,作為信息技術(shù)類專業(yè)學生的第一門編程課“C語言程序設計”也應跟上這樣的AI潮流[4]。
如今不少高校的“C語言程序設計”課程依然采用傳統(tǒng)的教學方法,在教學過程中重理論、輕實踐,學生在學習了該課程后很有可能依然不會編程。究其原因在于:(1)“C語言程序設計”課程內(nèi)容的創(chuàng)新力度較小。首先,選用的教材較陳舊。大部分高校所選用教材的內(nèi)容與10年前相比沒有太大變化,都是較為復雜的理論知識以及簡單的例題和習題,沒有與當今的AI技術(shù)相融合,無法激發(fā)學生的學習興趣。其次,學生課堂參與度低。學生不能直觀地感受到學習C語言的實際用途,導致學生沒有成就感,缺乏學習動力,甚至對編程失去興趣。(2)實踐教學環(huán)節(jié)缺失。絕大部分“C語言程序設計”課堂的上機實踐都是簡單的驗證性實驗,實踐內(nèi)容過于單調(diào)、簡單,大部分實踐內(nèi)容僅僅針對課本上的例題或者對例題程序稍加修改即完成了驗證內(nèi)容。這樣的實踐教學既不能鍛煉學生的獨立思考能力和編程能力,也不能引起學生學習C語言的興趣,甚至使學生認為學習C語言沒有多大作用。因此,學生在這樣的課堂上學習的知識和技能很難對日后的實際應用有所幫助[2]。
在AI時代,“C語言程序設計”課程的理論與實踐內(nèi)容必須進行調(diào)整。東華大學信息科學與技術(shù)學院對“C語言程序設計”課程與AI技術(shù)相結(jié)合的案例式教學進行探索,本文以監(jiān)督學習中的分類算法KNN為例,詳細介紹具體的改革實踐。
AI背景下“C語言程序設計”課程案例式教學改革主要從理論教學、實踐教學、課程反饋、實驗室支持四個方面進行探討[1]。案例式教學改革方案如圖1所示。
1. 理論教學
為了讓學生接觸到AI最新知識,教師應該隨著課程的進度安排相應的AI實踐項目。在課堂上教師不必拘泥于語法細節(jié)知識的教學,以節(jié)省時間,拓展學生有關(guān)AI方面的知識。由于學生學習“C語程序設計”課程時尚處于低年級,對于AI的背景知識缺乏了解,因此教師可選擇一些經(jīng)典且涉及數(shù)學知識較少的小型AI項目進行案例式教學,從中提取與教學內(nèi)容密切相關(guān)的理論知識在課堂上講解。這樣不僅可加深學生對C語言理論知識的學習,而且也拉近了C語言程序與AI之間的距離,使學生感到AI并不是一個“高大上”的東西,同時為相應的實踐課打好基礎,激發(fā)學生對實踐課的熱情。
圖1 “C語言程序設計”課程案例式教學改革方案
2. 實踐教學
實踐教學的改革應從AI小型項目的分化入手,同時將各部分內(nèi)容結(jié)合相應的語法知識融入實踐項目。當然有關(guān)AI知識的教學可能無法支撐整節(jié)實踐課,所以教師不能全盤拋棄以前的實踐課內(nèi)容,需選擇一些原先實踐課中較為成熟的習題給學生練手,便于他們打開編程思維,更快地進入編程狀態(tài)。在此基礎上,教師選取AI項目的部分內(nèi)容作為本實踐教學的重要補充,開展案例式教學。
在整個實踐課程結(jié)束后,學生已經(jīng)掌握了必要的語法以及AI項目的基本知識,教師可以布置一個大作業(yè),讓學生獨立完成一個AI小型項目,所用算法與本學期實踐課所學項目相似。學生自由組成團隊,教師給每個小組提供一個較為簡單的AI項目。每組選擇1名小組長,負責項目結(jié)束后的效果演示。實踐之前先將整體項目分成若干模塊,每個成員負責其中的一個模塊,同時各成員需熟悉項目中的其他模塊知識。各組在實踐過程中要記錄各階段運行的效果,并描述調(diào)試過程中遇到的各種問題,最終形成小組實踐報告并制作PPT,在最后一次課上各組代表上臺展示實踐內(nèi)容。
3. 課程反饋
在每一階段的課程內(nèi)容教師講解及學生實踐完成后,教師制作《“C語言程序設計”課堂教學反饋表》調(diào)查學生對課程內(nèi)容的掌握情況。調(diào)查表主要從分解知識點及其實踐兩個方面,深入了解學生對C語言基礎知識與相關(guān)AI知識的掌握情況。最后,教師根據(jù)學生的學習效果調(diào)整及優(yōu)化教學內(nèi)容、教學進度及教學方法。
4. 實驗室支持
東華大學西門子先進自動化實驗室為“C語言程序設計”課程的AI案例式實踐教學提供了實驗室支持。實驗室配有300臺高性能計算機,安裝了Windows、Linux等操作系統(tǒng),具有多套編程軟件環(huán)境(如Dev-C++、Visual Studio等)。該實驗室能夠保障學生采用C語言完成小型AI項目,并完成課程最后的實踐大作業(yè),能夠支持300名學生同時進行編程實踐,為“C語言程序設計”課程的AI案例式實踐教學提供了良好的實驗室條件。
以AI項目“KNN算法進行手寫數(shù)字識別”為例,介紹AI背景下“C語言程序設計”課程案例式教學改革實踐?!癒NN算法進行手寫數(shù)字識別”項目可分為以下模塊:(1)手寫數(shù)字的二值化以及打印查看效果(循環(huán)、數(shù)組與打印語句);(2)測試集、訓練集的劃分(文件的讀取);(3)KNN算法的實現(xiàn)(包括距離的計算及距離值的排序)和訓練結(jié)果打印。以“手寫數(shù)字的二值化以及打印查看效果”模塊為例,介紹教學改革方法與內(nèi)容。其實際效果如圖2所示。
圖2 手寫數(shù)字圖像二值化的效果
1. 理論教學改革
理論教學前教師先做一遍實驗,并確認無誤后整理出相應的資料和實驗指導內(nèi)容,包括實驗步驟與算法解釋等,同時對算法進行適當簡化(提前給出閾值,并給出圖像灰度值數(shù)組source),避免學生因為實驗內(nèi)容太難而望而卻步。教師在講完二維數(shù)組這一章的語法知識后,抽出一定時間給學生介紹二值化相關(guān)知識,例如二值化的閾值概念以及選取方法,加深學生對實驗內(nèi)容的理解。理論知識講解后要求學生預習實驗內(nèi)容并形成預習報告,為實踐課打好基礎。
2. 實踐教學改革
在實踐課上,教師首先指導學生完成典型的實驗習題,待大部分學生完成基礎實驗后,再進行AI實驗的講解并展示實驗效果(圖2)。教學思路如下:將圖片中各個像素點的數(shù)值與給定的閾值相比較,形成0和1并存入對應的數(shù)組中,使用for循環(huán)和printf語句復現(xiàn)圖片中的數(shù)字。學生根據(jù)教師的思路自行思考并完成實驗,要求學生記錄在調(diào)試過程中出現(xiàn)的問題,這樣能快速提高學生的編程水平。在實驗過程中教師要關(guān)注進度較慢的學生,并提供必要的幫助,避免出現(xiàn)部分學生跟不上實驗進度。
3. 課堂反饋
本實驗完成后,教師要求學生課下匿名完成課程反饋調(diào)查表(見表1),以了解學生對C語言基本數(shù)組知識的掌握情況以及對AI相關(guān)二值化知識的掌握程度,便于教師反思教學中的不足,為以后的教學積累經(jīng)驗。
表1 “C語言程序設計”課堂教學反饋表
本文在分析“C語言程序設計”課程教學存在問題的基礎上,結(jié)合當前AI技術(shù)的熱潮,從理論教學和實踐教學兩方面探討了AI案例式教學改革方案,重點是在理論教學中結(jié)合AI項目分解后的內(nèi)容講述相關(guān)基礎知識點,最后通過一個實驗項目的訓練,完成整個實踐教學環(huán)節(jié)。將AI小型項目分解后與實踐教學相融合,并通過學生對知識點的掌握及應用情況反饋,適時調(diào)整教學內(nèi)容及教學方法。在教學過程中,充分利用東華大學西門子先進自動化實驗室的高性能計算平臺,為學生完成基于C語言實現(xiàn)小型AI項目提供了良好的實驗室支撐。