摘要:本文從課程目標、教學理念和課程體系三個方面論述了計算機基礎類課程的改革方向,并介紹了我系的一些具體措施。
關鍵詞:基礎課程;教學改革;課程體系;教學理念;課程目標
中圖分類號:G642
文獻標識碼:B
1引言
面向高等學校非信息類專業的“計算機基礎教育課程”,從1990年開始已經經歷了18年的歷史。這18年來,計算機基礎教育直接為大學復合型人才培養做出了顯著貢獻,而且間接地促進了計算機技術在其他學科中的應用,促進了學科間的交叉與融合。
隨著計算機技術發展越來越快,各個學科的研究和工程中對計算機技術的需求越來越廣泛,計算機基礎教育系列課程正面臨著前所未有的新挑戰:如何在基礎課中體現前沿性與實用性?解決這個問題要從三個方面著手:教學理念、課程體系、課程內容。而教學理念在其中起著根本作用,它主導著課程體系與課程內容的設計。
我們既要重視基礎,又要緊跟前沿,注重課程的實用性和學生創新能力、創新意識的培養。于是矛盾的關鍵就是,在非常有限的學時中,如何組織課程體系結構,如何選擇和安排教學內容。我們傳統的教學,講究知識結構的嚴密性,內容的循序漸進,但是知識爆炸的時代對我們傳統的教學觀點提出了挑戰。
非信息類專業的課程計劃中,安排給計算機類課程的學時很少,有的專業可能只學兩門計算機課:大學計算機基礎、計算機程序設計基礎。這樣,我們規劃課程內容的時候,既很困難,于是認為,在這么少學時的基礎課中,不大可能介紹很多的前沿和實用技術。的確,在如此少的課時中,似乎也只能循序漸進地打一點基礎,甚至連打基礎都不夠。但是,從另一個角度考慮問題,就會得出不同的結論。這個角度就是目標導向,就是首先要明確我們計算機基礎教育的根本目的是什么,然后圍繞這個目標來制定課程體系和教學內容。
2課程目標的變化
由于計算機科學和技術本身的發展,以及其他學科對計算機技術的需求的變化、人才知識結構要求的變化,導致了計算機基礎教育課程目標的變化。
2.1學科交叉融合的現狀
目前各學科的科學研究中,已經不僅以計算機為工具,而是將計算機科學與其他學科進行融合,出現大量跨學科的研究,這就對人才培養提出了新的要求:非計算機專業的學生不僅要能夠以計算機技術為工具,而且要了解計算機科學,及其研究方法,能夠從事跨學科的綜合性研究。這就要求我們的課程中不僅要介紹技術,還要將整個計算機專業的主要研究方向、原理、方法、技術都做一個概要性的介紹,為學生以后的深入學習及交叉學科研究奠定基礎、打開通路。
2.2從普及知識到復合型人才培養
由于計算機技術的日益普及、硬件價格的降低,使得計算機已經不再是專業人員的專屬工具,而是進入了每個家庭,進入到了工作、生活、娛樂的每個角落。普及計算機知識的任務也已經下放到中小學,大學本科的計算機課程要以符合型的研究和應用人才培養為目標。因此不能再以技能和操作入門,而應該以計算機學科的全面介紹為引導,使學生對學科概況、研究方法、與其他學科的交叉融合關系有一個科學、全面的認識,作為今后學習的引導與基礎。這也正式目前各校普遍將原來的“計算機文化基礎”課改為“大學計算機基礎”的目的。
2.3從基本編程技能到應用能力和研究能力
計算機在誕生之初,就是為了輔助人們進行科學計算的,到目前者仍然是計算機的最基本用途之一。但是由于科學的發展,各個學科研究的內容及方法已經發生了很大變化。對計算機技術的要求已經從最基本的,編寫代碼處理實驗數據、用計算支持理論推導,發展為應用計算機技術進行復雜的模擬與分析。更有將生物學、數學與計算機科學相結合的交叉學科研究。相應地,對學生的能力要求,也由能夠逐行編寫代碼形成中小規模計算程序,發展到需要利用平臺、工具、軟件包進行更為復雜的建模與分析。
我們傳統的基礎教給學生的逐行自己編寫代碼,效率與可靠性都低,不可能開發真正有用的大型系統,無法適應科學研究中的復雜需求。正確地選擇和應用開發平臺、軟件構件庫、服務,是現在和將來開發實用系統必須的能力。我們應該培養學生具有系統的觀點,具有應用平臺和工具進行構件組裝的能力。
3教學理念的變化
課程目標的變化給我們帶來的最大挑戰是:在有限的學時內,有太多“應該”講的內容。這幾乎成了我們課程改革的瓶頸,好像很自然的結論就是:這么點學時只能打打基礎。果真應該得出這樣的結論嗎?
實際上,不僅是計算機基礎課程,所有專業、所有課程都面臨這樣的問題。科學發展到了目前的知識爆炸時代,我們在有限的學時內應該教給學生什么,這是一個需要重新思考的問題。當然,我們知道要教給學生能力與方法,而不僅是知識。授人以漁已經是一個古老的話題了,但是如何做到,卻永遠是一個新的課題。下面分別就培養目標的兩個方面,以及知識結構的完整性方面談教學理念的變革
3.1應用能力的基礎
具體地,以計算機程序設計類課程為例。我們大多數的基礎課都在將重點放在教學生如何一行一行地寫程序,尤其以講C語言的居多。但是學生在他本專業的學習和工作中有多少時候會需要以C語言寫程序呢?他工作中需要的計算機軟件又有多少是靠少數幾個人用C語言可以寫出來的呢?這兩個問題的回答是非常明確的:很少。這也是我們普遍認識到的。那么如何應對呢?這就需要我們從根本上轉變教學理念。我們習慣的“循序漸進”、傳統意義上的“打好基礎”是否應該有新的詮釋?
我們知道目前大型的軟件開發平臺,以及面向對象程序設計、泛型程序設計等程序設計方法都已經從新技術、新方法變成了常規技術、主流方法,而我們的基礎課中還在花大量時間反復訓練學生如何用指針、結構體寫鏈表程序,如何自己實現各種各樣的查找與排序方法,如何以各種技巧更有效地利用內存空間,如何小心翼翼避免數組越界、非法指針操作等等。有限的、不夠用的學時都大量的用在這些曾經的“基礎”內容中了。
我們很多老師,包括我自己都曾認為這些是必須的基礎,如果不講這些,學生就不懂得程序設計的底層原理,就不能寫很好的程序。過去這些的確是必須的基礎,因為任何一個程序中這些細節都必須由編程者一行一行親自寫。但是計算機軟件已經開始進入產業化時代,與制造業一樣,工業化生產和細化的分工使得應用軟件的開發者必須能夠利用平臺工具和預先開發好的框架、組件來快速開發穩定、高效的軟件。因此,對于非信息類專業的學生來說,由于他們的任務不是研究和開發基礎軟件,因而軟件工程的系統觀點、需求工程方法、建模方法和工具、大型開發平臺的使用、各種庫(類庫、構件庫、服務庫)的使用才是現在必須的基礎。
那么,沒有很強的基礎編碼能力,能夠使用平臺和組件來開發軟件嗎?這是我們很多老師的疑問。如果我們借鑒一下制造業和計算機硬件行業,這個問題就迎刃而解了。當我們出于應用的目的需要一臺計算機時,我們需要去研究計算機的原理、數字電路的原理、……然后自己從頭設計制造一臺機器嗎?當然不需要,我們首先考慮的是基于對我們自己需求的準確理解和對計算機系統及其性能指標的概要理解,選擇購買一臺整機。如果現有的機型不能滿足我們的需求,我們通常會按照需求用現成的組件、框架去定制(自己動手或者由廠家生產)。大多數人使用這些組件時并不清楚其中大規模集成電路的原理,但是并不影響他成功地使用。計算機硬件的發展也經歷過軟件發展同樣的道路,現在薄薄一個筆記本電腦的性能遠遠超過了當初玻璃房子里一大群機柜、控制臺、磁鼓等等設備。那時候的計算機的確不是誰都能組裝的,它的設計、制造者需要懂得全部的底層原理,親自設計和實現所有細節。現在的軟件產業化進程雖然遠遠落后于硬件,但是也早已經過了必須從底層起步去寫每一個應用程序的時代了。
所以,在計算機基礎課程中,什么是“基礎”應該值得重新考慮了。
3.2跨學科研究能力的基礎
要具有跨學科的研究能力,就不僅僅是將計算機技術作為工具,而是需要對計算機科學有深入的理解,能夠將計算機科學與他它學科進行融合。學生要達到這樣的能力,決不是幾門基礎課可以解決的問題,這需要不同的學科在專業課設置上進行結合、在培養方案中體現融合,這不是本文主要討論的問題。但是我們計算機基礎教育課程要負責給各個專業的學生展示計算機科學的全貌,要使學生初步但是全面地認識計算機科學及其研究方法、關鍵技術、發展方向。現在各個學校的計算機系或者信息學院普遍都開設了“概論”課,其實對全校各專業來說,也都需要一門更為淺顯但不失全面的“概論”課,為學生選擇今后的研究方向、研究方法奠定一個通識的基礎。
目前各校正在進行的“大學計算機基礎”課程改革就正在承擔著這一任務。
3.3知識體系結構的完整性問題
傳統的教學要求“循序漸進”,但是知識爆炸的時代如果過于強調課程與課程之間、課程內各知識點之間的嚴格邏輯,就必然要犧牲對前沿知識、最新技術的引入,犧牲學生主動探索獲取知識的能力。西方學校的教學也是經歷了這種觀念變化的。實際上大學的課程其知識結構中可以“斷點”,尤其是我們針對非信息類專業開設的課程,除了講授必備的基礎知識以外,應該將重點放在開設一些具有實用性、前沿性的課程。學習這些課程可能需要一些基礎,這些基礎應該體現在教科書中,而不必都在課堂上講。所以針對非專業的教材與專業教材的最大不同點應該是知識體系更完整,在每本書中盡量提供一個完整的知識體系,包含必要的基礎知識,這樣老師課上可以只講主要內容,可以讓知識點是跳躍的,而教科書的內容起到連接跳躍點的功能。
4課程體系改革的措施與規劃
上述的觀點我們在清華大學的計算機基礎教育系列課程中也是剛剛開始嘗試,遠沒有達到談及“經驗”的地步,這里我簡要地將我們目前正在建設的課程體系做一個介紹。
清華大學面向全校的計算機基礎教育課程體系包含公共基礎系列課程、應用專題系列和應用延伸系列課程,見圖1。

