摘要:針對高校計算機相關(guān)專業(yè)C程序設(shè)計課程教學(xué)質(zhì)量不高的問題,提出以構(gòu)建和完善學(xué)生知識系統(tǒng)為核心的框架式教學(xué)法。該教學(xué)法根據(jù)學(xué)習(xí)過程中的認(rèn)知特點,在重構(gòu)教學(xué)內(nèi)容的基礎(chǔ)上,將教學(xué)過程分為2個階段,第1階段通過核心知識的講授幫助學(xué)生形成簡單知識框架,第2階段通過反復(fù)接觸、穿插教學(xué)的方式幫助學(xué)生不斷豐富和完善該框架,最終完成整個課程的教學(xué)。
關(guān)鍵詞:C程序設(shè)計;教學(xué)法;認(rèn)知
0 引言
C程序設(shè)計是高校計算機相關(guān)專業(yè)的核心課程之一,課程教學(xué)質(zhì)量對學(xué)生專業(yè)水平和后續(xù)課程學(xué)習(xí)有顯著影響。由于受到諸多因素制約,該課程教學(xué)效果一直不理想,如何提高教學(xué)質(zhì)量成為高校相關(guān)專業(yè)教學(xué)過程中面臨的問題。
造成現(xiàn)狀的原因有學(xué)生的專業(yè)基礎(chǔ)薄弱,教學(xué)時間偏少等客觀因素。除此之外,教師在教學(xué)內(nèi)容組織和教學(xué)過程安排等方面的問題也是導(dǎo)致教學(xué)質(zhì)量不高的重要原因。
C程序設(shè)計的教學(xué)目標(biāo)是了解、理解、掌握和C語言程序設(shè)計相關(guān)的知識,具備運用C語言解決實際問題的能力。該目標(biāo)的實現(xiàn)涉及知識、教學(xué)和實踐3個方面的內(nèi)容。
在傳統(tǒng)C程序設(shè)計課程教學(xué)過程中,知識被分解成若干完整且相對獨立的單元,教師針對每個單元開展集中教學(xué),最終完成整個知識體系的教學(xué)工作,我們將它稱為積木式教學(xué)法,具體情況如圖1所示。
積木式教學(xué)法的缺點顯而易見,首先,學(xué)生學(xué)習(xí)單一知識點的時間短,因此學(xué)習(xí)壓力大。其次,教學(xué)過程中對知識進(jìn)行串聯(lián)和重復(fù)教學(xué)的時間少,不利于學(xué)生系統(tǒng)性地認(rèn)識和掌握知識。再次,由于“指針”、“結(jié)構(gòu)體”、“文件”等知識通常被安排在最后進(jìn)行教學(xué),時間有限,而客觀上這些知識又需要較多教學(xué)時間,因此教學(xué)效果不理想。最后,這樣的安排容易使教學(xué)過程變得枯燥、乏味,導(dǎo)致課堂氛圍差,學(xué)生開小差的情況多。
在教學(xué)過程中,知識同時扮演著作為領(lǐng)域的知識和作為學(xué)習(xí)對象的知識2種不同的角色,二者在內(nèi)容上基本一致,但組織結(jié)構(gòu)上卻存在較大差異。前者只考慮領(lǐng)域本身的特性,后者必須兼顧領(lǐng)域特征和學(xué)習(xí)者認(rèn)知規(guī)律2個方面。積木式教學(xué)法之所以難獲得理想的效果,主要原因在于教學(xué)過程中忽視了學(xué)習(xí)者的認(rèn)知規(guī)律,沒有對知識結(jié)構(gòu)和教學(xué)方法做相應(yīng)的調(diào)整。
針對積木式教學(xué)法中存在的問題,文章提出C程序設(shè)計課程的框架式教學(xué)法。該教學(xué)法在充分考慮學(xué)生認(rèn)知規(guī)律的基礎(chǔ)上,對知識進(jìn)行重組,先讓學(xué)生形成關(guān)于C程序設(shè)計的簡單知識框架,然后不斷豐富和完善該框架讓學(xué)生形成完整的知識體系。
框架性知識包含了C語言程序設(shè)計過程中涉及的大部分內(nèi)容,但每部分內(nèi)容只包含其中最基礎(chǔ)、最關(guān)鍵的部分。例如,數(shù)組部分只包含一維數(shù)組,函數(shù)部分只包含函數(shù)的基本要素和基本形式,具體情況如圖2所示。
和積木式教學(xué)法相比,框架式教學(xué)法的教學(xué)過程呈現(xiàn)出螺旋式、循環(huán)往復(fù)的特征。例如,在學(xué)期中期引入指針的概念,在后續(xù)相當(dāng)長時間內(nèi),通過陸續(xù)引入指針和數(shù)組、鏈表、函數(shù)指針等概念不斷強化學(xué)生對指針概念的認(rèn)識,最終完成對這一概念的教學(xué)。
1 知識重構(gòu)
知識重構(gòu)是在領(lǐng)域知識基礎(chǔ)上,根據(jù)學(xué)習(xí)者的認(rèn)知規(guī)律,對知識的組織方式進(jìn)行調(diào)整,以降低學(xué)習(xí)難度,提高學(xué)習(xí)效率的過程。
1.1 學(xué)習(xí)過程中的認(rèn)知特點
學(xué)習(xí)是一個從“不知道”到“知道”,從“不會”到“會”的過程,這個過程具有明顯的階段性特征,完整的學(xué)習(xí)過程大致分為以下幾個階段。
(1)接觸階段:這是一個非正式學(xué)習(xí)階段,通常無需考慮學(xué)習(xí)效果,目的只是對所學(xué)內(nèi)容建立大致印象,學(xué)習(xí)者在這個階段比較自由,甚至可以完全憑個人喜好選擇學(xué)習(xí)內(nèi)容。教材的概述或?qū)д摬糠种饕獮檫@個階段的教學(xué)服務(wù)。
(2)弱知識體系階段:在這個階段,學(xué)習(xí)者逐漸在大腦中形成所學(xué)對象的大致輪廓,并逐漸脫離先前對目標(biāo)對象一無所知的狀態(tài)。學(xué)習(xí)者在這個階段往往會產(chǎn)生較多的興奮點,形成主動完善知識輪廓并將其清晰化的內(nèi)在沖動。這個階段需要幾周甚至幾個月的時間才能真正完成。
(3)知識體系的豐富和完善階段:在這個階段,學(xué)習(xí)者大腦中的知識拼圖不斷被完善,并逐漸變得清晰和完整。
(4)強知識體系階段:學(xué)習(xí)者對所學(xué)對象形成了系統(tǒng)化的知識體系,對其中的主要概念有了較為清晰、準(zhǔn)確的認(rèn)識,能夠比較自如地運用所學(xué)知識。
學(xué)習(xí)過程具有明顯的重復(fù)性,漸進(jìn)性特征。計算機科學(xué)是數(shù)學(xué)的一個分支,大部分概念對初學(xué)者都比較抽象,需要經(jīng)過反復(fù)接觸、思考、實踐才能真正理解。因此,教師在教學(xué)過程中應(yīng)盡可能為學(xué)生多提供機會,讓他們反復(fù)接觸、揣摩和實踐所學(xué)內(nèi)容,以幫助理解和掌握。
學(xué)習(xí)過程本身是一個知識系統(tǒng)化的過程,存在著對知識的系統(tǒng)性認(rèn)識需求。知識系統(tǒng)不僅有助于學(xué)習(xí)者從宏觀上把握學(xué)習(xí)對象,還有助于對知識細(xì)節(jié)的學(xué)習(xí)。因此,讓學(xué)習(xí)者盡早建立知識的系統(tǒng)結(jié)構(gòu),有助于提高教學(xué)質(zhì)量。
此外,學(xué)習(xí)過程中還存在一些傾向性特征。新鮮的、容易的、吸引人的或與自身相關(guān)的內(nèi)容往往更容易引起學(xué)習(xí)者的興趣,也更容易被掌握。因此,教學(xué)過程中有意識地做一些調(diào)整,能對教學(xué)效果帶來較大的改觀。例如,將第1個C語言程序從顯示“hello world”改成顯示卡通的字符圖形等。
1.2 教學(xué)內(nèi)容重構(gòu)
針對學(xué)習(xí)過程中的認(rèn)知特點,我們對課程知識進(jìn)行重組,教學(xué)內(nèi)容被分成框架基礎(chǔ)知識和擴展知識2部分??蚣芑A(chǔ)知識是構(gòu)建系統(tǒng)性認(rèn)知框架的必要內(nèi)容,包括基本概念和主要知識點的基礎(chǔ)部分;擴展知識則是對基礎(chǔ)知識框架的豐富和完善。
框架基礎(chǔ)知識和擴展知識的劃分不以知識點作為基本單元。同一知識點,可能一部分內(nèi)容屬于基礎(chǔ)知識部分,另一部分內(nèi)容則屬于擴展知識。例如,函數(shù)的基本概念、簡單調(diào)用屬于基礎(chǔ)知識,而遞歸函數(shù)、帶參main函數(shù)、函數(shù)指針等內(nèi)容則屬于擴展知識。建立最簡單知識框架需包括以下內(nèi)容。
(1)計算機系統(tǒng)結(jié)構(gòu):處理器、存儲器和I/O設(shè)備在程序運行中扮演的角色。
(2)最簡單的程序:程序基本框架。
(3)基本數(shù)據(jù)類型:3種基本數(shù)據(jù)類型、變量、地址、指針等基本概念。其中地址和指針只是提及并不做深入介紹。
(4)基本算術(shù)運算和I/O:簡單算術(shù)運算和printf、scanf語句。
(5)程序控制結(jié)構(gòu):選擇結(jié)構(gòu)只介紹if語句,循環(huán)結(jié)構(gòu)只介紹while語句。
(6)函數(shù)基本概念:函數(shù)組成要素、基本形式、函數(shù)定義和調(diào)用。
擴展知識讓學(xué)生對具體知識點的認(rèn)識更深入、更準(zhǔn)確,這部分知識被分成2個階段進(jìn)行教學(xué),其中第1階段的知識包括以下內(nèi)容。
(1)程序控制結(jié)構(gòu):switCh語句、for語句,選擇/循環(huán)嵌套,多種控制結(jié)構(gòu)復(fù)合語句,程序跳轉(zhuǎn)(break、continue)等。
(2)函數(shù):遞歸函數(shù)、帶參數(shù)的main函數(shù)、指向函數(shù)的指針等。
第2階段知識包括以下內(nèi)容。
(1)常量類型,靜態(tài)數(shù)據(jù)類型。
(2)特殊運算符::?運算符、自增自減運算符等。
(3)復(fù)雜數(shù)據(jù)類型:聯(lián)合、枚舉類型等。
(4)文件操作:文件指針、多種輸入/輸出方式。
(5)宏定義,類型定義(typedef)。
(6)多維數(shù)組。
(7)位操作。
這種組織方式使知識點在教學(xué)過程中呈現(xiàn)條狀,而不是塊狀特征,某些數(shù)組、指針等較難理解的概念被提前引入,并在此后直至課程結(jié)束的很長一段時間里反復(fù)教學(xué)。這種安排的優(yōu)點在于學(xué)生接觸單一知識點的時間被拉長,使他們有更充分的時間去消化這些知識;學(xué)生對基礎(chǔ)知識的掌握更扎實,進(jìn)而促進(jìn)他們對高階知識的學(xué)習(xí);由于知識安排本身具有循序漸進(jìn)的特點,因此課程的教學(xué)難度得以降低。
2 框架式教學(xué)過程
在知識重構(gòu)基礎(chǔ)上,教學(xué)過程被分為2階段。第1階段講授形成認(rèn)知框架所需的關(guān)鍵知識,幫助學(xué)生建立對課程知識的系統(tǒng)認(rèn)知,這階段約占整個教學(xué)時間的1/2-2/3左右。第2階段通過對知識點的深入講解和拓展,豐富和完善學(xué)生的認(rèn)知結(jié)構(gòu),這部分約占整個教學(xué)時間的1/3-1/2左右。
2.1 建立知識框架
框架式教學(xué)法第1階段的教學(xué)涵蓋了簡單程序控制結(jié)構(gòu),函數(shù)概念,指針、地址,文件基本概念和操作,計算機系統(tǒng),程序概念,基本數(shù)據(jù)類型,基本I/O大部分知識,但是經(jīng)過重構(gòu),這些知識點在廣度和深度上都大為降低。例如數(shù)據(jù)類型部分只介紹3種基本數(shù)據(jù)類型,程序控制結(jié)構(gòu)部分只講解最簡單的if語句和while語句,for語句、do…while語句以及break/continue的使用都被移至后一階段講解。
這階段對學(xué)生的要求也有所變化,我們不要求學(xué)生完全理解所有內(nèi)容,而是讓他們從宏觀上搞清楚C程序設(shè)計是怎么回事,包含哪些內(nèi)容,可以做哪些事情等,同時讓學(xué)生獲得關(guān)于基本概念的感性認(rèn)識。學(xué)習(xí)難度的降低有助于保持學(xué)生的學(xué)習(xí)積極性,使他們?nèi)菀讖膶W(xué)習(xí)過程中獲得成就感和滿足感,促進(jìn)他們進(jìn)一步學(xué)習(xí)其他內(nèi)容。授課進(jìn)度的加快一方面能促進(jìn)學(xué)生思考和自學(xué),另一方面也容易保持新鮮感。
由于缺乏相關(guān)專業(yè)知識背景,學(xué)生在學(xué)習(xí)過程中會普遍遇到專業(yè)術(shù)語理解困難的問題。在教學(xué)的第1階段,由于學(xué)生在較短時間內(nèi)接觸到大量專業(yè)概念,因此這類問題表現(xiàn)得更為突出。針對這一問題,我們一方面花費大量時間和精力用于具體教學(xué)手段和方法的設(shè)計,例如動畫、圖形、文字多種形式綜合講解,引人大量類比和比喻等;另一方面將概念和實例相結(jié)合,多次重復(fù)講解以幫助學(xué)生理解。
2.2 螺旋式的教學(xué)過程
框架式教學(xué)法的教學(xué)是一個呈螺旋式上升的過程,具體過程如圖3所示。課程主要知識點會在不同的時間進(jìn)行多次、分層次的講解。對于重要知識點,第1次講解比較簡單,讓學(xué)生建立初步印象,后面的講解會不斷深入,側(cè)重知識點的理解和掌握。
螺旋式的教學(xué)過程更多地體現(xiàn)在函數(shù)的高階知識(遞歸函數(shù),帶參數(shù)的main函數(shù))、多維數(shù)組、鏈表等系統(tǒng)性知識的教學(xué)中,位運算、宏定義等非系統(tǒng)性知識比較零碎,內(nèi)容也不多,其教學(xué)過程不具備螺旋式特征。
與傳統(tǒng)積木式教學(xué)法相比,新的教學(xué)方法比較符合學(xué)習(xí)過程的重復(fù)性、漸進(jìn)性特征。學(xué)生通過多次接觸、學(xué)習(xí)同一知識,對知識的認(rèn)識從易到難逐漸深入。
2.3 課內(nèi)實驗
為了配合新教學(xué)方法,課程實驗被分為基礎(chǔ)性實驗和提高性實驗2部分。這2部分在內(nèi)容上有重疊,但是在深度和難度上存在明顯差異。學(xué)生在第1階段教學(xué)過程中完成基礎(chǔ)性實驗,這些實驗相對簡單,以體驗為主,目的是讓學(xué)生理解知識點相關(guān)基本概念,建立感性認(rèn)識,學(xué)生只要正確理解相關(guān)概念就能完成。提高性實驗需要學(xué)生經(jīng)過認(rèn)真思考才能解決。以“函數(shù)”為例,基礎(chǔ)實驗只安排函數(shù)定義、聲明、調(diào)用方面的簡單問題,而進(jìn)階實驗則安排遞歸函數(shù)、函數(shù)與數(shù)組的結(jié)合等相對復(fù)雜的問題。在時間安排上,提高性實驗在所有基礎(chǔ)實驗完成之后進(jìn)行。目的是讓學(xué)生對大部分基本概念都有初步認(rèn)識之后再著手解決相對復(fù)雜的問題,這樣既有助于學(xué)生主動尋找不同知識點之間的聯(lián)系,交叉運用,又有助于學(xué)生加深對各知識點的理解。
3 教學(xué)輔助措施
對課程內(nèi)容的重構(gòu)和教學(xué)方式的調(diào)整是框架式教學(xué)法的核心,但是教學(xué)質(zhì)量的提高還有賴于輔助手段的調(diào)整和優(yōu)化,現(xiàn)就主要教學(xué)輔助措施的調(diào)整做詳細(xì)的說明。
首先,為了輔助日常教學(xué)和實驗,我們根據(jù)初學(xué)者的認(rèn)知特點,設(shè)計了1套完整的示例程序,與其他例程相比,具有以下特點。
(1)簡單易懂。例程的設(shè)計以方便學(xué)生閱讀和理解為基本原則,盡量減少甚至避免出現(xiàn)技巧性代碼。如編寫分支型程序時盡量使用if……else結(jié)構(gòu),少用“:?”之類的運算符。
(2)針對性強。例程中不包含容易引起誤解,或難以理解的代碼。如第1個C語言程序中有意刪除了#include語句,main函數(shù)的返回值類型也設(shè)置成void類型,目的是讓學(xué)生把注意力集中于核心代碼,防止無關(guān)代碼對學(xué)習(xí)造成不必要的干擾。
(3)問題典型,貼近生活。選擇和學(xué)生日常生活比較接近,或容易被接受的領(lǐng)域問題進(jìn)行講解,如閏年判斷、身份證信息處理、圖書館管理系統(tǒng)設(shè)計等。
此外,新的教學(xué)方法對學(xué)生的學(xué)習(xí)態(tài)度有更高的要求,強調(diào)學(xué)生的自主學(xué)習(xí),要求學(xué)生有較強的學(xué)習(xí)積極性和主動性。為了幫助學(xué)生改進(jìn)學(xué)習(xí)方法,提高學(xué)習(xí)效率,我們在上課過程中明確要求學(xué)生采用聽課、模仿、閱讀、思考、交流和實踐等多種方法進(jìn)行學(xué)習(xí)。
4 教學(xué)實踐分析
通過針對不同年級、不同層次學(xué)生的反復(fù)實踐和比較,新的教學(xué)方法從提出、嘗試到定型歷時約7年,和傳統(tǒng)積木式教學(xué)法相比,框架式教學(xué)法的優(yōu)勢體現(xiàn)在以下幾個方面。
(1)提高了課程教學(xué)質(zhì)量。新教學(xué)方法實施之后,學(xué)生不僅能更扎實地掌握基本知識和基本概念,對數(shù)組、函數(shù)、指針等重難點知識的掌握情況也得到明顯提高,同時,學(xué)生的獨立思考和動手能力都有較大程度的提高。
(2)擴大了講課范圍。新教學(xué)方法提高了教學(xué)效率,一些原本因時間所限難以詳細(xì)介紹的內(nèi)容(如指針、結(jié)構(gòu)體和文件等)能夠講解得更深入、詳細(xì)。一些原本沒有時間講解的內(nèi)容(如帶參數(shù)的main函數(shù)、指向函數(shù)的指針等)也能在課上進(jìn)行講解。
(3)挖掘了優(yōu)秀學(xué)生的潛能。新教學(xué)方法為學(xué)生提供了大量自學(xué)機會,經(jīng)過半學(xué)期左右的鍛煉,少數(shù)優(yōu)秀學(xué)生能通過自學(xué)掌握剩下的大部分知識。
(4)保護(hù)了學(xué)生的學(xué)習(xí)興趣。新教學(xué)方法降低了課程學(xué)習(xí)難度,減少了學(xué)生學(xué)習(xí)過程中的挫折感,保護(hù)了學(xué)生的興趣。
從實踐過程中我們發(fā)現(xiàn),框架式教學(xué)法的實施效果受學(xué)生的學(xué)習(xí)態(tài)度影響比較明顯。在這種教學(xué)模式下,學(xué)習(xí)態(tài)度好的學(xué)生無論在知識的掌握程度還是在能力的提高方面都比積木式教學(xué)模式培養(yǎng)的學(xué)生有更好的表現(xiàn)。但是對于學(xué)習(xí)態(tài)度不好的學(xué)生,框架式教學(xué)法的優(yōu)勢并不明顯。
5 結(jié)語
和傳統(tǒng)積木式教學(xué)法相比,框架式教學(xué)法提高了課程教學(xué)質(zhì)量和效率,培養(yǎng)了學(xué)生自主學(xué)習(xí)、獨立思考和解決問題的能力。該方法不但適用于C程序設(shè)計課程的教學(xué),對其他課程,特別是程序設(shè)計語言類課程的教學(xué)也有借鑒意義。目前,該教學(xué)方法仍不完善,有待進(jìn)一步改進(jìn)。首先,第一階段的內(nèi)容組織和授課進(jìn)度安排還需要進(jìn)一步完善,如何根據(jù)教學(xué)情況,特別是學(xué)生學(xué)習(xí)情況,動態(tài)調(diào)整教學(xué)內(nèi)容也需要進(jìn)一步研究。其次,該方法受學(xué)生的學(xué)習(xí)態(tài)度和學(xué)習(xí)習(xí)慣影響比較明顯,如何在教學(xué)過程中提高和保持學(xué)生的積極性、主動性和興趣,幫助學(xué)生養(yǎng)成良好的學(xué)習(xí)習(xí)慣是今后需要解決的問題。最后,該教學(xué)方法目前還缺少教材支持,與其配套的教材仍在編寫過程中。