王琦
【摘要】簡要介紹了英國A-LEVEL計算機科學課程內容及考核方式。通過對一道典型試題的分析,歸納了英國A-LEVEL程序設計教育評價方式的特點,及對中國高中程序設計教育的啟發。
【關鍵詞】高中 ?程序設計 ?評價方式
【中圖分類號】G63 ?【文獻標識碼】A 【文章編號】2095-3089(2019)47-0012-02
一、一道A-LEVEL計算機科學程序設計試題及評析
1.試題(9608/22 May/June 2017 Question 6)
A computerised vehicle licensing system stores details about vehicles and their registration marks(number plates or license plates).
To be valid, a vehicle registration must comply with the following rules:
?誗It must be between six and nine characters long.
?誗Characters 1 to 3 are upper case alphabetic characters.
?誗Characters 4 to 5 are numeric characters.
?誗Remaining characters are upper case alphabetic.
A function, Validate Registration is needed to check that a given registration mark follows these rules. This function takes a string, Registration as a parameter and returns a Boolean value:
TRUE if it is a valid registration
FALSE otherwise.
(a)Write program code to implement the new function, Validate Registration.
Visual Basic and Pascal: You should include the declaration statements for variables.
Python: You should show a comment statement for each variable used with its data type.
(b)The function is to be tested.
Give a valid string that could be used to check that the function returns TRUE under the correct conditions. Modify your valid String1 to test each rule separately. Explain your choice in each case.
2.試題評析
這是一道字符串處理題。在該題中涉及的測試要點包括:
(1)自定義函數
自定義函數是模塊化程序設計思想的重要體現形式。本道題開宗明義,在a小題中要求學生編寫一個自定義函數實現字符串合法性的判斷。測試重點是學生實際編寫代碼的能力,對于自定義函數編寫要點的掌握情況。函數頭的定義是否正確,是否理解形式參數與返回值的作用,能不能在函數體中實現正確的功能,并通過返回值獲得正確的判斷。
(2)字符串的基本概念
字符串問題的處理離不開對于字符串基本概念的理解。比如,字符串的長度、字符串的子串、單個字符與子串的關系。在本道題中,需要從原始串中逐個分離出字符才能界定字符類型。沒有字符串的基本概念,判斷就無從談起。
(3)字符與ASCII碼
在該題中,組成串的合法字符包括大寫英文字母與數字。考生必須有基本的ASCII碼知識,了解英文字母與數字在計算機內部的表示方法,才可以通過正確的關系與邏輯表達式描述合法字符的范圍。
(4)算法與程序的三種基本結構
考生在設計算法時,需要使用自頂向下、由粗到精的方法來思考問題。
第1步:判斷字符串的長度。如果字符串的長度在6-9之間,進入第2步。否則,這是一個非法字符串,跳到第5步。
第2步:判斷字符串的1-3位是否全部為大寫字母。如果全部是大寫字母,進入第3步。否則,這是一個非法字符串,跳到第5步。
2.1:分離出一個字符。
2.2:如果不是大寫字母,標記為非法字符串
2.3:2.1與2.2循環執行3次
第3步:判斷字符串的4-5位是否全部為數字。如果全部是數字,進入第4步。否則,這是一個非法字符串,跳到第5步。
3.1:分離出一個字符。
3.2:如果不是數字,標記為非法字符串
3.3:3.1與3.2循環執行2次
第4步:判斷字符串的剩于字符是否全部為大寫字母。如果全部是大寫字母,這是一個合法的字符串。否則,這是一個非法的字符串。
4.1:分離出一個字符。
4.2:如果不是大寫字母,標記為非法字符串
4.3:4.1與4.2循環執行1-3次
第5步:返回判斷結果。
很容易發現,程序的三種基本結構——順序結構、選擇結構和循環結構,都要在這道題中使用到。
(5)內部函數
字符串長度的判斷需要使用內部函數,比如VB中的length( ? ?)。從字符串中分離出單個字符,需要使用取子串函數,比如VB中的mid( ? ?)。
(6)程序的測試
b小題考查的就是程序的測試。在這小題中,需要學生設計5個測試數據,其中第1個是正確的測試數據,第2-5個均為錯誤的測試數據。對于錯誤的測試數據,要求學生解釋錯誤原因。按照正確串的描述,錯誤類型就包括:
串長不對
?誗1-3位中包含非大寫字母的字符
?誗4-5位中包含非數字的字符
?誗6-9位中包含非大寫字母的字符
程序測試是代碼編寫、軟件設計中的重要環節。只有掌握正確的程序測試方法,才能在編寫程序的過程中,調試錯誤,設計出正確的算法,從而真正實現程序。
二、英國A-LEVEL程序設計教育評價方式的特點
以A-LEVEL計算機科學PAPER 2為例,一般整張試卷由5-6題上文這樣的試題組成,每一題包含2-3個小題。通過對上文試題的分析,我們可以發現英國高中程序設計教育考核評價方式呈現以下特點:
1.聯系實際生活
試題背景通常取材于真實生活場景,比如上題的應用場景是車輛信息管理。學習程序設計的目的是在信息化社會中使用計算思維分析并解決問題,設計程序來實現信息的加工、表達與管理。在生活中取材可以讓枯燥的理論與操作落在真實的生活土壤之中,讓學習與評價服務于生活,考查的不僅僅是學生閱讀書本與做題的能力,也是學生在真實生活場景中分析問題、解決問題的能力。
2.重視學科思維
試卷沒有指定具體的程序設計語言,凡是涉及代碼的試題,學生需先填寫代碼名稱,再用語言寫代碼。又或者讀代碼的試題,試卷統一用偽代碼進行算法描述。這樣一來,模糊了語言與語言之間的差別,突出了在高中階段用程序設計對學生進行計算思維訓練的基本功能。考核評價的關鍵在于看學生怎樣用計算思維思考并解決問題,而不僅僅是強調學生對于某一種語言性能的掌握。既尊重了語言的多樣性,又尊重了個體選擇的多樣性。
3.強調工具方法
從變量規劃表(identifier table)、算法結構圖(structure chart)到測試數據的設計,評價的是學生學習程序設計過程中各類工具與方法的掌握情況,也是通過工具與方法考查學生分析問題的能力。分析問題是解決問題的基礎步驟,分析問題的過程是展示學科思維的過程。也就是說,工具與方法使用能力的評價即是學科思維能力的評價。
4.融合過程評價
正因為評價過程強調了工具與方法的使用,原本在一張紙質試卷上不易實現的過程評價,可以通過這些工具與方法體現出來了。同時,整張試卷沒有選擇題這種題型,學生很難通過背題、背答案這種機械押寶的方式應付考試。試卷測試結果展現的是學生對于知識理解的程度,知識遷移的能力。這種理解與遷移來源于扎實的學習過程,任何生搬硬套的學習方式很難促成這種理解與遷移,所以這是一種隱含了真實學習過程的評價方式。
三、英國A-LEVEL程序設計教育評價方式的啟發
程序設計教育在我國普通高中的開展有基礎卻又充滿了困難。作為一種具有生涯規劃作用與專業引領的高中階段基礎教學,除了勵志于進入大學學習計算機相關專業的學生以外,其他學生應該如何對待程序設計的學習是一個有意思的問題。程序設計語言是一種工具,程序設計方法卻體現了一種學科思維,即計算思維。學習程序設計不僅僅是學習一種技能,更重要的是掌握一種專門的學科思維方法。那么,無論是否要把計算機專業作為未來大學的主修方向,掌握這種學科思維方法永遠不會浪費。同時,使用計算思維解決實際問題是每一個生活在信息時代的人必備的生存技能。那么,我們有理由相信我們的程序設計教學不應該拘泥于某一種語言,或者計算幾道數學題,或者進行炫技似的表演,而應該通過思維的訓練,讓學生學會使用專業的眼光去看待生活中的實際問題,學習使用正確的工具與方法分析問題并解決問題。從而,讓更多人不懼怕程序設計,反過來讓程序設計服務于人、服務于生活。
參考文獻:
[1]CIE 9608 paper2 May/June 2015
[2]CIE 9608 paper2 October/November 2015
[3]CIE 9608 paper2 May/June 2016
[4]CIE 9608 paper2 October/November 2016
[5]CIE 9608 paper2 May/June 2017
[6]CIE 9608 paper2 October/November 2017