正文 程序設計類課程的層次化教學模式研究與實踐(2 / 3)

算法(Algorithm)是計算機科學的核心,是指解決問題的結構化流程,是編排計算機指令的策略性步驟。按照D. E. Knuth的定義,算法是一個有窮規則的集合,其中之規則規定了一個解決某一特定類型的問題的運算序列,算法應具有如下五個重要特性:有窮性、確定性、輸入、輸出和可運行性[10]。算法是方法學無關的,也是語言無關的,即算法的設計不依賴於用什麼樣的程序設計方法,更不依賴於具體的編程語言。

方法學(Methodology)是計算機語言的設計方法,比如簡單過程式的程序設計、麵向對象的程序設計、並行程序設計和網格計算[11]。以前的Fortran語言和C語言是按照簡單過程式語言設計方法設計出來的語言產品。而現在流行的Java和C++是按照麵向對象方法設計出來的語言產品。

語法(Grammar)描述了組成一個有效程序的符號的順序,語法為理解一個程序提供了重要的信息,同樣也為將它翻譯成目標程序提供了必要的信息[12]。語法包括詞法和句法,語法是學習計算機語言的最基本、學生最直接感知到的內容。程序設計語言不同,直觀地看,就是語法不同。

集成開發環境(Integrated Development Environment, IDE)是為了讓某一種語言的程序代碼能方便地錄入、編輯、存儲、編譯、運行和調試,以及為函數庫調用、類庫導入、命名約定、硬件相關的優化、編譯選項等提供接口的應用軟件[13]。

這四個層次從上到下構成一個從抽象到具體的概念範疇。上一層次與下一層次都存在一對多的關係。一個算法可以用過程式的語言實現,也可以用麵向對象的程序實現;在同一種方法學(如麵向對象)指導下設計的語言有多種(如C++、Java),它們的語法不同;同一種語言(即語法相同)可以有不同的集成開發環境,比如C++的IDE有C++ Free,VC++6.0,VC++.net等。

層次越高,越具長期性,層次越低,越容易被更替和淘汰。優秀算法的生命力很強,能生存幾十年、幾百年甚至幾千年;方法學具有計算機發展的時代特征,一般有幾十年的生存期;計算機語言則不斷推陳出新,有的能用幾十年,有的則幾年後就被人遺忘;而集成開發環境更加短命,IDE的新產品不斷出現,版本幾年一更新,程序員需要不斷去做升級,跟上變化。

2.2 層次化教學的心理學和教育學基礎

層次化教學的思想雖然源自教學實踐,從學習理論的觀點來看也是具有它的理論基礎的。

關於學習理論,經曆了一個從行為主義,到認知學派,再到建構主義的發展曆程。最早的行為主義學習理論以華生(Watson)為代表,將巴甫洛夫的條件反射理論應用到教育傳播和學習理論的研究中去。但是行為主義的學習理論過於強調環境對學習的決定作用,認知主義的學習理論則以學習者主體為主要決定因素,指出學習過程是一個學習者根據個體的已有知識和外部環境加工形成新知識的過程。建構主義更加強調學習者的主觀能動性,提出學習是一個發現過程,而不是一個接受過程,更不是信息傳送過程[14]。

如果單純從行為主義出發,知識的分層至少能夠提高刺激-反應(S-R)聯係的形成效率。

在學習理論的認知學派中,奧蘇伯爾(Ausubel)提出的先進組織者(Advanced Organizers)理論指出,教師的角色是教學內容的組織者,教師的責任是將教學內容進行有意義的組織,使得它成為學生長時記憶的骨架(umbrella),起到提綱挈領的作用,具體的知識將由學生自己填充。教學內容層次化結果就是一種長時記憶的骨架或教學內容的先進組織,這種層次化模式還具有如下優點。

⑴ 有利於注意(Attention)的參與。注意是感知的重要特征和學習效率的基本保證,在學習過程中,感知到的內容包括知識點本身、知識點所處的層次、教學環境、教師的態度以及幹擾信息等,層次作為其中一種特意安排的新感知內容引導了注意的方向,強化了知識點本身,使學習者盡早拋棄非相關內容,避免了許多混亂的感知內容進入後續的加工過程。

⑵ 它是概念形成的良好框架。能激活原有的知識(長時記憶),與感知到的新知識經重新編碼成為新的長時記憶,從而使新概念以及該新概念所屬的層次存儲在長時記憶中,由於這些概念在存儲時增加了“所屬層次”的編碼,使以後的檢索和理解更加快速和準確。

⑶ 有利工作記憶中塊(Chunk)的信息量提高和加工的效率。工作記憶是一種短時記憶,其中的內容以塊為單位,是學習過程的加工對象,米勒(Miller)認為工作記憶中塊的個數是相對固定的(約7±2),與塊的信息量(比特數)無關。層次化處理很容易將同層的知識同塊化,從而提高塊的信息量和學習和記憶加工的效率。

⑷ 一定程度上迫使教師的隱性知識(Tacit Knowledge)轉換為顯性的可分解的步驟,降低學生的學習難度。例如,C++的#include命令不僅是一條簡單的語句,而且會涉及到後續的文件和存儲目錄,含有語法和IDE兩層知識,分層次的教學就自然使教師講解#include命令時分解到位,兩層均及,使學生能充分建立該語句的概念和機製。