通識教育核心課程包括:計算機程序設計基礎、大學計算機基礎兩個系列。建設原則是:重組基礎、分類分層,設置了多元化選修課。
其中程序設計課程涵蓋了面向過程和面向對象的多種程序設計語言,旨在培養學生運用程序設計技術對各專業科學計算問題進行建模、分析的能力。
大學計算機基礎系列課程包括計算機文化基礎和應用專題課程。計算機文化基礎課程為非計算機專業的學生普及計算機科學與技術的基礎知識,使學生初步了解計算機科學的概況和發展動態,為進一步學習計算機相關課程作準備。
應用專題課程的主要目的是為一部分計算機操作技能不足的學生補基礎,使入學時基礎薄弱的學生能夠掌握基本技能,適應信息化的學習、研究環境。
應用延伸系列目前開設的課程有:
面向理工科院系高年級本科生的并行計算基礎,課程目標是:為了適應計算技術發展趨勢,將并行計算技術作為一種通用計算技術介紹給非計算機專業的同學,促進其在專業計算中的應用,重點是掌握并行程序開發方法和重要并行程序工具。
面向工科院系高年級本科生的嵌入式系統設計與應用,課程目標是:介紹嵌入式系統基本知識,學習嵌入式系統的一般設計和實現方法,掌握嵌入式系統的原理性應用。
5結束語
計算機基礎教育在培養學生跨專業的綜合應用能力、研究能力方面起著舉足輕重的作用,如何將計算機科學與技術的最新成果、發展方向及時納入課程中,不僅是課程本身的事情,更關系到眾多其他學科的人才培養,是一個值得深入研究和實踐的課題。
參考文獻:
[1] 馮建華等. 清華大學計算機科學與技術系教學評估自評報告[R]. 2007,10.