劉 越 莫方政
文章編號:1672-5913(2009)08-0126-03
摘要:計算機(jī)應(yīng)用能力的培養(yǎng)以程序設(shè)計為主線,使學(xué)生掌握基于計算機(jī)的問題求解策略和基本的程序設(shè)計方法,深入理解計算機(jī)系統(tǒng)。本文分析了機(jī)器人平臺在計算機(jī)基礎(chǔ)課程中的適用性,敘述了如何在計算機(jī)基礎(chǔ)課程中利用LEGO機(jī)器人和Robot C編程語言輔助程序設(shè)計入門教學(xué)。
關(guān)鍵詞:Lego Mindstorms;程序設(shè)計;機(jī)器人
中圖分類號:G642
文獻(xiàn)標(biāo)識碼:B
1介紹
國防科技大學(xué)的所有學(xué)生在入學(xué)后都要求學(xué)習(xí)完成“大學(xué)計算機(jī)基礎(chǔ)”、“程序設(shè)計基礎(chǔ)”等公共基礎(chǔ)課程。計算機(jī)公共基礎(chǔ)課程的目標(biāo)是介紹計算機(jī)和信息技術(shù)的概念,講授利用計算機(jī)進(jìn)行問題求解的方法。在武器裝備中,高科技含量越來越高,作為未來的軍隊(duì)指揮員,學(xué)生必須理解所使用的計算機(jī)設(shè)備的長處和弱點(diǎn),只有深入理解計算機(jī)系統(tǒng)的工作原理,才能在戰(zhàn)場上最大性能地發(fā)揮它們的作用。計算機(jī)基礎(chǔ)教育強(qiáng)調(diào)應(yīng)培養(yǎng)學(xué)生適應(yīng)未來技術(shù)發(fā)展的能力,利用應(yīng)用問題培養(yǎng)學(xué)生獨(dú)立思考與合作解決問題的能力,使學(xué)生成為終身的計算學(xué)習(xí)者。大部分學(xué)生在學(xué)完公共基礎(chǔ)課程這兩門課后可能不再學(xué)習(xí)計算機(jī)類的課程,這兩門課要為學(xué)生繼續(xù)學(xué)習(xí)(主要是自學(xué))打下扎實(shí)的基礎(chǔ),以便在指揮員崗位上盡快適應(yīng)部隊(duì)數(shù)字化建設(shè)和數(shù)字化戰(zhàn)場環(huán)境的需要。
最近的研究表明,使用機(jī)器人作為教學(xué)工具可以幫助理解計算機(jī)類課程的基本抽象概念。特別地,Kumar和Meeden指出在本科課程中使用HandyBoard 和LEGO積木作為實(shí)驗(yàn)教學(xué)基礎(chǔ)是可行的。從1990年起,一些本科的計算機(jī)科學(xué)和計算機(jī)工程項(xiàng)目開始啟動,用來建立機(jī)器人實(shí)驗(yàn)室輔助教學(xué),或基于HandyBoard/LEGO或基于Mobile Robot平臺。
1996年LEGO公司發(fā)布了Mindstorms機(jī)器人開發(fā)和編程工具包。由于與HandyBoard設(shè)計相關(guān),Mindstorms平臺最初并不適用于高等教育。那時的SIGCSE(美國計算機(jī)協(xié)會計算科學(xué)教育專業(yè)組)和ITiCSE文獻(xiàn)中同樣缺乏對Mindstorm是否支持計算機(jī)教育的研究。造成這種情況的原因是LEGO機(jī)器人缺乏與高等教育相當(dāng)?shù)某绦蛟O(shè)計環(huán)境,缺乏對大學(xué)水平的程序設(shè)計語言C或Java的支持。然而,在過去十幾年來,Mindstorms使用者群體日益壯大和活躍,他們完成了相當(dāng)多的工作,如為C和Java開發(fā)程序設(shè)計環(huán)境,使上面提到的缺點(diǎn)得到了有效的改善,越來越多的高校選用低價的LEGO機(jī)器人作為教學(xué)平臺:
?(1) 西點(diǎn)軍校在“信息技術(shù)和程序設(shè)計”基礎(chǔ)課程CS105中利用LEGO Mindstorm 機(jī)器人作為學(xué)員主動學(xué)習(xí)環(huán)境中的重要組成;
?(2) 加州州立大學(xué)在課程CECS174中使用物理模型來加深學(xué)生對問題求解概念和程序設(shè)計結(jié)構(gòu)的理解,使用LEGO機(jī)器人作為教學(xué)實(shí)驗(yàn)平臺;
?(3) 麻省理工學(xué)院電子技術(shù)和計算機(jī)科學(xué)系特別開設(shè)了6.270自主機(jī)器人設(shè)計課程,學(xué)生在該課程中通過搭建物理模型并編程控制它,最終以比賽的形式完成實(shí)驗(yàn);
?(4) 卡耐基梅隆大學(xué)作為第三方開發(fā)了Robot C程序設(shè)計環(huán)境,Robot C已成為LEGO機(jī)器人最流行的程序設(shè)計語言之一。
到2006年LEGO公司發(fā)布Mindstorms NXT機(jī)器人套裝時,機(jī)器人在計算機(jī)教育中的作用已得到普遍認(rèn)同。本文主要介紹作者在“大學(xué)計算機(jī)基礎(chǔ)”課程中使用LEGO機(jī)器人的教學(xué)經(jīng)驗(yàn)。
2 “大學(xué)計算機(jī)基礎(chǔ)”課程組織
“大學(xué)計算機(jī)基礎(chǔ)”包括計算機(jī)基本知識和基本操作兩個部分,要求學(xué)生熟練掌握計算機(jī)的使用,培養(yǎng)計算機(jī)應(yīng)用能力。
本年度我們選擇兩個教學(xué)班實(shí)施雙語教學(xué),教材選用《New Perspectives on Computer Concepts》第十版,課程安排如下:
實(shí)踐教學(xué)環(huán)節(jié)是這門課程成敗的關(guān)鍵,學(xué)生編程能力培養(yǎng)必須在實(shí)踐中進(jìn)行,同時在實(shí)踐中檢驗(yàn),而這種能力的獲得正是課程教學(xué)的主要目的。本學(xué)期實(shí)施的大多數(shù)實(shí)驗(yàn)由外版教材提供,外版教材自帶的光盤同時提供了軟件,可以對學(xué)生的實(shí)驗(yàn)和作業(yè)情況進(jìn)行跟蹤,使教師能夠清楚了解每個學(xué)生對學(xué)習(xí)內(nèi)容的掌握情況,提供工具對所有實(shí)驗(yàn)和作業(yè)情況進(jìn)行統(tǒng)計分析。
3基于LEGO 機(jī)器人的程序設(shè)計教與學(xué)
依據(jù)國防科技大學(xué)2006年修訂的“大學(xué)計算機(jī)基礎(chǔ)”課程標(biāo)準(zhǔn),程序設(shè)計部分的教學(xué)要求如下:
(1) 計算機(jī)程序基本概念:了解計算機(jī)程序的概念和功能,理解程序控制概念;
(2) 計算機(jī)程序表示:理解計算機(jī)程序設(shè)計語言、程序編譯的基本概念;
(3) 程序設(shè)計的一般過程:了解計算機(jī)程序設(shè)計的一般過程;
(4) 軟件開發(fā)的一般方法:理解軟件的基本概念,了解軟件生存周期的概念及軟件的開發(fā)方法。
雖然程序設(shè)計在“大學(xué)計算機(jī)基礎(chǔ)”中所占學(xué)時并不多,我們依然決定依托人工智能實(shí)驗(yàn)室建設(shè)購置的60套Lego Mindstorms NXT和RobotC程序設(shè)計語言來設(shè)計整個程序設(shè)計入門的教學(xué)過程,讓學(xué)生通過搭建實(shí)實(shí)在在的物理模型并編程控制它的運(yùn)動,來加深學(xué)生對計算機(jī)工作原理的理解。
3.1LEGO Mindstorms NXT
通過機(jī)器人的運(yùn)動來理解程序和程序設(shè)計是感性記憶與理性理解的結(jié)合,能夠使學(xué)生更快的掌握程序設(shè)計的精髓,達(dá)到教學(xué)目的。LEGO Mindstorms NXT 9797機(jī)器人套裝售價不超過250美元,已被歐美一流高校普遍使用于計算機(jī)基礎(chǔ)教育、人工智能教育中。
LEGO NXT機(jī)器人硬件是由NXT 32位控制器、馬達(dá)、傳感器等組成。套裝中包括兩個碰觸傳感器、一個超聲波傳感器、一個光電傳感器和一個聲音傳感器,馬達(dá)中內(nèi)置了角度傳感器,如圖1所示。
圖1 LEGO Mindstorms NXT、傳感器及學(xué)生搭建的部分模型
LEGO機(jī)器人由于平臺的開放性擁有龐大用戶群,軟件開發(fā)環(huán)境豐富,幾乎支持所有主流的程序設(shè)計語言。常用的語言編譯環(huán)境包括Robolab、微軟的Microsoft Robotics Studio、leJOS NXJ (Java)、NXC、Robot C,比較之后我們選擇了由卡耐基梅隆大學(xué)開發(fā)的Robot C,理由如下:
(1)Robot C是一種基于C語言的機(jī)器人開發(fā)環(huán)境,而國防科技大學(xué)的程序設(shè)計基礎(chǔ)課程是基于C的,保證了教學(xué)的連貫性,這一點(diǎn)對于大一的新生來講相當(dāng)重要;
(2)Robot C擁有編寫和調(diào)試程序的所有功能,有成熟
的機(jī)器人程序設(shè)計調(diào)試工具;
(3) 同其他幾種流行的機(jī)器人語言相比,Robot C是效率最高的一種語言,并且具備功能齊全、界面簡潔實(shí)用等優(yōu)點(diǎn)。
3.2課堂教學(xué)
在“大學(xué)計算機(jī)基礎(chǔ)”課程教學(xué)中使用LEGO機(jī)器人始于2006年,由于數(shù)量有限,只用于課堂演示。
依據(jù)課程標(biāo)準(zhǔn),課堂講授的主要內(nèi)容如下:
(1) 程序和程序設(shè)計的基本概念:什么是程序,程序設(shè)計和程序設(shè)計語言,以最簡單的機(jī)器人程序講述程序設(shè)計的一般過程;
圖2 2006年課堂演示部分幻燈片(編程語言是NQC)
(2) 程序設(shè)計的基本思想:程序設(shè)計語言的分類、編譯與解釋;
(3) 結(jié)構(gòu)化程序設(shè)計:順序結(jié)構(gòu)、分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu);如在講解循環(huán)結(jié)構(gòu)時,設(shè)計機(jī)器人案例,要求機(jī)器人完成沿正方形巡邏任務(wù),逐步演示從問題分析到算法描述直到程序編寫和調(diào)試過程,直觀形象地講解循環(huán)概念;
(4) 軟件開發(fā)的一般方法:什么是軟件?什么是軟件生存周期?
3.3實(shí)驗(yàn)項(xiàng)目示例
程序設(shè)計實(shí)驗(yàn)分組進(jìn)行,兩人一組設(shè)備,合作完成一組實(shí)驗(yàn)項(xiàng)目,實(shí)驗(yàn)項(xiàng)目示例如下:
實(shí)驗(yàn)項(xiàng)目:循環(huán)結(jié)構(gòu),分為三個任務(wù),其中第三個任務(wù)要用到分支結(jié)構(gòu)。
任務(wù)一:下載示例程序(正方形巡邏)并運(yùn)行,熟悉編程環(huán)境,熟悉編程與調(diào)試過程;完成步驟如下:
(1) 準(zhǔn)備:通過USB連接線連接機(jī)器人與計算機(jī)。注意機(jī)器小車要在開機(jī)狀態(tài)下;
(2) 編譯:打開示例程序,該示例程序以類C語言編寫,需經(jīng)過編譯翻譯成機(jī)器人能理解的代碼形式;
(3) 下載:T將示例程序下載到NXT機(jī)器人;
(4) 運(yùn)行:Take the robot over to 將機(jī)器人放置到場地中,并按下運(yùn)行按鈕,觀察;
(5) 閱讀程序:回到計算機(jī)上閱讀程序,嘗試?yán)斫猓?/p>
(6) 小車前進(jìn),觸碰(或光電檢測到障礙)停車。
任務(wù)二:修改示例程序,使機(jī)器人按六角形軌跡前進(jìn)。
任務(wù)三:機(jī)器人一直沿六角形軌跡巡邏,直到檢測到障礙或碰到障礙。
4結(jié)論
計算機(jī)科學(xué)教育界普遍認(rèn)為程序設(shè)計的入門教育非常困難。在計算機(jī)基礎(chǔ)課程中使用機(jī)器人平臺,學(xué)生可以通過機(jī)器人的運(yùn)動來理解程序和算法,機(jī)器人平臺為學(xué)生提供了編寫程序的實(shí)實(shí)在在的反饋。更進(jìn)一步,編程和調(diào)試時的物理約束使得學(xué)生清楚認(rèn)識到設(shè)計和規(guī)劃的重要性。
我們的方法是將程序設(shè)計實(shí)驗(yàn)處理成機(jī)器人任務(wù),在實(shí)驗(yàn)室中,學(xué)生構(gòu)建機(jī)器人,并編程完成任務(wù)。通過構(gòu)建物理實(shí)體并編程控制它,學(xué)生有機(jī)會直接接觸計算機(jī)科學(xué)中的許多中心問題,包括軟件硬件間交互、存儲程序控制工作原理、程序的編制與調(diào)試等。從學(xué)生完成的程序設(shè)計實(shí)驗(yàn)來看,他們在理解順序、選擇和循環(huán)結(jié)構(gòu)上要好于上一屆學(xué)生。更重要的是,機(jī)器人平臺對學(xué)生來說是個極大的激勵,學(xué)生的學(xué)習(xí)過程快樂,并且很有成就感,同時教學(xué)質(zhì)量得到進(jìn)一步提高。
參考文獻(xiàn):
[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]. 北京:機(jī)械工業(yè)出版社,2008.