摘要:在程序設計教學中,實例設計的優劣影響整個程序設計的教學效果。本文以VB程序設計教學為例,提出一種基于建構主義學習理論、融合情境創設教學理念的實例設計方法。使用生活中真實熟悉的軟件實例,從整體上由淺入深漸進式把握程序設計的教學。教研組多次教學實踐證明,使用該方法設計實例進行教學,易于激發學生的學習興趣和探究欲望,利于學生的主動意義建構。
關鍵詞:建構主義;程序設計教學;實例設計;意義建構
1 研究背景
在程序設計教學中,為了幫助學生理解某個知識點的內容,教師通常會針對知識點設計一些實例,中間不乏一些經典實用的好例。但是,很多時候教師設計用例只是為了讓學生理解知識點而已,與上下文知識點沒有聯系,割裂了程序設計課程內在的邏輯性和整體性,不利于學生的主動意義建構。甚至有些用例只是為了舉例而舉例,完全脫離實際生活,讓學生感覺程序設計這門課程沒有實際意義,逐漸喪失學習興趣。實例設計的優劣影響整個程序設計的教學效果。如何科學地進行教學實例的設計,是本文研究的內容。筆者根據多年的程序設計教學經驗和教學研究,在建構主義教學觀的指導下,提出一種基于建構主義學習理論、融合情境創設教學理念的實例設計方法。下面以Visual Basic程序設計為例,講述程序設計教學中的實例設計方法。
2 基于建構主義教學觀的實例設計方法
建構主義(constructivism)認為,知識不是通過教師傳授得到,而是學習者在一定的情境即社會文化背景下,借助其他人(包括教師和學習伙伴)的幫助,利用必要的學習資料,通過意義建構的方式而獲得。在建構主義學習環境下,教學設計不僅要考慮教學目標分析,還要考慮有利于學習者建構意義的情境的創設問題,并把情境創設看做是教學設計的最重要內容之一。由于建構主義強調學習的主動性、社會性和情境性,因此建構主義對學習和教學提出了許多新的見解,內容如下:
第一,建構主義教學要求學生在復雜的真實情境中完成任務;教學應使學習在與現實情境相類似的情境中發生,以解決學生在現實生活中遇到的問題為目標。
第二,在教學過程中,學習內容要選擇真實性的任務,在課堂上展示出與現實中專家解決問題相類似的探索過程,提供解決問題的原型,并指導學生的探索。
第三,在教學進程的設計上,建構主義者提出要呈現整體性的任務,讓學生嘗試進行問題的解決。在此過程中,學生要自己發現完成整體任務所需完成的子任務,以及完成各級任務所需的各級知識技能。
程序設計是一門整體性和邏輯性很強的課程,實例的設計要注重這一特征,設計的實例要體現這一特征。光靠知識點設計實例幫助學生理解遠遠不夠,應該從整體上引導學生主動系統地建構知識。建構主義學習理論認為,意義建構是學習的目的,它要靠學生
自覺、主動去完成,教師和外界環境的作用都是為了幫助和促進學生的意義建構。因此,為了使教學實例設計得更科學,更符合學生的認知規律,教學設計需要在建構主義教學觀的指導下進行。筆者提出的這種基于建構主義的實例設計方法,注重課程內在的邏輯性和整體性,使用生活中真實熟悉的軟件實例,從整體上由淺入深漸進式把握程序設計的教學。通過少數幾個軟件實例,將多個上下文知識點串成一個整體,并系統地講述。每一章節對應軟件實例的某個(些)功能部分,每個部分又是獨立的小實例。程序設計課程教學之初,教師就把該課程教學的綜合實例展示給學生,從而激發學生的學習興趣和探究欲望。
使用這種綜合實例教學,脈絡清晰,系統完整,不但可以幫助教師實施整體教學,也利于學生主動意義建構,加強邏輯思維訓練,并提高解決實際問題的能力。當然,這種實例設計并不排除列舉一些好的小例,針對具體某個知識點講解。在實際的教學中,教師可以靈活地運用兩種方式,以綜合軟件實例設計為主,以知識點設計小例為輔。基于建構主義的實例的設計方法包括兩步:實例的選取和實例的分解。
2.1 實例的選取
程序設計的教學希望能夠達到兩個基本的目的:第一,幫助學習者理解計算機軟件背后的奧妙;第二,培養學習者基本的程序設計能力。計算機文化素質教育要求學生不光要學會使用常用的基本軟件,還要理解這些軟件背后的基本實現原理。如今,計算機的應用已經深入到社會的各個領域,使用者通過計算機軟件操作計算機,讓計算機為自己服務,而計算機軟件是通過計算機語言編寫的。因此,在計算機語言程序設計的教學中,選取常見軟件實例進行教學,可以達到上述兩個目的。基于建構主義學習環境的教學實例的選取,要考慮到以下幾個因素:現實性、學生感興趣的程度、覆蓋知識面的范圍和難易程度。
1)現實性原則是軟件實例選取的一個重要原則。建構主義環境下的教學實例設計要注意結合學生實際,貼近學生生活,教師要將現實生活中發生的與課堂教學有關的素材引入課堂,以此拉近程序設計和生活的距離,培養學生“處處皆學問”的意識。同時讓學生感覺到學習程序設計可以解決實實在在的問題,學習的東西很有用,教師不再是為了舉例而舉例,學生不再是為了學習而學習。
2)選取的實例要是學生感興趣的,樂于學習的。愛因斯坦說:“興趣是最好的老師。”學生對所學內容感興趣,積極性就會明顯提高,才能樂于接受,此所謂“好之者不如樂之者”。“人以物思,辭以情發”。情從何來?樂從何生?這就要求在教學過程中,教師為學生學習創設的實例能夠激發學生的學習興趣,激起學生探究的欲望。
3)選取的實例覆蓋知識面的范圍要廣。一門課程只需精選少數幾個軟件實例,就可以覆蓋整個課程絕大部分的知識面和重難點,這樣能幫助學生從整體上系統全面、邏輯清晰地把握程序設計,自然而然地將上下文知識點主動聯系起來,進行意義構建。
4)在選取軟件實例時,需要根據學生已有的認知結構選取難易適中的實例。任何學習都要涉及到學習者原有的認知結構,即學習是以學習者自己的經驗為背景,對外部信息進行主動的選擇、加工和處理,從而獲得自己的意義。教師進行教學實例設計時,應關注學生原有的認知結構。選擇的實例既要有一定的難度,又要學生經過努力可以解決,這樣的問題是引起學生探究,激發學生思維的主要條件。太易不能激發學生探究的興趣,太難又會使學生感到力不從心,不知從何下手,因而可能會失去探究的學習興趣。
考慮到上述因素,本文例舉了兩個軟件實例:字處理軟件和網絡聊天工具。
Microsoft Office Word是常用的字處理軟件,在人們的工作和生活中扮演著重要的角色,也是計算機初學者需要學習的軟件之一。QQ聊天程序也是人們上網聊天時常用的工具。這兩個軟件是學生經常接觸和使用的軟件,熟悉、真實,來源于生活,軟件實現覆蓋的知識面廣。更重要的是,通過這幾年的實踐教學,我們發現學生對兩個軟件背后實現的奧秘饒有興致,樂于探究。當然,以軟件Word和網絡聊天工具QQ作為教學實例,涉及的內容太多,在程序設計教學時,教師可以根據具體教學任務靈活選取幾個基本的功能模塊,一步一步幫助學生揭開軟件背后的奧秘。這樣不僅可以幫助學生深刻地理解軟件,從而更好地使用軟件,同時潛移默化地培養了學生的程序設計能力,提高其計算機文化素養。
2.2 實例的分解
傳統的教學,學生通常選擇缺乏“認知沖突”的學習道路,也就是說學生傾向于選擇對他們沒有難度的任務。而在建構主義教學中,學生需要面對體現認知復雜性的真實世界的情境,學生要在復雜的真實情境中完成任務,這對他們無疑是個挑戰。對沒有任何編程經驗的學生而言,要去實現這兩個軟件的某些功能模塊,是非常困難的。面對這樣一個硬骨頭,怎么啃下來呢?由于程序設計的學習是一個循序漸進的過程,軟件實例的實現過程也可以循序漸進,因此按照教學進度對實例進行合理的分解、簡化,可以解決這個問題。實例的分解采取兩種方式:一是橫向分解;二是縱向分解。
1)橫向分解是不斷地增加新的功能實現。
針對Word軟件,我們可以選取如文本的編輯排版和查找/替換等常用功能進行橫向分解。譬如在學習了命令按鈕控件、文本框控件的基本知識后,就可以設計并實現如圖1所示的“我的文本編輯器”。Word主要是通過菜單和工具欄提供操作命令的,然而目前我們還沒有學習菜單和工具欄的知識,就可以先使用命令按鈕組建工具欄;現階段還不能實現的功能就以灰色顯示,禁止使用。隨著學習的推移,在學習了相關的知識技術點后,一步一步實現查找、替換、新建、保存、字體等新功能。在學習了菜單、工具欄、RichTextBox控件和MDI應用程序設計等相關知識和技術后,我們可以設計與Word環境類似的“我的文本編輯器”,如圖2所示。當學習和掌握的知識技術越來越豐富后,我們就可以把“我的文本編輯器”的功能逐漸完善,慢慢地使其接近任務目標。
我們選擇軟件實例進行教授的初衷,并不是一開始就要求學生完全獨立地實現這個任務。而是通過教師對教學進度的安排,借助這個實例的實現,幫助學生理解這個軟件,從整體上系統地把握程序設計,幫助學生主動意義建構,加強學生的邏輯思維訓練,從而潛移默化地培養學生的程序設計能力。隨著學習能力和程序設計能力的提高,學生通常會主動探究該軟件其他一些功能模塊的實現方法,從而逐漸達到教學的真正目的。
2)縱向分解是不斷地用所學的新技術實現同一功能,一步一步完善該功能。
下面針對QQ程序注冊與登錄這一個功能進行縱向分解,將復雜的QQ程序注冊與登錄功能由易而難地分解成以下幾個小例來實現。
例1:模仿QQ網絡聊天程序設計“MyQQ”聊天程序的用戶登錄與注冊界面。
例2:模仿QQ網絡聊天程序,利用簡單變量實現本地一個用戶注冊與登錄。
例3:模仿QQ網絡聊天程序,利用數組實現本地多個用戶注冊與登錄。
例4:模仿QQ網絡聊天程序,利用文件在本地實現用戶注冊與登錄。
例5:模仿QQ網絡聊天程序,利用數據庫技術在本地實現用戶注冊與登錄。
例6:模仿QQ網絡聊天程序,利用網絡和數據庫相關技術實現網絡注冊與登錄。
隨著教學的循序漸進,在學習了標簽、文本框和命令按鈕幾個常用的控件后,學生就可以設計出例1這樣的界面。在學習了簡單變量和if語句的基本知識后,學生就可以輕松實現例2。在例2中,用戶注冊的用戶名和密碼只是使用兩個簡單變量保存起來,因此一次只能注冊一個用戶。在學習了數組后,學生就可以使用數組輕松實現例3,實現多個用戶注冊。在例2和例3中,注冊的用戶信息沒有永久保存,因此當程序運行結束后,變量或數組的內容不復存在,以致下一次運行該程序時,還得重新注冊用戶名和密碼才能登錄。在學習了VB文件的訪問后,我們可以將用戶注冊的信息保存到文件中,這樣就在例4完善了例2和例3的不足。但是利用文件存取用戶信息的安全性能不高,而且存在數據的獨立性差、冗余度大、一致性差等問題。由于數據庫系統提供數據安全性、完整性、并發控制和恢復功能,在學習了數據庫相關知識后,我們就可以利用數據庫文件保存用戶注冊信息,完善了例4的不足,這就是例5。例1至例5都是在本地實現用戶的注冊和登錄,本地兩個用戶進行聊天并沒有實際的意義,真正意義上的聊天是通過網絡進行的。隨著教學的進行,在學習網絡編程和Winsock控件后,我們就可以實現例6了,并且可以利用Winsock控件來編寫網絡聊天的程序,具體實現可參考文獻[6]。同時可以布置實驗作業“利用Winsock控件實現迷你聊天室”,具體實現可以參考文獻[7]。實驗課是理論課程教學的延續,我們讓學生在實驗課堂完成軟件實例相關的功能部分,從而推動實驗課程設置改革。
上述兩個實例是基于文獻[7]的教學進度進行分解的。教師可根據使用教材的具體情況,靈活地結合這兩種實例分解方式,合理地將實例簡化、拆分,由簡單到復雜,逐步豐富和完善實例的功能,最終達到我們的教學目的。

