摘要:闡述程序設(shè)計類課程群在計算機專業(yè)教學中占有的重要地位,探討課程群中課程之間密切的關(guān)聯(lián)關(guān)系,提出以編譯原理課程為重心,按照專業(yè)能力培養(yǎng)的需要,充分利用這些關(guān)聯(lián)關(guān)系,有效提升整個課程群的教學效果。
關(guān)鍵詞:程序設(shè)計課程群 編譯原理 關(guān)聯(lián)關(guān)系 效果提升
文章編號:1672-5913(2011)18-0027-02 中圖分類號:G642 文獻標識碼:A
計算機程序設(shè)計(簡稱“程序設(shè)計”)是計算機科學與技術(shù)專業(yè)人才最基本的專業(yè)能力,計算機專業(yè)程序設(shè)計類課程群也就自然成為計算機專業(yè)教學的重心,在“實現(xiàn)計算機問題求解”這一最終的專業(yè)教學目標的實現(xiàn)過程中發(fā)揮著至關(guān)重要的作用[1]。
一般來說,計算機專業(yè)程序設(shè)計類課程群包括“C語言程序設(shè)計”、“面向?qū)ο蟪绦蛟O(shè)計”、“數(shù)據(jù)結(jié)構(gòu)與算法分析”和“編譯原理”等計算機專業(yè)必修課及“形式語言與自動機”、“C++程序設(shè)計”等選修課程。它們以“程序設(shè)計”為中心形成了一個有機整體。而其中的編譯原理課程因其涉及計算學科抽象、理論、設(shè)計三個形態(tài),含有基本問題求解的典型思路和方法,是繼程序設(shè)計、數(shù)據(jù)結(jié)構(gòu)與算法分析等課程后,從系統(tǒng)級再認識程序、算法最恰當?shù)闹R載體,將使學生的程序設(shè)計能力得到升華,并促進系統(tǒng)能力的提升,這些使得該課程在整個程序設(shè)計教學中扮演著無可替代的重要作用[2]。因而,以編譯原理教學為核心探索程序設(shè)計課程群教學體系的構(gòu)建,對于深化教學改革、促進學生計算機專業(yè)基本能力的培養(yǎng)具有重要的現(xiàn)實意義。
1 編譯原理在程序設(shè)計類課程教學中的重要地位
計算學科是對信息描述和變換算法的系統(tǒng)研究,主要包括它們的理論、分析、效率、實現(xiàn)和應用;計算學科的根本問題是什么能且如何被有效地自動計算。
計算學科問題求解的基本思路是“問題、形式化描述、計算機化”。編譯原理(即程序語言的實現(xiàn)原理)涉及的是一個比較適當?shù)某橄髮用嫔系臄?shù)據(jù)變換,既有明確的、便于抽象的問題,又有較成熟的理論,而且在限定規(guī)模下又容易實現(xiàn)(設(shè)計),所以編譯原理是計算機專業(yè)本科生的重要專業(yè)技術(shù)基礎(chǔ)課程,屬于教學計劃中四大系列之一——軟件技術(shù)系列。除了相應的知識對于計算機學科的人才培養(yǎng)非常重要外,其中一些基本問題的求解方法、處理問題的思路也是非常重要的,而且廣泛地用于很多新的研究領(lǐng)域。該課程的內(nèi)容對于培養(yǎng)學生的計算思維,程序設(shè)計與實現(xiàn),算法設(shè)計與分析,計算機系統(tǒng)的認知、開發(fā)和利用等四大學科基本能力非常重要,是學生在程序設(shè)計、數(shù)據(jù)結(jié)構(gòu)與算法等課程中受到一定的鍛煉后,從系統(tǒng)的級別上對程序、算法的認識進行再提高。Alfred V.Aho在其名著《編譯原理》的開篇曾寫道“編寫編譯器的原理和技術(shù)具有十分普遍的意義,以至于在每個計算機科學家的研究生涯中,本書中的原理和技術(shù)都會反復用到”。即編譯原理在整個程序設(shè)計教學中擔負著重要作用。
教育部計算機專業(yè)教育指導委員會明確提出了從事高級語言程序設(shè)計教學的教師應該了解語言的實現(xiàn)原理(即編譯原理)。正是站在“培養(yǎng)學生計算機專業(yè)的基本能力”的高度對計算機專業(yè)程序設(shè)計類課程群的教學改革提出的指導性意見。
2 構(gòu)建程序設(shè)計類課程群教學體系
明確了編譯原理在程序設(shè)計類課程群的重要作用,我們將教學研究的視角轉(zhuǎn)向課程群總體教學思路的改革上,即以編譯原理為紐帶建立一個由淺入深、由具體到抽象、由實踐到理論、再由理論指導實踐的完整的教學體系。
2.1 通盤考量、相互滲透
計算機專業(yè)程序設(shè)計類課程群以“程序設(shè)計”為中心形成了一個有機整體,從一定意義上講,編譯原理可以充當紐帶作用。因此,為了提升程序設(shè)計類課程任課教師的學術(shù)素養(yǎng),就計算機科學與技術(shù)專業(yè)的教學來說,有必要要求他們了解高級語言的實現(xiàn)原理(即編譯原理),在此基礎(chǔ)上,組織計算機程序設(shè)計類課程群中各個課程組(其中包括“C語言程序設(shè)計”、“面向?qū)ο蟪绦蛟O(shè)計”、“數(shù)據(jù)結(jié)構(gòu)與算法分析”和“編譯原理”等課程)教師展開教學研討,深入剖析與研究各門課程在專業(yè)知識領(lǐng)域上的相互銜接與滲透關(guān)系、挖掘其教學上的邏輯關(guān)聯(lián)。根據(jù)以往的教學實踐并結(jié)合教育心理學理論分析、掌握學生的需求,切實把握好課程的教學難點所在;在教學內(nèi)容上強調(diào)“前后銜接、相互滲透”,力求實現(xiàn)程序設(shè)計類課程間的“無縫連接”,使學生的專業(yè)能力不斷提升。
2.2 統(tǒng)籌兼顧、難點分散
依據(jù)程序設(shè)計類課程的知識結(jié)構(gòu)和教學規(guī)律,我們在教學中進行大膽的改革實踐。如在“高級語言程序設(shè)計”的教學中有意識地滲透語言實現(xiàn)的原理與方法的若干知識點(即“編譯原理”的內(nèi)容) [3],例如,將編譯器中棧式存儲管理的概念提前簡要地介紹給學生,可使其從語言實現(xiàn)機制的高度理解局部變量與全局變量的差別,這必將使學生更容易理解與運用高級語言從事程序設(shè)計,達到“知其然又知其所以然”的教學目標;而在“編譯原理”的教學中深化“高級語言程序設(shè)計”及“數(shù)據(jù)結(jié)構(gòu)與算法分析”的若干核心內(nèi)容,又可以使學生從語言實現(xiàn)的角度更明智地選擇數(shù)據(jù)結(jié)構(gòu),并按照問題的實際需求運用高級語言進行程序設(shè)計。這體現(xiàn)了教學
方法上的“統(tǒng)籌兼顧、難點分散”理念,達到潤物細無聲的效果。對于計算機專業(yè)學生而言,盡可能早地接觸、了解高級語言的實現(xiàn)原理與技術(shù)特點必能加深其對本專業(yè)魅力的體會,激發(fā)學習動力,使其更多地獲得成功的體驗。
3 建立逐次遞進、從易到難的系列化實踐環(huán)節(jié)
編譯器實現(xiàn)技術(shù)是一大寶庫,完成其不同功能的算法的實現(xiàn)本身即可滿足幾乎所有程序設(shè)計課程的實踐需求[4]。一方面以編譯器的實現(xiàn)為背景可以實踐幾乎全部在數(shù)據(jù)結(jié)構(gòu)與算法分析課程中學到的主要數(shù)據(jù)結(jié)構(gòu)與算法;另一方面,編譯器設(shè)計中使用的問題求解方法、處理問題的思路被廣泛地用于自動數(shù)據(jù)處理(轉(zhuǎn)換)及其他一些新的研究領(lǐng)域。因此,我們可以根據(jù)編譯器設(shè)計的需求,并結(jié)合計算機最新的應用背景為程序設(shè)計課程群設(shè)計出一整套“逐次遞進、前后呼應,由淺入深、從易到難”的系列化實踐教學環(huán)節(jié)(包括課程設(shè)計),一改以往那種以各門課程圍繞著局部知識點、課程間互不相關(guān)的分散實驗模式[5]。逐步完成對學生實現(xiàn)“從實例計算到類計算、從簡單程序設(shè)計到復雜系統(tǒng)設(shè)計”的培養(yǎng)。
4 結(jié)論
在計算機科學與技術(shù)專業(yè)學生的教育中,程序設(shè)計類課程群占有重要的地位,它在培養(yǎng)學生算法分析與設(shè)計、程序設(shè)計與實現(xiàn)、以及系統(tǒng)能力中起到關(guān)鍵作用。所以,在各種類型的計算機專業(yè)人才培養(yǎng)中,也許缺少一門兩門,也許有的課程以其他的面目出現(xiàn),但這個系列課程是必須的。我們注意到,在過去的教學中,大家雖然關(guān)注到了這些課程之間的聯(lián)系,但是并沒有深入地探討如何更好地利用這些聯(lián)系。我們認為,更好地利用這一聯(lián)系,將會大大提升這個課程群的教學效果。要想更充分地利用這種聯(lián)系,不僅需要課程群的負責人能夠更深入地了解這些課程、更遠地看待這些課程的教學,還需要課程群的教師們能夠站在人才培養(yǎng)的高度上看待課程教學,真正擺脫以課程為本思想的影響。
參考文獻:
[1] 中國計算機科學與技術(shù)學科教程2002研究組. 中國計算機科學與技術(shù)學科教程(2002)[M]. 北京:清華大學