摘要:“信息論與編碼”之所以讓教與學(xué)都很難,一個(gè)重要的原因是缺少一套適用的配套實(shí)驗(yàn)。本文給出了實(shí)驗(yàn)內(nèi)容的安排原則,涉及實(shí)驗(yàn)內(nèi)容、類(lèi)型、難度、實(shí)驗(yàn)環(huán)境、實(shí)驗(yàn)分級(jí)等方面,并給出了一個(gè)有關(guān)限失真信源編碼的實(shí)例,希望能起到拋磚引玉的作用。
關(guān)鍵詞:信息論與編碼;實(shí)驗(yàn);課程建設(shè);信息安全
中圖分類(lèi)號(hào):G642
文獻(xiàn)標(biāo)識(shí)碼:B
1 “信息論與編碼”課程中引入實(shí)驗(yàn)的必要性
“信息論與編碼”課程是信息安全專(zhuān)業(yè)的學(xué)科基礎(chǔ)必修課,然而與信息論課程的重要性相比,它的課程建設(shè)和教學(xué)效果卻相對(duì)落后。筆者在參考文獻(xiàn)[1]中深入分析了該課程目前存在的問(wèn)題,包括教學(xué)內(nèi)容過(guò)于抽象、脫離學(xué)生的實(shí)踐經(jīng)驗(yàn),教學(xué)方法以課堂理論教學(xué)為主,缺少實(shí)踐和啟發(fā)互動(dòng)環(huán)節(jié)等等。從這些問(wèn)題能夠看出,產(chǎn)生這些問(wèn)題的根本原因是理論知識(shí)與學(xué)生的生活工作實(shí)踐脫節(jié)。這給本科教學(xué)帶來(lái)了很大的困難,學(xué)生普遍反映“信息論與編碼”課程內(nèi)容理論性太強(qiáng)、難以理解,失去了學(xué)習(xí)興趣,這樣既不利于對(duì)課程內(nèi)容的深入理解,也不利于形成理論聯(lián)系實(shí)際的學(xué)風(fēng),更不利于發(fā)現(xiàn)問(wèn)題、解決問(wèn)題能力的培養(yǎng)。
因此非常有必要從學(xué)生的認(rèn)知能力出發(fā),結(jié)合信息安全專(zhuān)業(yè)特點(diǎn),設(shè)計(jì)一套適用的配套實(shí)驗(yàn),把理論知識(shí)和學(xué)生實(shí)踐之間那個(gè)脫了的節(jié)連接起來(lái)。這套實(shí)驗(yàn)要達(dá)到以下三個(gè)目的:
(1) 將課堂講授內(nèi)容運(yùn)用于實(shí)驗(yàn),學(xué)以致用,幫助學(xué)生理解課程內(nèi)容;
(2) 實(shí)驗(yàn)內(nèi)容貼近學(xué)生生活實(shí)踐,提高學(xué)生學(xué)習(xí)興趣;
(3) 實(shí)驗(yàn)內(nèi)容與學(xué)生專(zhuān)業(yè)掛鉤,讓學(xué)生明確“信息論與編碼”課程在信息安全專(zhuān)業(yè)中的重要地位,提高學(xué)生學(xué)習(xí)的自覺(jué)性。
2實(shí)驗(yàn)內(nèi)容的安排原則
在實(shí)驗(yàn)內(nèi)容的安排上,要注意以下幾個(gè)原則:
(1) 實(shí)驗(yàn)內(nèi)容既要扣住課堂知識(shí),又不要簡(jiǎn)單重復(fù)課堂知識(shí),要用學(xué)生熟悉的內(nèi)容或者與專(zhuān)業(yè)掛鉤的內(nèi)容將知識(shí)點(diǎn)串起來(lái)。設(shè)計(jì)時(shí)要從大學(xué)本科學(xué)生的認(rèn)知能力和信息安全專(zhuān)業(yè)特點(diǎn)入手,在整個(gè)課程體系中系統(tǒng)考慮,即一個(gè)實(shí)驗(yàn)不要只扣住所在章節(jié)的一個(gè)知識(shí)點(diǎn),可以將已經(jīng)講過(guò)的知識(shí)點(diǎn)盡量多地貫通。
(2) 盡量不設(shè)計(jì)驗(yàn)證性實(shí)驗(yàn),多設(shè)計(jì)一些綜合性實(shí)驗(yàn)。這是因?yàn)椤靶畔⒄撆c編碼”課程一般是在三年級(jí)開(kāi)設(shè),此時(shí)學(xué)生已經(jīng)具備了一定的動(dòng)手能力和分析問(wèn)題、解決問(wèn)題的能力,多安排一些綜合性實(shí)驗(yàn)更能為畢業(yè)設(shè)計(jì)以及將來(lái)的工作和深造做好準(zhǔn)備。
(3) 難度要適中,既要有拔高,又要使學(xué)生付出一定的努力能夠?qū)崿F(xiàn)。太簡(jiǎn)單,起不到實(shí)驗(yàn)的目的;太難,學(xué)生總是不能獨(dú)立完成,慢慢就會(huì)失去學(xué)習(xí)興趣。
(4) 為了便于實(shí)驗(yàn)在各種條件下都能開(kāi)展,實(shí)驗(yàn)環(huán)境限制于未聯(lián)網(wǎng)的計(jì)算機(jī)。實(shí)驗(yàn)方法要考慮學(xué)生的理解能力和動(dòng)手能力,以計(jì)算機(jī)仿真為主。
(5) 實(shí)驗(yàn)可以分級(jí),培養(yǎng)學(xué)生獨(dú)立思考能力,鼓勵(lì)學(xué)生之間或者學(xué)生與外界之間的有效合作。根據(jù)實(shí)驗(yàn)的難易程度和復(fù)雜程度,可以將實(shí)驗(yàn)分為表1所示的4個(gè)級(jí)別。
選作題既滿(mǎn)足了不同能力學(xué)生的不同需求,也為教師根據(jù)課時(shí)布置實(shí)驗(yàn)帶來(lái)了靈活性。
需要學(xué)生獨(dú)立完成的實(shí)驗(yàn),可以培養(yǎng)學(xué)生獨(dú)立思考的能力。對(duì)于允許學(xué)生合作完成的實(shí)驗(yàn),并不是讓大家互相抄襲,而是學(xué)生之間或者學(xué)生與外界之間可以討論問(wèn)題及其解答方法,但是每個(gè)學(xué)生必須自主完成實(shí)驗(yàn),而且必須在實(shí)驗(yàn)報(bào)告中標(biāo)出“***時(shí)間,***地點(diǎn),就***與***進(jìn)行了探討,得到了***結(jié)論。”,這一方面培養(yǎng)了學(xué)生的團(tuán)隊(duì)合作精神和能力以及溝通能力,另一方面有利于建立良好的學(xué)習(xí)氛圍,能夠讓學(xué)生初步了解如何做科研,并培養(yǎng)學(xué)術(shù)道德。
3一個(gè)實(shí)例
筆者已經(jīng)在實(shí)際教學(xué)過(guò)程中設(shè)計(jì)了多個(gè)實(shí)驗(yàn),下面就給出一個(gè)實(shí)例,并對(duì)其進(jìn)行分析。該實(shí)驗(yàn)的部分內(nèi)容參考自文獻(xiàn)[2]。
3.1題目
限失真信源編碼是多媒體數(shù)據(jù)壓縮的主要方法,為這一部分設(shè)計(jì)的實(shí)驗(yàn)名稱(chēng)是“實(shí)現(xiàn)一個(gè)簡(jiǎn)化的JPEG編碼器”。題目如下:
JPEG是目前主流的圖像壓縮標(biāo)準(zhǔn),試用計(jì)算機(jī)仿真(推薦使用MATLAB)一個(gè)簡(jiǎn)化的JPEG編碼器(即JPEG壓縮器)。該編碼器的壓縮過(guò)程如圖1所示。
其中的“量化”與JPEG壓縮標(biāo)準(zhǔn)中的量化不完全一樣,本仿真程序中的量化過(guò)程為將絕對(duì)值小于某一給定數(shù)值的所有系數(shù)置零。
仿真程序需要具備以下功能:
(1) 完成圖1中出現(xiàn)的所有步驟;
(2) 量化過(guò)程放在一個(gè)循環(huán)中,循環(huán)變量為cutoff,依次取值0, 10, 20, …,100,每循環(huán)一次,把絕對(duì)值小于cutoff的所有DCT系數(shù)置零,被置零就意味著該數(shù)據(jù)被壓縮掉了;
(3) 對(duì)每塊量化后的8*8的DCT系數(shù)執(zhí)行一次逆DCT運(yùn)算,重構(gòu)圖像并顯示;
(4) 確定初始圖像和重構(gòu)圖像之間的均方誤差,并比較cutoff取不同值時(shí)均方誤差與圖像尺寸的關(guān)系。
該實(shí)驗(yàn)級(jí)別為合作選作。
3.2參考答案
MATLAB程序代碼和每行代碼的作用如下:
load imdemos flower;%載入一幅灰度圖像“flower”
flower=double(flower);%為進(jìn)行后面的運(yùn)算,將整數(shù)數(shù)據(jù)變?yōu)殡p精度浮點(diǎn)數(shù)據(jù)
set(gcf,'NumberTitle','off','Name','Flower');%打開(kāi)一個(gè)圖像顯示窗口,該窗口無(wú)需順序編號(hào),窗口標(biāo)題為“Flower”
imshow(flower,[0 255]);%顯示打開(kāi)的圖像,如圖2的(a)所示
x=[];%變量x用來(lái)記錄圖像尺寸
y=[];%變量y用來(lái)記錄均方誤差
encoded=blkproc(flower,[8 8],'dct2');%對(duì)圖像的每一個(gè)8*8分塊執(zhí)行二維DCT運(yùn)算,系數(shù)記錄在變量encoded中
for cutoff=0:10:100,% cutoff的取值為0, 10, 20,…,100,每取一次值,執(zhí)行下面的操作
encoded(abs(encoded) decoded=round(blkproc(encoded,[8 8],'idct2'));%對(duì)系數(shù)的每個(gè)8*8分塊執(zhí)行二維逆DCT運(yùn)算并取整,這實(shí)質(zhì)就是一個(gè)圖像重構(gòu)過(guò)程,重構(gòu)后的圖像記錄在變量decoded中 x=[x,nnz(encoded)];%計(jì)算圖像尺寸,即非零系數(shù)的個(gè)數(shù),每次計(jì)算出的圖像尺寸組成一個(gè)向量 y=[y,mean2((flower-decoded).^2)];%計(jì)算初始圖像flower和重構(gòu)圖像decoded之間的均方誤差,每次計(jì)算出的均方誤差組成一個(gè)向量 figure;%打開(kāi)一個(gè)新的圖像顯示窗口 set(gcf,'NumberTitle','off','Name', sprintf('cutoff=%d',cutoff));%該窗口無(wú)需順序編號(hào),窗口標(biāo)題為“cutoff=***” imshow(decoded,[0 255]);%顯示重構(gòu)后的圖像,如圖2的(b)-(l)所示 end figure;%打開(kāi)一個(gè)新的圖像顯示窗口 set(gcf,'NumberTitle','off','Name','Comparison');%該窗口無(wú)需編號(hào),窗口標(biāo)題為“Comparison” plot(x,y,'s-');%以圖像尺寸x為橫坐標(biāo),以均方誤差y為縱坐標(biāo),作圖,如圖3所示 title('Comparison of File Size and Image Error');%該圖的標(biāo)題 xlabel('Non-zero matrix values(number of bytes to store)');%該圖的橫坐標(biāo)標(biāo)題 ylabel('Mean squared error');%該圖的縱坐標(biāo)標(biāo)題 可以看到,在MATLAB中僅用22行代碼就實(shí)現(xiàn)了JPEG壓縮標(biāo)準(zhǔn)的仿真和分析,這得益于MATLAB強(qiáng)大的數(shù)值計(jì)算功能,例如可以進(jìn)行塊操作,而無(wú)須每個(gè)分塊分別處理;DCT和逆DCT都有現(xiàn)成的函數(shù)等等。如果需要用某種語(yǔ)言(C、Java、匯編等)實(shí)現(xiàn)JPEG的編解碼,DCT和逆DCT的代碼很多網(wǎng)站都有,可以從網(wǎng)上很方便地查找到。 從圖2能夠看出,隨著越來(lái)越多的數(shù)據(jù)被壓縮掉,圖像質(zhì)量越來(lái)越差。當(dāng)cutoff比較大的時(shí)候,甚至能看出8*8分塊。圖3清楚地表明圖像尺寸與均方誤差之間呈反比關(guān)系。均方誤差越大,表明圖像質(zhì)量越差。因此曲線中最左上角的點(diǎn)代表了圖2中的(l),最右下角的點(diǎn)代表了圖2中的(b)。 3.3分析 這是一個(gè)綜合性實(shí)驗(yàn),實(shí)驗(yàn)內(nèi)容涉及限失真信源編碼中的DCT、量化、誤差等多個(gè)知識(shí)點(diǎn)。無(wú)論學(xué)生選用什么語(yǔ)言,均可以在單機(jī)上仿真完成。難度中等偏上,如果多個(gè)學(xué)生互相合作,經(jīng)過(guò)商量討論是可以完成的。筆者的實(shí)踐證明了這一點(diǎn),雖然是選作題,但還是有不少同學(xué)自由組合完成了題目的要求。 4結(jié)束語(yǔ) 對(duì)于本次“信息論與編碼”課程的實(shí)驗(yàn)教學(xué)探索,我院在信息安全專(zhuān)業(yè)05級(jí)1、2班中進(jìn)行了實(shí)踐,收到了很好的效果,激發(fā)了學(xué)生的學(xué)習(xí)興趣和鉆研精神,學(xué)生的完成情況比教師的預(yù)計(jì)要好得多,而且學(xué)生普遍感覺(jué)收獲很大。 這次“信息論與編碼”課程的實(shí)驗(yàn)教學(xué)探索才剛剛開(kāi)始,在今后的教學(xué)過(guò)程中還需要不斷實(shí)踐,設(shè)計(jì)出更多更好的實(shí)驗(yàn)。希望同行們能夠互相交流,集思廣益。 參考文獻(xiàn): [1] 姜楠. “信息論”課程本科教學(xué)探索與實(shí)踐[J]. 計(jì)算機(jī)教育,2007,(24): 52-54. [2] 麻省理工學(xué)院信息論開(kāi)放課程[OL]. http://www.core.org.cn.