劉 越 莫方政
文章編號:1672-5913(2009)08-0126-03
摘要:計算機應用能力的培養(yǎng)以程序設計為主線,使學生掌握基于計算機的問題求解策略和基本的程序設計方法,深入理解計算機系統(tǒng)。本文分析了機器人平臺在計算機基礎課程中的適用性,敘述了如何在計算機基礎課程中利用LEGO機器人和Robot C編程語言輔助程序設計入門教學。
關鍵詞:Lego Mindstorms;程序設計;機器人
中圖分類號:G642
文獻標識碼:B
1介紹
國防科技大學的所有學生在入學后都要求學習完成“大學計算機基礎”、“程序設計基礎”等公共基礎課程。計算機公共基礎課程的目標是介紹計算機和信息技術的概念,講授利用計算機進行問題求解的方法。在武器裝備中,高科技含量越來越高,作為未來的軍隊指揮員,學生必須理解所使用的計算機設備的長處和弱點,只有深入理解計算機系統(tǒng)的工作原理,才能在戰(zhàn)場上最大性能地發(fā)揮它們的作用。計算機基礎教育強調(diào)應培養(yǎng)學生適應未來技術發(fā)展的能力,利用應用問題培養(yǎng)學生獨立思考與合作解決問題的能力,使學生成為終身的計算學習者。大部分學生在學完公共基礎課程這兩門課后可能不再學習計算機類的課程,這兩門課要為學生繼續(xù)學習(主要是自學)打下扎實的基礎,以便在指揮員崗位上盡快適應部隊數(shù)字化建設和數(shù)字化戰(zhàn)場環(huán)境的需要。
最近的研究表明,使用機器人作為教學工具可以幫助理解計算機類課程的基本抽象概念。特別地,Kumar和Meeden指出在本科課程中使用HandyBoard 和LEGO積木作為實驗教學基礎是可行的。從1990年起,一些本科的計算機科學和計算機工程項目開始啟動,用來建立機器人實驗室輔助教學,或基于HandyBoard/LEGO或基于Mobile Robot平臺。
1996年LEGO公司發(fā)布了Mindstorms機器人開發(fā)和編程工具包。由于與HandyBoard設計相關,Mindstorms平臺最初并不適用于高等教育。那時的SIGCSE(美國計算機協(xié)會計算科學教育專業(yè)組)和ITiCSE文獻中同樣缺乏對Mindstorm是否支持計算機教育的研究。造成這種情況的原因是LEGO機器人缺乏與高等教育相當?shù)某绦蛟O計環(huán)境,缺乏對大學水平的程序設計語言C或Java的支持。然而,在過去十幾年來,Mindstorms使用者群體日益壯大和活躍,他們完成了相當多的工作,如為C和Java開發(fā)程序設計環(huán)境,使上面提到的缺點得到了有效的改善,越來越多的高校選用低價的LEGO機器人作為教學平臺:
?(1) 西點軍校在“信息技術和程序設計”基礎課程CS105中利用LEGO Mindstorm 機器人作為學員主動學習環(huán)境中的重要組成;
?(2) 加州州立大學在課程CECS174中使用物理模型來加深學生對問題求解概念和程序設計結構的理解,使用LEGO機器人作為教學實驗平臺;
?(3) 麻省理工學院電子技術和計算機科學系特別開設了6.270自主機器人設計課程,學生在該課程中通過搭建物理模型并編程控制它,最終以比賽的形式完成實驗;
?(4) 卡耐基梅隆大學作為第三方開發(fā)了Robot C程序設計環(huán)境,Robot C已成為LEGO機器人最流行的程序設計語言之一。
到2006年LEGO公司發(fā)布Mindstorms NXT機器人套裝時,機器人在計算機教育中的作用已得到普遍認同。本文主要介紹作者在“大學計算機基礎”課程中使用LEGO機器人的教學經(jīng)驗。
2 “大學計算機基礎”課程組織
“大學計算機基礎”包括計算機基本知識和基本操作兩個部分,要求學生熟練掌握計算機的使用,培養(yǎng)計算機應用能力。
本年度我們選擇兩個教學班實施雙語教學,教材選用《New Perspectives on Computer Concepts》第十版,課程安排如下:
實踐教學環(huán)節(jié)是這門課程成敗的關鍵,學生編程能力培養(yǎng)必須在實踐中進行,同時在實踐中檢驗,而這種能力的獲得正是課程教學的主要目的。本學期實施的大多數(shù)實驗由外版教材提供,外版教材自帶的光盤同時提供了軟件,可以對學生的實驗和作業(yè)情況進行跟蹤,使教師能夠清楚了解每個學生對學習內(nèi)容的掌握情況,提供工具對所有實驗和作業(yè)情況進行統(tǒng)計分析。
3基于LEGO 機器人的程序設計教與學
依據(jù)國防科技大學2006年修訂的“大學計算機基礎”課程標準,程序設計部分的教學要求如下:
(1) 計算機程序基本概念:了解計算機程序的概念和功能,理解程序控制概念;
(2) 計算機程序表示:理解計算機程序設計語言、程序編譯的基本概念;
(3) 程序設計的一般過程:了解計算機程序設計的一般過程;
(4) 軟件開發(fā)的一般方法:理解軟件的基本概念,了解軟件生存周期的概念及軟件的開發(fā)方法。
雖然程序設計在“大學計算機基礎”中所占學時并不多,我們依然決定依托人工智能實驗室建設購置的60套Lego Mindstorms NXT和RobotC程序設計語言來設計整個程序設計入門的教學過程,讓學生通過搭建實實在在的物理模型并編程控制它的運動,來加深學生對計算機工作原理的理解。
3.1LEGO Mindstorms NXT
通過機器人的運動來理解程序和程序設計是感性記憶與理性理解的結合,能夠使學生更快的掌握程序設計的精髓,達到教學目的。LEGO Mindstorms NXT 9797機器人套裝售價不超過250美元,已被歐美一流高校普遍使用于計算機基礎教育、人工智能教育中。
LEGO NXT機器人硬件是由NXT 32位控制器、馬達、傳感器等組成。套裝中包括兩個碰觸傳感器、一個超聲波傳感器、一個光電傳感器和一個聲音傳感器,馬達中內(nèi)置了角度傳感器,如圖1所示。
圖1 LEGO Mindstorms NXT、傳感器及學生搭建的部分模型
LEGO機器人由于平臺的開放性擁有龐大用戶群,軟件開發(fā)環(huán)境豐富,幾乎支持所有主流的程序設計語言。常用的語言編譯環(huán)境包括Robolab、微軟的Microsoft Robotics Studio、leJOS NXJ (Java)、NXC、Robot C,比較之后我們選擇了由卡耐基梅隆大學開發(fā)的Robot C,理由如下:
(1)Robot C是一種基于C語言的機器人開發(fā)環(huán)境,而國防科技大學的程序設計基礎課程是基于C的,保證了教學的連貫性,這一點對于大一的新生來講相當重要;
(2)Robot C擁有編寫和調(diào)試程序的所有功能,有成熟
的機器人程序設計調(diào)試工具;
(3) 同其他幾種流行的機器人語言相比,Robot C是效率最高的一種語言,并且具備功能齊全、界面簡潔實用等優(yōu)點。
3.2課堂教學
在“大學計算機基礎”課程教學中使用LEGO機器人始于2006年,由于數(shù)量有限,只用于課堂演示。
依據(jù)課程標準,課堂講授的主要內(nèi)容如下:
(1) 程序和程序設計的基本概念:什么是程序,程序設計和程序設計語言,以最簡單的機器人程序講述程序設計的一般過程;
圖2 2006年課堂演示部分幻燈片(編程語言是NQC)
(2) 程序設計的基本思想:程序設計語言的分類、編譯與解釋;
(3) 結構化程序設計:順序結構、分支結構、循環(huán)結構;如在講解循環(huán)結構時,設計機器人案例,要求機器人完成沿正方形巡邏任務,逐步演示從問題分析到算法描述直到程序編寫和調(diào)試過程,直觀形象地講解循環(huán)概念;
(4) 軟件開發(fā)的一般方法:什么是軟件?什么是軟件生存周期?
3.3實驗項目示例
程序設計實驗分組進行,兩人一組設備,合作完成一組實驗項目,實驗項目示例如下:
實驗項目:循環(huán)結構,分為三個任務,其中第三個任務要用到分支結構。
任務一:下載示例程序(正方形巡邏)并運行,熟悉編程環(huán)境,熟悉編程與調(diào)試過程;完成步驟如下:
(1) 準備:通過USB連接線連接機器人與計算機。注意機器小車要在開機狀態(tài)下;
(2) 編譯:打開示例程序,該示例程序以類C語言編寫,需經(jīng)過編譯翻譯成機器人能理解的代碼形式;
(3) 下載:T將示例程序下載到NXT機器人;
(4) 運行:Take the robot over to 將機器人放置到場地中,并按下運行按鈕,觀察;
(5) 閱讀程序:回到計算機上閱讀程序,嘗試理解;
(6) 小車前進,觸碰(或光電檢測到障礙)停車。
任務二:修改示例程序,使機器人按六角形軌跡前進。
任務三:機器人一直沿六角形軌跡巡邏,直到檢測到障礙或碰到障礙。
4結論
計算機科學教育界普遍認為程序設計的入門教育非常困難。在計算機基礎課程中使用機器人平臺,學生可以通過機器人的運動來理解程序和算法,機器人平臺為學生提供了編寫程序的實實在在的反饋。更進一步,編程和調(diào)試時的物理約束使得學生清楚認識到設計和規(guī)劃的重要性。
我們的方法是將程序設計實驗處理成機器人任務,在實驗室中,學生構建機器人,并編程完成任務。通過構建物理實體并編程控制它,學生有機會直接接觸計算機科學中的許多中心問題,包括軟件硬件間交互、存儲程序控制工作原理、程序的編制與調(diào)試等。從學生完成的程序設計實驗來看,他們在理解順序、選擇和循環(huán)結構上要好于上一屆學生。更重要的是,機器人平臺對學生來說是個極大的激勵,學生的學習過程快樂,并且很有成就感,同時教學質(zhì)量得到進一步提高。
參考文獻:
[1] Jerry Schumacher, Don Welch, David Raymond. Teaching Introductory Programming, Problem Solving and Information Technology with Robots at West Point[C],31st ASEE/IEEE Frontiers in Education Conference, October 10 - 13, 2001 Reno,NV.
[2] Kumar. D., and Meeden, L. A robot laboratory for teaching artificial intelligence[C]. In Proceedings of the 29 th SIGCSE Technical Symposium on Computer Science Education (1998).
[3] Martin, F. The MIT HandyBoard Project, 2000[EB/OL]. lcs.www.media.mit.edu/ groups/el/Projects/ handyboard, Sept. 6, 2001.
[4] Beer, R. D., Chiel, H. J., and Drushel, R. F. "Using autonomous robotics to teach science and engineering" [J]. Communications of the ACM, Vol. 42 (6) June 1999, pp. 85- 92.
[5] Frank Klassner. A Case Study of LEGO Mindstorms Suitability for Artificial Intelligence and Robotics Courses at the College Level[C]. SIGCSE'02, February 27- March 3, 2002, Covington, Kentucky, USA.
[6] C. E. Van Lent. Using Robot Platforms to Enhance Concept Learning in Introductory CS Courses, in AAAI Spring Symposium on Robotics in Education 2004: Stanford, CA.
[7] http://web.mit.edu/6.270/www/contestants/.
[8] http://www.robotc.net/.
[9] June Jamrich Parsons and Dan Oja. New Perspectives on Computer Concepts[M]. 北京:機械工業(yè)出版社,2008.