牛秋月,唐國良
(河南中醫藥大學信息技術學院,鄭州450046)
針對《編譯原理》課程內容抽象,知識點多且分散,課時少等教學實際,分析當前《編譯原理》課程的教學現狀和學生特點,樹立“以學生為主體,以問題為導向”的教學理念,引入SPOC和PBL,整合線上線下資源,開展混合模式教學,激發學生學習興趣,提高教學效果。
編譯原理;PBL;SPOC;混合模式教學
《編譯原理》是本科計算機專業必修的一門專業主干課程,該課程理論性強,復雜算法和知識點較多且抽象,普遍被認為是本科階段最難學難教的一門專業課[1]。該課程之所以難,從學生角度看,主要表現為內容抽象難以掌握。從教師角度看主要表現在三個方面:一是該課程重難點比較集中,主要在第三四五章節的詞法分析與語法分析部分,學生在學習前兩章的時候積極性還可以,在三四五章學習時容易出現挫敗心理,直接影響到后續章節的學習;二是該課程的理論講授和實踐鍛煉兩部分之間的銜接不好處理,現階段理論講授環節多采用傳統的填鴨式灌輸教學,學生是被動的接受編譯器實現的原理和技術,實驗課上讓學生自己動手設計時,不知從哪兒著手去寫程序;三是知識點多且分散,課時少,僅利用課堂時間很難完成整套編譯理論的講授。
計算機專業是一個重實踐的專業,如何使學生在弄懂編譯理論的同時,把實踐結合起來,提高學生的學習積極性,培養學生的計算思維能力,是當前《編譯原理》教學亟待解決的問題[2]。本文針對本校計算機科學與技術專業的培養目標和課程特點,引入SPOC和PBL,開展混合模式教學,經過一個學期的教學方法改革和教學實踐,取得了良好的教學效果。
PBL,是以問題為導向的教學方法,充分體現出“以學生為主體,以問題為導向”的教學原則[3],PBL教學法主要按照“教師設計問題—學生自主學習—分組討論及發言—教師總結”的教學思路來開展教學,目的是提高學生學習興趣,促進學生主動地思考和學習。
針對本課程中一些重要且學生不易接受的知識點,采用PBL教學法,以實際問題讓學生自行尋找解決問題的方案,激發學生主動學習的本能。
例如在介紹自上而下分析所面臨問題時,假定有文法G(S):
(1)S→xAy
(2)A→**|*
分析輸入串x*y。
分析過程中,當用一個非終結符A的第一個候選擴展A時,第一個“*”能夠匹配成功,但這種匹配是暫時的,當分析指針IP指向下一個符號“y”時,此時分析出錯,如圖1所示。不得不“回溯”到上一步,采用A的第二個候選去擴展A,分析成功。

圖1 自上而下分析過程舉例
再例如介紹算法優先分析法中算法的優先順序時,二義文法G(E):E→i|E+E|E-E|E*E|E/E|(E)為例,分析句子“i+i-i*(i+i)”,會生成以下兩種不同的語法樹,如圖2所示。如果規定算符的優先次序,并按這種規定進行歸約,則歸約過程是唯一的。

圖2 算法優先分析法舉例
但是如果提前規定此文法算符之家的優先次序,并按這種規定進行歸約,則歸約過程是唯一的。
由于本課程知識點抽象知識點較多,不再一一列舉其PBL案例。
結合前兩個學期在多個在線教學平臺的試用效果,討論并分析各平臺的優勢、教學管理功能、網絡是否擁堵及學生對各平臺的反響等因素,決定采用以課堂派為主,雨課堂、釘釘、騰訊課堂等教學平臺為輔[4]。
根據該校開設此課程的專業培養目標及課程內容,選用中國大學MOOC上由國防科技大學王挺教授錄制的MOOC視頻作為線上同步SPOC教學資源。該MOOC視頻在2007年被評為國家精品課程,2016年被評為國家精品資源共享課程。
混合式課堂教學過程設計如圖3所示。

