摘要:本文分析了匯編語言程序設(shè)計課程的教學(xué)重點,歸納、篩選出該課程的五種考試題型,對該課程的試題庫組建與考試系統(tǒng)的設(shè)計進行了總結(jié)探討,提出并論述了標(biāo)準(zhǔn)試卷模板、四色原理和人工智能原理在試題庫構(gòu)建、試卷生成、自動判分等問題域的應(yīng)用問題。
關(guān)鍵詞:匯編語言;試題庫;在線考試;標(biāo)準(zhǔn)試卷模板;四色原理;AI;專家系統(tǒng)
中圖分類號:G642文獻標(biāo)識碼:B
文章編號:1672-5913 (2007) 20-0056-06
1引言
現(xiàn)代課程論首次將泰勒的“評價”原理引入課程論[1],試圖通過評價改進課程、改進教學(xué)。課終考試則是課程評價的基本手段??荚囘@根“指揮棒”的作用誰也難以抗拒。畢竟考什么和怎樣考會直接影響教師教什么、怎樣教,以及學(xué)生學(xué)什么、怎樣學(xué)。難怪有訪問學(xué)者撰文介紹美國某高校的情況,竟是“為考試而教,為考試而學(xué)”[2]。仔細(xì)讀過這篇文章,您會發(fā)現(xiàn)“為考試而教而學(xué)”的口號并不等同于“應(yīng)試教育”,而是要通過科學(xué)的確定考試內(nèi)容和考試安排,加強教學(xué)的針對性,提高教學(xué)質(zhì)量。目前相對于其他論題,計算機專業(yè)的考試研究的文章發(fā)表得不多。本文擬對“匯編語言程序設(shè)計”課程的考試命題與試題庫組建進行探討。
2教學(xué)重點
一門課程的教學(xué)重點乃是該課程命題的主要依據(jù)。一份好的試卷應(yīng)能體現(xiàn)對課程基本結(jié)構(gòu)的要求,包括該課程的基本知識、基本規(guī)律和基本方法。匯編語言課程的教學(xué)重點是什么呢?當(dāng)然是讀、寫程序。這是程序設(shè)計語言課程的共同點。為了用匯編語言寫程序,又必須首先了解計算機硬件結(jié)構(gòu)、數(shù)制與編碼等基礎(chǔ)知識,必須熟悉CPU的指令系統(tǒng),還要有上機實驗緊密配合。現(xiàn)將匯編語言課程教學(xué)重點列于表1。
注:表格中*部分內(nèi)容為本科層次提高內(nèi)容
3試卷設(shè)計
3.1題型設(shè)置
基于對匯編語言課程教學(xué)重點的分析,筆者從歷年試卷中篩選、歸納出五種題型:(1)填空題;(2)判斷題;(3)閱讀程序題;(4)編程題;(5)實驗題。不同的教學(xué)內(nèi)容、教學(xué)要求,可通過不同的題型來考查。比如表一中的教學(xué)重點1——硬件結(jié)構(gòu)、數(shù)制與編碼等基礎(chǔ)知識,是為了幫助初學(xué)者更好地理解指令的功能及執(zhí)行過程,只需達到基本的了解,更深入的知識會在后續(xù)課“微機原理與接口電路”、“計算機體系結(jié)構(gòu)”中展開。因而與之對應(yīng)的題型采用了填空題。再如,表一中的教學(xué)重點2——正確使用指令、偽指令,是讀、寫匯編語言程序的重要基礎(chǔ)。采用判斷題,列舉使用指令時易混淆、易犯的錯誤,讓學(xué)生判斷可以達到考查的目的。表一中的教學(xué)重點3——匯編語言程序,采用閱讀題和編程題兩種題型考查。凡是學(xué)過匯編語言者都能深切體會到匯編語言程序之復(fù)雜。譬如“在屏幕上顯示一個十進制成績分?jǐn)?shù)”這樣一個看似簡單的問題,需要寫一般復(fù)雜的程序才能實現(xiàn)。如果將問題改為“在屏幕上顯示寄存器AX的值”,就要改用另一段不同的程序來實現(xiàn)。因此,學(xué)習(xí)匯編語言編程,需要逐個問題、逐個類型去學(xué)習(xí),可謂紛繁、龐雜。學(xué)生一時很難記住這么多類型各異的編程細(xì)節(jié),亦很容易混淆。即使是教師或?qū)I(yè)的程序員也不容易記清楚。我有一個朋友專事匯編語言的編程開發(fā),很有些成績。但是他也坦承,他自己寫的程序放下一周后,再拿來看,自己一下子也看不懂了。由此可見,在閉卷筆試中對學(xué)生編程的要求要恰當(dāng)。編程題的問題要典型,要體現(xiàn)基本的程序設(shè)計方法。對于較復(fù)雜的程序,可以通過閱讀程序結(jié)合完型填空題來考查。讓學(xué)生根據(jù)程序的功能,選擇適當(dāng)?shù)倪x項填入程序的空白處,突出了對關(guān)鍵知識點和閱讀程序能力的考查。筆者對本學(xué)期高職專一、二、三班114名同學(xué)的匯編語言課終考試成績進行統(tǒng)計分析,結(jié)果表明閱讀程序題具有很好的區(qū)分度,它和編程題、總成績之間的相關(guān)性密切[3]。
實驗題型是筆者在本學(xué)期課終考試所做的一個嘗試。以往實驗考核筆者多次采用上機實作的方法。學(xué)生抽題后,上機編程運行,并將結(jié)果存于輸出文件中。教師事后根據(jù)輸出文件的結(jié)果正確與否打分。這種考核方法有兩個問題,一是當(dāng)學(xué)生人數(shù)較多時,教師要檢查、監(jiān)控學(xué)生上機操作過程很困難,“忙不過來”。其次是僅憑結(jié)果文件判定學(xué)生的上機能力,并不完全可靠。如有的學(xué)生可能因為某個指令細(xì)節(jié)記不清,或一時糊涂,給出了錯誤的結(jié)果,甚至“卡殼”未做出結(jié)果。其實,這個學(xué)生平時實驗做得還可以。因此可以根據(jù)學(xué)生平時的實驗表現(xiàn)、出勤率記一個實驗分,同時在課終考試筆試試卷中增設(shè)實驗題。將兩者結(jié)合起來可以避免片面性、偶然性,使考查更全面、也更能突出重點。實驗題包含的內(nèi)容為:(1)根據(jù)匯編時的報錯信息,更正程序中的語法錯誤;(2)正確預(yù)測程序運行后,寄存器、存儲器的值和實際運行結(jié)果比較,以發(fā)現(xiàn)程序中的語義錯誤、邏輯錯誤;(3)DEBUG命令的使用、調(diào)試中遇到的問題及解決方法。
3.2差異化教學(xué)在試題、試卷中的體現(xiàn)
高校擴招后,學(xué)生的差異性尤顯突出。傳統(tǒng)的“一刀切”的教學(xué)模式,已不能適應(yīng)新的教學(xué)形勢的要求。針對不同程度、不同興趣的學(xué)生,實施差異化教學(xué)或分層次教學(xué)已被提上教學(xué)研究日程,這在考試命題中也應(yīng)予以體現(xiàn),即奉行后現(xiàn)代課程論的多元評價觀[4]——制定基于學(xué)生差異性的多元評價標(biāo)準(zhǔn)。如筆者在本學(xué)期教學(xué)中就劃分了基本要求、較高要求和高要求三個層次,并落實到平時學(xué)生作業(yè)、實驗和課終考試中。本學(xué)期課終考試中的編程題第1題、第2題第1小題、第2題第2小題分別為基本要求題(10分)、較高要求題(7分)和高要求題(7分)。整個試卷基本要求題量為60%~70%,較高要求題量為20%,更高要求題量占10%左右。
3.3關(guān)于多選題題型的討論
在考試中是否采用多選題及在多大程度、多大比例上采用多選題,是教師在命題、試題庫組建時經(jīng)常討論的一個問題。多選題在平時教學(xué)、練習(xí)中運用恰當(dāng),會收到很好的效果。而在考試中的運用,要根據(jù)不同學(xué)科的特點及不同層次教學(xué)要求仔細(xì)斟酌。匯編語言的教學(xué)重點應(yīng)圍繞讀、寫程序展開,不宜大量采用多選題,否則易誤導(dǎo)學(xué)生過于注重語法次要細(xì)節(jié)和知識末節(jié),不利于學(xué)生從整體上把握程序,不利于學(xué)生讀、寫程序和實踐能力的培養(yǎng)。由此還會產(chǎn)生另一個問題,就是學(xué)生為了備考、埋頭做多選題,而造成死記硬背的后果。上世紀(jì)80年代中期,全國多所部屬醫(yī)學(xué)院校曾組織過幾輪以多選題為主要題型的統(tǒng)考[5]。為了在統(tǒng)考中達標(biāo),取得較好名次,學(xué)生放棄了教學(xué)實習(xí)和非統(tǒng)考科目學(xué)習(xí),部分教師也將主要時間集力放在“深入”教室輔導(dǎo)學(xué)生做題上,師生共同陷入題海大戰(zhàn)之中不能自拔。據(jù)醫(yī)學(xué)院校的一位老師介紹,考前演練多選題競達數(shù)千道之多。其結(jié)果嚴(yán)重沖擊了正常的教學(xué)秩序,隨后被叫停。前車之轍,后車之鑒。醫(yī)生不能靠做多選題培養(yǎng),計算機人才也不例外?,F(xiàn)在有些學(xué)校提出將課終考試與等級考試、自學(xué)考試接軌。其實像等級考試、自學(xué)考試這種人多面廣的考試,大量采用多選題是為了便于機器閱卷,是“不得已而為之”。如果盲目照搬就會失去辦學(xué)特色,甚至脫離本校學(xué)生實際,造成不良后果。
4題庫組建研究
4.1題庫組建的必要和途徑
題庫組建是精品課程建設(shè)的重要環(huán)節(jié),也是提高命題工作效率、減輕教師負(fù)擔(dān)的現(xiàn)實需求。現(xiàn)在每到期末,每門課的任課教師都要出A、B、C三套考卷,一套用于考試,另一套用于補考,還有一套用于畢業(yè)前總補考。假如教兩門課就要出6套考卷,這要耗費多少時間、精力!每個老師都有深切體會。組建題庫勢在必行,問題在于如何才能組建起科學(xué)、實用的題庫。那種靠上網(wǎng)下載、東拼西湊,短時間就新鮮出爐的題庫,只能是倒人胃口的“雜燴”。因為你沒有具體分析自己的教學(xué)對象、教學(xué)層次,只知照抄重點大學(xué)的習(xí)題,甚至是“獵奇”,搞一些偏題、怪題、難題,考研試題,也不分析學(xué)生情況。拿這樣一些題目考學(xué)生極不合理。題庫應(yīng)當(dāng)源自教師長期的教學(xué)積累,從教師講過的例題、學(xué)生做過的作業(yè)以及歷年考試的題目中篩選,當(dāng)然也要適當(dāng)參考其他院校、教材中的習(xí)題。高校擴招后,一般院校的教學(xué)中心要適當(dāng)放低,題庫的中心也要相應(yīng)放低,也就是要更加重視基礎(chǔ)。好的試題應(yīng)當(dāng)是“似曾相識,未曾相識”。比如教師講過一個“字操作數(shù)用循環(huán)方法累加求和”的例題,考試時改為“字節(jié)操作數(shù)累加求和”,這就要對程序中的指令、偽指令作一些相應(yīng)的改動,從中可以考查學(xué)生對程序的理解和運用能力。
4.2試卷庫與試題庫
題庫有兩種類型,一種是試卷庫,另一種是試題庫。對于班次少、應(yīng)考人數(shù)不多,教材相對穩(wěn)定的一部分專業(yè)課,組建試卷庫較為方便、實用、經(jīng)濟。如果一門學(xué)科能篩選出6~8套較成熟的考卷,已經(jīng)可以滿足該專業(yè)課常規(guī)考試的要求。但是對于應(yīng)考人數(shù)多,涉及面廣的公共基礎(chǔ)課和專業(yè)基礎(chǔ)課,固定的試卷就不一定適合要求。同一門課對不同專業(yè)、不同層次、不同教學(xué)對象要達到的教學(xué)目標(biāo)是很不相同的,考試題要適合各自的需求,就得從試題庫中按要求隨機選題。試題庫中就得有一定數(shù)量的習(xí)題積累,并按照題型、知識點(章、節(jié))、類別(基本題、較高要求題、更高要求題)科學(xué)地組織和排列。假設(shè)一套試卷的題量按大、小題30題左右計算,試題庫中和6~8套試卷庫的題量相當(dāng)?shù)念}量,至少應(yīng)當(dāng)在200~300道題以上,然后可以逐步積累擴充,不斷豐富題庫的題量。
5考試管理系統(tǒng)的設(shè)計
考試管理系統(tǒng)的使用有什么好處呢?(1)將提高試卷的信度、效度和區(qū)分度,促進考試的標(biāo)準(zhǔn)化、科學(xué)化,從而避免不同教師不同教材命題發(fā)生的考試漲落現(xiàn)象;(2)將提高考務(wù)管理工作的效率和教學(xué)管理工作的水平。隨著計算機技術(shù)和網(wǎng)絡(luò)技術(shù)的普及,考試管理系統(tǒng)的開發(fā)與應(yīng)用已成為計算機教育應(yīng)用的熱點。然而能夠堅持使用下來的系統(tǒng)并不多見。我院曾引進某名牌大學(xué)的通用考試系統(tǒng)軟件,但一直束之高閣。究其原因就在于對“通用考試系統(tǒng)”而言,“通用”只是一廂情愿。系統(tǒng)論的原理告訴我們,不可能存在“全能”的系統(tǒng)[6]。試想,英語、數(shù)學(xué)、程序設(shè)計語言這些不同學(xué)科,其考試形式、試題題型差別那么大,試題庫組織、命題策略各不相同,怎么可能設(shè)計出一個包羅萬象的考試系統(tǒng),將它們?nèi)磕依ㄟM去呢?所以考試系統(tǒng)要逐個(類)學(xué)校、逐個(類)學(xué)科分別去設(shè)計,這是一項很扎實而又長期的建設(shè)工作,不可能一蹴而就。
5.1考試系統(tǒng)的架構(gòu)
考試系統(tǒng)有三種架構(gòu):(1)基于任課教師和教務(wù)部門自用的單機架構(gòu)。適合傳統(tǒng)的分考場筆試考試,試卷生成后可以直接打印印刷,也可以做為FTP文件遠(yuǎn)程傳輸,再分考點打印印刷。(2)基于試驗室機考的C/S架構(gòu)??荚囋趯iT的機房進行,一人一機,一場多卷。服務(wù)器安裝試題庫和服務(wù)器程序,終端安裝客戶端程序。(3)基于互聯(lián)網(wǎng)在線考試的B/S架構(gòu)。B/S架構(gòu)考試系統(tǒng)是基于服務(wù)的架構(gòu)。學(xué)習(xí)者學(xué)完了選修的課程、開放的課程,可以隨時隨地在任何有瀏覽器的終端上申請考試,通過后即獲得相應(yīng)學(xué)分。隨著學(xué)分制的實行,選修課的擴大,開放課程和遠(yuǎn)程教育的發(fā)展,B/S架構(gòu)的考試系統(tǒng)有廣闊的發(fā)展前景。
5.2命題策略
考試系統(tǒng)是一個包括多個子系統(tǒng)的復(fù)雜系統(tǒng),其核心部分是試卷生成子系統(tǒng)。試卷如何生成才能符合規(guī)定的要求,這就是命題策略所要研究和達成的目標(biāo)。如果直接從試題庫中隨機命題,會面臨一個很大的問題,即試題的章節(jié)(知識點)覆蓋率很難達到規(guī)定的比例。完全由任課教師在機上手工選題,既費時費力,也容易產(chǎn)生主觀性和片面性。解決以上問題的方法是:(1)命題時首先建立雙向細(xì)目表和標(biāo)準(zhǔn)試卷模板。雙向細(xì)目表的縱向為題型和知識點(章節(jié))的二級分布,橫向是試題類別的分布。在雙向細(xì)目表中確定各題型、各知識點、各類別題目數(shù)后,自動統(tǒng)計出它們各自所占的比例,調(diào)整各欄題目數(shù)符合規(guī)定要求后,即形成標(biāo)準(zhǔn)試卷模板,可以將它保存于模板文件中。本次考試和今后考試都可以依據(jù)標(biāo)準(zhǔn)試卷模板中規(guī)定的各題型、各知識點、各類別的題目數(shù),在題庫中隨機選題。(2)如果考試要求有變化,可以重建雙向細(xì)目表,形成新的隨機試卷模板,并保存于另一個模板文件中。如此,便可以根據(jù)不同的試卷模板,生成不同考試要求的多種試卷。
5.3用Access/SQL Server數(shù)據(jù)庫構(gòu)造試題庫
用Access/SQL Server構(gòu)造的試題庫主要包括填空題表、判斷題表、閱讀程序題表、編程題表、實驗題表五個主表和題型表、知識點表兩個副表。各主表均包括試題編號、孿生編號、知識點、類別、加/解鎖、題干、答案等字段。主表中的孿生編號字段起什么作用呢?根據(jù)4色原理,4種顏色足以使地圖中每個國家與鄰近國家的顏色互不相同。在試題庫中孿生編號相同的試題總有4道題。于是,根據(jù)孿生編號選出的試題同時就有4道孿生題,可以形成A、B、C、D四套形式酷似而內(nèi)容、答案不完全相同的孿生試卷。如果將它們同時打印、印刷,并按一定座號順序發(fā)給考場的學(xué)生(一場四卷),就會使每個學(xué)生和鄰近學(xué)生的考卷互不相同,于是可以有效地遏制考場作弊。即便有現(xiàn)代通信工具,也無法傳送答案。因為每個考生(或場外人員)都不可能知道其他同學(xué)使用的是孿生試卷中的那一套試卷。
5.4在線考試系統(tǒng)自動判分問題
在匯編語言試題庫的五個題型中,判斷題和閱讀程序、完型填空題屬客觀題,可以自動判分。填空題和實驗題可以認(rèn)為是準(zhǔn)客觀題,經(jīng)過簡單的字符串匹配和邏輯“與”、“或”的判斷,也能實現(xiàn)自動判分。至于編程題,由于解法不是唯一的,實現(xiàn)自動判分較困難,需人工判分,因此屬主觀題。但是在線考試提出即時判分的要求,這就有必要研究編程題自動判分的可能性。借助人工智能專家系統(tǒng)的構(gòu)建原理與實踐以及模糊數(shù)學(xué)中的模糊評判原理,建立一個編程題的自動判分專家系統(tǒng),有可能使這個問題的解決得到突破。
作者簡介
由布西,山東教育學(xué)院計算機科學(xué)與技術(shù)系,副教授,主講課程包括程序設(shè)計語言以及軟件工程與畢業(yè)設(shè)計。
通信地址:山東省濟南市歷山路36號山東教育學(xué)院計算機科學(xué)與技術(shù)系
郵編:250002
電話:0531-86401253(辦) 0531-87111830(宅)
E-mail:you_bx@163.com
附:06高職專匯編語言程序設(shè)計期終考試試卷(A卷) 山東教育學(xué)院2007.07.10
一、填空題(24分,每小題4分)
1、8086/8088包括兩個功能單元________和________,前者的功能是________,后者的功能是________,它們處于________工作狀態(tài)。
2、8086/8088的數(shù)據(jù)寄存器AX,BX,CX,DX中,通常作為累加器使用的是________,作為擴展累加器使用的是________,作為地址寄存器使用的是________,作為計數(shù)器使用的是________。
3、8086/8088有________條地址線,尋址能力達________MB。假如一存儲器單元的邏輯地址為17DE:0012,該存儲單元的段基址為________,偏移量為________,實際物理地址為________。
4、假如堆棧指針(SP)=0012H,數(shù)據(jù)寄存器(AX)=0E3AH,(BX)=4B7AH,當(dāng)連續(xù)執(zhí)行三條指令PUSH AX,push BX,POP AX后,(SP)=________,(AX)=________,(BX)=________。
5、一條完整的指令語句包括________,________,________,________四部分,其中________ 和 ________是可選的。
6、子程序調(diào)用包括________,________,________,________,________五個過程。
二、判斷題:判定以下指令的正誤(20分,每小題2分)
1、mov ds,data
2、mov al,500
3、mov al,byte ptr[bx]
4、xchg [si],[di]
5、idiv 3
6、sar ax,5
7、xor al,ofh
8、push bl
9、stc
10、out 20h,al
三、閱讀程序,將合適的選項填入程序的________處。(16分,每小題8分)
1、 自FIRST單元開始存放的是一個4字節(jié)的16進制數(shù)(低字節(jié)在前),將這個數(shù)左移2位后存放到自SECOND開始的單元。
data segment
first db 90h,5fh,6eh,69h
second db 5 dup(0)
data ends
stack segment para stack 'stack'
stapn db 100 dup(?)
stack ends
code segment
assume cs:code,ds:data,es:data,ss:stack
start:
mov ax,data
mov ds,ax
mov es,ax
mov si,offset first
mov di,offset second
________
mov cx,2
loop1:
________
push di
push cx
mov cx,4
loop2:
________
________ al,1
________
loop loop2
________ first[di],1
________
________
mov si,di
loop loop1
int 3h
code ends
end start
選項:CLC,CLD,STC,STD,LODSB,LODSW, STOSB, STOSW,SAL,SHL,ROL,RCL,POP CX,POP DI
2、 用戶在提示信息 Input your password please: 后輸入6個字符的密碼,用戶每按一個鍵則屏幕上顯示一個 * 。密碼字符雖不顯示在屏幕上,但要送入PASSW變量中。
deseg segment
passw db ?,?,?,?
disp db 'Input your password please:',0ah,0dh,'$'
mm db '*$'
deseg ends
sseg segment para stack 'stack'
stapn db 80h dup(0)
sseg ends
cseg segment
assume cs:cseg,ds:dseg,ss:sseg
start:
mov ax,dseg
mov ds,ax
mov dx,offset disp
mov ah,________
int 21h
mov si,offset passw
mov cx,4
again:
mov ah,________
int 21h
mov [si],al
inc si
mov dx,offset mm
mov ah,________
int 21h
loop again
mov ah,________
int 21h
cseg ends
end start
選項:01H,02H,06H,08H,09H,0aH,4cH
四、實驗題(16分,每小題8分)
1、 試根據(jù)匯編時的報錯信息,改正源程序中的錯誤。
exam1.asm( 9) :error : Symble not defined:date
exam1.asm(14):error: Expected:instruction or directive
data segment
n dw 2007
q DW ?
r DW ?
data ends
code segment
assume cs:code,ds:data
start:
mov ax,date
mov ds,ax
mov ax,n
mov bx,500
xor dx,dx
diu bx
mov q,ax
mov r,dx
mov ah,4ch
int 21h
code ends
end start
2、試給出用DEBUG調(diào)試程序出現(xiàn)以下問題的解決方法或正確步驟:
(1)DEBUG不能運行,屏幕報出 Incorrect DOS Vesion 的信息。
(2) 用t命令調(diào)試0B5B:000A INT 21H時,屏幕出現(xiàn)NOP的提示信息。
STRING DB‘COMPUTER’, ‘$’
┇
MOV BX,OFFSET STRING
again:MOV DL,[BX]
0B5B:0008 MOV AH,02H
0B5B:000A INT 21H
0B5B:000C INC BX
0B5B:000E CMP [BX],24h
0B5B:0010 JNE again
┇
五、編程題(24分,第1小題10分,第2小題14分)
1、存器BX作地址指針,自BX所指的內(nèi)存單元開始連續(xù)存放著3個無符號數(shù):1ah,45h,23h(字節(jié)),編程求它們的和,并將結(jié)果存放在這3個數(shù)之后。要求用循環(huán)方法實現(xiàn)。
2、從BCDBUF開始的連續(xù)單元,存放著用BCD碼表示的15個學(xué)生的某學(xué)科成績(45h,61h,70h,86h, 93h,75h,98h,69h,88h,81h,56h,73h,86h,90h,64h)。要求:
(1) 編寫求學(xué)生成績最高分的子程序,最高分要放在MAX單元中。
(2) 編寫在屏幕上顯示這個最高分的子程序。