亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        編譯原理教學方法研討與實踐考核改革

        2017-05-12 11:21:54高珍衛(wèi)志華黃杰杜博聞
        計算機教育 2017年4期
        關鍵詞:編譯原理教學實踐自主學習

        高珍+衛(wèi)志華+黃杰+杜博聞

        (1.同濟大學 軟件學院,上海 201804; 2.同濟大學 電子與信息工程學院,上海 201804)

        摘 要:編譯原理是計算機專業(yè)的核心課程和難點課程,該課程的教改一直是熱點問題。文章基于多年編譯原理授課經驗,針對課程的理論教學提出一些有效的教學方法,包括應用歸納思維、采取實時檢測、創(chuàng)造自主學習、復原問題求解等;同時提出從實踐平臺的創(chuàng)建和考核方面進行思考和改革,重視過程監(jiān)督,利用GitHub平臺使實踐考核更為公正。

        關鍵詞:編譯原理;自主學習;歸納思維;教學實踐

        0 引 言

        編譯原理是計算機專業(yè)的一門核心課程,內容涉及形式語言、有限自動機等抽象內容,一向被認為是最難的計算機專業(yè)課程[1]。教師感覺難教,學生感覺難學,課程內容抽象和枯燥、算法復雜且不易理解、實踐考核難通過等都是師生公認的問題。國內學生在就業(yè)后較少從事與編譯器設計開發(fā)相關的工作,這也使得他們的學習積極性不高。對于授課教師而言,如何提高該課程的教學質量、消除學生的畏難心理、提高其學習興趣、改善學習效果,是一個需要研究的課題。

        鑒于編譯原理課程的重要性和挑戰(zhàn)性,對其教學方法的嘗試和探索一直是研究的熱點。很多學者提出了自己的見解,如有學者從教育心理學(包括人本主義教學理論和構建主義學習理論)出發(fā)考慮教學方法的改革[2];有學者從目標驅動著手構建編譯原理課程實施的目標體系,以幫助學生更好地自主學習[3];也有學者提出采用隱喻語言來鍛煉學生的抽象思維能力[4],采用啟發(fā)式教學來提高教學質量[5]。同濟大學軟件學院和電子與信息工程學院均開設了編譯原理專業(yè)課程,教師團隊互相學習,積極探索和提高教學方法,以課程內容為導向,提出并凝練了4種教學方法,同時對課程實踐平臺的創(chuàng)建和考核方法也進行了探討和實踐。

        1 教學方法研討

        在編譯原理課的授課中積極嘗試改革教學方法以改善課程的教學質量,取得了良好的效果。這些教學方法包括應用歸納思維、增加隨堂練習、創(chuàng)造自主學習機會、復原問題求解等。經過實踐驗證,這些教學方法能夠有效提高學生的學習興趣,降低學習難度,改善教學效果。

        1.1 應用歸納思維

        和演繹思維相比,人類更容易接受歸納思維,但大多數編譯原理中文教材都采取了演繹思維的方式來組織教材內容,這給學生自學或者預習編譯原理課程帶來困難。為了幫助學生更容易理解看似復雜的模型和算法,以一個具體的例子來講解是較好的做法。如在自上而下語法分析章節(jié)中講解到消除文法的左遞歸算法時,先拿出一個簡單的具有左遞歸的文法,以它為例,讓學生探索如何消除其左遞歸,待這個例子講解完之后再介紹該算法,就顯得清晰易懂。

        1.2 增加隨堂練習

        在講解完重要知識點尤其是難點之后,鼓勵教師加入隨堂練習進行實時檢測,一方面可以考核學生是否理解了教授的知識點,另外也可以提高學生的注意力。根據本教學團隊的授課經驗,隨堂練習能夠很準確地反映出學生對知識點的掌握程度,如果學生對知識點有不正確的理解,也能通過練習來迅速糾正。隨堂練習提高了學生對課程的參與度,通常只要學生認真聽講,在老師的引導下,隨堂練習一般都能正確完成,這種“積極反饋”現象也會給予學生鼓勵和成就感,構成學習的良性循環(huán)。

        一些老師可能認為編譯原理課程本身的教學任務重,增加隨堂練習在時間方面有難度,但是如果只顧完成教學任務而忽視學生是否掌握了授課內容,就難免舍本逐末。當然為了控制時間,隨堂練習的設計就比較重要,目標是考查知識點,需要控制計算量,題目規(guī)模宜小不宜大,宜簡不宜繁。通過觀察學生在練習中發(fā)生的錯誤可以直接定位到學生的薄弱知識點,立刻進行重復講解,以使關鍵知識點都能夠被學生理解和接受。

        如考核NFA如何通過狀態(tài)消去法轉換為正規(guī)表達式,可以采用如圖1所示的NFA來測試,它基本覆蓋了所有的狀態(tài)消去規(guī)則。

        又如考察賦值語句的語義分析,可以讓學生根據賦值語句的文法產生式(如圖2所示)及語義規(guī)則寫出賦值語句A:=B*(-C+D)的三地址代碼,這個語句很簡單,卻全方面考核了學生對屬性文法和語法制導翻譯方法的掌握情況。

        1.3 創(chuàng)造自主學習

        多數高校會將編譯原理課安排到大三來上,一般來說,這些高年級學生已經具備了較好的自主學習能力,所以考慮將較難的課后習題單獨摘錄出來,讓學生分組完成,然后抽出一定的課堂時間進行答辯與講解。這樣有利于學生自主、自助地學習和探索,使他們對自己解答的題目和相關知識點掌握得更加牢固。對教材中的可選性章節(jié),也允許學生分組進行研究性學習,希望將教材中講解的基本知識點與拓展的可選知識點相結合,以實現知識的拓展性。拓展學習成果也可以作為加分因素,以此來鼓勵學生。

        1.4 復原問題求解

        編譯原理中有很多經典的算法,如算符優(yōu)先分析方法。如果采用傳統的方法,先介紹什么是算符優(yōu)先文法、該文法對算符的約束條件、算符之間的優(yōu)先關系的定義,以及FIRSTVT和LASTVT集合的計算、算符優(yōu)先關系表的構建和算符優(yōu)先分析算法的設計。順著這個思路(往往也是教材的思路),雖然也能把算符優(yōu)先分析方法講解清楚,但給學生增加了很多困惑:勤于思考的學生會困惑為何引入算符的優(yōu)先級?優(yōu)先關系為何這樣定義,而不是另外一種方式?為何要引入素短語等。這些困惑給他們帶來了學習上的困難,也很容易讓他們對算法的學習失去興趣。

        針對這種情況,建議“復原問題求解過程”,一步步引導學生,使他們從被動思考轉為主動探索。知識的講解循序漸進,使得算法的設計、新概念及術語的引入都變得水到渠成,使被動地學習、接受新的概念和知識變成積極地創(chuàng)造概念和知識。

        以算符優(yōu)先分析方法為例,可以先拋出一個問題,如對一個算術表達式文法G{ E→E+T│T; T→T*F│F; F→P↑F│P; P→(E)│i},對于符合該文法的一個語句i+(i*i)+i,采用規(guī)范規(guī)約,我們會得到圖3(a)中的語法分析樹,然后向學生拋出問題:是否可以把這個語法分析樹簡化為圖3(b)中的語法分析樹?顯然圖3(b)中的語法分析樹用于語法分析,步驟更少,效率更高。對比兩棵樹,同學們不難發(fā)現,它們的區(qū)別主要在于后者避免了單非終結符到單非終結符的歸約。接下來可以引導學生找出圖3(b)中語法分析樹的規(guī)約短語,顯然有i, N*N, N+N。可以把這些可規(guī)約短語定義為素短語,讓學生給出其定義(即含有終結符且不包含更小的素短語),然后開始引導學生探討如何利用程序自動識別這些素短語,提示是否可以結合產生式,引入這些終結符(如給一個新名字:算符)的優(yōu)先關系(如>,=,<)來識別素短語。經過課堂檢驗,學生能夠給出建議:同時出現在產生式左側的算符優(yōu)先級相同,采用“=”,其他算符的關系可以采用“<”或“>”表示。此時教師才開始介紹算符優(yōu)先分析方法中對于算符的優(yōu)先關系的定義,并給出素短語的識別算法。至此,學生很清楚引入算符優(yōu)先關系的目的是為了識別出素短語,加速語法分析的過程,并且他們也會非常清楚這種方法的不足:當省略的單非終結符到單非終結符的歸約不符合圖3(a)中 語法樹的時候,使用圖3(b)中語法樹會帶來誤判,把不合法的語句判斷為合法。

        這種復原問題求解過程的方法能夠讓學生很清楚地看到“新”定義、“新”術語、“新”算法被設計出來的緣由,理解和接受這些知識就變得輕松起來。

        2 實踐考核改革

        2.1 建立實踐平臺

        為了鼓勵學生的團隊合作精神,以團隊為基礎來完成項目實踐這種考核方式被越來越多地采用,但這也會帶來一些負面影響,比如一些同學“搭便車”,而另外一些同學的負擔又過重。為了評分的公平,一般情況下,老師都會要求同學們提供工作量比例以作為評分的依據,但是鑒于人為因素,這個比例往往不能真實地反映出每個人的貢獻,這一直都是造成團隊考核不公平的原因。為了避免此問題,本教學團隊提倡采用一些新工具和平臺來進行項目管理,以使團隊考核更加有據可依和科學合理,如可以利用GitHub平臺(http://www.github.com/ )來進行項目的管理,同學們在代碼方面的貢獻直接根據GitHub平臺的數據來評定。比如,圖4是一個4人小組在GitHub上管理的項目在課程授課幾個月期間貢獻數據的圖形化表示,每個人的貢獻量一目了然,再乘以工作內容的難度系數,就能夠得到客觀公正的成績評定系數。

        同樣,也可以利用GitHub平臺來構建課程實踐平臺,通過該平臺發(fā)布項目實踐要求,也鼓勵同學們通過此平臺共享課程資料和分享學習經驗,同學們的貢獻及活躍程度的數據也能夠輕松通過GitHub平臺獲得。此外,QQ群、微信群等也是良好的溝通平臺,能夠有效促進師生之間、同學們之間的溝通和互助。

        2.2 重新定位考核內容

        目前各大高校對編譯原理課程的考核一般分理論和實踐2部分,每個高校的比例都有差異。從整體數據上看,國外高校更偏重于實踐考核,如斯坦福大學編譯課程實踐部分占編譯課程總評的70%[6],卡內基梅隆大學在編譯技術領域享有很高的國際聲譽,其實踐部分分數也占編譯課程總評的70%[7],加州大學伯克利分校的實踐部分占到課程總評的75%[8];而國內高校對一般理論知識的理解和講授偏多一些,如武漢大學編譯原理課程的實踐環(huán)節(jié)占總課時的40%,北京航空航天大學編譯原理的實踐教學比理論基礎教學少1個學分。

        近些年,國內高校也越來越重視實踐考核,也有一些這方面的教改內容探索[9-12]。不管國內還是國外,多數實踐考核都是鼓勵學生使用一門自己熟悉的高級語言從頭編寫一個編譯器,這樣不僅考察了學生對課程理論知識的掌握,也連帶考核了學生對數據結構、操作系統、計算機組成原理、程序設計語言、軟件工程等多門課程的掌握程度,所以編譯原理實踐也是對學生計算機綜合能力的全面考核。因此,該課程實踐考核對學生的計算機軟件開發(fā)能力的要求就很高,并且這和軟件學院的另外一門課程“軟件綜合項目實踐”沖突,軟件綜合項目實踐課程設計的目的就是為了鍛煉和考核學生綜合運用計算機技術開發(fā)具有一定規(guī)模的系統軟件或應用軟件的能力。從另一個角度來看,如果學生的計算機軟件開發(fā)素養(yǎng)不夠好,即使在該課程的學習過程中非常努力,也無法取得理想的成績。這對“下游成績”的學生來說也不是很公正。

        所以鼓勵學生使用編譯開源工具,“站在巨人的肩膀上”,借助開源工具的幫助來構建編譯器,推薦的詞法分析器包括Lex等,語法分析器包括JavaCC、Bison和Yacc等,這些開源工具被廣泛應用,Lex、Yacc等也有多個不同語言的實現版本(包括C、Python等);同時支持跨平臺(包括Windows、Linux、Mac等),學生根據自己熟悉的平臺和語言進行選擇。如此,課程實踐考核對軟件開發(fā)技能的要求相對降低一些,考核點集中在學生對編譯技術及方法的理解和掌握上,而不是在學生軟件開發(fā)綜合素養(yǎng)上。這樣設計的“實踐”環(huán)節(jié)依然可以促進和加強對理論知識的理解,而且更有針對性。

        為了能夠識別并鼓勵優(yōu)秀的學生,可以把實踐考核設計成“多層次”的考核??梢蕴峁┮粋€簡單語言L0,一個相對豐富的語言L1,基于L1擴展語言Ln(不限制擴展的語法),對于實現不同級別語言編譯器的同學,差異化他們的實踐環(huán)節(jié)得分。比如,可以在課程設計中列出2個可選的題目編寫PL/0編譯器和編寫類C編譯器。學生可以根據自己的能力和興趣實現一個適合于自己水平的編譯器。

        3 結 語

        基于多年的教學經驗,我們提出編譯原理課程理論教學的一些有效的教學方法,同時對實踐考核進行思考和改革,課程教學實踐表明,這些教學方法和實踐改革卓有成效,希望為高校的編譯原理課程的教學提供一些借鑒。下一步希望能夠在實踐環(huán)節(jié)的過程監(jiān)控上更加細致和科學,也計劃將課程的一些擴展性知識以慕課教學的方式開展,以期為課堂教學帶來有益的補充。

        作者簡介:高珍,女,副教授,研究方向為編譯技術、數據分析與數據挖掘, gaozhen@#edu.cn;

        衛(wèi)志華(通信作者),女,副教授,研究方向為機器學習、數據挖掘,zhihua-wei@#edu.cn。

        參考文獻:

        [1]周會平, 王挺, 李夢君. 關于編譯原理課程定位的思考[J]. 計算機教育, 2011(11): 45-47.

        [2]周汝雁, 韓彥嶺, 張明華,等. 基于教育心理學的編譯原理課程教學方法[J]. 計算機教育, 2014(9): 66-68.

        [3]楊曉波, 駱嘉偉, 文佳寶. 目標驅動的編譯原理課程體系研究[J]. 計算機教育, 2011(11): 23-27.

        [4]黃孝喜, 諶志群, 王榮波. 隱喻語言在編譯原理課程教學中的應用[J]. 計算機教育, 2015(1): 102-104.

        [5]姚衛(wèi)紅, 趙晶. “編譯原理”教學實踐探究[J]. 計算機教育, 2013(5): 64-67.

        [6]斯坦福大學編譯課程網站 [EB/OL]. [2016-09-01]. http://online.stanford.edu/course/compilers.

        [7]卡內基梅隆大學編譯課程網站[EB/OL]. [2016-09-01]. http://www.cs.cmu.edu/~fp/courses/15411-f08/.

        [8]加州大學伯克利分校編譯課程網站[EB/OL]. [2016-09-01]. http://www.eecs.berkeley.edu/Courses/Data/208.html.

        [9]竇亮, 楊宗源, 王婷婷. 編譯實驗課程的教學研究與實踐[J]. 計算機教育, 2009(23): 8-11.

        [10]邵兵. 軟件學院編譯原理實踐課程的教學探索[J]. 計算機教育, 2016(8):115-117.

        [11]張昱, 陳意云. 編譯原理課程實踐改革探索[J]. 計算機教育, 2008(8): 24-26.

        [12]張晶, 金英, 劉磊.“編譯原理”實踐課程教學方法研究[J]. 吉林大學學報(信息科學版), 2009(21): 19-21.

        (見習編輯:張 勛 )

        猜你喜歡
        編譯原理教學實踐自主學習
        軟件學院編譯原理實踐課程的教學探索
        計算機教育(2016年8期)2016-12-24 10:24:00
        基于MOOC的編譯原理分階段課程教學研究
        計算機教育(2016年9期)2016-12-21 00:32:22
        營造興趣啟蒙式學習氛圍的編譯原理首課設計
        計算機教育(2016年7期)2016-11-10 08:48:50
        中職計算機應用課程教學改革與反思
        科技視界(2016年21期)2016-10-17 18:57:24
        淺論高中化學生活化教學的實踐與思考
        考試周刊(2016年79期)2016-10-13 23:10:24
        淺談初中物理實驗教學與學生創(chuàng)新能力的培養(yǎng)
        考試周刊(2016年79期)2016-10-13 23:09:42
        測量平差課程教學改革探討與實踐
        考試周刊(2016年79期)2016-10-13 21:37:05
        中職學?!吧菊n堂”的調查研究與實踐
        成才之路(2016年25期)2016-10-08 10:03:04
        踐行少教多學,構建高效課堂
        對學生自主學習的探索
        97精品人人妻人人| 亚洲av国产精品色a变脸| 免费观看又色又爽又黄的韩国| 精品久久久久久777米琪桃花 | 亚洲熟妇色xxxxx欧美老妇y| 国产欧美久久久另类精品| 在线观看国产一区亚洲bd| 亚洲av乱码专区国产乱码| 国产免费午夜福利蜜芽无码| 玩弄放荡人妻一区二区三区| 久久亚洲一区二区三区四区五| 国产人妖伦理视频在线观看| 日本一区二区在线高清| 乱码窝窝久久国产无人精品| 久久精品国产99久久无毒不卡| 亚洲av成人精品日韩在线播放| 亚洲а∨精品天堂在线| 国产精品天天在线午夜更新| 免费的成年私人影院网站| 色综合久久久久综合999| 国产av大片在线观看| 日本一区二区三级免费| 水蜜桃精品视频在线观看| 亚洲午夜久久久精品影院| 国产午夜福利久久精品| 国产成人aaaaa级毛片| 亚洲精品久久久久久| 亚洲欧美日韩国产精品一区| 国内精品极品久久免费看| aa日韩免费精品视频一| 国产av久久在线观看| 国模雨珍浓密毛大尺度150p| 黄色a级国产免费大片| 久久国产精品久久精品国产| 亚洲双色视频在线观看| 手机在线国产福利av| 中文字幕av长濑麻美| 18禁裸体动漫美女无遮挡网站 | 国产视频网站一区二区三区| 喷潮出白浆视频在线观看| 国产精品国产自产拍高清|