趙 凱,吳 迪,胡玉娟,張 娜
(合肥師范學院公共計算機教學部,安徽 合肥 230601)
C語言程序設計是普通高等學校理工科專業(yè)開設的面向過程設計的一門計算機語言課程。因為它是計算機專業(yè)入門的一門基礎課程,對學生了解和深入學習計算機課程具有開門磚的作用,它的普及范圍逐年加大。然而,因為學習人群的數目較多,相應的知識結構層次、興趣愛好不同,使得課程教學面臨授課吃力,教學效果不理想,學生的掌握程度大打折扣。另外一方面,這種問題負面影響深遠,使得部分學生產生厭學情緒,不利于其他課程的學習。
因此,對該門課知識結構進行分析,抽象出學生學習的具體目標,并把相關的概念與實踐結合起來,讓學生被動接受的學習方式轉變?yōu)橹鲃幼园l(fā)的目標學習,是減輕學生和教師教學負擔,提高本門課程教學效果的關鍵措施之一。
一位教育學家曾說過:“未來文盲不再是不識字的人,而是沒有學會怎樣學習的人?!睘楦淖円酝逃w制對學生學習能力與創(chuàng)造能力的束縛,使學生具有可持續(xù)發(fā)展能力,引入以學生為主體的自主性學習模式,是當前教學改革中的新型課題。所謂自主性學習是以掌握教材知識為媒體,以學生積極主動的探索獲取知識的方法和能力為目的,與之相對應的教學模式則主要體現了“學生主體、教師主導”的關系原則。它要求教師在教學活動中由“教”轉化為“導”,充分調動學生學習的積極性、自主性,建立起有利于學生自主學習意識和學習能力健康發(fā)展的教學氛圍,使教學達到“在獲得知識和技能的同時形成自主學習意識和學會學習”的目的[1]。
這種教學理念在程序設計課程中具有頗深的實踐意義。結合多年編程實踐與學生學習的薄弱環(huán)節(jié)總結,學生學習過程中存在的問題大都是:基礎知識死記硬背,編程實踐生搬硬套,遇到程序問題只看結果不看邏輯。這種習慣在程序設計課程學習過程中是一種常態(tài)和惡習,直接導致學習枯草,效率降低。轉變這種認知結構,一方面需要教師對這門課程知識結構的精通,具有相關程序開發(fā)的實踐經驗。另一方面,在實際教學過程中,對所教課程目標重點進行合理劃分,側重教學方法的研究,真正使學生融入并體會編程實踐,才能使得學生學習由被動接受轉變?yōu)橹鲃拥膶W習[2]。
C語言程序設計課程的教學是以培養(yǎng)學生程序設計能力,教學設計應具有理論和實踐相結合性。為了實現理論和實踐教學的結合,教學過程教師講授應緊密結合學生編程實踐,對實踐環(huán)節(jié)中的問題及時發(fā)現、總結和反饋。合肥師范學公共計算機教學部程序設計改革中充分重視理論與實踐相結合這一特點。在教學實踐過程中,教師講授知識與學生編程實踐均設在機房。教師講授編程以經典案例為主,中間穿插學生實踐和知識綜合分析。教學過程采用多媒體課件、編程實踐和重要知識點板書相結合的方式。同時,機房配備先進的凌波教學軟件,使得教師能夠使用軟件中廣播功能全范圍內授課,學生可以對照自己的電腦顯示,觀看教師實際操作的每個步驟。課程講授一段時間后,教師會根據相應的問題讓學生演練,對不懂的地方留有一定的實踐操作時間,增加學生實踐操作的機會,進而提高其編程能力。該軟件使得教師可以在教師端看到每個學生具體操作情況,對出現問題的同學可以下講臺進行講解。這對于維護課堂紀律,更好的了解學生情況有很大幫助。這種理論與實踐密切聯系的教學方法,增強了師生互動,避免學生機械的聽講與記憶。
C語言是一種計算機程序設計語言,它既有高級語言的特點,又具有匯編語言的特點。因此,它可以作為工作系統設計語言,編寫系統應用程序,也可以作為應用程序設計語言,編寫不依賴計算機硬件的應用程序。它的應用范圍廣泛,具備很強的數據處理能力,不僅僅是在軟件開發(fā)上,而且各類科研都需要用到C語言,適于系統、三維、二維圖形和動畫的編程[3]。
如果說基本知識的學習是程序設計課程的基石,那么編程實踐是知識的升華和最終的目標,在程序設計課程中起到核心地位。知識的學習都應該以可以實踐,可以操作為最終的出發(fā)點和終極的目標。作為一種程序設計語言,它的核心在于如何表達與抽象實際問題,并利用計算機工具解決。因為它的實踐性較強,對其知識的講解必然要結合實際的編程實踐。
圖1 C語言程序設計課程目標
整個教學活動首先劃分為兩個環(huán)節(jié):基本知識學習和編程實踐。為了便于學生理解,基本知識的學習目標劃分應依據程序設計的語言特點。本文對該課程的學習過程形象化為一般人類語言的學習過程,即:簡單的發(fā)音學習 單詞學習 組詞、短語學習 句法、造句學習。并且教學過程中穿插每個環(huán)節(jié)意義說明,讓學生了解整個教學活動。C語言程序設計課程的教學目標演化為:數據的定義(發(fā)音)
數據的存儲(變量、數組、指針)(單詞) 構成表達式(組詞、短語) 順序、分支、循環(huán)結構程序設計(句法、造句) 模塊化(函數)的過程(文章)。學生對程序設計整體學習流程和特點有了一定的了解,在學習過程中才能有的放矢,不至于不知所學。
對于所學基本知識的轉化為實際的編程能力仍然有一定的距離,編程實踐的目標劃分應該結合具體的知識結構、特點劃分。應用現代軟件工程的中面向對象設計思想指導面向過程的程序設計具有一定的價值,有利于幫助學生養(yǎng)成良好的編程習慣,提高學生對具體問題的抽象、解決的能力,進而深入計算機程序設計語言的編程實踐。在此過程應主要告知學生如何分析、抽象以及解決問題。實踐活動組織應從數據分析開始:首先讓學生討論問題描述中數據特點,掌握這些數據表達的方法。其次如何讓數據滿足問題求解,討論相應的求解方法,使用流程的形式描述。最后,落實編程,進行目標程序正確性測試等。程序設計課程整體的目標劃分可見下圖:
編程實踐是學好程序設計這門課程的核心環(huán)節(jié)。為了讓學生不怕編程,喜歡編程,會編程。應該加強對學生編程過程的演示與分析,通過學生的模仿、感知培養(yǎng)其編程樂趣,刺激學習動力。編程目標中的每一個環(huán)節(jié)都不可忽視,是一個有機的整體,對學生可進行針對性的練習。比如運行和調試環(huán)節(jié),通過例子的調試告訴學生計算機程序按照什么順序執(zhí)行,中間執(zhí)行的過程有哪些變化,如何對錯誤問題進行查找等,從而加強學生對程序的理解。這種實踐意識有利于學生知識的掌握,激發(fā)學習程序設計的興趣。
(1)評價驅動
偉大的科學家愛因斯坦說過:“興趣是最好的老師?!边@就是說一個人一旦對某事物有了濃厚的興趣,就會主動去求知、去探索、去實踐,并在求知、探索、實踐中產生愉快的情緒和體驗。因此,使得同學們對這門課程產生濃厚的興趣是引導其自主學習的內在動力[2]。
學生對程序設計課程在目前和未來學習中的地位認識,是學好這門課程的驅動之一。為了有效的引導教學,有必要補充學生對算機科學研究的方向,未來應用領域等相關背景知識,使學生了解計算機語言在科學研究中的重要地位。日常生活工作中軟件開發(fā)常識,應用領域的背景同樣需要適當的貫穿。通過背景和知識面的了解,學生會更加理解這門課程在科學研究和將來生活中的地位,這對于激發(fā)學生的學習好奇心具有重要的意義。通過實踐體會,學生對這門課程的研究問題的方法有了一定的了解,這對于他們日后生活技能的提高具有很好的指導作用。
適當的合理考核體系亦有助于激發(fā)學生自主學習的自覺性。為了避免傳統被動的考核評價模式,加強學生主動參與課程實踐,課程考核應著重體現在編程是否獨立完成、是否參與問題討論、實驗報告撰寫是否規(guī)范等目標上來。這種評價要與學生進行互動,對學習過程及時跟蹤,讓學生主動參與問題的討論和解決。
(2)經典案例驅動
程序設計是一門實踐性非常強的課程,學生對知識的掌握應達到綜合應用的層面。龐亂而沒有重點的學習會使得學生產生厭學情緒,嚴重影響教學效果,很難達到預定的教育目標。針對每個學期學生的特點,教師應對實際課程目標進行細分,精選案例[3,4,5]。在選擇案例的時候,對于重復知識點的例題盡量避免,并保證案例具有一定的代表性,易懂性,達到激發(fā)學生主動學習的目的。
首先,以學生知識為背景,結合多應用性為原則,體現知識的體系化。因此,案例的選擇應該結合學生的知識結構,兼顧課程目標,體現一定的趣味使學生易于接受。比如,在講解循環(huán)程序設計的時候,舉例大數學家高斯10歲,數學教師要學生求出1,2,3,…,99,100全部相加的結果的題目。案例以學生熟悉的知識為背景,吸引學生的興趣,引導學生分析問題中具有的循環(huán)條件是哪些,運用計算機應該怎么去求解等問題。結合這個典型的案例,教師亦可引出較為復雜問題的求解,比如求100以內素數之和,偶數之和等等問題。以經典案例為驅動,可以避免教學過程中重復知識點的講解,同時能加深學生對重點知識的把握。
其次,根據學生的理解情況,與學生互動精講案例。案例分析以問題的提出、分析、設計、實現、總結與擴展為主線。在講解案例過程中,思路要清晰,知識重點要突出。比如上述案例的主要知識點應該是for循環(huán)程序設計,在講解過程中要針對該問題講清楚如何分析問題的,for循環(huán)有哪些特點,程序流程如何,循環(huán)次數如何界定等等問題。最后仍需要歸納總結這種例題特點是什么,應用場合是什么。并對稍微復雜的一些問題,留有部分時間讓學生參與討論、編程實踐,也可以讓同學們課下有興趣的交流。
通過這種典型問題的求解,從主要知識點的講解到具體實現,再到知識點歸納。強化了學生對重要知識點的掌握和舉一反三的能力,對于增強師生交流,激發(fā)學生學習熱情都能起到良好的效果。
高校C語言程序設計是程序設計課程的基礎,著重講解程序設計的概念、方法和思路,培養(yǎng)學生的基本編程能力、以及邏輯思維和抽象能力。根據當前教學過程中存在的問題,本文從課程設計目標進行劃分,提煉出課程教學中的核心問題,從興趣驅動,案例教學等多方面探討了如何啟發(fā)和引導學生自主學習,以期望培養(yǎng)出社會需要的程序設計人才,更好的為社會服務。教育活動是一種復雜的過程,具體的教學方法也有不少需要改進的地方,期待相關教育工作者集思廣益,研究制定更為完善的教育教學方法。
[1]肖旻.程序設計教學中自主學習能力培養(yǎng)的研究與實踐[J]南京工程學院學報2003(1):35-38.
[2]金寶根 潘張鑫.自主學習教學模式在VB程序設計教學中的研究與構建 [J]課程教材改革2013(7):107-108
[3]彭穎,蘇德富,蘇國華.案例引導---任務驅動教學法在程序設計課程教學中的應用 高教論壇 [J]2011(10):35-67.
[4]何首武.問題引導教學模式在C程序設計課程中的應用 [J]大眾科技2010(3):139-122.
[5]賀文華 程序設計教學中引導探究的實踐與總結 [J]婁底師專學報1996(4):77-82.