曹俊杰 王勝法 劉穎 孫壯 李崇君 蘇志勛
摘要:本文以《c++程序設(shè)計(jì)》、《數(shù)據(jù)結(jié)構(gòu)與算法》和《計(jì)算機(jī)圖形學(xué)》這三門課程為切入點(diǎn),分析了數(shù)學(xué)專業(yè)的計(jì)算機(jī)類課程的教學(xué)面臨的問題和機(jī)遇,對(duì)于這三門課的教學(xué)銜接做了有益的探索。
關(guān)鍵詞:成果導(dǎo)向教育;計(jì)算思維;課程銜接;數(shù)學(xué)專業(yè)
中圖分類號(hào):G642.0 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1674-9324(2019)25-0200-02
一、引言
當(dāng)前,國家實(shí)施了“一帶一路”、“中國制造2025”、“互聯(lián)網(wǎng)+”等倡議和戰(zhàn)略,以新技術(shù)、新業(yè)態(tài)、新模式、新產(chǎn)業(yè)為代表的新經(jīng)濟(jì)蓬勃發(fā)展,這對(duì)本科生的培養(yǎng)提出了更高要求。從本科畢業(yè)生就業(yè)情況來看,數(shù)學(xué)專業(yè)和其他工科專業(yè)有著顯著的不同。除高校任教和讀研深造之外,絕大多數(shù)畢業(yè)生會(huì)進(jìn)入教育、金融、信息、互聯(lián)網(wǎng)、人工智能等新經(jīng)濟(jì)產(chǎn)業(yè),或者傳統(tǒng)經(jīng)濟(jì)產(chǎn)業(yè)的數(shù)據(jù)分析以及人工智能部門。用人單位普遍認(rèn)可數(shù)學(xué)類畢業(yè)生的邏輯思維能力,同時(shí)都迫切希望畢業(yè)生進(jìn)一步提高通過編程解決實(shí)際問題的能力。這點(diǎn)要求在本質(zhì)上可以分解為計(jì)算思維、編程實(shí)踐和溝通協(xié)作三個(gè)部分。可以對(duì)應(yīng)到成果導(dǎo)向教育(Outcome based education,簡(jiǎn)稱OBE)對(duì)于本科生畢業(yè)能力的12項(xiàng)設(shè)定:?jiǎn)栴}分析、設(shè)計(jì)/開發(fā)解決方案、使用現(xiàn)代工具、個(gè)人和團(tuán)隊(duì)角色承擔(dān)、溝通等。為此,我們將根據(jù)新經(jīng)濟(jì)條件下,社會(huì)對(duì)于數(shù)學(xué)類本科畢業(yè)生的需求,從課程銜接的角度探討一下針對(duì)數(shù)學(xué)專業(yè)學(xué)生的計(jì)算機(jī)類課程的教學(xué)改進(jìn)方案,以期更好地實(shí)現(xiàn)相關(guān)教學(xué)目標(biāo),為數(shù)學(xué)類學(xué)生的升學(xué)和就業(yè)服務(wù)。
二、存在的問題
《c++程序設(shè)計(jì)》、《數(shù)據(jù)結(jié)構(gòu)與算法》和《計(jì)算機(jī)圖形學(xué)》在數(shù)學(xué)專業(yè)作為選修課程授課的時(shí)候,由于授課目標(biāo)、課程體系、學(xué)生知識(shí)架構(gòu)和學(xué)習(xí)方法的差異,其教學(xué)還存在以下兩個(gè)問題。
1.從學(xué)生的基礎(chǔ)知識(shí)架構(gòu)和這些課程本身的標(biāo)準(zhǔn)教學(xué)內(nèi)容來看,《c++程序設(shè)計(jì)》本身知識(shí)點(diǎn)多,有一些涉及計(jì)算機(jī)基本工作原理等,由于不是計(jì)算機(jī)專業(yè),受到總體課時(shí)的限制,缺少相關(guān)配套課程知識(shí)體系的相互促進(jìn)?!稊?shù)據(jù)結(jié)構(gòu)與算法》中應(yīng)用最頻繁的c++知識(shí)在《c++程序設(shè)計(jì)》講解的角度沒有充分為數(shù)據(jù)結(jié)構(gòu)服務(wù)[1]。其次,學(xué)生在從簡(jiǎn)單算法和簡(jiǎn)單數(shù)據(jù)類型到復(fù)雜數(shù)學(xué)算法和復(fù)雜數(shù)據(jù)結(jié)構(gòu)的過渡上存在認(rèn)知和實(shí)踐兩方面的不足。這一點(diǎn)在《計(jì)算機(jī)圖形學(xué)》的上機(jī)實(shí)踐環(huán)節(jié)表現(xiàn)得更為明顯。圖形學(xué)是理論和實(shí)踐的緊密結(jié)合[2],往往強(qiáng)調(diào)實(shí)現(xiàn)的效率,需要借助高級(jí)數(shù)據(jù)結(jié)構(gòu)和精心設(shè)計(jì)的計(jì)算方法。而授課時(shí),學(xué)生往往已經(jīng)遺忘了很多在《c++程序設(shè)計(jì)》和《數(shù)據(jù)結(jié)構(gòu)與算法》中學(xué)過的知識(shí),導(dǎo)致學(xué)生以完成任務(wù)的心態(tài),使用低級(jí)的數(shù)據(jù)結(jié)構(gòu)構(gòu)建簡(jiǎn)陋低效的算法實(shí)現(xiàn)。
2.從學(xué)生的學(xué)習(xí)習(xí)慣和態(tài)度來看,數(shù)學(xué)專業(yè)學(xué)生習(xí)慣的“實(shí)戰(zhàn)”操作,是在紙上推演,整段代碼書寫完畢,才開始上機(jī)調(diào)試。這種反編程實(shí)踐的操作,只會(huì)帶來無數(shù)的編譯錯(cuò)誤,增加了學(xué)生上機(jī)的挫敗感,使得他們轉(zhuǎn)而為考試而學(xué)習(xí),造成所學(xué)知識(shí)在考試后部分被遺忘,進(jìn)而難以應(yīng)對(duì)《數(shù)據(jù)結(jié)構(gòu)與算法》的學(xué)習(xí)和《計(jì)算機(jī)圖形學(xué)》的上機(jī)實(shí)踐。
三、教學(xué)改革思路和措施
通過以上的分析可知,數(shù)學(xué)專業(yè)的計(jì)算機(jī)類課程授課存在兩個(gè)基本矛盾:(1)計(jì)算機(jī)類的課程是選修課,不可能占用更多的課時(shí),不能期望學(xué)生用學(xué)習(xí)本專業(yè)課程的心態(tài)和精力完成此類課程。(2)計(jì)算機(jī)類課程恰是最能培養(yǎng)計(jì)算思維,訓(xùn)練OBE所倡導(dǎo)的本科生能力訓(xùn)練的,對(duì)于本科生的就業(yè)有著實(shí)質(zhì)性的幫助。為此,我們希望從課程銜接的角度入手,綜合協(xié)調(diào)《c++程序設(shè)計(jì)》、《數(shù)據(jù)結(jié)構(gòu)與算法》和《計(jì)算機(jī)圖形學(xué)》的教學(xué),精簡(jiǎn)對(duì)于數(shù)學(xué)專業(yè)學(xué)生而言不必要和不重要的內(nèi)容,強(qiáng)調(diào)上述課程中會(huì)反復(fù)遇到的知識(shí)點(diǎn),完成新舊知識(shí)之間的雙向重構(gòu)[3]。通過緊密的銜接,降低遺忘曲線和挫折感對(duì)于教學(xué)效果的不良影響,減少學(xué)生負(fù)擔(dān)的同時(shí)提升他們的興趣,以期解決上述矛盾,切實(shí)提高數(shù)學(xué)類學(xué)生的計(jì)算思維和編程實(shí)踐能力。針對(duì)上述問題,通過近年來的教學(xué)實(shí)踐,我們擬介紹以下三個(gè)方面的思路和措施。
1.在《c++程序設(shè)計(jì)》教學(xué)中引入《數(shù)據(jù)結(jié)構(gòu)與算法》和《計(jì)算機(jī)圖形學(xué)》。我們嘗試從數(shù)學(xué)專業(yè)的《c++程序設(shè)計(jì)》教學(xué)存在的問題出發(fā),引入《數(shù)據(jù)結(jié)構(gòu)與算法》和《計(jì)算機(jī)圖形學(xué)》分別解決這些問題。首先,《c++程序設(shè)計(jì)》的授課相對(duì)其他數(shù)學(xué)課程略顯平鋪直敘,缺少邏輯思考和推理求證過程,學(xué)生往往將其當(dāng)作文科類課程死記硬背,難以激發(fā)學(xué)習(xí)熱情。因此,在授課時(shí),介紹必要的排序算法,簡(jiǎn)單分析算法的復(fù)雜度,讓學(xué)生了解算法設(shè)計(jì)和應(yīng)用適當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu)可以大幅度降低算法的復(fù)雜度,增加思考和推理的樂趣。其次,與標(biāo)準(zhǔn)c++教材和課程配套的實(shí)例一般都是面向計(jì)算機(jī)專業(yè)的,諸如數(shù)據(jù)庫和網(wǎng)站等方面的應(yīng)用,對(duì)于數(shù)學(xué)專業(yè)的學(xué)生而言,這基本屬于陌生且日后不再會(huì)接觸的領(lǐng)域,對(duì)后續(xù)課程沒有幫助。為此,可以引入《數(shù)據(jù)結(jié)構(gòu)與算法》和《計(jì)算機(jī)圖形學(xué)》中的問題作為上機(jī)作業(yè),在為后續(xù)課程服務(wù)的同時(shí),增加授課和上機(jī)實(shí)踐的趣味性。如設(shè)計(jì)一個(gè)系列的動(dòng)態(tài)數(shù)組實(shí)現(xiàn)作業(yè),包括從過程式編程的定長(zhǎng)數(shù)組實(shí)現(xiàn),面向?qū)ο缶幊痰亩ㄩL(zhǎng)數(shù)組實(shí)現(xiàn),簡(jiǎn)單動(dòng)態(tài)數(shù)組的實(shí)現(xiàn),經(jīng)過算法復(fù)雜度分析之后的動(dòng)態(tài)數(shù)組實(shí)現(xiàn),和對(duì)應(yīng)的模板類實(shí)現(xiàn)。從這一系列的相關(guān)性極強(qiáng)的逐步改進(jìn)式的實(shí)踐,理解為什么要用指針、為什么要封裝,為什么要泛型,為什么要用算法和數(shù)據(jù)結(jié)構(gòu)。在《計(jì)算機(jī)圖形學(xué)》方向,可以引入簡(jiǎn)單的圖像處理、樣條曲線編輯、三維點(diǎn)云數(shù)據(jù)的PCA分析和顯示等直觀可視的案例,增加學(xué)生對(duì)于編程的實(shí)用性的切身感受。
2.《數(shù)據(jù)結(jié)構(gòu)與算法》與《c++程序設(shè)計(jì)》和《計(jì)算機(jī)圖形學(xué)》的銜接。在《數(shù)據(jù)結(jié)構(gòu)與算法》教學(xué)方面,首先,采用c++作為實(shí)現(xiàn)語言,保證與之前學(xué)過的《c++程序設(shè)計(jì)》的銜接。其次,在授課時(shí)強(qiáng)調(diào)數(shù)據(jù)結(jié)構(gòu)知識(shí)和《c++程序設(shè)計(jì)》的對(duì)比,從而促進(jìn)舊知識(shí)和新知識(shí)之間的雙向重構(gòu)。如《c++程序設(shè)計(jì)》考慮的是數(shù)值型問題,簡(jiǎn)單算法,單個(gè)文件的簡(jiǎn)單程序;《數(shù)據(jù)結(jié)構(gòu)與算法》則以非數(shù)值問題為主,復(fù)雜算法,需要實(shí)現(xiàn)多個(gè)文件的復(fù)雜程序等。此外,在介紹復(fù)雜的數(shù)據(jù)結(jié)構(gòu)和算法的時(shí)候,既要深化拓展c++教學(xué)中已經(jīng)簡(jiǎn)介過的結(jié)構(gòu)和算法,又要不斷地回顧其用到的c++的編程思想。如棧、樹、全排列等都圍繞遞歸這一角度展開;強(qiáng)調(diào)面向?qū)ο蠛头盒途幊虒?duì)于實(shí)現(xiàn)復(fù)雜數(shù)據(jù)結(jié)構(gòu)的幫助。最后,加強(qiáng)《計(jì)算機(jī)圖形學(xué)》中常用數(shù)據(jù)結(jié)構(gòu)和算法的授課和上機(jī)訓(xùn)練。如深度講解空間八叉樹,適當(dāng)介紹圖形學(xué)中的隱式曲面表示、空間距離場(chǎng)插值和經(jīng)典曲面重建方面的內(nèi)容。講解圖上的一些算法,如最短路、最小生成樹等,可介紹圖形學(xué)中曲面的測(cè)地線、調(diào)和場(chǎng)和法向的一致定向問題。在講解計(jì)算幾何算法的時(shí)候,可以介紹圖形學(xué)中的曲面消隱和碰撞檢測(cè)等。
3.《計(jì)算機(jī)圖形學(xué)》與之前學(xué)過的課程的銜接?!队?jì)算機(jī)圖形學(xué)》涉及多學(xué)科交叉,知識(shí)點(diǎn)繁多且更新速度極快。其教學(xué)既要滿足核心內(nèi)容的穩(wěn)定性,又要兼顧國際上的最新發(fā)展趨勢(shì)。各所學(xué)校,尤其是海外高校的《計(jì)算機(jī)圖形學(xué)》的授課內(nèi)容往往相差極大。為此,在核心經(jīng)典的約束下,我們考慮從與之前學(xué)過的課程銜接的角度精選一些必講內(nèi)容和上機(jī)問題,如三維圖形顯示的面向?qū)ο髮?shí)現(xiàn),基于計(jì)算幾何和數(shù)據(jù)結(jié)構(gòu)優(yōu)化的光照模型實(shí)現(xiàn),各種三維表示和其背后的數(shù)據(jù)結(jié)構(gòu)等。通過這些內(nèi)容的介紹,完成之前學(xué)過的課程和《計(jì)算機(jī)圖形學(xué)》之間知識(shí)結(jié)構(gòu)的雙向重構(gòu)。此外,《計(jì)算機(jī)圖形學(xué)》已經(jīng)是計(jì)算機(jī)應(yīng)用領(lǐng)域的一個(gè)巨大產(chǎn)業(yè),理論與實(shí)踐結(jié)合緊密。其上機(jī)實(shí)踐任務(wù)相對(duì)復(fù)雜,可以以O(shè)BE為指導(dǎo),切分為多個(gè)子任務(wù),由多組同學(xué)協(xié)同完成。強(qiáng)化數(shù)學(xué)專業(yè)學(xué)生在提高問題分析、設(shè)計(jì)/開發(fā)解決方案、使用現(xiàn)代工具、個(gè)人和團(tuán)隊(duì)角色承擔(dān)、溝通這五方面的能力。
四、結(jié)論
數(shù)學(xué)專業(yè)的計(jì)算機(jī)類課程的教學(xué),除了要根據(jù)本專業(yè)的特色和畢業(yè)生就業(yè)需求做好內(nèi)容上的調(diào)整、銜接之外,如何能將降低不同授課學(xué)習(xí)方式和上機(jī)實(shí)踐的挫折感,如何進(jìn)一步提高學(xué)生的興趣和投入,如何提高教師對(duì)于這一類課程知識(shí)的通盤掌握,如何建立循序漸進(jìn)的上機(jī)題目體系和易于配套的上級(jí)環(huán)境,如何展開能促進(jìn)學(xué)生積極性的高效的考核考查方式,如何更加順暢地完成計(jì)算思維的培養(yǎng)和OBE導(dǎo)向也都是亟待配套解決的問題。值得我們?cè)诮窈蟮慕虒W(xué)實(shí)踐中不斷地探索。
參考文獻(xiàn):
[1]郭艷燕,童向榮,孫雪姣,賀利堅(jiān).程序設(shè)計(jì)基礎(chǔ)與數(shù)據(jù)結(jié)構(gòu)兩門課程的教學(xué)銜接[J].計(jì)算機(jī)教育,2014,(10):47-50.
[2]徐崗,許金蘭,陳臨強(qiáng),王毅剛,胡維華.數(shù)學(xué)建模驅(qū)動(dòng)的“計(jì)算機(jī)圖形學(xué)”課堂教學(xué)模式改革[J].中國信息技術(shù)教育,2016,(06):89-91.
[3]趙榆琴,楊健,張曉玲,蘇鵬.程序設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)“雙向重構(gòu)”教學(xué)銜接法探討[J].計(jì)算機(jī)教育,2018,(08):151-155.