999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

編譯實驗課程的教學研究與實踐

2009-02-04 05:35:58楊宗源王婷婷
計算機教育 2009年23期
關鍵詞:課程改革實踐教學

竇 亮 楊宗源 王婷婷

摘要:本文在研究了國內外高校編譯實驗課程教學情況的基礎上,介紹了華東師范大學計算機系“編譯原理實踐”課的實施情況。教師從教學內容、教學方法、教學手段等方面對該課程進行了深入的研究和改革,提高了學生的動手實踐能力,有助于培養學生的“計算機思維能力”。

關鍵詞:編譯原理;實踐教學;課程改革

中圖分類號:G642 文獻標識碼:A

“編譯原理”是計算機專業的一門核心基礎課程,所介紹的知識是計算機專業理論知識的重要組成部分,包含了用計算機解決問題的基本思路和方法。

在教學中,理論與實踐是相輔相成,互為促進的,因此編譯實驗內容的合理設置對搞好整個編譯教學起著至關重要的作用。我們一直非常重視編譯實驗的教學,多年來不斷研究國內外高校的教學情況,結合學生的實際,對該課程進行了深入改革,取得了一定成效。

1國內外高校編譯實驗課程的研究

1.1國外高校情況

斯坦福大學(Stanford University)的編譯課程使用的主要參考教材是業界經典的“龍書”——《Compilers Principles, Techniques and Tools》。課程實驗內容分為4部分,在課程的不同階段進行布置:①詞法分析(使用Flex);②語法分析(使用Bison);③語義分析;④綜合前面的部分實現一個完整的Decaf編譯器,生成在SPIM模擬器上執行的代碼。實驗的后兩部分較前兩部分難度高,因此所給分值不同,分別是50分、60分、125分和125分。整個實驗部分占到了編譯課程總評的70%。

卡內基梅隆大學(Carnegie Mellon University)在編譯技術領域享有很高的國際聲譽,該校的編譯課程使用的主要參考教材是業界經典的“虎書”——《Modern Compiler Implementation》(ML版本)。實驗題目共有5道:①擴展給定的L1語言的編譯器,使之能夠將源代碼轉換成真實的X86匯編代碼;②實現支持L2語言的完整編譯器;③實現支持L3語言的完整編譯器;④實現另一個支持L3語言并生成安全代碼的完整編譯器;⑤兩者選其一,實現L3編譯器的各種代碼優化或者實現L3的垃圾收集器。實驗部分量很大,使用的現代編譯器技術含量高,分數也占到了編譯課程總評的70%。

加州大學伯克利分校(University of California, Berkeley)的編譯課程使用的參考教材也是“龍書”。課程實驗要求實現一個Python語言編譯器,依次分為3個項目:①完成針對Python語言子集的詞法和語法分析器;②實現靜態分析;③實現機器代碼的生成。實驗部分占到編譯課程總評的55%。

華盛頓大學(Washington University)使用的參考教材是《Engineering a Compiler》(Cooper & Torczon)。課程實驗項目是將一個用Java寫的簡單編譯器完善成一個支持MiniJava(Java語言子集)的功能完整的編譯器。項目分5個階段實施,分別是擴展MiniJava編譯器,完成詞法分析、語法分析、類型檢查、中間代碼生成和目標代碼生成。實踐部分占編譯課程總評的40%。

總體來看,國外高校的編譯課程非常重視實驗,實驗內容量大且要求高,涉及到了面向對象語言編譯器實現、代碼優化等高級內容。學生提交的實驗作業須遵循嚴格的學術道德,嚴禁抄襲。課程往往配備2~3名助教,解答學生疑問,協助教師檢查實驗作業。

1.2國內高校情況

國防科學技術大學的編譯課程使用的教材是陳火旺院士領銜編著、國內高校廣泛使用的《程序設計語言編譯原理》。課程設置有兩個實驗:①調試PL編譯程序,擴充PL語言成分,并對相應的編譯程序進行擴充;②了解編譯程序構造工具Lex、Yacc和JavaCC的使用。實驗成績占總評的20%。

