房琛琛,謝 濤,齊 琪
(西安交通大學(xué) 計算機教學(xué)實驗中心, 陜西 西安 710049)
計算機程序設(shè)計課程是許多高校理工科類的公共基礎(chǔ)課程之一。實驗教學(xué)是其教學(xué)過程中的一個重要環(huán)節(jié)。然而傳統(tǒng)的實驗教學(xué)方式是:教師先講授實驗相關(guān)的理論知識,然后布置實驗任務(wù);學(xué)生上機編程實踐,實驗課結(jié)束后,學(xué)生提交一份電子或紙質(zhì)版實驗報告;教師根據(jù)實驗報告給出學(xué)生此次實驗成績。這種傳統(tǒng)的實驗教學(xué)方式普遍存在一些問題:①先教師講授再上機實踐,學(xué)生基本就是按部就班完成實驗指導(dǎo)書或者講義上內(nèi)容,無法培養(yǎng)動手能力和思考能力[1];②實驗內(nèi)容與實際問題聯(lián)系較弱,導(dǎo)致學(xué)生學(xué)習(xí)目的性不強,不能達(dá)到學(xué)以致用[2-3];③實驗報告的內(nèi)容設(shè)計不能真實反映學(xué)生對知識的掌握情況,不能反映學(xué)生的實際操作能力。這些不足導(dǎo)致無法培養(yǎng)學(xué)生的動手編程能力和創(chuàng)新能力。
隨著Flash技術(shù)的發(fā)展,F(xiàn)lash動畫已經(jīng)進入到教育領(lǐng)域,傳統(tǒng)的教學(xué)往往受到實驗場所,實驗設(shè)備的局限,不能達(dá)到理想的教學(xué)效果。通過Flash技術(shù)可以把一些難于表述清楚的知識點或難點制作成動畫案例,讓學(xué)生更好地理解知識內(nèi)容,調(diào)動其學(xué)習(xí)的積極性。為了達(dá)到更好的學(xué)習(xí)效果,可以設(shè)計具有互動性的動畫案例,使學(xué)生參與教學(xué),提高教學(xué)效果。
在制作Flash動畫時可以采取兩種方式:①順序播放式用于演示操作或者順序流程之類的案例;②交互式是通過鍵盤或者鼠標(biāo)響應(yīng)實現(xiàn)交互的效果。教師可以針對不同的實驗案例,根據(jù)其內(nèi)容特點選擇不同方式的動畫。
在計算機程序設(shè)計課程中,以程序代碼的講解為例,可以設(shè)計程序的單步執(zhí)行動畫案例,當(dāng)程序運行到某一行時,變量的值是多少,或表達(dá)式的值是多少,都可以通過動畫形式一步一步演示,使學(xué)生對程序的每行代碼都有深入的了解。
還可以通過Flash動畫制作出一些類似于教具的軟件,這里簡稱電子教具,如生成一個畫板工具,實現(xiàn)流程圖的制作等。這些教具并不是一個完整的案例,但是能給老師提供一個虛擬的演示工具。
總之,F(xiàn)lash動畫在幫助學(xué)生理解掌握知識點上起到了催化劑的作用。Flash以可視化和多媒體化的形式展示內(nèi)容,容易聚集學(xué)生的注意力,與傳統(tǒng)的教學(xué)模式相比,學(xué)生會覺得更生動形象,更容易理解知識內(nèi)容,并且因其互動性好,提高學(xué)生的學(xué)習(xí)參與感[4]。
實驗案例的設(shè)計應(yīng)該將不同層次的知識點貫穿起來,將現(xiàn)階段實驗逐步遷移到下一知識層次[5]。所以,在進行案例設(shè)計時,應(yīng)考慮此次實驗的知識點層次,并考慮如何將這些知識點根據(jù)層次的深入而貫穿起來。
例如,在學(xué)習(xí)排序算法的過程中,學(xué)生經(jīng)常遇到的問題是:為什么出現(xiàn)多種排序算法?某一特定的問題需要使用哪種排序算法?所以,在設(shè)計“排序算法比較”實驗案例時,實驗?zāi)康木褪亲寣W(xué)生自主探索、思考、發(fā)現(xiàn)排序算法的優(yōu)缺點及其適用性,能編程實驗解決實際問題,并能歸納、總結(jié)、演示。
排序是計算機內(nèi)經(jīng)常進行的一種操作,在程序設(shè)計中應(yīng)用廣泛。其目的就是將一組無序的記錄序列調(diào)整為有序的記錄序列。排序的算法有很多種,本次實驗選取了經(jīng)典的3種排序算法。
學(xué)生通過老師的講授以及用電子教具操作實踐,加深對3種排序算法的理解。學(xué)生在上機實踐中,用C語言編程實現(xiàn)冒泡排序、選擇排序、快速排序3種算法,并對比多種實驗數(shù)據(jù),針對給定的3種實際應(yīng)用案例選擇合適的算法實現(xiàn)并總結(jié)證明。具體實現(xiàn)方案如圖1所示。
圖1 案例實現(xiàn)方案
1)知識講解。
排序算法在程序設(shè)計中應(yīng)用廣泛,但是教學(xué)中學(xué)生不容易接受。為了便于學(xué)生理解排序算法的思想,本案例采用Flash動畫展示排序的過程,生動形象的展現(xiàn)手段改進了傳統(tǒng)的教學(xué)方式,便于學(xué)生理解和掌握排序的相關(guān)概念,進行編程應(yīng)用。圖2展示了冒泡排序的Flash動畫畫面。
圖2 用Flash演示冒泡排序算法
2)方法引導(dǎo)。
為了讓學(xué)生對算法有更深刻的了解,本案例通過撲克牌電子教具,讓學(xué)生手動模擬3種排序算法的過程,理解編程實現(xiàn)的思路。電子教具是用Flash制作的模擬真實撲克牌的交互式動畫,學(xué)生可以手動拖動卡片,模擬不同算法的排序過程。
3)上機實踐指導(dǎo)。
針對學(xué)生在上機編程實現(xiàn)過程中遇到問題,教師有針對性地進行指導(dǎo),鼓勵他們相互討論。在實驗過程中,啟發(fā)學(xué)生思考對比實驗的分類目的,引導(dǎo)學(xué)生得出正確的實驗結(jié)論。
4)對比實驗。
用4種實驗數(shù)據(jù)來運行3種排序算法,完成對比實驗分析表。包括:基于3種不同樣本大小的完全隨機數(shù)據(jù)的3種排序算法對比分析表(表1);基于3類不同數(shù)據(jù)特征數(shù)據(jù)的3種排序算法對比分析表(表2)。其中,完全隨機數(shù)據(jù)要求學(xué)生使用隨機函數(shù)產(chǎn)生;接近正序數(shù)據(jù)/接近反序數(shù)據(jù)/較多重復(fù)數(shù)據(jù),學(xué)生可以自己生成,也可使用教師提供的數(shù)據(jù)做實驗。
表1 3種排序算法實驗統(tǒng)計(完全隨機數(shù)據(jù))
表2 3種排序算法實驗統(tǒng)計(非隨機數(shù)據(jù),樣本大小N=100)
5)實際應(yīng)用。
選擇合適的算法應(yīng)用到實際案例中,詳細(xì)地描述解決問題的思路,并對通過運行程序得出的結(jié)果進行論證。3個實際案例如下。
實際案例1:統(tǒng)計學(xué)生信息。某班班長有一份學(xué)生基本信息表(已按照學(xué)號從小到大排序)?,F(xiàn)要求按照年齡從小到大的順序重新排序。要求:年齡相同的學(xué)生,學(xué)號按照小的在前,大的在后。請你只做一遍排序,就能幫班長把統(tǒng)計表整理好。
實際案例2:換座位。某班團支部組織全班30名同學(xué)觀看愛國主義教育電影。座位選擇了某區(qū)的一排。30名同學(xué)持票入場后并未對號入座。電影開場后工作人員要求必須按照票號就坐。為了不影響其他觀影人員,工作人員每次只能調(diào)整2名同學(xué)的座位。請問:最少調(diào)整多少次才能使30名同學(xué)坐到自己的座位上(工作人員已記錄了30名同學(xué)的目前的座位號和票號)?
實際案例3:統(tǒng)計期末考試成績。某學(xué)生幫助院教務(wù)老師統(tǒng)計某一級全院學(xué)生公共科目“高數(shù)”的期末考試成績。上報的統(tǒng)計表格包含3列信息(姓名、學(xué)號、成績)。要求:成績從高到低排名,成績相同的按照學(xué)號從小到大排序。請問:如果需要你來完成此工作,請給出排序的設(shè)計思路。
(1)程序驗收:程序是否能編譯通過。若能通過,查看結(jié)果的正確性。
(2)實驗質(zhì)量:總分100。上機實現(xiàn)3種排序算法占60%,運行程序完成對比實驗分析表占20%,選擇合適的算法應(yīng)用到實際案例中并論證占20%。
(3)自主獨立:自主思考與獨立實踐能力。能夠獨立完成對比實驗分析表,并能給出正確的結(jié)論。自主分析實際應(yīng)用案例問題,給出解決思路,并通過運行程序論證答案的正確性。
(4)實驗報告:實驗報告的規(guī)范性與完整性,要求有對比實驗表(時間、交換次數(shù)、穩(wěn)定性),并給出結(jié)論、實際案例的分析總結(jié)等。
以“排序算法的比較”內(nèi)容為例,從學(xué)習(xí)研究、對比分析、實現(xiàn)調(diào)試、總結(jié)、驗收過程進行案例設(shè)計,將講解、思考、動手、實踐于一體。通過對排序算法的對比實驗和分析,加深學(xué)生對3種不同排序算法原理的理解,重點了解它們的優(yōu)缺點和適用性。同時,讓學(xué)生上機實踐,對比實驗結(jié)果,針對特定場景案例選擇合適的算法并論證。從分析到論證,比較容易激發(fā)學(xué)生對算法學(xué)習(xí)的興趣,提升他們的成就感。與以往學(xué)生上機實驗的區(qū)別還在于,在上機實踐前先讓他們自己通過電子教具手動排序,加深理解理論,為他們上機編程提供思路?;韭鋵嵰詫W(xué)生遇到問題為出發(fā)點,以實際需求為歸宿[6],加強基本編程思維和方法的訓(xùn)練。
計算機程序設(shè)計課程的實驗教學(xué)的關(guān)鍵是加強學(xué)生對知識的理解,提高學(xué)生的動手能力,能夠使用所學(xué)的知識解決實際問題。采用Flash動畫加深學(xué)生對知識的理解,調(diào)動學(xué)生學(xué)習(xí)的興趣,為其進一步學(xué)習(xí)打下基礎(chǔ)。兩年來,以該方法設(shè)計的實驗案例,學(xué)生反饋學(xué)習(xí)效果良好。下一步計劃就是制作一系列實驗案例所需要的Flash動畫,將實驗過程設(shè)計得更細(xì)致、更完善。
參考文獻:
[1]丁海燕. 計算機程序設(shè)計課程中計算思維的培養(yǎng)[J]. 實驗技術(shù)與管理, 2015(12): 16-18.
[2]王麗娜, 呂紅, 張杰, 等. 計算機程序設(shè)計實驗課程的教學(xué)改革與實踐[J]. 計算機工程與科學(xué), 2014, 36(增刊1): 226-229.
[3]葉冬芬, 范偉, 楊明霞, 等. 計算機程序設(shè)計類課程實驗教學(xué)改革的研究[J]. 福建電腦, 2010(11): 32-33.
[4]喬亞男, 李波, 謝濤. 基于電子教具的大學(xué)計算機基礎(chǔ)混合式教學(xué)研究[J]. 工業(yè)和信息化教育, 2016(11): 32-36.
[5]李雪飛, 李晶, 余琍, 等. 面向?qū)ο蟪绦蛟O(shè)計類課程實踐教學(xué)改革[J]. 計算機教育, 2017(7): 118-121.
[6]李瑞生, 王秋云, 安德智, 等. 計算機程序設(shè)計類課程實踐教學(xué)的改革與創(chuàng)新[J]. 實驗技術(shù)與管理, 2012(4): 183-198.