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