清華大學的編譯課程教材選用的是自行編寫的《編譯原理》(呂映芝等著)。實驗內容題目由學生根據能力自選,分別是:①對PL/0編譯程序進行擴充,用Lex和Yacc實現一個簡單解釋器;②Deacf編譯程序的設計和實現;③Java實現的Mini-Triangle編譯程序。三個題目難度從低到高,分數所占總評的比例分別是20%、40%和50%。

武漢大學的編譯原理課程是國家精品課程,教材是自行編寫的《編譯原理》(何炎祥編著)。課程實驗是先在課堂上舉出完整的小語言實現的例子,然后將該小語言擴充后作為實習內容;或者提供程序源代碼而空缺關鍵模塊,讓學生完成。

吉林大學的編譯原理課程是教育部—微軟精品課程,教材是自行編寫的《編譯程序構造原理和實現技術》(金成植著)。該校專門開設了獨立的編譯原理實踐課程,共包含8個實驗:詞法分析程序開發、遞歸下降分析法、LL(1)語法分析、符號表管理、語義分析、中間代碼生成、中間代碼優化和目標代碼生成。

以上高校的編譯實驗課程教學具一定代表性。根據調查,國內高校編譯實驗課程的教學大致有以下幾種安排:

(1) 安排多次小型實驗,分別支持編譯程序的各個階段。此種方式是目前國內大部分高校采取的形式,由于編譯過程每個階段都有特定的方法和技術,故可以針對各個階段設計不同的實驗,根據理論教學的情況靈活安排。實驗難度相對較低,能夠讓學生掌握編譯的有關技術,缺點是不能讓學生學習到一個完整編譯器的開發運行過程。

(2) 針對某一語言設計和實現一個相對完整、獨立的編譯器,或者研習現有的編譯程序,對其進行擴充。這種方式的難度根據語言規模的不同以及學生擴充程度的不同而有差別,彈性較大,有利于加強學生對編譯程序的整體認識,且能充分鍛煉學生的編程能力。

(3) 借助Lex和Yacc等自動生成工具直接生成編譯程序。這種方式需要學生花一定量時間研究工具的基本原理及使用方法,對編譯程序前端成熟的理論知識是一個很好的再學習過程,但對編程能力鍛煉不多。

(4) 其他涉及編譯技術的實驗。此類實驗強調編譯技術在實際軟件工程中的應用,如將詞法分析器的設計擴展為中文網頁分詞的應用等,有助于培養學生理論聯系實際的能力,靈活性較大。

總體來看,根據學生水平層次和培養目標的不同,國內許多高校實施了不同的實驗,比較強調編譯器前端的代碼翻譯技術,重視編譯器最基本原理的實踐,以培養學生的邏輯思維能力、編程和綜合應用能力。

2我校編譯原理實驗課程的實踐

2.1教學簡介

我校計算機系自1979年建系時就開設了編譯課程,在理論教學的同時給出一個精簡的高級語言,要求學生完成詞法分析和語法分析。為了適應我國人才培養標準不斷提高的要求,結合對國外高校編譯實驗課教學情況的研究,我們認為應該更加強調編譯實驗,適當提高難度,結合軟件工程中的思想培養學生理論聯系實際的能力。因此,從2004年起,我們將原來在一學期同時完成理論和實踐教學的“編譯原理”課程拆分成在第6學期先講授理論知識,第7學期專門開設“編譯原理實踐”課程,要求學生獨立設計和實現一個完整的編譯器,經過幾年的實踐探索,收到了良好的效果。

2.1.1課程描述

課程名稱為“編譯原理實踐”,屬專業必修課。課程選擇了著名計算機科學家N.Wirth教授提供的PL/0語言作為實驗語言,該語言是程序設計語言的典型代表,國內較多高校采用其作為編譯教學使用語言。教師講解PL/0編譯程序構建后,要求學生實現一個完整的PL/X語言編譯程序(教師給出PL/X語言的形式化語法定義),包括詞法分析、語法分析、出錯處理、代碼生成和解釋程序,然后用PL/X語言編若干個程序,用自己開發的編譯程序進行編譯,能指出語法錯誤不中斷,能生成代碼程序,能解釋執行代碼程序,最后輸出正確結果。更重要的是,鼓勵學生對PL/X語言進行定義擴展,增加更多功能。教師還演示了使用Lex和Yacc生成PL/0語言編譯器的過程,鼓勵學生在編程實現PL/X編譯器的基礎上再使用Lex和Yacc構建編譯器。