3 結語
建構主義教學的目的是培養新世紀善于學習的終生學習者。筆者基于建構主義教學觀,提出一種融合了建構主義、情境創設教學理念的實例設計方法,在程序設計教學中使用貼近學生生活的真實熟悉的軟件實例,從整體上由淺入深漸進式地把握程序設計的教學,不斷地引出認知沖突,從而激發學生的探究欲望,提高學生的學習興趣。在后續的學習過程中不斷地解決沖突,幫助學生主動意義建構。在不斷豐富和完善實例,使其一步一步接近真實的過程中,學生不僅鍛煉了邏輯思維,程序設計能力也在潛移默化中提高,同時獲得了強大的成就感,更加堅定學習意愿。更重要的是,這種建構主義的探索學習方式有利于培養學生成為一個善于學習、善于思考和善于解決問題的。
參考文獻:
[1]Jonassen D,Davidsoo M,Collins M,et al,Constructivism and Computer-mediated Communication in Distance Education[J].The American Journal 0f Di stance Education,1995,9(2):7-26.
[2]黃玲玲,陽小華.程序設計教學中的情境創設[J].計算機教育,2007(1 5):34-36.
[3]何克抗,建構主義:革新傳統教學的理論基礎(上)[J].電化教育研究,1997(3):3-9.
[4]何克抗.建構主義:革新傳統教學的理論基礎(中)[J].電化教育研究,1997(4):25-27.
[5]陽小華,李海燕.大學Visual Basic程序設計基礎[M],北京:北京郵電大學出版社,2010.
[6]黃玲玲,楊剴,王穎.在VB中使用Winsock控件實現局域網通信[J].信息技術,2005(6):24-26.
[7]陽小華,王穎.大學Visual Basic程序設計實驗教程[M].北京:北京郵電大學出版社,201