圖3 混合式課堂教學過程設計
在課堂派公告區發布每章節的學習目標、學習內容與作業要求,本章節與前后章節知識點之間的關系,另附上相應章節的MOOC視頻學習清單及作業問題。學生在視頻學習完成之后,可以提交作業。
教師根據學生課前自主學習及作業完成情況,通過課堂派直播或線下課堂等方式,進行知識點的串講和討論,為了活躍課堂氣氛,授課過程中會根據學習內容設置互動搶答或隨機提問的形式,督促學生認真上課。
每章節學習結束后,都會在課堂派上發布一次綜合性單元測試,測試習題內容及順序都是隨機打亂的,避免學生相互抄襲。
由于《編譯原理》理論性強,內容抽象,在實施過程中多以講授為主,針對課堂中不同知識點,根據其難易程度、算法特點等采取不同的教學方法,而非從頭到尾采用某種單一的教學方法。本文提出將PBL教學法、類比教學法、圖形化、角色翻轉等多種教學方法,在一定程度上化繁為簡、化抽象為形象,這樣不僅可以幫助學生更好理解課程中的知識點,還能夠提高學生學習積極性、培養學生主動思考問題解決問題的能力。
本課程在理論教學中主要采用PBL教學法,但由于該課程抽象知識點較多,如果在授課過程中每個知識點都設計問題的話,提出的問題會過多,降低授課效率,收不到理想的教學效果。因此,該方法主要用于介紹本課程的重要且較難理解知識點,其他知識點的講解多采用諸如以下幾種教學方法。
對本課程中一些十分抽象且不易理解的知識點,拿出一個大家能看見的或較易理解的對象來進行對照學習。例如在講解編譯過程及每個階段的任務時,類比為自然語言的翻譯過程,便于學生理解。自然語言的翻譯要經過以下幾步:①識別出句子中的一個個單詞;②分析句子的語法結構;③根據句子的含義進行初步翻譯;④對譯文進行修飾;⑤寫出最后的譯文。這5個步驟剛好和編譯過程的詞法分析、語法分析、中間代碼生成、代碼優化、目標代碼生成這5個階段一一對應,如圖4所示。

圖4 編譯過程類比為自然語言翻譯
利用圖形和動畫展示抽象算法的實現過程,能夠把知識的講解化靜為動,培養和激發學生的學習興趣。例如在講解確定有限自動機和非確定有限自動機的區別時,我們借助狀態轉換圖來描述,NFA確定化為DFA時把每一步操作都通過動畫在圖形里面表示出來,讓學生能夠直觀地看到整個算法的實現過程。
課前教師需將相應章節的教學大綱、PPT、教學視頻、自測題等教學資源上傳到網絡教學平臺,并要求學生在課前進行自主學習,自學過程中產生的疑問可以在平臺上與老師、同學進行交流,或帶到課堂上進行探討。課程教學中,教師首先針對學生在課前自學過程中遇到的問題給出解答。然后教師再根據學生的學習情況設計研討題目,要求學生在規定時間內分組進行討論,討論結束后每組推選出一位代表總結發言。小組代表總結發言時,教師可適當的提出疑問,其他小組的學生也可提出質疑并發表自己的見解。最后,教師針對學生課堂的表現情況做出總結,理清本次課程知識點的脈絡,對學生掌握不牢固的知識點,再次布置任務,加深學生對知識的理解[5]。
本課程基于以上的教學設計,在2019-2020學年第二學期針對本校計算機科學與技術專業學生,開展一學期的線上線下相結合的混合模式教學。經調查統計數據顯示,引入PBL和MOOC之后的混合式教學學生期末成績有了大幅度提高。
近三年學生成績分布直方圖對例如圖5所示。

圖5 近三年成績對比
針對《編譯原理》抽象難懂難學的特點,引入PBL和國家精品MOOC資源,經過精心的教學設計,采用線上線下相結合的混合模式教學,將《編譯原理》課程中的知識點及難點與實際的案例有機地、融會貫通的結合起來。經過一學期的試行,證明這種教學模式是可行的、有益的。在以后教學過程中,將繼續研究和探索混合式教學模式的教學方法和設計,培養學生的自主學習和創新思維能力、溝通協作能力等,提高教學效果。