2.1.2組織形式

課程總學時72學時,其中教師講課20學時,學生上機52學時,教師講課集中在前10周完成。教師講授PL/0編譯程序的設計開發占16學時,介紹使用Lex和Yacc生成PL/0語言編譯器占4學時。

為了充分鍛煉學生的綜合能力,避免學生投機取巧,產生依賴心理,課程不采用分組的形式,而是要求每個學生都必須獨立實現PL/X語言編譯程序。

2.1.3評分規則

評分規則規定,文檔、程序、測試用例齊全,現場考核通過,成績為60分。學生對PL/X語言進行擴充的內容建議為:①增加運算符定義,如XOR、%等;②擴充語句定義,如case、for、continue等;③增加數據類型,在現有整型/邏輯型基礎上增加實數、記錄類型、數組類型等;④增加函數調用功能,進一步擴充帶參數、返回值的函數功能;⑤增加類,補充封裝、繼承、多態等面向對象特性。根據擴充內容的難易進行累計,給予2~40分的加分。此外,良好的用戶界面可獲得加分;以Lex和Yacc工具生成編譯器也可獲得加分。

2.2經驗總結

2.2.1突破教學難點,理論結合實踐

課程改進主要有兩點:一是由于N.Wirth教授采用Pascal語言實現PL/0編譯程序,而學生不熟悉Pascal語法,因此我們同時提供C語言版本的PL/0編譯程序;二是分階段系統地講授PL/0語言編譯程序各個階段的設計開發,按順序給出各個版本的范例程序,學生可以跟著教師的講授進度進行同步的PL/X編譯程序的開發。這種方式降低了開發難度,使學生可以看到自己的開發成果不斷完善,增強了信心,提高了繼續探索的興趣。

對課程的難點,教師也注意講解方法,理論結合實踐,使用多種教學手段。比如PL/0編譯器生成的目標代碼是一種假想棧式計算機的匯編語言,而學生很少直接接觸匯編語言,對目標代碼指令感到陌生,且運行時的存儲組織與分配又是編譯原理的一個難點,因此教學就采用了先易后難的辦法。先給出不含過程調用的PL/0源程序生成的目標代碼,詳細介紹目標代碼執行時數據棧的變化情況;繼而給出含有過程調用的PL/0源程序生成的目標代碼,再次分步介紹目標代碼執行時數據棧的變化情況,重點講解靜態鏈、動態鏈、返回地址3個聯系單元的作用;接著使用多媒體教學軟件,以動畫方式完整演示數據棧的變化情況,給學生整體思路;最后復習理論教學中各種運行時的存儲組織與分配情況,讓學生有深刻的體會。

再如語義分析和代碼生成部分,一直是理論教學的難點,特別是控制流語句的回填技術等,在教師詳細講解了PL/0編譯器中if語句和while語句的語義分析和代碼生成實現后,學生對此有了實際體會,更進一步對for、case語句的實現產生興趣,有動手將理論課上的方法用在作品中的意愿。

2.2.2激發學生潛能,延伸第二課堂

課程的實驗內容設計成可擴展的,使不同層次學生都可以接受。由于有了分階段的完整示例,基礎薄弱、編程能力較差的學生只需在基本理解的情況下就可以模仿PL/0編譯器構造PL/X編譯器,消除了畏難心理;對于能力較強的同學,教師羅列出可擴展內容的建議,激發學生積極主動實踐的意愿,拓寬學生的創新思維視角。

