時間:2023-03-16 17:16:49
序論:速發(fā)表網(wǎng)結合其深厚的文秘經(jīng)驗,特別為您篩選了11篇編譯原理論文范文。如果您需要更多原創(chuàng)資料,歡迎隨時與我們的客服老師聯(lián)系,希望您能從中汲取靈感和知識!
1引言
編譯原理課程是計算機科學與技術專業(yè)的重要專業(yè)課,它不僅能幫助學生更深入地了解計算機以及計算機程序的本質,還能提高學生進行問題求解的能力。本課程的理論性和實踐性都很強。國外和國內(nèi)分別從二十世紀六十和八十年代開始設置“編譯原理”課程,從文獻[1,2]兩本專著的內(nèi)容可以看出,幾十年來,“編譯原理”課程可以講授的內(nèi)容越來越多。設置該課程的目的在于系統(tǒng)地向學生講敘編譯程序設計的基本理論、編譯系統(tǒng)的結構及編譯程序各部分的設計原理和實現(xiàn)技術。通過對這些知識的學習,使學生既能掌握編譯理論和編譯方法等方面的基本知識,又具有設計、分析、實現(xiàn)和維護編譯程序等各方面的綜合能力。該課程一般包括理論教學和實驗教學兩部分。編譯原理理論知識包括形式語言、有窮自動機等抽象內(nèi)容及大量的算法,較難理解和掌握,因此“編譯原理”的實驗教學對于深化學生對所學理論知識的理解,提高學生的理論聯(lián)系實踐的能力和編程水平具有重要的作用。
本文根據(jù)編譯原理課程的特點,結合自己的教學經(jīng)驗與我院的實際情況,探討了普通本科院校編譯原理的實踐教學內(nèi)容的設置。
2課程實驗的重要性
編譯原理是集理論與實踐于一體的一門課程,在理論課中所介紹的基本概念、原理、方法和算法,一定要通過實驗加以理解和吸收,才能能夠達到真正的理解、吸收和掌握。編譯原理課程實驗的內(nèi)容主要放在對詞法分析、語法分析和語義分析、中間代碼生成、中間代碼優(yōu)化和目標代碼生成的方法上。由于編譯原理課程有很強的理論性與實踐性,在學習時普遍感到內(nèi)容抽象,不易理解,掌握起來難度很大。因此通過教學實踐和對學生所做的調查表明,設計一組與理論內(nèi)容相配套的實驗是十分必要的。
3課程實驗的設計
針對編譯原理課程的特點及要求,共設置了五個實驗項目。這組實驗既和理論課內(nèi)容相輔相承,同時相互之間又互相關聯(lián),構成了一個實驗整體。
實驗一
題目:消去C、C++程序中的注釋(2學時,必做)
實驗目的:掌握C語言文件的基本操作,消除源C語言程序中的注釋,為以后的編譯提供方便。
實驗要求:對給定的帶注釋的C語言源程序,利用該程序去掉注釋,輸出去除注釋的源程序。
實驗二
題目:詞法分析(必做,4學時)
目的:通過設計編制調試一個具體的詞法分析程序,加深對詞法分析原理的理解。并掌握在對程序設計語言源程序進行掃描過程中將其分解為各類單詞的詞法分析方法。
要求:編寫程序對輸入的源程序字符串進行詞法分析,對符合下述文法描述的字符串,建立單詞符號表,不符合的字符串給出錯誤信息。
內(nèi)容:用擴充的BNF表示如下:
<標識符><字母>{<字母><數(shù)字>}
<整型常數(shù)><數(shù)字>{<數(shù)字>}
<算符>+-*/()=
<字母>abc…yABC…Y
<數(shù)字>1234567890
實驗三
題目:遞歸下降分析法(4學時,選做)
目的:根據(jù)給定的文法編制調試遞歸下降分析程序,以便對任意輸入的符號串進行分析。本次實驗的目的主要是加深對遞歸下降分析法的理解。
要求:對給定的文法,利用遞歸下降分析法對任意輸入的符號串進行分析語法分析,對符合下述文法描述的字符串(表達式或賦值語句),給出中間代碼,不符合的字符串給出錯誤信息。轉中國-內(nèi)容:用擴充的BNF表示如下:
<賦值語句><標識符>=<表達式>
<表達式><表達式>{+<項>-<項>}<項>
<項><項>{*<因子>/<因子>}<因子>
<因子><標識符>(<表達式>)
即:Si=E
EE+TE-TT
TT*FT/FF
Fi(E)
實驗四
題目:語法分析程序LL(1)(4學時,必做)
目的:通過該實驗使學生掌握描述語法規(guī)則的文法,以及加深對語法分析中自頂向下分析法中的預測分析法的理解。
要求:對給定的文法建立預測分析表,利用預分析法對實驗一中詞法分析產(chǎn)生的符號進行語法分析,對符合下述文法描述的字符串(表達式或賦值語句),給出中間代碼,不符合的字符串給出錯誤信息。
內(nèi)容:用擴充的BNF表示(同實驗三)。
實驗五
題目:語法分析程序LR(1)(4學時,必做)
目的:通過該實驗使學生加深對語法分析中自下而上分析法中的LR分析法的理解。
要求:對給定的文法手工建立LR(1)分析表;利用LR分析法對實驗二中詞法分析產(chǎn)生的符號進行語法分析,對符合實驗中文法描述的字符串(表達式或賦值語句)給出中間代碼;不符合的字符串給出錯誤信息。
人力資源作為各種資源中的第一資源,其配置是否科學、合理,管理模式是否科學、先進和具有時代特色,不僅直接關系到人力資源效能的正常發(fā)揮,也關系到其他資源的開發(fā)利用、合理配置和科學管理,醫(yī)療機構的人力資源管理也不例外。醫(yī)院要想在激烈的市場競爭中站穩(wěn)腳跟,不斷擴展自己的醫(yī)療市場,必須樹立現(xiàn)代人力資源管理的新意識,進一步加大人力資源管理和開發(fā)的力度,以獲取人力競爭優(yōu)勢,走可持續(xù)發(fā)展的道路”。
1現(xiàn)代人力資源管理與傳統(tǒng)人事管理的概念和區(qū)別
醫(yī)院現(xiàn)代人力資源管理與傳統(tǒng)人事管理有著本質的區(qū)別。有人形象地說傳統(tǒng)人事管理是把人看作蠟燭,不停地燃燒直至告別職業(yè)生涯,強調的是組織目標的實現(xiàn);現(xiàn)代人力資源管理是把人看作蓄電池,可以不斷地放電、充電,強調的是人的潛能的不斷開發(fā)和利用,強調實現(xiàn)組織價值和員工個人價值的雙贏目標。概括來說,它們的主要區(qū)別如下:
1.1人事管理
主要采用嚴格的制度、命令式和簡單式的監(jiān)督。精力放在員工考勤,檔案、合同管理,職稱評定和發(fā)放工資福利等事務性工作上,是一種反應性的管理。它忽視員工的主觀能動性和自我實現(xiàn)的需要。一般在單位中被定位于行政服務部門。目前國有公立醫(yī)院基本上都是這種模式。即使一些醫(yī)院將人事管理門更名為“人力資源部”,但從醫(yī)院管理體制上可看出,對人員的管理基本上仍是傳統(tǒng)的人事管理,這是組織歷史以及組織格局和體制的必然。由于其不是基于以人為本的價值理念,沒有足夠認識到人是“資源”的戰(zhàn)略管理意義,加之缺乏足夠的公平、競爭的運作環(huán)境,所以調整和維系人員對組織獻身的精神的,多是組織權力和行政感召,缺乏對個人持續(xù)培養(yǎng)、開發(fā)從而達到自我實現(xiàn)價值的根本動力。
1.2現(xiàn)代人力資源管理
醫(yī)院現(xiàn)代人力資源管理是建立在全新的理論與管理思維之上的,它是運用現(xiàn)代化的科學方法,對與一定物力相結合的人力進行合理的培訓、組織和調配,使人力、物力經(jīng)常保持最佳比例,同時對人的思想、心理和行為進行恰當?shù)恼T導、控制和協(xié)調,發(fā)揮人的主觀能動性。它帶來的是醫(yī)院人事管理理論和時間觀念的全面更新,它是要獲取與開發(fā)醫(yī)院服務工作需要的各類、各層次人才,建立醫(yī)院與醫(yī)務人員之間良好的合作關系,以人力資源滿足社會及公眾對醫(yī)院的要求,滿足醫(yī)院經(jīng)營管理的發(fā)展的目標,也滿足醫(yī)務人員個人成長和發(fā)展的要求。在用人機制、運營機制方面均比較靈活,有較強的市場應變能力和市場競爭能力。另外,比較注重以人為本,提倡“人性化”管理,在薪酬分配、績效評估、員工激勵和未來的職業(yè)生涯規(guī)劃等方面更加符合現(xiàn)代醫(yī)院管理的要求。
2目前國有公立醫(yī)院人力資源管理的現(xiàn)狀
2.1對人力資源和人力資源管理的重要性認識不夠,沒有樹立正確的觀念
醫(yī)療衛(wèi)生行業(yè)長期處于行政壟斷地位,醫(yī)院沒有在市場競爭中實現(xiàn)優(yōu)勝劣汰,外部環(huán)境不需要對人力資源有較高的要求。這是目前公立醫(yī)院不重視人力資源管理的主要原因。
2.2人力資源管理體制僵化,人才流動機制不完善
目前,許多醫(yī)院還未真正成為市場的主體,其運行仍由行政部門干預,醫(yī)院不具有完全的用人自。雖然人才的評估在近年來有所規(guī)范,但不同醫(yī)院的同樣職稱人才,尤其是高級人才缺乏同質性,真正的自由流動和彈性機制沒有建立。醫(yī)院想要的人進不來,不要的人出不去,想走的人走不了,想來的人來不了,專業(yè)人員和管理人員缺乏積極性。其主要有四方面的原因:一是行政管理部門干預過多;二是醫(yī)院內(nèi)部人力資源管理機制不健全;三是人力資源的市場機制不完善;四是原來遺留問題的后遺效應。
2.3缺乏科學的績效評估體系
目前大多數(shù)公立醫(yī)院仍為事業(yè)單位,績效考核沿用行政機關、事業(yè)單位工作人員年度考核制度,醫(yī)院各種專業(yè)、層次的人員,風險、技能要求不同,卻都在使用統(tǒng)一的考核標準,所考核的內(nèi)容也很籠統(tǒng)和形式化,難以反映不同崗位不同人員的業(yè)績奉獻。
2.4薪酬分配缺乏競爭性和激勵作用
近年來,盡管一些醫(yī)院對拉開收入差距采取了一定的措施,但絕大多數(shù)醫(yī)院仍然在沿用過去的等級工資體系。沒有進行工作分析、制定崗位說明書、做薪酬市場調查、績效考核以及薪酬激勵等規(guī)范化的人力資源管理。
2.5未重視醫(yī)院與員工的共同發(fā)展
有些醫(yī)院招聘并錄用員工后,沒有對其進行醫(yī)院的價值觀教育,醫(yī)院缺乏良好的文化氛圍,使員工難以產(chǎn)生認同感和歸屬感,團隊協(xié)作能力不強。
3加強國有公立醫(yī)院現(xiàn)代人力資源管理的建議
現(xiàn)代醫(yī)院管理是以人力資源為核心的管理。人力資源管理就是在醫(yī)院管理中要堅持和貫徹“以人為本”,使“人”與“工作”和諧地融合起來,實現(xiàn)醫(yī)院和員工“雙贏”,達到利益最大化。為加強公立醫(yī)院的現(xiàn)代人力資源管理,提出以下幾個方面的建議。
3.1要樹立正確的人力資源觀念和現(xiàn)代人力資源管理新意識
人力資源是醫(yī)院的戰(zhàn)略性資源,是具有高增值性的重要資產(chǎn)。因此,人力資源管理者要打破傳統(tǒng)的人事管理觀念,從單純的人員行政管理中走出來,主動地去開發(fā)人力資源、挖掘潛能,使職工最大限度地釋放才能,滿足自我實現(xiàn)的需求。在醫(yī)療市場競爭中人才就是財富、人才就是效益、人才就是競爭力、人才就是發(fā)展后勁,人才是一種無法估量的資本,是一種能給醫(yī)院帶來巨大效益的資本。如果把醫(yī)院的人才帶走,醫(yī)院會垮掉;相反如果你拿走資金、病房及設備,而留下人才,幾年后可重建一個醫(yī)院。在人力資源中,特別是受到過良好教育和具有創(chuàng)新協(xié)作能力的高素質人才,在某種程度上講,對經(jīng)濟和高科技發(fā)展起到?jīng)Q定性作用。“最優(yōu)秀的人才是免費的”,因為他們?yōu)獒t(yī)院創(chuàng)造的價值遠遠大于了醫(yī)院付給他們的報酬。因此,人力資源管理者,要堅持“以人為本”的思想,尊重人才、愛惜人才,想方設法做到“用事業(yè)凝聚人才、用精神激勵人才、用感情關心人才、用適當待遇留住人才”。
3.2建立競爭機制
堅持公開、平等、競爭、擇優(yōu)的選人用人制度。選人用人是搞好醫(yī)院人力資源管理的第一關,只有建立公開、平等、競爭、擇優(yōu)的選人用人制度,選拔和使用與所需要崗位相匹配的優(yōu)秀人才,才能為諸如薪酬待遇,培訓發(fā)展等其他人力資源管理工作奠定良好的基礎。要善于公開選拔任用人才,拓寬用人渠道,增加透明度,為各類不同的人才提供和創(chuàng)造發(fā)展機遇。中國有句古話叫“英雄不問出處”,只要符合招聘的崗位要求,具備基本的學歷、資歷和工作經(jīng)驗,就都應該讓其應聘,通過優(yōu)勝劣汰來選拔崗位最佳人選。做好工作分析,崗位評價,制定崗位說明書和崗位規(guī)范等基礎工作,同時在選拔人才時要嚴格按照程序運作,這樣才能夠確保招聘到高素質的優(yōu)秀人才。
3.3建立職責明確的崗位責任制
醫(yī)院要想有一個高效的運作機制,必須要相應地建立一套適合本醫(yī)院特點的組織體系和崗位設置,就是要堅持按需設崗,做到崗位職責明確、任職條件清楚,員工的能力與崗位要求相匹配。同時使該崗位的職責能夠充分履行而與上下配合協(xié)調,使醫(yī)院整體獲得最大效益。
3.4建立科學、公正、公開的績效考核制度
績效考核是對醫(yī)院員工勞動付出的一種反饋,同時也是支付薪酬的重要依據(jù)。在實施考核中必須要有一套能夠反映崗位特點和本人(或科室)實績的科學的考核標準,將不同崗位的責任、技術復雜性、承擔風險的程度、工作量大小、科研、教學等不同情況一并納入考核要素,同時在實施考核中做到公正操作,對事不對人,并將考核結果公開,及時做好反饋工作。
3.5建立公正、公平、合理的薪酬分配體系
薪酬是醫(yī)院進行人力資源管理的一個非常重要的工具。創(chuàng)新分配機制,建立公正、公平、合理的薪酬體系,對調動員工的積極性,提高醫(yī)院效益顯得尤為重要。薪酬的設計與結構以及水平必須建立在科學的工作分析、工作評價以及績效考核等基礎之上,真正體現(xiàn)按勞分配與兼顧公平的原則。在實際的薪酬分配中,要根據(jù)不同的工作態(tài)度,工作能力和工作業(yè)績拉開分配檔次,向關鍵崗位與優(yōu)秀人才傾斜。對臨床醫(yī)技科室醫(yī)務人員勞務費分配實施崗位量化考核。各科室實行二次分配,把工作績效作為崗位薪酬、多元分配的主要尺度。對積極開展新技術、新項目和臨床科研成績突出者實行重獎。這樣做的目的,一方面是對員工勞動價值的肯定,同時也是穩(wěn)定和吸引優(yōu)秀人才的主要措施。薪酬體系合理,使醫(yī)院的薪酬對內(nèi)具有公平性,對外具有競爭性。
3.6建立有效的人力資源激勵機制和約束機制
激勵可分為物質激勵與精神激勵。有效的激勵機制不僅可以調動員工的積極性,激發(fā)他們的創(chuàng)造力,而且可以增強醫(yī)院的凝聚力和競爭力,進而促進醫(yī)院的不斷發(fā)展和效益增長。制約機制也稱約束機制,就是要求醫(yī)院員工在醫(yī)療服務工作中的行為要符合職業(yè)道德規(guī)范和醫(yī)院規(guī)章制度,使其行為具有合法性和道德性。只有制約機制與激勵機制的相互配套與應合,才有可能獲得預想的管理效果。
3.7作好員工職業(yè)生涯規(guī)劃。為員工提供良好的發(fā)展空間
職業(yè)生涯是一個人在一生中所有的工作經(jīng)歷,特別是指職業(yè)、職位的變動以及個人職業(yè)理想的實現(xiàn)過程。職業(yè)生涯規(guī)劃,就是根據(jù)個人的興趣、愛好和所具備的知識與技能以及相關的人際背景等各種因素來設計個人的職業(yè)發(fā)展計劃。醫(yī)院作為員工職業(yè)生涯得以存在和發(fā)展的載體,必須為每位員工提供一個不斷成長和挖掘個人潛力和發(fā)揮特長的機會,醫(yī)院管理者不僅要關注醫(yī)院目標的實現(xiàn),更要關注員工個人理想的實現(xiàn),讓他們獲得事業(yè)上的成功與滿足,只有員工的發(fā)展與成功,才能有醫(yī)院的發(fā)展與成功。醫(yī)院只有為員工作長遠考慮,員工才能為醫(yī)院作長遠考慮,這一點在現(xiàn)代醫(yī)院的人力資源管理中是必須明確的。超級秘書網(wǎng)
3.8建立完善的社會保障制度
完善的福利和社會保障制度僅僅在于滿足生理需要和安全需要這兩個低層次的需要。除我國現(xiàn)有的社會保障體系外,基于醫(yī)療行業(yè)的特殊性,對一些特殊崗位還要給予職業(yè)安全保護,并按國家規(guī)定給予各種休假待遇,讓員工在為醫(yī)院的貢獻中享受到各種法定的保障。
文章編號:1672-5913(2013)18-0062-04
中圖分類號:G642
0 引言
編譯原理課程內(nèi)容豐富,而且涉及形式文法和語言、有窮自動機等抽象內(nèi)容,學生理解和掌握有一定難度。加上編譯程序是系統(tǒng)軟件,讓不少學生又增添了一層畏懼,甚至有的學生戲稱該課程是軟件系列課程中最難學的“天書”。部分學校單純從“直接有用性”角度考慮,將該課程由必修改為選修,甚至取消該課程,這些做法從另一個角度助推了學生的畏難情緒,也打擊了教師的教學研究積極性。
為打破這種尷尬局面,解除學生的學習心理障礙,我們引導學生探索編譯的原理、方法和技術在各應用領域中的使用,并以“應用領域編譯器”的構建作為課程實踐內(nèi)容。這些做法,既改變了編譯的“抽象”印象,激發(fā)學生學習興趣,又讓學生在具體應用問題的求解中,從系統(tǒng)的層面重新認識此前程序設計、數(shù)據(jù)結構與算法等課程介紹的程序、算法,在實踐中體會各種概念、原理和技術的實質,有助于學生深刻體驗計算機問題求解的內(nèi)涵,建立計算機系統(tǒng)觀。
1 基于領域應用的研究性教學實踐
編譯原理作為本科生課程,其主要目標是希望學生掌握編譯原理中的基本概念、理論和方法,在系統(tǒng)級上再認識程序和算法,提升學生的計算機問題求解的水平,增強其系統(tǒng)能力,體驗實現(xiàn)自動計算的樂趣。
如何幫助學生克服對編譯原理課程的恐懼,激發(fā)學生的學習興趣,達到課程的教學目的,是任課教師需要解決的重要問題。
研究表明:正情緒(如興趣)有利于智力操作,負情緒(如痛苦)不利于智力操作。為提高學生學習編譯原理的“正情緒”,我們在實踐中逐步摸索出了基于領域應用的編譯原理課程研究型教學方法,大大減輕了學生對編譯課程的畏懼感,提高了學習興趣,改善了教學效果。
1.1 以領域應用為導向,激發(fā)學習興趣
編譯程序是系統(tǒng)軟件。在有限的學科知識背景下,一些學生認為自己將來不會從事系統(tǒng)軟件開發(fā),編譯原理課程的學習沒有實際意義,因而沒有學習興趣。另一部分學生則認為涉及系統(tǒng)軟件的知識是復雜的、晦澀難懂的,由于懼怕,在心理上給自己增加了學習障礙。
建構主義學習理論提倡以學習者為中心的有意義的學習,認為教師是意義建構的幫助者和促進者,而不是知識的傳輸者與灌輸者。事實也證明“興趣是最好的老師”,一旦學生的學習興趣被激發(fā),學生對問題的鉆研深度和取得的成果往往會超過老師。因此,在編譯原理的教學過程中,我們以激發(fā)學生的學習興趣為切入點,嘗試探究式的教學方法。
實際上,編譯原理課程講述的是通用的問題求解方法,是針對各個具體應用領域中問題共性的求解方法,是從“類”的角度出發(fā)的計算方法,一旦掌握,可以應用于各領域具體問題的“實例”問題求解,效率更高,方法更通用。
現(xiàn)實中,很多應用領域都在使用編譯的原理、技術和方法。例如,從程序設計語言實現(xiàn)的角度得到的詞法分析、語法分析、語義分析的方法,還有中問代碼生成、目標代碼生成的思想,在自然語言處理領域有很好的應用實例;程序變換的思想在軟件自動生成方面得到體現(xiàn);網(wǎng)絡環(huán)境下的搜索引擎也用到編譯的原理和技術。學生受限于已掌握的知識,缺少實際應用的經(jīng)驗,誤以為編譯原理課程介紹的內(nèi)容就只是用于作為系統(tǒng)程序的編譯程序的構建,畏懼心理加上缺乏興趣,使得這門課程的學習難度無形中加大。
在課程的開始階段,我們讓學生選擇一個自己感興趣的應用領域。隨著課程的進行,引導學生分析應用領域中的問題,尋找其與編譯問題的相似性,發(fā)現(xiàn)二者的聯(lián)系,思考編譯中的原理、方法和技術如何與這些應用領域中問題求解方法相結合。當面對自己感興趣的應用領域時,學生的學習動力就不可估量了。我們再引導學生將這些應用領域問題的求解轉換成“類”的問題描述,思考這些“類問題”如何用課堂所學的編譯方法予以求解。
舉例來說,在最近一輪的編譯原理課程教學中,學生們就從多個非程序設計語言翻譯的角度探索了編譯技術的應用,涉及網(wǎng)絡傳輸協(xié)議解析、文檔編輯器、測試自動化、文檔排版、作業(yè)自動批改、漢語自然語言處理、惡意腳本查殺、邏輯門電路繪制、漢語英語翻譯、自動閱卷系統(tǒng)、火車票購票、中文識別、郵件地址識別、模式識別等諸多非編譯問題。
在探索了編譯理論和技術在不同領域的可能應用后,我們又指導學生將心得撰寫成研究型小論文。雖然大多數(shù)論文還略顯幼稚,但論文的撰寫過程確實是對研究型學習的再一次總結和升華。
當學生們看到編譯的知識在如此眾多的非編譯領域同樣有著大量的用途時,他們不再覺得編譯原理課程的內(nèi)容與自己未來的學習和工作無關,反而希望能更好地學習和理解編譯原理課程介紹的原理、方法和技術,以便為將來的發(fā)展打好基礎。
在興趣的驅使下,編譯原理課程的學習不再枯燥晦澀,即使面對形式化描述的抽象內(nèi)容,學生也不再畏懼;同時,編譯原理課程的教學目的也得以實現(xiàn)。
1.2 構建應用領域編譯器,提高實習參與度
傳統(tǒng)的編譯原理課程實習中,學生在掌握基本原理的基礎上,完成一個受限程序設計語言的詞法分析程序、語法分析程序和語義分析與中間代碼生成程序。雖然學生可以自行選擇語言完成實現(xiàn),但編譯程序的“系統(tǒng)程序”的地位,使學生整體學習興趣受到影響,而對課程實踐的興趣不足,又直接影響了對理論知識的理解和深入。
建構主義的學習觀認為:學習不是由教師把知識簡單地傳遞給學生,而是由學生自己建構知識的過程;學生不是簡單被動地接收信息,而是主動地建構知識的意義,這種建構是無法由他人來代替的。單純的課堂聽課,沒有真正完成知識的掌握和轉化。課堂聽懂了但課后不會做題或實習就是一個很好的證明。課堂聽課過程中,學生是運用自己已有的知識,來衡量教師當前講述內(nèi)容的合理性,教師當前所講述內(nèi)容并未轉化為學生已有知識體系中的一部分。所謂“課堂聽瞳了”,只是學生使用已有知識判斷出教師所講內(nèi)容“合理”而已。只有當教師所講內(nèi)容真正轉化成學生知識體系中的一部分時,做題或實習才不會困難。所以,習題和實習是理論課程學習的重要實踐環(huán)節(jié),在編譯原理這門課程中更是如此。
我們除了在課堂教學中引導學生探究編譯原理和技術在非編譯領域的應用,習作研究型小論文外,還在課程實習環(huán)節(jié)采用構建“應用領域編譯器”作為實習題目,以提高學生的實習興趣和參與度。
編譯原理課程的教學目的是培養(yǎng)學生在系統(tǒng)級別上重新認識程序和算法。我們采用循序漸進的引導,培養(yǎng)學生從“類”的層面逐步完成應用領域“實例”問題的認識、分析、設計和系統(tǒng)實現(xiàn)。
1)以能力確定選題。
并非所有的學生都適合選擇程序設計語言以外的應用領域問題作為實習題目。我們讓學生根據(jù)自己的能力選擇合適的選題。
普通層次的學生,要求其掌握最基本的方法和技術,而不被應用問題本身的復雜性牽扯太多精力。我們按照傳統(tǒng)編譯原理課程實習的做法,推薦一個受限的程序設計語言(包含語言的若干基本成分,如表達式、賦值語句、If語句、while語句等),學生可選實際程序設計語言(如C語言)的子集,也可由學生自行設計一個小語言,要求實現(xiàn)該受限語言編譯程序的詞法分析程序、語法分析程序、語義分析和中間代碼生成程序,并且每個程序的輸入、輸出均以文件形式存放,前一階段的輸出可以作為后一階段的輸入。雖然并不是一個完整的編譯器,但是編譯程序工作過程的主要環(huán)節(jié)都得到模擬,而且各部分的共同作用也有助于理解編譯程序的整體架構,同樣可以達到掌握主要編譯技術的目的。
對于學習能力較強的學生,我們建議其選擇一個自己感興趣的應用領域問題,采用編譯程序模型化計算的思想,實現(xiàn)一個應用領域編譯器。至于具體的實現(xiàn)過程,則隨著課程的進度,逐步引導學生從“問題類求解”的層面定義問題,并完成分析、設計和系統(tǒng)實現(xiàn)。
2)漸進式構建引導。
隨著課堂內(nèi)容的進行,我們采用漸進式構建的方法,引導學生逐步實現(xiàn)應用領域編譯器,其實施過程如圖1所示。
(1)定義領域對象。確定應用領域后,引導學生分析領域問題處理對象的構成特點,并據(jù)此構造領域問題處理對象的生成文法。
(2)確定領域的“詞”。引導學生分析和認識應用領域中的“詞”和“詞法分析”的工作內(nèi)容。在應用領域中,“詞”是構成問題對象的最小處理單位。明白了“詞”的含義,“詞法分析”就是識別出這些最基本的單位,其構建完全和程序設計語言詞法分析程序的設計與實現(xiàn)一樣。
(3)確定領域“語法成分”。引導學生分析和識別應用領域的“語法成分”和“語法分析”工作內(nèi)容。應用領域中的“語法成分”是被處理對象的不同層次的構成單位,“語法分析”就是分析領域被處理對象的構成,可以選用編譯原理課程中的一種語法分析方法予以實現(xiàn)。
(4)確定領域“語義”和“中間代碼”。這里的“語義”和“中間代碼”依賴于領域問題的具體應用,需要引導學生分析不同領域中問題求解的目的,從而得出應用領域的主要操作——“語義分析”的內(nèi)容。
(5)確定領域“目標代碼”。其內(nèi)容也依賴于領域中的具體應用。
當實習全部完成后,學生體驗到了從詞法分析、語法分析、語義分析和中問代碼生成、目標代碼生成的所有環(huán)節(jié),這實質上完成了一個應用領域編譯器,實踐過程覆蓋了課程教學目標要求學生掌握的全部內(nèi)容。
雖然每個應用領域系統(tǒng)不必完全按照上述方法實現(xiàn),但是按照上述方法完成系統(tǒng)后,我們引導學生分析該方法的好處:這樣實現(xiàn)的系統(tǒng)可以略作修改甚至不作修改就能處理該領域的同類型問題,可以大大提高軟件的可移植性,減少軟件開發(fā)的工作量。主要原因就是按照編譯的方法,是從“問題類”的角度看問題,從系統(tǒng)的角度分析、設計和實現(xiàn)問題的求解,因此最終實現(xiàn)的系統(tǒng)可以適用于滿足“類”特征的所有“實例”問題。
在建構主義學習理論指導下,我們以激發(fā)學生的學習興趣為切人點,使課程學習與具體應用領域相結合,讓學生體會到編譯原理和技術的實用性,大大提高其學習參與度;同時注重引導學生對問題求解基本思想、方法的探討,從確定領域問題,到詞法分析、語法分析、語義分析、目標代碼生成的每一步求解思路分析,到應用具體編譯技術實現(xiàn)求解算法,讓學生明白怎樣從“實例”問題的計算求解過渡到問題“類”計算,鍛煉了學生抽象問題描述和解決問題的能力:而整個系統(tǒng)的實現(xiàn)涉及不同層次的抽象和問題處理,達到了培養(yǎng)學生系統(tǒng)能力的目的。一些學生在課程學習結束后,體會到了學以致用的樂趣,還主動與教師談論研究型論文和應用領域編譯器的改進設想。
通過這樣的實踐,學生對文法、語言的實際意義有了更廣泛的認識,而不再局限在程序設計語言這個范圍內(nèi),真正體會到形式文法和語言只是具體問題的抽象反映,從而更深入地理解了計算機學科問題求解的抽象描述和處理這一實質。
2 結語
編譯程序的“系統(tǒng)程序”地位造成的陌生感、編譯原理課程自身內(nèi)容的復雜性,給學生學習該課程帶來了一定的障礙。我們在編譯原理課程的教學實踐中,針對該課程學習的最大問題——陌生與抽象,以非編譯的應用領域問題求解為切入點,以學生對應用領域問題的學習興趣提高學生的學習和實踐參與度,通過引導學生在“類”的層面嘗試領域“實例”問題的求解,使學生體驗了計算機求解的問題抽象描述與處理方法,達到了課程的教學目的。
參考文獻:
[1]蔣宗禮,編譯課程教材建設[J],計算機教育,2007(6):74-76
[2]蔣宗禮,“編譯原理”教學設計[J],計算機教育,2008(2):26-30
一、注重理論教學
編譯程序不同于一般的應用程序,是一個十分龐大和復雜的系統(tǒng)軟件,它所包含的算法和思想比較特殊,理論性較強,抽象度也較高。學習編譯程序的構造原理和實現(xiàn)技術,不僅可以掌握編譯程序本身的實現(xiàn)技術,同時也能夠提高對程序設計語言的理解,提高語言的設計能力,提高元級程序的設計能力,提高開發(fā)大型軟件的能力,能夠培養(yǎng)學生的抽象思維能力和形式化描述能力。吉林大學計算機學院軟件教研室在“編譯原理”課程的教學過程中,注重學生對原理的理解,使學生不僅要做到知其然,更要做到知其所以然。
(1)科學引導,啟發(fā)學生積極思維
從知識體系的內(nèi)部結構入手,抓住編譯過程各個功能階段的內(nèi)在聯(lián)系和規(guī)律,通過有目的地設計問題,有意義地提出問題,引導學生的積極思維。把編譯原理中的理論難點、抽象概念通過問題引導呈現(xiàn)出來,學生通過回答問題,從不同的角度尋求解決問題的原則、途徑和方法,從而引導學生獨立分析問題和解決問題,加深對編譯理論和技術的理解。
(2)從知識體系的內(nèi)部結構入手,培養(yǎng)學生的自學能力
教師通過精心備課,掌握知識的內(nèi)在聯(lián)系,對編譯過程的各個功能階段進行歸納總結。講授時,讓學生掌握編譯原理各個階段的基本概念,基本法則以及它們之間的內(nèi)在聯(lián)系和規(guī)律,抓住知識體系的主線,掌握規(guī)律性的知識,授之以法,培養(yǎng)學生的自學能力。
(3)實施多媒體輔助教學形式
“編譯原理”是一門理論性強的課程,為了使抽象問題形象化,便于學生對知識點的理解和運用,利用多媒體手段,把原理性的重點知識以動畫、圖形形式呈現(xiàn)給學生,把知識講解化靜為動,寓教于樂,培養(yǎng)和激發(fā)學生的學習興趣。
(4)設計課程輔助教學軟件
教研室設計和開發(fā)了編譯原理CAI課件-PCMCAI、SNL編譯實例等編譯原理教學輔助軟件,教師在上課時使用這些課件來演示部分關鍵算法和難點,提高了教學效果,學生在課下利用這些課件自動生成各個分析程序,進一步理解基本原理和實現(xiàn)算法。
二、開拓教學內(nèi)容、擴展學生視野
在“編譯原理”課程的講授過程中,教學隊伍一直堅持教學和科研相結合、理論和實踐相結合、課內(nèi)和課外相結合,融知識傳授、能力培養(yǎng)、素質教育于一體,將最新教改和科研成果引入教學。
教研室先后承擔了Algol60編譯器、Fortran編譯器、Algol60到Fortran的轉換器等與編譯原理相關的科研項目,目前教研室正在進行ATLAS編譯器項目的設計與開發(fā)工作。在教學過程中將這些科研項目中的新思想、新方法、新技術融入到課堂講授當中,不僅加深了學生對編譯基本原理的掌握,而且促進了學生對傳統(tǒng)內(nèi)容與最新技術成果的理解。例如,在講授語法分析時,傳統(tǒng)的Early算法受當時硬件條件限制,它僅僅是一個理論上的語法分析方法;隨著技術進步,結合ATLAS編譯器項目的設計與實現(xiàn),Early語法分析方法便成為一個實用、有效的語法分析方法。通過這些內(nèi)容的講述,將經(jīng)典編譯理論與現(xiàn)代編譯技術有機地結合起來,激發(fā)了學生對編譯新技術的學習興趣。
三、重視實踐能力培養(yǎng)
編譯程序以程序作為操作對象,是一個元級處理程序,它所包含的算法和思想理論性較強,抽象度也較高,并且一個編譯器是由多個完成不同功能、執(zhí)行在不同階段的子程序組成的,各個階段具有不同的特點,采用比較經(jīng)典的方法來完成各自不同的功能,即使學生理解了不同階段的各個子程序的功能和特定方法,但如何銜接各個子程序,如何組成一個完整的編譯器,對學生來講,仍可能是一件比較困難的事情?;诖?,我們開設了編譯原理實踐課程,培養(yǎng)學生的實踐能力。
實踐性教學的設計思想是使學生透徹地理解編譯程序的原理和思想,系統(tǒng)全面地掌握編譯技術,使學生通過課堂學習,理解編譯原理的同時,注重學生實踐能力的培養(yǎng),進一步鞏固對知識的理解,通過實際的鍛煉,掌握編譯技術,進而能夠獨立地進行編譯器的設計。
通過多年來的教學實踐以及近五年來關于編譯原理實踐課程的建設,我們?nèi)〉昧艘恍┏尚?。開設的編譯原理實踐課程,以實際上機實習為主,教師指導為輔,學生在實踐課程中,通過實際動手,把原理性的抽象理論知識具體化和形象化,消化了課堂上、書本中難于理解的概念和方法,全面系統(tǒng)地掌握了編譯器的構造過程。同時,也激發(fā)了學生的學習興趣,提高了學生進行更深入學習的主動性。通過一個學期的實習,大部分學生對編譯器的整個過程有了較清晰的理解,靈活地掌握了編譯程序的構造方法和技術,部分學生可以獨立地設計和實現(xiàn)自定義的模型語言,達到了預計的效果。
四、精品課網(wǎng)站建設
針對目前學生人數(shù)增多,教學資源不足,學生質量參差不齊,教學質量和效率得不到保證的情況,我們充分利用Internet網(wǎng)絡,建立和實施了網(wǎng)絡課程體系,利用Internet網(wǎng)在信息制造、貯存和遞送方面的優(yōu)勢,克服了資源不足的缺點,同時也為學生提供了完全個性化的學習環(huán)境,發(fā)揮網(wǎng)絡教學優(yōu)勢。具體網(wǎng)址為。
目前已經(jīng)完成了編譯網(wǎng)絡課程體系的基本功能模塊,構造和實現(xiàn)了一個網(wǎng)絡課程資源系統(tǒng),具體包括:
(1)“編譯原理”網(wǎng)絡課程內(nèi)容教學體系
將“編譯原理”的課程概況、課程內(nèi)容、習題解答、教學錄像、參考資料、實踐課題、編譯實例庫以及CAI課件等內(nèi)容上網(wǎng),為校內(nèi)外學生學習和實踐編譯原理與技術提供理論知識和范例。
(2)完成學生練習系統(tǒng)的構造
通過電子黑板,BBS為學生提供開放的學習時間和空間,促進教師與學生,學生與學生間的相互交流,激發(fā)學生學習的主動性,提高學生的實踐能力,更深入地理解和掌握課程內(nèi)容。
(3)設計實現(xiàn)輔助工具系統(tǒng)
提供電子筆記本,對學生學習情況進行記錄,教師通過對記錄的分析,反饋和改進課程網(wǎng)絡系統(tǒng),有利于今后的維護工作。
(4)構造網(wǎng)絡管理系統(tǒng)
通過網(wǎng)絡登陸驗證,維護網(wǎng)絡安全,以保證網(wǎng)絡課程體系運行良好。
五、教師隊伍建設
長期以來,教研室一直注重把精品課程建設與高水平教師隊伍建設相結合?!熬幾g原理”課程已形成一支教師職稱結構、年齡結構、學歷結構、學位結構合理,人員穩(wěn)定,教學水平高的教學隊伍。教學隊伍成員具有良好的師德,學術造詣高,教學能力強,教學經(jīng)驗豐富,教學特色鮮明。
編譯課程負責人劉磊教授1997年獲寶鋼優(yōu)秀教師獎,2005年被評為吉林大學十佳優(yōu)秀教師,并在學校的教學評估中,多次被評為優(yōu)秀,受到學校的表彰獎勵,先后主編出版了多部教材,在各級學術期刊和國際會議上發(fā)表學術論文60余篇。
六、教材建設
教研室一直注重編譯教材建設,先后在科學出版社、高等教育出版社和機械工業(yè)出版社出版了編譯原理方面的著作7部,例如:《Algol60編譯方法》上下冊(1983年,科學出版社)、《編譯方法》(1984年,高等教育出版社)、《編譯原理與實現(xiàn)》(1989年,高等教育出版社)、《編譯程序構造原理和實現(xiàn)技術》(2000年,高等教育出版社)、《編譯程序的設計與實現(xiàn)》(2004年,機械工業(yè)出版社)、《編譯原理及實現(xiàn)技術》(2005年,機械工業(yè)出版社)等。
目前在編著的由國家“九五”規(guī)劃出版的面向二十一世紀教材《編譯程序構造原理和實現(xiàn)技術》基礎上,教研室又新推出了《編譯程序設計與實現(xiàn)》教材,作為“編譯原理”實踐課程教材,也是“編譯原理”課程的配套教材。該教材以實踐培養(yǎng)為重點,針對一個教學語言模型,詳細地介紹了該模型語言編譯器的設計和具體的實現(xiàn)方法。同時,為學生提供國內(nèi)外先進的編譯教材,供學生選讀。
從當前的就業(yè)情況看,計算機專業(yè)的學生在軟硬件知識和應用能力上的優(yōu)勢逐漸弱化,在與具備特定行業(yè)、應用領域和專業(yè)背景的學生競爭就業(yè)時,面臨的壓力越來越大,而在已就業(yè)的學生中又少有人從事編譯系統(tǒng)的研究和開發(fā)工作。所以,“編譯原理”作為計算機科學與技術專業(yè)的“經(jīng)典”核心課程的存在價值受到質疑。其實,本科教育解決的是培養(yǎng)學生基本專業(yè)能力、可持續(xù)發(fā)展能力這些本質性的問題,因此,我們要從如何結合專業(yè)課程完成學生專業(yè)能力的培養(yǎng)與素質的提高這樣的角度來看問題。
在大學里,學習一門課程,不能簡單、膚淺地看成是對這門課程所含內(nèi)容的研究、設計和開發(fā),而是關注是否在有限的時間內(nèi)最有利于學生專業(yè)能力的培養(yǎng)。計算機是一門技術性、工程性和應用性很強的學科,有其自身的基礎理論支撐體系?!熬幾g原理”課程本身以計算機專業(yè)基礎知識為載體,含有問題求解的典型思想、技術和方法,整個課程的內(nèi)容對培養(yǎng)學生的計算思維,程序設計與實現(xiàn),算法設計與分析,計算機系統(tǒng)的認識、開發(fā)和利用等學科基本能力都非常重要。并且,編譯技術在計算機體系結構設計、提高軟件開發(fā)效率與質量的工具開發(fā)等方面有著重要的應用。因此,“編譯原理”課程不但有存在的價值,而且對于計算機專業(yè)學生的能力培養(yǎng)和素質提高有著極其重要的作用和意義。
作為計算機專業(yè)的教育工作者,應該結合當前計算機的發(fā)展狀況,重新認識“編譯原理”課程的重要性,并根據(jù)當前的教育和就業(yè)形勢,積極研究、改進“編譯原理”課程的教學和實驗方法,提高教學效果和質量。
一、明確“編譯原理”課程對學生能力培養(yǎng)和素質提高的重要性
從課程體系總體設計看,“編譯原理”課程的主要教學目標之一是使學生在系統(tǒng)的級別上重新認識算法和程序,提升學生的系統(tǒng)能力。它是計算機專業(yè)課程中最難學的課程,既涉及形式語言和自動機等抽象理論,又是數(shù)據(jù)結構、程序設計語言、算法和軟件設計等知識的綜合體現(xiàn),有效培養(yǎng)了計算機專業(yè)學生應具有的計算思維,算法設計與分析,程序設計與實現(xiàn)(硬件和軟件實現(xiàn)),系統(tǒng)的認知、分析、開發(fā)與應用等四大基本能力。
計算學科問題求解的基本思路是“問題-形式化描述-計算機化”,以抽象、理論、設計為其學科形態(tài)。“編譯原理”課程中要求學生掌握的包括程序變換基本概念、問題描述和處理方法(自頂向下、自底向上、逐步求精、遞歸求解,目標驅動,問題分析、問題的抽象與形式化描述,算法設計與實現(xiàn),系統(tǒng)構建、模塊化)等知識、思想和方法,有利于學生養(yǎng)成“問題、形式化描述、計算機化”問題求解的習慣,實現(xiàn)從“實例計算”到“類計算”和“模型計算”的跨越。這其中既有明確的、便于抽象的問題,又有較成熟的理論,而且在限定規(guī)模下又容易實現(xiàn)(設計),涉及的是一個比較適當?shù)某橄髮用嫔系臄?shù)據(jù)變換,所以該課程是計算機專業(yè)本科生的重要專業(yè)技術基礎課程。
二、“編譯原理”課程“教”與“學”的新思考
目前,在“編譯原理”課程教學中,“教”與“學”兩方面的問題都很突出:一些抽象的重要理論使學生學習的畏難情緒嚴重,加上有些人認為畢業(yè)后很少有機會參與設計與實現(xiàn)編譯系統(tǒng),使得該課程的“教”與“學”的熱情偏低,而適用于新型體系結構及新一代計算機系統(tǒng)的編譯器的需求和大量應用,也給“編譯原理”課程內(nèi)容的充實與更新提出更高要求。
作為教師,要讓學生深刻認識到:“編譯原理”是許多課程知識的集成與實踐,能進一步加深對許多專業(yè)基礎課程知識的理解;編譯程序所使用的原理、方法和技術有利于領悟計算機理論的精髓,在非編譯系統(tǒng)的實際應用中也發(fā)揮著很大作用;學習編譯對今后從事應用軟件,語言開發(fā)平臺、編譯系統(tǒng)甚至操作系統(tǒng)的開發(fā)等工作非常有益。
實踐證明,如果首先讓學生認識到課程內(nèi)容的重要性,再輔之以合適的教學方法和教學手段,是不難取得好的教學效果的。根據(jù)筆者的“編譯原理”課程教學經(jīng)驗,認為對于該課程的設置和教學可以從以下幾個角度來開展。
1.科學設置課程
對于“編譯原理”課程的設置問題,可以根據(jù)本科院校自身辦學宗旨,從普通高校本科、重點高校本科和研究生階段教育三個層次來考慮教學目標和培養(yǎng)要求等因素,在總學時的限制下,實現(xiàn)總目標的最佳課程。因此,可以考慮以下2種模式。
(1)課程分解模式。分為:“編譯技術”(必修),介紹為滿足基本應用而需要學生掌握的基礎知識、方法和技術,以達到語言轉換和實現(xiàn)理論基礎介紹的目的;“編譯理論”(選修),主要偏重于介紹形式化等原理性的深層次內(nèi)容,方便有進一步深造需要的學生學習。
(2)內(nèi)容分解模式。不單獨設置一門“編譯原理”課程,根據(jù)深淺和涉及到的具體問題,將與其他課程相關的內(nèi)容分解到不同的課程中去,使學生在相關課程的學習中逐步掌握相關知識。這和前者比有一定難度:一是課程難分解,課程內(nèi)容分解后與其他課程內(nèi)容的重新整合在短時期內(nèi)難做到科學分解與組織;二是增加了其他課程授課教師的工作量與難度。
2.優(yōu)化教學內(nèi)容
教師還要堅持教學與科研相結合,將最新的教改和科研成果引入教學,將經(jīng)典編譯理論與現(xiàn)代編譯技術有機地結合起來。例如,可以將嵌入式編譯器、分布并行編譯器、多核編譯器以及適應新體系結構及新一代計算機系統(tǒng)編譯器的研究及其研究結果迅速充實到“編譯原理”課程中。此外,還可以向學生介紹編譯技術在人工智能、并行計算、自然語言處理等領域里的具體應用,為后續(xù)課程做好鋪墊。
3.用實例演示來形象化抽象理論
學生學習“編譯原理”課程的最大困難是其較為抽象,要獲得好的教學效果,就要將抽象理論形象化。改革教學方法,提倡互動式、研討式和案例式等教學方法。一方面,可以通過實例類比,例如,用自然語言的翻譯過程來類比編譯程序執(zhí)行高級程序設計語言的翻譯過程。另一方面,教師可以借助多媒體手段,把抽象的原理用動畫、圖像等形象化的方式展示,便于學生的理解。同時,還可以向學生推薦網(wǎng)上優(yōu)秀的“編譯原理”課程教學網(wǎng)站、電子書等資源,拓寬學生視野,培養(yǎng)和激發(fā)學生學習興趣。
4.把握聯(lián)系,啟發(fā)學生積極思維
在教學過程中,充分考慮“編譯原理”課程與數(shù)據(jù)結構、計算機組成原理、操作系統(tǒng)、算法分析與設計等先修課程之間的內(nèi)在聯(lián)系,不斷深入和強化,以加強課程的系統(tǒng)性,培養(yǎng)學生的全局觀。同時還要把握編譯過程各個功能階段的內(nèi)在聯(lián)系與規(guī)律,有目的地設計問題,有意義地提出問題,通過問題把編譯原理中的理論難點、抽象概念引導出來。
三、重視實驗,建立行之有效的實驗教學方法
設計和組織良好的實踐教學環(huán)節(jié)可以使“編譯原理”課程獲得良好的教學效果?,F(xiàn)在很多高校都增加了實驗學時,并獨立計算實驗成績。我們在借鑒兄弟院校和國外經(jīng)驗的基礎上,摸索出驗證性實驗加綜合設計性實驗的2階段實驗教學模式,各高??筛鶕?jù)自己的教學目標和培養(yǎng)要求來選擇實施。
1.驗證性實驗
這類實驗主要是為配合配合課堂授課內(nèi)容,由教師按編譯原理授課順序,提供同步的若干驗證性實驗題目,讓學生逐個完成相關子模塊,逐步擴大完善整個編譯程序。這樣循序漸進地完成實驗,不僅增加了學生的成就感和自信心,而且使他們養(yǎng)成扎實的作風,使學練互動,激發(fā)學生學習興趣和積極性。而作為教師,則要做好組織、監(jiān)督和解惑工作,幫助學生掌握編譯系統(tǒng)主要技術、算法的理解和設計,引導學生從整體上把握編譯系統(tǒng)的結構和各子系統(tǒng)之間的協(xié)調工作。
2.綜合設計性實驗
一定規(guī)模的綜合設計性實驗訓練是保證實踐教學效果必不可少的環(huán)節(jié)。我們可以讓學生以小組(由4~5名成員)為單位結合軟件工程課程實驗的環(huán)節(jié)完成一個規(guī)模適度的編譯程序開發(fā)。在實際操作時,可根據(jù)驗證性實驗階段的情況,把學生分成不同層次的小組,由他們選擇適合自己水平的不同的實驗題目。每組遵循完整的編譯器開發(fā)方式,融入軟件工程的思想,由大家推舉的組長分工、協(xié)調完成任務。這樣,不僅能讓每個學生體驗從分析設計、編碼測試到交付維護的軟件開發(fā)全過程,還提高了他們的工程和團隊意識以及開發(fā)大型軟件的協(xié)調結構設計能力。實驗結束時,教師要求學生以演示系統(tǒng)、答辯的方式公布實驗成果,以便公正評分。
【中圖分類號】G632.07 【文獻標識碼】B 【文章編號】2095-3089(2013)20-00-02
為引導高校主動適應國家戰(zhàn)略和地方經(jīng)濟社會發(fā)展需求,優(yōu)化專業(yè)結構,加強專業(yè)內(nèi)涵建設,創(chuàng)新人才培養(yǎng)模式,大力提升人才培養(yǎng)水平,江蘇省教育廳和財政廳開展了“十二五”高等學校重點專業(yè)建設的工作(蘇教高〔2012〕16號)。我校的計算機類(包含物聯(lián)網(wǎng)工程、計算機科學與技術和信息安全三個專業(yè))獲得了該項目的資助(蘇教高〔2012〕23號),并與2012年8月啟動了該項目。為了響應本次計算機類綜合專業(yè)的改革,我們有必要探索面向計算機類專業(yè)的“編譯原理”課程改革方案,本次改革方案的重點不涉及編譯原理課程的新教學模式、新方法及教材建設,而是強調課程設計在編譯原理課程教學中的核心地位和重要作用。通過重視學生的課程設計,實現(xiàn)學生掌握編譯技術這一核心的目標。
一、研究現(xiàn)狀
近年來,國內(nèi)外各大學從編譯原理的教學內(nèi)容、教學方式、教學手段以及實踐教學環(huán)節(jié)制定等多個方面對這門理論性和實踐性較強的課程進行了深入地研究和探討,提出了一些效果較好的編譯原理教學新模式和新方法。
國內(nèi)編譯原理課程的權威專家何炎祥教授提出了基于人本主義的教學新模式[1],它指的是以學生為主、師生互動的全新教學模式。即明確指出教師的任務不是教學生學習知識,也不是教學生如何學習,而是為學生提供各種學習的資源,提供一種促進學習的氣氛,讓學生自己決定如何學習。浙江大學的王強[2]提出形象化的教學方法,即通過多媒體的形式向學生演示復雜的算法過程。重慶理工大學的劉潔[3]把軟件工程專業(yè)的特點融入到編譯原理課程中,采用科學系統(tǒng)的教學和實驗模式實現(xiàn)了激發(fā)學生學習興趣、培養(yǎng)學生分析和解決問題能力的目標。首都師范大學的衷璐潔[4]以實例化的真實的編譯器GCC來開展教學。該教學模式是一種與“概念-理論-應用”的傳統(tǒng)教學模式完全相反的教學模式,它的教學思路是“案例-理論-概念”。理工大學的賀汛[5]針對編譯原理課程的教學特點,提出從調動內(nèi)驅力、提倡發(fā)散思維、提倡探究學習、培養(yǎng)抽象思維四個方面入手,加強學生創(chuàng)造性思維能力的培養(yǎng),并給出了教學實施的具體步驟和方法。
通過跟蹤最新的國內(nèi)外有關編譯技術教學改革的成果發(fā)現(xiàn)當前編譯課程的改革在理論教學上已經(jīng)實現(xiàn)了“學生輕松學,教師輕松教”的教學目標。然而,學生卻普遍反映當前的教學模式使他們掌握了編譯原理應試的技巧,卻沒有使他們真正理解編譯技術各知識點的來龍去脈,他們?nèi)匀徊粫帉懸粋€編譯器系統(tǒng)。編譯技術對他們而言,仍然是空中樓閣,遙不可及。這正是當前編譯原理課程改革遇到的瓶頸。
二、課程設計在編譯原理教學中的地位和作用
如圖1所示,為課程設計在編譯原理教學中的地位和作用。它是按照編譯原理教學的五個階段,實踐教學的三個層次進行規(guī)劃的,最終,通過課程設計將編譯理論與程序設計相結合讓學生去實現(xiàn)一個小型的編譯系統(tǒng)。該體系從多個維度系統(tǒng)地進行學生能力的培養(yǎng)和知識與技能的傳授。使得學生不會再有“編譯是門難學、易忘,學后無用的課程”的感覺。
圖1也解釋了為什么當前的編譯原理課程改革遇到了瓶頸,為什么只有重視編譯原理課程設計才是解決這一瓶頸的唯一途徑。下面我們對此進行論述。當前的課程改革只重視編譯原理教學的前三個階段:基本認知、基本理論和應用認知;實踐教學中的第一個層次:上機實驗。整體上是重理論而輕實踐。這就是編譯原理課程對學生而言,有一種空中樓閣、遙不可及的感覺的本質原因。而如果能在當前的改革維度上進行擴展,將編譯原理教學擴展為圖1中的五個階段,把實踐教學擴展為圖1中的三個層次。通過將編譯理論與程序設計方法相結合完成編譯器這一綜合課程設計,從而實現(xiàn)編譯課程學習由知識點到知識平面,由知識平面到三維立體專業(yè)技能。也就是說,通過本次教學改革(更加重視課程設計和動手實踐能力),教給學生的不再是能夠解題的知識點、解題方法和解題技巧,而是他們將來能夠到社會上賴以生存的專業(yè)技能。
三、課程設計在“編譯原理”課程改革中的實施方案及效果
1.課程設計在編譯教學中的實施方案
首先,編寫編譯課程綜合實驗指導書。編寫原則是實驗目標要適中,不要定的太高。任務和要求要明確,而實現(xiàn)方法不固定,為的是給學生更多的自由發(fā)揮空間。實驗指導書的內(nèi)容如下:
(1)實驗目的
《編譯原理》是理論與實踐并重的課程,而其實驗課要綜合運用一、二年級所學的多門課程的內(nèi)容,用來完成一個小型編譯系統(tǒng)。從而鞏固和加強對詞法分析、語法分析、語義分析、代碼生成和報錯處理等理論的認識和理解;培養(yǎng)學生對完整系統(tǒng)的獨立分析和設計的能力,進一步培養(yǎng)學生的獨立編程能力。
(2)實驗任務和要求
①詞法分析器的作用是劃詞功能,產(chǎn)生的單詞序列;
②語法分析器的作用是識別測試用例的語法是否正確,使用的算法可以是:預測分析法、遞歸下降分析法、算符優(yōu)先分析法、LR分析法等;
③語義分析與中間代碼生成器的作用是分析測試用例的語義并生成中間代碼(四元式序列)。
然后,將學生分為五到六人一組,每組設置一個項目組長(ProjectManager,PM)。由PM負責為期一周半的綜合課程設計,主要包括項目分工、項目實施、進度規(guī)劃和組員間的協(xié)調等工作。
最后,每個小組提交可供演示的編譯器系統(tǒng)、課程設計論文及答辯PPT。每個小組由PM用10分鐘時間陳述課程設計期間的工作,之后,由其他同學進行提問,小組成員進行回答。
2.課程設計在編譯教學中的實施效果
我們對2009級計算機科學與技術和軟件工程兩個專業(yè)的本科學生進行了課程設計方案的實施。圖2為一名同學所完成的編譯課程設計中語義分析的效果圖。這里的語義分析采用了語法制導生成四元式,語法分析用的是自底向上的SLR文法。
在課程結束后,我們還對這兩個專業(yè)的124名學生進行了匿名式的問卷調查,結果表明在編譯教學中重視課程設計明顯要好于重理論輕實踐的的編譯教學改革模式。表1從熟練掌握編譯課程中的各知識點、理解編譯課程中各知識點的來龍去脈、具備理論聯(lián)系實際的專業(yè)技能三方面進行了教學效果對比分析。
通過對表1中數(shù)據(jù)的對比分析可知,重視課程設計的教學模式在各方面都明顯優(yōu)于重理論而輕實踐的教學模式,特別是在培養(yǎng)學生的理論聯(lián)系實際的專業(yè)技能方面,98%以上的學生表示滿意。
四、結語
文章針對當前編譯原理課程教學改革中“重理論輕實踐”的現(xiàn)實問題,提出要高度重視編譯原理課程設計。文章重點論述了課程設計在編譯原理教學中的地位和作用;闡述了當前編譯原理課程改革遇到的瓶頸,以及為什么只有重視編譯原理課程設計才是解決這一瓶頸的唯一途徑。之后,給出了編譯原理課程設計的實施方案和考核方式。通過問卷調查發(fā)現(xiàn),學生們普遍反映重視課程設計的編譯原理教學更有利于他們掌握基本理論和基本技能,提高理論聯(lián)系實際的專業(yè)技能,特別是他們不再感到編譯原理是空洞的理論課、缺乏實用價值且學之無用。教師們也普遍反映重視課程設計的新教學模式使得教學質量和教學效果有了明顯的提升。匿名調查結果達到了預期目標。
然而,匿名式的問卷調查也發(fā)現(xiàn)我們提出的編譯原理課程改革存在學生無法理解知識點產(chǎn)生的來龍去脈這一不足之處。下面我們將在理論課中要加入一些通俗易懂、便于學生理解的案例作為引子,之后將教學內(nèi)容重新梳理,使得學生了解編譯原理知識點產(chǎn)生的出處,這將是下一步編譯原理課程教學改革的重點。
參考文獻
[1]何炎祥,伍春香.現(xiàn)代教學理論指導下的”編譯原理”教學綜合改革[J].計算機教育,2010(1):46-49.
[2]王強,馮雁.編譯原理算法的形象教學[J].計算機教育,2010(3):30-32.
作為信息產(chǎn)業(yè)的核心和國民經(jīng)濟信息化的基礎,軟件產(chǎn)業(yè)日益受到國家的高度重視。權威數(shù)據(jù)顯示,我國軟件產(chǎn)業(yè)每年人才需求量近一百萬,然而令人尷尬的是,許多軟件企業(yè)卻招聘不到真正合適的軟件人才。信息社會不斷增長的軟件人才需求與優(yōu)質軟件專業(yè)教育供給不足的矛盾已成為計算機高等教育發(fā)展面臨的一個重要問題。
然而,軟件工程是一個迅速發(fā)展的交叉性學科,相關的新概念、新技術、新方法不斷涌現(xiàn),這就要求教育機構要不斷調整策略,以應對專業(yè)的快速變化。尤為突出的是,無論是全國首批35所示范軟件學院還是非示范軟件學院,大部分都根植于計算機學院,因此很多軟件工程專業(yè)學科課程體系與計算機科學與技術專業(yè)基本相似,而計算機科學與技術專業(yè)的教學內(nèi)容是遠遠不能適應軟件工程學科的發(fā)展要求的。
從根本上解決上述問題的關鍵是,結合中國軟件產(chǎn)業(yè)和軟件學院已有的硬、軟件基礎設施及辦學的具體情況,研究和定制適合本學院特色的軟件工程學科的課程設置、教學內(nèi)容、教學方法,形成一個良好的軟件工程學科課程體系,使軟件工程教學更具先進性、目的性和系統(tǒng)性,其中對計算機科學核心課程的工程化改造勢在必行。
本文將研究計算機學科的“編譯原理”課程在軟件工程專業(yè)如何進行工程化改造,怎樣創(chuàng)建適合軟件工程專業(yè)知識體系要求的“編譯原理”實踐教學,從而在科學的軟件工程學科課程體系的保證下,形成一個融基礎理論、實驗教學、工程實踐為一體的整體化培養(yǎng)機制,以適應軟件工程學科教學要求,使軟件工程學科教學質量得到不斷發(fā)展,使軟件工程專業(yè)教育得到健康穩(wěn)步發(fā)展,培養(yǎng)社會需要的軟件人才。
1 “編譯原理”的工程化實踐教學體系
1.1教育教學理念
工程化實踐教學就是樹立工程化能力培養(yǎng)與基礎理論教學、專業(yè)能力培養(yǎng)并重的教學理念,把工程化教學作為人才培養(yǎng)的核心任務之一,通過全面改革軟件工程專業(yè)的人才培養(yǎng)模式、調整課程體系、充實教學內(nèi)容、改進教學方法,在教學過程中全面體現(xiàn)能力和職業(yè)素質培養(yǎng)的思路,并將軟件工程知識內(nèi)容由淺入深、階梯狀、循序漸進地貫穿在工程化實踐教學的各個開發(fā)項目中。
基于上述軟件工程專業(yè)的知識體系、本科課程設置的指導原則以及工程化實踐教學教育教學理念,下面將給出“編譯原理”課程的工程化實踐教學體系。
1.2 “編譯原理”的工程化實踐教學體系
如圖1所示,“編譯原理”課程的工程化實踐教學體系由六個部分組成:編譯原理課程工程化實踐教學環(huán)境、編譯原理理論教學、軟件工程能力培養(yǎng)、階梯狀迭代工程實踐項目、配套教材和評價體系。構建理念為以計算機科學為基礎,以軟件工程為核心,以目標應用為導向。
1.2.1 “編譯原理”課程工程化實踐教學環(huán)境
“編譯原理”課程工程化實踐教學環(huán)境由實驗室、項目團隊、教師講座以及團隊匯報組成。
(1) 實驗室。以工程化培養(yǎng)理念指導教學實驗室建設,為“編譯原理”課程工程化實踐教學提供強有力的基礎設施支持。提供全天開放機房,機房實行開放型管理。項目開發(fā)時間規(guī)定為開時間和閉時間,閉時間為固定時間,要求授課教師到機房現(xiàn)場指導,開時間內(nèi),學生可以自由選擇時間,以小組為單位進行自行討論、設計,要求實驗室人員在現(xiàn)場,以便解決設備問題。機房的使用和維護要有嚴格的管理制度,保證項目的順利完成。
(2) 教師講座。指導教師在整個的項目開發(fā)中縱覽全局,項目的開始、結束及中間的每個模塊都要進行全面的講解、引導和組織。教師要系統(tǒng)講解軟件工程知識點和軟件技術,統(tǒng)一講解項目開發(fā)過程中學生普遍存在的問題,不斷地發(fā)現(xiàn)問題,解決問題。
(3) 項目團隊。將4~5個學生分為一個項目小組,一名組長作為負責人;每名學生分配一臺微型計算機,在開發(fā)小組中以分工協(xié)作的方式完成指定的軟件開發(fā)任務,完成項目設計報告,并提交完整的軟件開發(fā)文檔和源代碼。學生在團隊環(huán)境下使用最新的軟件開發(fā)工具,獲得較真實的軟件開發(fā)經(jīng)驗,提高學生在項目規(guī)劃、隊伍組織、工作分配、成員交流等多方面的能力,培養(yǎng)學生團隊合作及工程項目研發(fā)能力。
(4) 團隊匯報。理論教學中教師唱主角,而工程化實踐教學應讓學生唱主角,讓開發(fā)小組自己擬定演講方案、內(nèi)容,由教師審核修改后進行匯報演講。這樣可以有效地提高學生總結概括、研究立項、口頭表達、演講和交流溝通的能力,培養(yǎng)學生獨立思考、分析問題的能力和創(chuàng)新能力。
1.2.2 “編譯原理”理論教學
由知識的先期注入和工程化理論教學組成。
(1) 知識的先期注入?!熬幾g原理”課程的理論性較強,整個課程內(nèi)容由幾個功能模塊組成,學生對課程的完全理解應在最后一個模塊,即課程結束時。鑒于教學內(nèi)容的特殊性,應在一門程序設計語言之后安排“CO釋程序的面向對象設計與實現(xiàn)”項目,作為前導實踐環(huán)節(jié),配套教材為《C++實戰(zhàn):解釋程序的面向對象程序與設計》。這可以使學生在學習理論之前對程序設計語言的解釋執(zhí)行有較深的理解,由傳統(tǒng)的“填鴨式”被動學習轉變?yōu)閷W生自主式學習。學生對“編譯原理”課程的學習由問“這是什么”變成“這是我需要的什么”,從根本上解決了“編譯原理”課程的教學困難。實踐表明,這種方法在鍛煉學生實踐能力的同時先期注入了理論教學需要的解釋程序的知識和概念, 有很好的教學效果。
(2) 工程化理論教學。編譯程序是龐大而復雜的,這使得如何介紹編譯原理本身就是一個難題。中外編譯原理教材很多,如果從工程化的角度去詮釋編譯程序的實現(xiàn)過程及其原理,即對一個完整的源程序到目標程序的轉換過程進行詳細講解,不失為一個新的途徑。我們的配套教材《編譯程序的實現(xiàn)原理》的編寫形式如下:先給出編譯器的輸入——一個C語言小程序;再給出編譯器的輸出——目標機上的目標語言,完成這樣的轉換需要進行的工作包括詞法分析、語法分析等幾個功能模塊;再針對每個功能模塊給出本模塊的輸入和輸出,如詞法分析為一個C語言小程序,模塊的輸出形式為TOKEN鏈表,完成這樣的轉換需要進行的工作由理論和實現(xiàn)兩部分組成。這種講述方法實現(xiàn)了五化:
工程化:以對一個完整的源程序到目標程序的轉換作為教學載體介紹編譯程序的實現(xiàn)及其原理,以反映編譯的工程性。
鏈接化:將一個完整的源程序到目標程序的轉換所需的知識處理成總目標與子模塊、子模塊內(nèi)所需知識點之間的鏈接,以反映編譯的整體性。
需求化:將編譯原理內(nèi)容的平鋪直敘轉換為實現(xiàn)一個完整的源程序到目標程序的轉換的所需知識,解決了編譯內(nèi)容的龐雜、不分主次、敘述冗長的問題。
模塊化:將一個完整的源程序到目標程序的轉換作為總目標,將不同的子轉換作為各個子模塊的目標,以反映編譯的模塊性。
形式化:將形式語言的內(nèi)容介紹放置在為完成目標所需知識的位置,突出形式語言的地位、內(nèi)容及其應用。
1.2.3軟件工程能力培養(yǎng)
在工程化實踐教學體系中,軟件工程能力的培養(yǎng)是至關重要的。
軟件工程能力包括軟件需求、軟件設計、軟件構造、軟件工程基礎結構、軟件配置管理、軟件維護等知識單元。有些知識單元在早期學習,以促進學習條件的成熟;而有些知識單元的學習需要一定的成熟條件,應該放在后期講授,如階梯狀迭代工程實踐項目是整個教學過程中理論聯(lián)系實際,培養(yǎng)學生動手能力、觀察能力、分析和解決問題能力、團隊合作以及創(chuàng)新精神的重要環(huán)節(jié)。把軟件工程知識單元分期、分階段引入階梯狀不同開發(fā)項目的全過程,形成了特色鮮明的工程化實踐教育體系,使學生的軟件工程能力在實際項目開發(fā)中得到鍛煉和提升?!熬幾g原理”課程工程化實踐項目內(nèi)容安排如表1所示。
“實踐性、個性化、逐步工程化”是工程化人才培養(yǎng)的重要環(huán)節(jié),也是學生成為合格軟件工程化人才的實踐過程。以上教學組織方法既保證了教學的系統(tǒng)性、知識性,又保證了教學案例的先進性和實踐性。
1.2.4階梯狀迭代工程實踐項目
編譯器代碼的長度可從10 000行到1 000 000行不等,編寫甚至讀懂這樣一個程序都非易事,更何況是開發(fā),因此編譯器的實現(xiàn)比以前任何課程中學生承擔的設計要大得多、難得多??v觀國內(nèi)外大學研究現(xiàn)狀,一般都是先設計一個語言,面向過程式或面向對象式,然后對設計的語言進行面向過程或面向對象程序設計方法的開發(fā),早期采用面向過程語言編譯器的面向過程開發(fā),如吉林大學計算機科學與技術學院的編譯原理實踐課程“編譯程序的設計與實現(xiàn)”,近期采用面向過程語言編譯器的面向對象開發(fā),或是面向對象語言編譯器的面向對象開發(fā),如 “Modern Compiler Implementation in Java”。無論哪一種,學生都是一次性為具有上百條產(chǎn)生式語法的語言開發(fā)編譯器,難度極大,這使實踐課程的收效甚小。采用階梯狀迭代教學法創(chuàng)建的編譯原理課程工程化實踐項目從根本上解決了這個問題,配套教材為《編譯程序的面向對象程序與實現(xiàn)》。
如圖1和圖2所示,編譯原理課程工程化實踐項目內(nèi)容包括“C0解譯程序的面向對象設計與實現(xiàn)”,“C1編譯程序的面向對象設計與實現(xiàn)”,“C2編譯程序的面向對象設計與實現(xiàn)”,“C3編譯程序的面向對象設計與實現(xiàn)”。整體項目的源語言定義為C語言的子集,采用階梯狀迭代教學法后,將源語言定義為C0、C1、C2、C3,Cn是Cn-1的擴展。
編譯原理課程工程化實踐項目的優(yōu)點有:
(1) 迭展: 每一個項目需求是前一個項目的擴展,因此,每一次的軟件開發(fā)可以看作是前一次開發(fā)的迭代,使學生面對大型軟件開發(fā)項目中最難處理的用戶需求不斷變更的問題,最大程度地使用重用技術。所有項目的開發(fā)承上啟下、循序漸進、階梯狀迭展,為研究和學習軟件生產(chǎn)線新技術埋下伏筆。
(2) 起點低:降低了開發(fā)難度。學生根據(jù)自己的實際水平選擇源語言級別,有不同收效。從根本上解決了軟件開發(fā)水平低的學生對編譯程序開發(fā)望而生畏甚至放棄的問題。
(3) 階梯上升:項目內(nèi)容的選擇不是零散的、隨機的、重疊的,而是相互關聯(lián)的??v向為編譯理論,是主要內(nèi)容;橫向為軟件工程,是輔助內(nèi)容。主要內(nèi)容將難點分散,處理成階梯狀;輔助內(nèi)容也將難點分散,同樣處理成階梯狀。
(4) 知識滲透:將軟件工程核心內(nèi)容及工程化軟件開發(fā)思想由淺入深逐步滲透到各個項目中,每個項目具有不同級別的培養(yǎng)目標,學生從不同項目循序漸進地掌握工程化軟件開發(fā)理念,降低了工程化軟件開發(fā)的難度。
階梯狀迭代工程實踐項目發(fā)揮了學生的主體意識,給學生足夠的空間,激發(fā)了學生的活力與創(chuàng)新思維,并培養(yǎng)了學生的“三個能力”(自我管理能力、組織策劃能力、社會實踐能力)和“五種意識”(責任意識、服務意識、創(chuàng)新意識、團隊意識、競爭意識)。
1.2.5配套教材
編譯原理課程工程化實踐教學配套教材共有3部,前導教材《C++實戰(zhàn):解釋程序的面向對象程序與設計》與“編譯原理”理論教學知識的先期注入配套;《編譯程序的實現(xiàn)原理》與“編譯原理”工程化理論教學配套;《編譯程序的面向對象程序與實現(xiàn)》與階梯狀迭代工程實踐項目配套,3部教材前后關聯(lián)且各呈完整體系。本套教材為清華大學出版社“編譯原理及其實踐課程的工程化教學課群研究”立項項目,已出版1部,另2部明年中旬出版。
1.2.6評價體系
編譯原理課程的工程化實踐教學評價體系包括對學生工程素質和對教學體系的評價。
學生工程素質的評價采用過程化考核管理標準,即把工程化能力和職業(yè)素質引入學生工程素質的評價體系,加大工程化實踐環(huán)節(jié)的比重,形成專業(yè)理論知識和實踐能力并重的考核體制,將期末一張試卷定成績的考評機制改為由工程化實踐項目、隨堂測驗、論文、面試、考試、團隊等多種形式相結合的評價機制,防止實驗抄襲現(xiàn)象。編譯原理課程考核采取理論知識和工程化實踐項目完成情況的綜合考核方式,工程化實踐項目根據(jù)項目設計報告、軟件開發(fā)文檔、源代碼和運行系統(tǒng)的質量進行考核,學生成績以登記評定方式給出。
教學體系的評價采用回饋化考核管理標準,即把企業(yè)回饋和畢業(yè)生回饋引入教學體系的評價。對企業(yè)和畢業(yè)生進行跟蹤調查,通過收集企業(yè)和學生的反饋指導教學和實踐項目的設置和修訂,形成良性循環(huán),為進一步提高教學質量打下堅實基礎。
2結論
軟件工程是集計算機科學與技術、數(shù)學、經(jīng)管等多學科的交叉性學科。作為一名軟件工程教育者,我們必須建立一套具有自身特色的工程化人才培養(yǎng)體系,培育具有國際競爭力的一流軟件產(chǎn)業(yè)高級/高端人才,結合軟件工程人才的學科交叉性、偏重實用、職業(yè)定位等特點,系統(tǒng)深入地研究軟件產(chǎn)業(yè)對技術型、管理型的人才需求,注重學生綜合能力和專業(yè)素質的培養(yǎng),才能在計算機系統(tǒng)、軟件工具、軟件工程和管理上循序漸進地提高學生的能力。
參考文獻:
[1] Aho, Alfred V., Ravi Sethi, Jeffrey Ullman. Compilers: Principles, Techniques and Tools[M]. Reading, MA: Addison-Wesley, 1986.
1 引言
LPC2124是基于一個支持實時仿真和跟蹤的16/32位ARM7TDMI-S CPU的微處理器,并帶有256KB嵌入的高速Flash存儲器和16KB的RAM。LPC2124具有教小的64腳封裝,極低的功耗,多個32位定時器,4路10位ADC,PWM輸出,46個GPIO以及多達9個外部中斷,并且內(nèi)置了多種串行通信接口物理論文,支持JTAG、ISP、IAP等多種編程方式,使得LPC2124能夠適用于工業(yè)控制、訪問控制、醫(yī)療系統(tǒng)以及其他各種類型的應用[1,2]。
Proteus軟件是由英國Labcenter Electronics公司開發(fā)的EDA工具軟件,是一款新型的嵌入式系統(tǒng)設計、分析與仿真軟件。Proteus軟件不僅能夠實現(xiàn)數(shù)字電路和模擬電路的設計與分析,而且還能夠實現(xiàn)微處理器與外設的混合電路設計,可以直接在原理圖的基礎上進行微處理器的軟件協(xié)同仿真和功能驗證。Proteus軟件只帶匯編編譯器(不支持C語言),但可以將其與Keil集成開發(fā)環(huán)境進行聯(lián)調,達到很好的仿真效果[3,4]。
本文設計的精確計數(shù)系統(tǒng)功能為:當按下按鈕時,數(shù)碼管的計數(shù)加1,當放開按鈕時,數(shù)碼管的計數(shù)保持不變;開始時數(shù)碼管的計數(shù)為0,當數(shù)碼管的計數(shù)達到15(即16進制的F)時又重新從0開始計數(shù)。系統(tǒng)軟件的設計采用Keil軟件完成,編譯連接之后得到可執(zhí)行的hex文件;系統(tǒng)硬件的設計采用Proteus軟件完成;軟硬件的協(xié)同仿真是在Proteus中加載hex文件進行精確計數(shù)的測試。
2 硬件系統(tǒng)的設計
精確計數(shù)系統(tǒng)采用LPC2124微處理器作為核心器件,并為其提供了兩組電源分別為3.3V和1.8V。硬件系統(tǒng)主要由以下四部分電路組成:XTAL1和XTAL2兩個端口連接晶體振蕩器組成時鐘電路,RST端口連接一個按鈕組成復位電路物理論文,P0.0-P0.6端口連接一個共陰極的7段數(shù)碼管組成輸出電路,P0.7端口連接一個按鈕組成輸入電路論文格式。在精確計數(shù)系統(tǒng)中,P0.0-P0.7共8個端口的功能都是GPIO,P0.0-P0.6共7個端口的方向都為輸出模式,P0.7端口的方向為輸入模式[5]。采用Proteus軟件設計的硬件系統(tǒng)原理圖,如圖1所示。
圖1 硬件系統(tǒng)原理圖
3 軟件系統(tǒng)的設計
精確計數(shù)系統(tǒng)軟件的設計主要在于對LPC2124微處理器相關寄存器的設置,從而控制數(shù)碼管計數(shù)的顯示。軟件系統(tǒng)的設計采用Keil軟件完成,并最終得到可執(zhí)行的hex文件。軟件系統(tǒng)的設計主要通過以下幾個步驟來實現(xiàn),程序流程圖,如圖2所示。
圖2 軟件系統(tǒng)流程圖
1.初始化系統(tǒng)時鐘并設置相應的寄存器。晶體振蕩器的頻率為10MHz,LPC2124微處理器的時鐘頻率為60MHz,設置相應的寄存器程序如下:
PLLCON=1; //使能PLL
PLLCFG=(60/10-1)|(1<<5); //M=5+1,P=1
2.初始化相應端口的功能為GPIO,設置相應的寄存器程序如下:
PINSEL0=PINSEL0|0xFFFF; //P0.0-P0.7共8個端口功能為GPIO
3.初始化相應端口的方向為輸入或輸出模式,設置相應的寄存器程序如下:
IO0DIR=0x7F; //P0.0-P0.6共7個端口為輸出,P0.7端口為輸入
4.開始計數(shù)數(shù)碼管顯示0物理論文,設置相應的寄存器程序如下:
IO0SET=0x3F; //P0.0-P0.5共6個端口輸出高電平,P0.6端口輸出低電平
5.循環(huán)檢測按鈕是否被按下,并進行相應的處理,程序模塊如下:
void button_test( )
{
int i=0,key;
unsigned charledcode[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,
0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71}; //顯示0-9,A-F的筆段代碼表
while(1)
{
key=IO0PIN&(1<<7); //獲取P0.7端口的電平,即檢測按鈕是否被按下
if(key==0) //按鈕被按下
{
i++;
if(i==16) //計數(shù)器加到16
{
i=0;
IO0CLR=ledcode[15]; //清除數(shù)碼管上次計數(shù)的顯示
}
else
IO0CLR=ledcode[i-1]; //清除數(shù)碼管上次計數(shù)的顯示
IO0SET=ledcode[i]; //數(shù)碼管顯示新的計數(shù)
while(1)
{
key=IO0PIN&(1<<7);
if(key!=0) //按鈕被放開
break;
}
}
}
}
4 仿真與結論
精確計數(shù)系統(tǒng)軟硬件的協(xié)同仿真是在Proteus中加載hex文件進行計數(shù)的測試。經(jīng)仿真測試結果表明:本精確計數(shù)系統(tǒng)能夠根據(jù)按鈕的按下與否準確進行0到15(即16進制的F)的計數(shù),并通過數(shù)碼管進行準確顯示,達到了設計的目標要求。同時,在此基礎之上,可以對系統(tǒng)的軟硬件功能進行擴充,以適用于其他方面的應用。
參考文獻:
[1]韋文祥,朱志杰,車琳娜,郭寶泉.基于LPC2124的一個遠程系統(tǒng)軟件升級方案[J].單片機與嵌入式系統(tǒng)應用,2006,5:46-49
[2]晏五一,朱志杰.基于LPC2124的遠程配電變壓器監(jiān)測終端設計[J].電力系統(tǒng),2007, 26(7):31-34
[3]楊校輝.Proteus在ARM系統(tǒng)設計中的應用[J].單片機與嵌入式系統(tǒng)應用,2009,8:77-79
[4]張勇.基于Proteus平臺的32位單片機LPC2114虛擬串口通訊仿真[J]. 集成電路通訊,2008,26(1):8-12
“編譯原理”是計算機及相關專業(yè)的一門重要專業(yè)課程,在計算機科學中有很重要的地位和作用,已被國內(nèi)外高校列為計算機專業(yè)的主要課程。它主要介紹了高級程序設計語言編譯程序構造的一般原理、基本設計方法、主要實現(xiàn)技術和一些自動構造工具。通過該課程的學習,對提高學生計算機軟件素質,使學生真正認識計算機信息處理實質并綜合運用所學的軟件設計技術來分析問題等具有很大作用。
由于涉及形式語言、有窮自動機等抽象內(nèi)容,在“以教師為中心,教師講、學生聽”的傳統(tǒng)教學模式下,學生在學習中普遍感覺內(nèi)容太過抽象、缺乏學習積極性。因此,如何打破傳統(tǒng)教學模式、讓這門課的教學效果得到較大改觀,就成為一個亞待解決的問題。近二十年以來,國內(nèi)外的許多教育工作者、教育學家、教育技術專家多年來從理論與實踐兩個方面作了大量的研究與探索,建構主義理論正是這種努力所取得的主要理論研究成果。
1、建構主義學習理論及教學模式
近二十年以來,隨著多媒體計算機和Internet網(wǎng)絡教育應用的飛速發(fā)展,建構主義學習理論正愈來愈顯示出其強大的生命力,并在世界范圍內(nèi)日益擴大其影響。建構主義提倡在教師指導下的、以學習者為中心的學習,也就是說,既強調學習者的認知主體作用,又不忽視教師的指導作用。
建構主義學習理論認為“情境”、“協(xié)作”、“會話”和“意義建構”是學習環(huán)境中的四大要素或四大屬性。學習環(huán)境中的情境必須有利于學生對所學內(nèi)容的意義建構;協(xié)作發(fā)生在學習過程的始終,對學習資料的搜集與分析、假設的提出與驗證、學習成果的評價直至意義的最終建構均有重要作用;會話是協(xié)作過程中不可缺少的環(huán)節(jié),學習小組成員之間必須通過會話商討如何完成規(guī)定的學習任務的計劃;意義建構是整個學習過程的最終目標。所要建構的意義是指:事物的性質、規(guī)律以及事物之間的內(nèi)在聯(lián)系。在學習過程中幫助學生建構意義就是要幫助學生對當前學習內(nèi)容所反映的事物的性質、規(guī)律以及該事物與其它事物之間的內(nèi)在聯(lián)系達到較深刻的理解,這種理解在大腦中的長期存儲形式就是關于當前所學內(nèi)容的認知結構。
與建構主義學習理論以及建構主義學習環(huán)境相適應的教學模式為:”以學生為中心,在整個教學過程中由教師起組織者、指導者、幫助者和促進者的作用,利用情境、協(xié)作、會話等學習環(huán)境要素充分發(fā)揮學生的主動性、積極性和首創(chuàng)精神,最終達到使學生有效地實現(xiàn)對當前所學知識的意義建構的目的?!痹谶@種模式中,學生是知識意義的主動建構者;教師是教學過程的組織者、指導者、意義建構的幫助者、促進者;教材所提供的知識不再是教師傳授的內(nèi)容,而是學生主動建構意義的對象;媒體也不再是幫助教師傳授知識的手段、方法,而是用來創(chuàng)設情境、進行協(xié)作學習和會話交流,即作為學生主動學習、協(xié)作式探索的認知工具。顯然,在這種場合,教師、學生、教材和媒體等四要素與傳統(tǒng)教學相比,各自有完全不同的作用,彼此之間有完全不同的關系。但是這些作用與關系也是非常清楚、非常明確的,因而成為教學活動進程的另外一種穩(wěn)定結構形式,即建構主義學習環(huán)境下的教學模式。
2.建立以學生為主、師生互動的教學模式
基于以上理論,在整個編譯原理”的教學過程中,應該創(chuàng)造一種良好的氛圍,建立以學生為主、師生互動的教學模式。
2.1教師的準備
教師的角色是學生建構知識的忠實支持者。教師的作用從傳統(tǒng)的傳遞知識的權威轉變?yōu)閷W生學習的輔導者,成為學生學習的高級伙伴或合作者。教師應該給學生提供復雜的真實問題,教師必須創(chuàng)設一種良好的學習環(huán)境、必須提供學生元認知工具和心理測量工具,培養(yǎng)學生評判性的認知加工策略,以及自己建構知識和理解的心理模式。因此,教師在課前應通讀教材多遍,并做完習題,然后參考同類教材,把內(nèi)容爛熟于心。同時,教師應準備教學課件、教學網(wǎng)站等輔助教學資源,真正起到組織引導的作用。
2.2注重啟發(fā)式教學
建構主義學習理論認為,學習者與周圍環(huán)境的交互作用,對于學習內(nèi)容的理解(即對知識意義的建構)起著關鍵性的作用。教師應組織和引導學生進行討論和交流,共同建立起學習群體并成為其中的一員,共同對課程所涉及的內(nèi)容進行討論。
因此,對于學生自學較容易的章節(jié),采用指導學生備課,然后課堂上由學生講課、教師總結的方式進行,對于學生的提問,也不是簡單的給出答案,而是在課堂上展開師生間的討論,讓所有的學生看到問題從提出、分析到解決的全過程,充分發(fā)揮學生的學習主動性,培養(yǎng)學生的創(chuàng)新能力。以下就求Follow集的方法加以簡要說明。
在預測分析中,F(xiàn)ollow集的定義如下:設G=(V,.,VN,S,P)是上下文無關文法,A E VN,S是開始符號;Follow(A)二{aIS=’=>wA(3且a E VT’,a E、 F1TST.(}), }.L。V,.`,(3 a V’},若有S=`=>N,A(3,且p=’二>。,則#E Follow(A)。另外,若A-"aB是一個產(chǎn)生式,則把FOIrLOW(A),加至FOLLOW (B)中。怎樣系統(tǒng)、快速而準確地求出Follow集?學生在討論中發(fā)現(xiàn),求Follow集必須從文法開始符號S推導,因此,可以直接觀察每條產(chǎn)生式的右部,找出要求Follow集的非終結符(設為A),進一步觀察A后面的字符串,若可推出終結符,則此終結符在Follow(A)中,若為。,則產(chǎn)生式左端非終結符的Follow集在Follow(A)中。由此概括出了求Follow集的行之有效的方法。
2.3運用實例教學模式
實例式教學也被稱為拋錨式教學、基于問題的教學或情境性教學。是建構主義的教學模式之一。學習者要想完成對所學知識的意義建構,即達到對該知識所反映事物的性質、規(guī)律以及該事物與其它事物之間聯(lián)系的深刻理解,最好的辦法是讓學習者到現(xiàn)實世界的真實環(huán)境中去感受、去體驗(即通過獲取直接經(jīng)驗來學習),而不是僅僅聆聽別人(例如教師)關于這種經(jīng)驗的介紹和講解。
對于較復雜、枯燥的理論,在教學中大量運用實例,通過講解一學生練習一學生講解一學生再練習一教師小結的教學模式,讓學生能夠從外部信息源提供的特殊的例子出發(fā),進行歸納推理,得到一般的規(guī)則或一般性的知識。這樣,學生聽懂了,理解了,增強了自信心,鞏固了理論知識。
2.4合理組織實驗和課程實習
課程實驗應以編譯理論中的一些經(jīng)典算法的實現(xiàn)為主,一方面可以培養(yǎng)學生的實踐能力和動手能力,另一方面可以通過對算法的實現(xiàn)達到更準確、更牢固的理解和掌握這些算法,從而提高學生的實際應用能力。
課程實習應充分考慮編譯理論與實際應用相結合,突出開創(chuàng)性和實用性。教師應提供程序源代碼而空缺關鍵模塊,讓學生來完成。這種組建式的實習方法,使得實習題所涉及的問題難度沒有降低,但由于學生只需完成關鍵的組件模塊,學生能夠集中精力解決關鍵問題,實現(xiàn)難度有一定程度的降低。鼓勵學生間相互探討,各抒己見,激發(fā)學生的創(chuàng)作研究熱情并共同提高。
3.教學效果分析
通過以下兩組數(shù)據(jù)的比較,可以看出應用了新的教學模式后.學生學習情況的變化.說明教學效果得到了較大改觀。
回顧這幾年的教學探索,在計算學科人才培養(yǎng)中,我們認為除了要注重社會需求外,更應注重學生創(chuàng)新能力和國際視野的培養(yǎng)。通過開展完善的國際化聯(lián)合培養(yǎng)和交流,我們建立了良好的國際化教育環(huán)境;通過進一步提高軟件創(chuàng)新行動項目和創(chuàng)業(yè)實踐項目的支助力度,我們?yōu)閷W生提供了面向產(chǎn)業(yè)實踐和個性化發(fā)展的條件,為培養(yǎng)綜合素質高、創(chuàng)新能力強、具有國際競爭力的高層次研發(fā)人才與產(chǎn)業(yè)工程師奠定了基礎。
1國際化創(chuàng)新型軟件人才培養(yǎng)定位與方案
我國提出在2020年建成創(chuàng)新型國家,最近又推出了國家十大產(chǎn)業(yè)振興規(guī)劃,其中就包括了電子信息產(chǎn)業(yè)。而我國的軟件人才培養(yǎng)在創(chuàng)新性和工程化方面存在許多不足,難以滿足電子信息產(chǎn)業(yè)走向世界的需求。無論是傳統(tǒng)計算領域的研究還是系統(tǒng)開發(fā),無論是理論研究還是應用研究,都離不開實際應用背景。人才應該集業(yè)務、技術、管理三位一體,既具有扎實的基礎理論知識,又熟悉產(chǎn)業(yè)前沿,能運用國際主流的系統(tǒng)工程技術解決產(chǎn)業(yè)中的問題,在國際化團隊中具備自我發(fā)展能力、團隊合作精神和系統(tǒng)調控能力,具備適應市場需求和技術變化的能力。因此,我們在人才培養(yǎng)中必須注重培養(yǎng)學生的創(chuàng)新能力,強化學生的國際視野及對產(chǎn)業(yè)前沿問題的敏感性,注重與企業(yè)有機結合并平滑過渡,將實踐教學環(huán)節(jié)和工程教育理念融入課程教學中,融基礎理論、實驗教學、工程實踐為一體。
根據(jù)復旦大學“寬口徑、厚基礎、重能力、求創(chuàng)新”的人才培養(yǎng)理念,參照國際知名高校的教學培養(yǎng)方案,同時結合國內(nèi)企業(yè)的實際需求和行業(yè)技術發(fā)展趨勢,我們精心設計了教學培養(yǎng)方案。除綜合教育課程、技術類基礎課程外,軟件工程專業(yè)課程分為三個部分:專業(yè)基礎課、專業(yè)方向課、專業(yè)選修課。學生首先修完專業(yè)基礎課程,保證對計算機科學和軟件開發(fā)的各方面內(nèi)容有全面了解,具備一定的科研能力;其次修讀專業(yè)方向課程,保證在特定專業(yè)方向上獲得嚴格訓練;最后至少選修其他專業(yè)方向課程組中的兩門課程,并學習專業(yè)選修課程,保證必要的知識廣度,還要提高職業(yè)道德意識、團隊精神、交流能力、外語能力。
在課程設計方面,我們一方面設置培養(yǎng)學生工程能力和職業(yè)素質為主的課程;另一方面把培養(yǎng)實踐能力和創(chuàng)新能力貫穿于教學全過程,建立一套“全過程、遞進式”的實踐教學體系。通過有針對性的、高強度的項目實踐,在低年級強化基本技能和動手能力,在高年級通過綜合性設計性實驗、課程設計等環(huán)節(jié),培養(yǎng)學生分析、設計、實現(xiàn)的綜合能力。
我們同時建立健全了創(chuàng)新鼓勵機制,鼓勵學生參與創(chuàng)新性實踐活動,養(yǎng)成創(chuàng)新意識,體驗創(chuàng)新過程。我們邀請企業(yè)資深研究人員、國外高校著名學者來校兼職、授課,為學生的創(chuàng)新實踐活動提供專業(yè)指導。將工程能力引入人才素質評價體系,通過收集企業(yè)和學生的反饋指導教學和課程設置,形成良好的自我約束、自我發(fā)展機制。
國際化創(chuàng)新型軟件人才培養(yǎng)定位與方案的基本架構如圖1所示。
2創(chuàng)新型軟件人才培養(yǎng)的教學內(nèi)容與方法
與國外的工科學生相比,我國學生明顯缺少項目或團隊合作的實際經(jīng)驗訓練。因此,我們要加強國際化創(chuàng)新型工程人才的培養(yǎng),更要注意不能停留在教學生用現(xiàn)在的技術解決問題,而要讓學生學會用未來的技術解決未來的問題。
在教學內(nèi)容安排上,我們?nèi)嫖瞻l(fā)達國家經(jīng)典的計算機教學內(nèi)容,強調學生除了掌握各門課程的基本原理,還要對行業(yè)的最新發(fā)展及領域內(nèi)面臨的問題有所了解。堅持提高解決問題能力為主的教學原則,把握行業(yè)發(fā)展最新趨勢,教學內(nèi)容既要與企業(yè)當前的需求緊密結合,又不能單純跟著企業(yè)走。高校教育不僅要緊扣行業(yè)發(fā)展的最新趨勢,更應引領社會需求。
為了使學生學會用未來的技術解決未來的問題,我們要求教師不僅要了解目前行業(yè)內(nèi)的最新發(fā)展及領域內(nèi)面臨的問題,更要具有前瞻意識,及時把本學科最新的研究成果和未來可能成為行業(yè)發(fā)展熱點的內(nèi)容安排在課程中。如從2004年開始,我們就把多核技術和虛擬化技術放到相關課程的教學內(nèi)容里,在計算機體系結構課程中擴展了多核體系結構的內(nèi)容和多核緩存(Cache)研究的最新進展。而操作系統(tǒng)課程則介紹了多核領域虛擬化的研究原理和現(xiàn)狀。編譯原理課程則擴展了多核程序設計語言和優(yōu)化等方面的內(nèi)容。這些最新內(nèi)容開闊了學生的視野,到2007年畢業(yè)時,這些技術在一些外資企業(yè)成為熱門,因此我們的學生成為社會迫切需要的人才,非常受歡迎。
好的教學內(nèi)容必須有與之配套的教學方法。以課堂為主的填鴨式教學方法雖然可以使學生掌握各門課程的基本知識,但是缺乏和學生的互動,存在較大不足。復旦大學軟件工程專業(yè)在以下幾個方面進行了調整和改進,取得了很好的效果。
首先,在講授基本原理時,教師側重闡述課程的要點和難點,而對于各種具體的細節(jié),則讓學生通過相應的教學實驗環(huán)節(jié)(包括實驗和實踐項目)體會,解決可能出現(xiàn)的問題。一方面,我們通過教師的講解與學生的自學來強化學生對概念的準確理解和對理論的全面掌握;另一方面,我們通過課后的實習項目來全面鍛煉和提高學生的能力。教師在講授知識的同時,逐步培養(yǎng)學生的自主學習能力和開發(fā)設計能力。
其次,教師注重啟發(fā)式教學和學生創(chuàng)新能力培養(yǎng)。很多專業(yè)課程,如計算機系統(tǒng)基礎、計算機體系結構和編譯原理等,都增加了研討性內(nèi)容,教師定期布置超出課堂知識范圍的開放式問題。這些問題并沒有標準答案,學生要在自己查閱資料的基礎上進行深入思考,因此鍛煉了思考能力和創(chuàng)新能力,也開闊了眼界。研討式學習、案例分析、群組學習啟發(fā)了學生的思維,鍛煉了學生在團隊中開展創(chuàng)新性工作的能力。
第三,將實踐教學環(huán)節(jié)和工程教育理念融入整個教學過程,尤其注重對學生項目構思、設計、實現(xiàn)和運作能力的培養(yǎng)。企業(yè)項目及企業(yè)聯(lián)合實驗室為學生的項目實踐學習提供平臺,通過解決項目中的實際問題,學生的工程技術創(chuàng)新能力得到了很大提高。我們同時建立了跨度一年的學院科研實驗室和知名企業(yè)實習制度,為學生的發(fā)展創(chuàng)造了良好空間。課程成績評定改變了期末一張試卷定成績的考評機制,改為實驗、實踐項目、隨堂測驗、論文、面試、筆試、課堂討論等多種形式相結合的評價機制,期終成績僅占總成績的30%~50%。通過不斷學習,學生各方面的能力都得到均衡發(fā)展,適應現(xiàn)代軟件產(chǎn)業(yè)的需求。
第四,注重國際化辦學,推廣雙語課程。早在軟件工程專業(yè)建設之初的2002年9月,學院就與愛爾蘭都柏林大學(University College Dublin)簽訂了合作辦學協(xié)議,開展計算機軟件學士學位聯(lián)合培養(yǎng)項目;與新加坡管理大學簽訂了交換生計劃,每年兩?;ヅ蓪W生到對方學校學習半年;與日本名古屋工業(yè)大學建立了推薦學生攻讀研究生的國家資助項目。通過與愛爾蘭都柏林大學的合作辦學以及與其他知名大學的交流,我們吸收、借鑒了國外人才培養(yǎng)的先進理念,提高了教師的業(yè)務素質和能力。雙語課程打造了一批有代表性和學院特色的課程,使學生能直接接觸國外最先進的理念和技術,提高了自學能力、創(chuàng)新能力和綜合素質。
3高水平的研究是創(chuàng)新型人才培養(yǎng)的基礎
高水平的師資是人才培養(yǎng)必不可少的保障,軟件學院應該鼓勵具有應用背景的研發(fā)。這種研發(fā)不是低水平的開發(fā),而是應該具有自主知識產(chǎn)權,在理論或技術上有所創(chuàng)新的研發(fā)項目。研究既要保證實用性,也要保證具有產(chǎn)業(yè)化時代的核心競爭力;既要能出高質量的論文,也要能得到實際應用。
開展高水平的科學研究,不僅可以培養(yǎng)出優(yōu)秀的學生,也能吸引一流教師加入學院師資隊伍中,更好地培養(yǎng)人才。我院現(xiàn)有寬帶網(wǎng)絡與互動多媒體實驗室、電子商務研究中心、交互式圖形學實驗室、密碼與信息安全研究室等四個研究機構,復旦大學并行處理研究所的研究主體也在軟件學院。
在流媒體寬帶應用領域的前沿技術研究和高科技產(chǎn)品的研發(fā)中,學院成功研發(fā)了高性能、高質量、與國際標準完全兼容的流媒體服務器(Clear Server),我們自主研發(fā)的IPTV系統(tǒng)成為上海市互動電視閘北區(qū)示范項目,其技術產(chǎn)品已經(jīng)推廣到國外,并獲得上海市科技進步二等獎。而作為這些項目研發(fā)的負責人,我院教師及時把研究成果融入教學,簡化項目開發(fā)要求,編制出適于學生課程實習的項目,有效提高了學生的實際研究能力,為學生提供及時接觸最新成果的機會。
基于全光視頻的圖形繪制技術、基于GPU的Dome顯示設備的實時繪制系統(tǒng)以及基于投影儀的大尺寸、高清晰顯示墻系統(tǒng)的研制培養(yǎng)和鍛煉了教師和學生。我院毛燕東在本科三年級就參加了學院實驗室的科研工作,他和賈奇在導師的指導下參加第九屆“挑戰(zhàn)杯”全國大學生課外學術科技作品競賽,一舉奪得全國一等獎。2006年,毛燕東直升本院碩士研究生后,成為國家863計劃“可伸縮高分辨率投影顯示技術”項目的主要研究者,并參加了微軟亞洲研究院系統(tǒng)研究組的多核操作系統(tǒng)的研究工作,在操作系統(tǒng)領域最好的會議之一OSDI上與他人合作。在即將畢業(yè)時,他先后收到了麻省理工學院(MIT)、斯坦福大學(Stanford)、卡耐基-梅隆大學(CMU)等三所全球計算機領域頂級高校的攻讀博士錄取通知書。
學院在虛擬化技術、并行與優(yōu)化編譯技術、動態(tài)優(yōu)化編譯技術、跨平臺優(yōu)化編譯技術的研究中也取得了優(yōu)異成績,培養(yǎng)了一批優(yōu)秀學生。陳海波從本科開始就參加實驗室項目的研究,碩博連讀階段,他又在導師指導下取得了長足進步。他在國際并行處理大會上發(fā)表的論文獲得大會唯一最佳論文獎,這是該會議舉辦36年來中國大陸作者第一次獲此榮譽;而他在國際軟件工程大會(ICSE2007)上發(fā)表的論文則是中國大陸地區(qū)近30年來在該會議上發(fā)表的第
4篇論文。
以研發(fā)基于智能Web服務和流程整合的應變電子商務集成平臺、面向消費者的電子商務性能指標體系、基于RFID的倉庫立體自動控制系統(tǒng)為契機,我們選拔了一批優(yōu)秀的本科生,極大提高了學生的實際項目開發(fā)能力。本科生參與開發(fā)的軟件構件組裝工具、配置管理工具和面向特征的軟件體系結構建模工具成為相應科研項目的主要成果,通過專家組驗收,進入企業(yè)試用階段。以本科生為核心技術骨干的多模型驅動的面向服務協(xié)同開發(fā)平臺,基于數(shù)據(jù)挖掘和語義本體的商品編碼知識庫等項目,在教育部組織的鑒定中被認為在技術上達到了國內(nèi)外領先水平。學院在密碼學和網(wǎng)絡安全協(xié)議、可信計算研究中也取得新突破,2004年和2007年,我們在歐洲密碼學會議上發(fā)表了2篇有關零知識領域的研究論文,是大中華地區(qū)第1個在密碼學頂級會議的科研單位。
高水平的研究有效帶動了骨干教師隊伍建設、優(yōu)秀學生培養(yǎng)及軟件工程專業(yè)課程體系建設,培養(yǎng)了一支具有創(chuàng)新意識和實際研發(fā)能力的學生隊伍。
4人才培養(yǎng)質量和社會評價
由于教學計劃和培養(yǎng)方案定位準確,在教學中又突出了能力培養(yǎng),達到了專業(yè)培養(yǎng)目標,學院培養(yǎng)的
學生無論在國內(nèi)各高校攻讀研究生,申請到世界頂級高校留學,或進入IT、咨詢、金融、通信等行業(yè)的國內(nèi)外知名企業(yè)從事軟硬件研發(fā)、咨詢、管理等工作,都得到一致好評。我校人才的主要特點有:
(1) 具有較強的創(chuàng)新能力,走上工作崗位后能馬上熟悉自己的工作。由于具備了創(chuàng)新素養(yǎng),畢業(yè)生站在了更高的起點上,很多學生在實習過程中即成為企業(yè)項目骨干,相當一部分學生在實習期滿前就獲得了企業(yè)的聘用合同。成為企業(yè)正式員工后,他們很快就升為資深員工、項目組長甚至項目經(jīng)理。在國際團隊中表現(xiàn)突出,既體現(xiàn)了較高的工程素質和動手能力,又展現(xiàn)了管理能力及應用創(chuàng)新能力,部分學生甚至在外企實習期間就創(chuàng)新地解決軟件工程中的高端問題,并取得了國外專利,充分展現(xiàn)了國際化人才的素質。
(2) 科學研究和開發(fā)實踐能力強。學院支持并鼓勵本科生加入科學研究和開發(fā)實踐,在各個實驗室的科研活動中,高年級本科生參加多項應用工具開發(fā),發(fā)揮了很好的作用。
0 引言
作為計算機科學與技術專業(yè)的一門重要專業(yè)基礎課程,操作系統(tǒng)的地位舉足輕重。但在高校本科教學過程中,學生普遍反映該課程難學,教師在教學中也困難重重。究其原因,操作系統(tǒng)課程自身的知識結構以及研究對象特有的復雜性使上述情況成為必然。而知識體系的復雜性直接導致該課程給人理論性強、抽象的印象。因此,如何有效開展操作系統(tǒng)課程的實驗教學,加深學生對該課程的直觀理解和把握就顯得至關重要。傳統(tǒng)實驗方法以驗證和仿真為主,實驗很難發(fā)揮應有的作用,且容易混淆系統(tǒng)級和應用級的許多概念,反而使學生更難把握知識結構,難以對系統(tǒng)軟件形成宏觀認識。結合多年教學實踐,我校在操作系統(tǒng)課程的本科教學過程中結合實驗平臺軟件的開發(fā)和應用,探索出一種直觀有效的實驗教學模式,使得教學效果得到較顯著的提高。
1 操作系統(tǒng)實驗教學現(xiàn)狀
1.1 實驗比重
由于操作系統(tǒng)課程涉及的理論知識多雜志鋪,系統(tǒng)級的驗證和實驗難度較大,導致教學過程中容易出現(xiàn)避重就輕的情況,教師易偏重理論課而輕視實驗課教學,實驗的課時設置在各高校中也不同程度地偏少。另一方面,學生受考試形式的引導,也偏重理論學習而忽視實踐動手能力的培養(yǎng)。實踐證明,不注重實驗、驗證環(huán)節(jié),學生很難對該課程涉及的大量概念和方法形成直觀認識,導致對許多知識點的認識出現(xiàn)偏差,反而不利于理論課的學習。例如,目前選用的教材在行文時經(jīng)常變換研究的“角度”,一些知識點是面向應用的,而一些是研究操作系統(tǒng)內(nèi)部實現(xiàn)的,但在講述中并未明確說明,比如:在“進程同步與互斥”部分,大部分教材是從“應用”的角度來描述P、V操作的,并附帶偽碼算法。但在學習過程中,許多同學搞不清這些算法用在何處,是在應用程序層次還是在操作系統(tǒng)實現(xiàn)層次。如果結合Linux或Windows平臺設計實驗內(nèi)容,補充P、V操作對應的系統(tǒng)調用和有關函數(shù)的用法,真正寫出可運行的程序,就可以大大加深對知識點的理解。
1.2 實驗方式
與大部分應用類課程相比,操作系統(tǒng)課程的研究目標是系統(tǒng)軟件,知識結構偏重底層軟件,且往往涉及到硬件知識,開展實驗所需的軟硬件平臺復雜,傳統(tǒng)教學模式很難真正實施“系統(tǒng)級”的實驗項目,故常用模擬算法代替。這樣容易導致所學知識和方法比較抽象和“遙不可及”,很難形成對操作系統(tǒng)整體上的理解和把握。
1.3 現(xiàn)有的一些改革和嘗試
針對操作系統(tǒng)課程實驗教學中的問題雜志鋪,各高校進行了許多有益的改革和嘗試。例如,使用逐漸被認同的Linux實驗平臺[1],整理更加規(guī)范的實驗內(nèi)容[2],以及按照歸類和劃分層次的原則對實驗目標進行細化等方法[3]。但操作系統(tǒng)實驗內(nèi)容自身的復雜性與實驗方式盡量簡單、有效的要求之間的矛盾依然存在。
2 基于內(nèi)核分析的實驗模式
針對上述問題,本校操作系統(tǒng)教研組在操作系統(tǒng)實驗教學中不斷探索和嘗試,總結出一種基于內(nèi)核分析的實驗教學方法。實施過程中,在保障36個實驗學時的前提下,直接面向具體的操作系統(tǒng)對所學的概念和算法進行驗證、設計,配合跨平臺編譯和調試技術,有效地降低了實驗實施的難度,且不增加學生的額外負擔。
2.1 內(nèi)核分析
內(nèi)核分析,就是選擇一個開源的操作系統(tǒng)作為對象,通過閱讀源代碼來分析其實現(xiàn)原理和必要細節(jié),并在特定的地方修改部分代碼以驗證自己的算法。但是,為了降低實驗的復雜度并適應本科生的知識結構,實驗對象不應太復雜?;谏鲜隹紤],可以選擇Linux0.11版本作為實驗的目標系統(tǒng)。Linux0.11版是Linux的早期版本,其總的代碼量只有1萬行左右,且結構清晰,功能較完整(能夠覆蓋實驗教學中的知識點),幾乎包含了目前較新版本內(nèi)核的所有基本功能和原理[4],能夠較好的滿足實驗要求。
2.2 跨平臺編譯和調試
單純的代碼閱讀是枯燥無味的,特別是操作系統(tǒng)這種系統(tǒng)軟件。為了提高實驗的直觀性,可借助動態(tài)調試技術來實現(xiàn)內(nèi)核代碼的閱讀和分析工作。通過調試過程可以較輕松的跟蹤內(nèi)核執(zhí)行的流程、關鍵算法的運行效果以及關鍵變量和寄存器的取值情況。
但由于操作系統(tǒng)是系統(tǒng)軟件,其修改、編譯和調試過程遠比一般的應用程序復雜。目前常見的實驗環(huán)境是在微機上直接安裝Linux的發(fā)行版本或在Windows系統(tǒng)中通過虛擬機安裝Linux開展實驗。但這些方法都需要在修改內(nèi)核后重新編譯并重啟系統(tǒng),其過程繁瑣且需要掌握Linux的大量命令,從而加重了學生的負擔并容易導致其失去學習興趣。
得益于自由軟件基金組織GNU對Linux的支持,目前有許多Linux相關的工具軟件可以使用,并且有對應的Windows版本。其中雜志鋪,著名的編譯器GCC和調試工具GDB可以巧妙解決實驗過程繁瑣的問題。其主要思路是:利于GCC、GDB、MAKE工具和虛擬機軟件,實現(xiàn)一種跨平臺的內(nèi)核編譯和調試方法,即在Windows平臺下編輯、編譯并調試運行Linux系統(tǒng)。這和用VC、VB等應用程序開發(fā)工具編程調試的工作方式幾乎沒用區(qū)別。另外,通過開發(fā)一個集成實驗環(huán)境(Windows下的應用程序),可將GCC、GDB、MAKE及虛擬機工具進行集成,從而將命令行工作方式轉換為視窗工作方式,大大簡化實驗步驟,使學生更容易集中注意力到實驗內(nèi)容本身。
圖1描述了這種基于跨平臺編譯調試技術的工作流程。
圖1 跨平臺內(nèi)核編譯、調試流程
3 集成實驗環(huán)境的搭建
搭建集成實驗環(huán)境的目的是避免實驗時頻繁的執(zhí)行GNU工具集對應的各種命令,使實驗步驟盡可能簡潔。其主要組成為:虛擬機BOCHS、Windows下的GNU工具集以及主控程序。集成實驗環(huán)境的開發(fā)過程本身涉及許多操作系統(tǒng)課程中的知識點,比如進程間通訊、管道、共享存儲器等。對學有余力的學生,閱讀其實現(xiàn)代碼有助于編程能力和對操作系統(tǒng)整體認識的提高。
3.1 虛擬機BOCHS
傳統(tǒng)的Linux內(nèi)核調試方法是使用KGDB進行遠程調試。這種方法必須要求有一臺目標機和一臺調試機,因此用于實驗有很多困難,難以實施。而利用虛擬機軟件,可以在一臺微機上虛擬另一微機并滿足實驗的要求。另外,選擇BOCHS而非其它軟件的主要原因在于它使用的是仿真技術而非虛擬技術,從而更適合充當調試服務器的角色。
3.2 Windows下的GNU工具集
為了實現(xiàn)跨平臺的內(nèi)核編譯和調試,實驗環(huán)境需要使用Windows下的GNU最小工具集(Minimalist GNU for Windows),主要包括的工具有:AS、LD、GCC、MAKE以及GDB。其主要作用是保證在Windows平臺下GNU開發(fā)環(huán)境仍然可用。但需要注意的是,基于該工具集生成的可執(zhí)行程序是PE格式的,即Windows下的可執(zhí)行程序格式,不能作為內(nèi)核鏡像執(zhí)行,因此需要一個簡單的轉換過程。但這種首先將內(nèi)核編譯為exe再轉換為內(nèi)核鏡像的過程恰好可以為GDB保留內(nèi)核符號表,從而使跨平臺調試成為可能。
3.3 集成實驗環(huán)境
這是一個用VC開發(fā)的Windows應用程序,其功能包括內(nèi)核源碼的管理、編輯、編譯、內(nèi)核鏡像的生成、調試、MINIX根文件系統(tǒng)的維護以及實驗項目的管理。
(1)內(nèi)核源碼以及實驗項目的管理
該功能主要結合操作系統(tǒng)實驗教學中的系統(tǒng)引導、進程管理、存儲管理、設備管理、文件系統(tǒng)等內(nèi)容,針對相應的內(nèi)核源碼給出注釋、快速索引、實驗指導以及實驗步驟。它可以幫助學生通過真正的內(nèi)核代碼分析,更深刻理解相關知識點,且形式直觀、易于理解。
(2)內(nèi)核鏡像的生成、調試
該功能是實驗環(huán)境的核心部分。基于該功能可以快速對修改過的內(nèi)核生成新的鏡像,并通過調試器看到真正的運行情況,從而使內(nèi)核分析實時、動態(tài)進行雜志鋪,并且像調試應用程序一樣簡單。具體實現(xiàn)時,將GCC、GDB、BOCHS等作為子進程執(zhí)行,并通過管道和I/O重定向等方法將繁瑣的控制臺工作方式轉變?yōu)橐暣肮ぷ鞣绞?。例如,進行調試時,不再需要記憶GDB的調試命令和頻繁的控制臺輸入,只需點擊鼠標設置斷點、單擊菜單項或按快捷鍵即可實現(xiàn)字符環(huán)境下幾十條命令才能實現(xiàn)的功能,操作簡單、界面更友好。
(3)根文件系統(tǒng)的維護
在Windows下維護根文件系統(tǒng)的目的是便于將可執(zhí)行程序加載到磁盤鏡像中。由于Linux0.11功能簡單,并且為了保證磁盤鏡像盡可能小,Linux0.11本身不包含GCC等編譯工具,因此,要在目標系統(tǒng)中運行的程序必須在Windows系統(tǒng)中編輯、編譯,最后再加載到根文件系統(tǒng)中。
圖2為集成實驗環(huán)境運行的情況。
圖2 集成實驗環(huán)境
4 結語
操作系統(tǒng)課程實驗教學的必要性和重要性已被廣泛認同,而對教學方法、手段的探索和改革還任重道遠。這種基于內(nèi)核分析的實驗方法試圖讓學生真正接觸操作系統(tǒng)實現(xiàn)細節(jié)的同時,力爭簡化實驗步驟,使實驗環(huán)節(jié)易于實施。實踐證明,該教學模式容易被學生接受、取得了較好的教學效果。
參考文獻
[1]鐘少丹.“操作系統(tǒng)”課程實驗設計的思考[J]. 計算機教育,2008(12):120-121.
[2]張其亮,韓斌.操作系統(tǒng)課程實驗教學改革探析[J]. 計算機教育,2010(7):91-93.
[3]鄒恒明.操作系統(tǒng)課程實驗中的五重奏哲學[J]. 計算機教育,2009(20):109-112.