在教學計劃中,學生上機是52學時,但課程要求實現的是一個完整的編譯器,具有一定工作量,若要實現擴展,需要更多時間,大部分學生難以在課堂內完成,這就要充分發揮第二課堂的作用。課內教師把握主要矛盾,對于擴展難度較高的部分,則給學生思路上的啟迪。借助課程網站的功能,給學生提供編譯技術文檔、編譯源程序等自學資料,鼓勵學生通過各種渠道搜尋相關資料,并利用網絡相互討論,助教協助解答問題,實現第二課堂的功效。

2.2.3考核科學嚴格,樹立良好學風

課程要求學生提交完整規范的文檔、程序和測試用例。現場考核要求學生演示程序、回答問題、改寫程序,實現教師提出的特定功能,這樣能夠充分檢驗出學生的真實水平,并鍛煉學生的表達能力和快速解決問題的能力。

在課程開始時,教師重點強調禁止抄襲,借助程序對比軟件檢查雷同性,無論是抄襲者還是被抄襲者,均不能通過考試。在前兩屆學生中嚴格執行該規定后,后續學生逐漸形成了良好的學習風氣。連續五屆學生的實踐表明,學生的潛力是無窮的,許多優秀作品充分展示了學生的創新能力。我們選取了一些優秀的作品,將其功能演示的全過程錄制成視頻,放在課程網站上,為下一屆學生提供參考,也激勵他們創作出更完善、更富創新的作品。

正是由于我們將教學目標定在國內外先進的水平上,在教學內容、教學方法上不斷改進,我校編譯課程始終受到學生的普遍認可,在學生評教中處于前列。該課程成為華東師范大學精品課程后,2009年成功成為“上海市精品課程”。當然,和國外著名的高校相比,我們還需要進一步提高科研水平,不斷跟進編譯技術的發展,在理論和實踐方面進一步增加現代編譯器技術的教學內容,使學生在編譯系統方面獲得更大的收獲和提高,有效和國際接

軌。

3結束語

編譯課程理論難度高,一直是學生反映難學的一門課程,因此近年部分高校降低了編譯課程的教學難度,減少了實驗內容,甚至有學校提出將其從本科教學計劃中刪除。通過對國內外高校編譯課程教學的研究,我們認為,編譯課程在提高學生“計算機思維能力”,培養學生專業素養方面起著非常重要的作用。要真正做好編譯教學,教師要從教學內容、教學方法、教學手段等方面綜合提高,結合科研,跟進編譯技術的發展,才能使學生更好地領會和掌握基本編譯原理,為將來從事軟件開發工作夯實基礎。

參考文獻:

[1] 斯坦福大學. 編譯課程網站[DB/OL]. [2009-9-16]. http://www.stanford.edu/class/cs143/.

[2] 卡內基梅隆大學. 編譯課程網站[DB/OL]. [2009-9-16]. http://www.cs.cmu.edu/~fp/courses/15411-f08/.

[3] 加州大學伯克利分校. 編譯課程網站[DB/OL]. [2009-9-16]. http://www-inst.eecs.berkeley.edu/~cs164/sp09/.

[4] 華盛頓大學. 編譯課程網站[DB/OL]. [2009-9-16]. http://www.cs.washington.edu/education/courses/401/08au/.

[5] 國防科學技術大學. 編譯原理精品課程網站[DB/OL]. [2009-9-16]. http://sei.nudt.edu.cn/cp/index.php.

[6] 武漢大學. 編譯原理精品課程教學網站[DB/OL]. [2009-9-16]. http://jpkc.whu.edu.cn/jpkc2005/byyl/.

[7] 吉林大學. 編譯原理精品課網站[DB/OL]. [2009-9-16]. http://www.jlu-softlab.cn/education/compiler.

[8] 唐仕喜. 編譯技術可擴展式課程設計改革研究[J]. 計算機教育,2009(2):40-42.

[9] 斯傳根. 編譯設計與開發技術[M]. 北京:清華大學出版社,2003.

[10] 何炎祥,伍春香. 計算機專業不需要開設編譯原理課程嗎?[J]. 計算機教育,2009(4):61-62.

Research and Practice on the Experiment Course of Compiler Principles

DOU Liang, YANG Zong-yuan, WANG Ting-ting

(Department of Computer Science, East China Normal University, Shanghai 200241, China)

Abstract: The paper introduces the teaching of “Practice of Compiler Principles” in Computer Science Depart of ENCU based on the research of the same course in other universities worldwide. We perform in-deep study and reform on all aspects of the course such as teaching contents, teaching methods and course assignments, which greatly improves the students ability of hands-on experience and helps to build the ideation on computer science.

Key words: compiler principles; practice teaching; course reform

猜你喜歡
課程改革實踐教學
《建筑裝飾施工組織與管理》課程改革之初探
中職學校計算機專業“雙證融通”課程改革與探索
“雙創”形勢下高職財務管理課程改革探索
商業會計(2016年13期)2016-10-20 16:18:54
項目教學法在微電影制作教學中的應用
中國市場(2016年35期)2016-10-19 03:02:20
茶學專業校企合作實踐教學探索
考試周刊(2016年79期)2016-10-13 23:35:16
《電氣工程畢業設計》 課程的教學設計
考試周刊(2016年79期)2016-10-13 23:26:02
研究型學習在傳熱學實踐教學中的應用
大學教育(2016年9期)2016-10-09 08:34:10
思想政治理論課實踐教學研究述評
大學教育(2016年9期)2016-10-09 08:17:37
高職院校商務禮儀課程教學改革探索芻議
大學教育(2016年9期)2016-10-09 08:12:01
基于創意的對口單招色彩課程改革突破點研究
成才之路(2016年25期)2016-10-08 09:50:05
主站蜘蛛池模板: 国产成人综合亚洲欧美在| 欧美精品二区| 亚洲一区二区三区麻豆| 国产真实乱子伦视频播放| 色天天综合久久久久综合片| 91综合色区亚洲熟妇p| 国产精品视屏| 国产av剧情无码精品色午夜| 日本精品中文字幕在线不卡| 久久精品视频一| 欧美日韩国产高清一区二区三区| 久久综合九色综合97网| 欧美日本在线| 亚洲精品麻豆| 2022国产无码在线| 亚洲大尺度在线| 丁香五月亚洲综合在线| 国产综合精品日本亚洲777| 久久精品国产999大香线焦| 国产黄在线免费观看| 精品国产女同疯狂摩擦2| 亚洲综合婷婷激情| 日本手机在线视频| 毛片免费视频| 日日拍夜夜操| 国产午夜看片| 亚洲午夜天堂| 精品国产亚洲人成在线| 欧美人在线一区二区三区| 亚洲AV无码久久精品色欲| 亚洲品质国产精品无码| 久久香蕉国产线| 免费人成在线观看视频色| 拍国产真实乱人偷精品| 中文字幕伦视频| 香蕉久久国产超碰青草| 日韩免费毛片| 精品久久久久成人码免费动漫| 成人伊人色一区二区三区| 亚洲天堂高清| 亚洲娇小与黑人巨大交| 亚洲国产黄色| 免费激情网址| 亚洲成人一区二区三区| 91福利免费视频| 手机在线免费不卡一区二| 精品撒尿视频一区二区三区| 久久精品无码一区二区国产区| 91在线播放国产| V一区无码内射国产| 午夜无码一区二区三区在线app| 91美女视频在线| 99热这里只有精品国产99| 欧美日韩国产在线人| 亚洲国产清纯| 在线免费a视频| 亚洲日韩精品伊甸| 亚洲无码A视频在线| 最新国产网站| 中文字幕av无码不卡免费 | 热久久综合这里只有精品电影| 无码国产偷倩在线播放老年人| 亚洲最大情网站在线观看| 一本色道久久88亚洲综合| 国产特级毛片aaaaaa| 国产成人综合久久精品尤物| 热re99久久精品国99热| 久久视精品| 色视频国产| 久久综合久久鬼| 最新国产精品第1页| 国产超碰一区二区三区| 亚洲人人视频| 国产美女在线观看| 欧美日在线观看| 欧美va亚洲va香蕉在线| 无码福利日韩神码福利片| 国产精品任我爽爆在线播放6080 | 97视频免费看| 九色视频线上播放| 综合色婷婷| 欧美丝袜高跟鞋一区二区|