申玉靜
摘 要 針對C語言程序設計課程在計算機及其相關專業(yè)中存在的“狹義工具論”的教學現(xiàn)狀,本著“以應用能力培養(yǎng)為目標、以計算思維為手段”的原則進行知識選取和教學內容、教學案例、教學方法的設計,提出“基于專業(yè)內容,以解決本專業(yè)問題為導向”的項目驅動、螺旋式上升、過程監(jiān)控等多種手段相結合的立體化教學方式。通過將計算機基礎教育與專業(yè)技術相融合,從計算思維能力與創(chuàng)新人才培養(yǎng)相結合的視角,提高專業(yè)化教育過程中的創(chuàng)新培養(yǎng)層次,建設培養(yǎng)復合型拔尖人才的課程體系和教學平臺,為國家培養(yǎng)創(chuàng)新型人才提供新思路和新途徑。
關鍵詞 C語言程序設計;過程監(jiān)控;螺旋式上升
中圖分類號:TP311.1 文獻標識碼:B
文章編號:1671-489X(2017)06-0084-03
1 引言
C語言程序設計是理工科專業(yè)(如電子信息與科學、通信工程、物聯(lián)網(wǎng)技術和應用數(shù)學等)的基礎課程,嵌入式系統(tǒng)中的單片機與DSP程序設計,采用C語言編寫應用程序比匯編語言可讀性更強,且更易于維護[1]。該課程的學習目標是不僅要使學生學習程序設計的基本概念和基礎方法,學習編程規(guī)則,還要培養(yǎng)學生的計算思維能力、理論與實踐相結合的解決專業(yè)領域問題的應用能力,提高專業(yè)化教育過程中的創(chuàng)新培養(yǎng)層次。
然而絕大多數(shù)學生在剛開始接觸C語言程序設計這門課時,對計算機語言、算法和數(shù)據(jù)結構知之甚少,更不具備抽象建模、程序設計技巧的相應知識[2]。加上這是第一門程序設計課,大量的新概念、新名詞讓學生感覺應接不暇,在剛剛接觸編寫程序時毫無頭緒,只能仿照現(xiàn)成的例子照貓畫虎,進行淺層次的驗證性實驗,根本掌握不到程序設計的精髓,更達不到計算思維能力的培養(yǎng),以致該門課程教學質量普遍不高。
為了解決這些問題,筆者在長期教學實踐中總結教學經(jīng)驗、探索教學方法,提出“基于專業(yè)內容,以解決本專業(yè)問題為導向,以計算機圍繞專業(yè)問題服務為原則,促進學生個體發(fā)展,增強學生創(chuàng)新意識,產生創(chuàng)新能力”的教學思想。針對C語言程序設計課程特點,從教學理念、考核形式、教學方法、課程內容等方面做了大膽的改革與創(chuàng)新,采取多種教學方法和教學手段相結合,提高學生學習興趣,取得良好的教學效果。
2 精心設計以解決本專業(yè)問題為導向的教學案例
在以往的教學活動中,大部分學生的基礎知識雖然掌握得不錯,但在靈活解決實際問題方面,還是有不小距離的。他們雖然心中有一些解決問題的模糊思路,但不會將想法轉換成程序,甚至還有一些學生直到最后也不會把實際問題變換成算法設計。針對上述問題,課程組教師在教學內容的安排上注重在C語言教學中緊密結合本專業(yè)特點,本著“精講多練,重實用,重算法”的原則,結合專業(yè)方向對C語言程序設計課程教學內容的差異化要求,確定分專業(yè)分層次的教學內容,制度詳細的教學任務,選擇各專業(yè)的經(jīng)典問題作為課堂教學案例。以專業(yè)知識為基礎,以解決專業(yè)問題為目標,采取任務驅動、因材施教的方式,創(chuàng)建多元化的教學體系,能夠激發(fā)學生的學習興趣。
將單純的C語言程序設計教學與專業(yè)領域應用相結合,把計算機程序設計作為解決專業(yè)問題的工具,有利于學生了解C語言程序設計作為“專業(yè)工具”的作用,便于學生對C語言精髓的掌握,能夠培養(yǎng)學生的計算思維能力、邏輯思維能力和邏輯推理能力,以及利用計算機解決本專業(yè)問題的能力,提高學生學習本課程的主動性、積極性,促進學生個體充分自由地發(fā)展,培養(yǎng)學生的應用能力和創(chuàng)新能力。
3 項目遞進驅動教學法
在實驗教學過程中,制定各專業(yè)領域相關實訓項目,以由易到難、循序漸進為主線,采取多層次的項目拓展訓練、遞進式的螺旋式教學方法,讓學生整體提高程序設計能力。整個教學設計分為三個階段。
編程基礎準備階段 本階段的教學內容主要是以本專業(yè)的經(jīng)典問題作為課堂教學案例,引出本課程單元基礎知識。在這一部分教學中通過教師對教學案例的講解,學生通過實訓項目的上機操作,會出現(xiàn)輸入、編寫等問題,通過解決實訓時出現(xiàn)的問題加強對語法、編程規(guī)則的掌握。本著“精講多練,重實用,重算法”的原則,用大量典型案例進行實訓,起到拓展學生編程思維的作用。如在為數(shù)學專業(yè)設計程序三大基本結構項目時,本階段的教學案例分別為分支結構為分段函數(shù)的計算、循環(huán)結構為求1到10之間的自然數(shù)的和。
項目拓展階段 通過基礎階段的訓練,學生已經(jīng)初步對程序設計有感性認識,并有一定的計算思維基礎,本階段的任務設計上以第一階段的任務為基礎,將與此相近、相關的案例進行總結,主要是通過實訓項目的形式來鞏固基礎階段的訓練成果,養(yǎng)成良好的編程習慣。如在為教學數(shù)學專業(yè)設計程序的三大基本結構項目時,本階段讓學生完成的項目有:求1到100之間自然數(shù)的和、判斷某數(shù)是否為素數(shù)、求1到100之間的素數(shù)、打印楊輝三角形、輸出各種形式的九九乘法表等。實訓題目按類別設計,同類的實訓項目一般設計多個,每個題目又根據(jù)難易程度設置不同的分值(方便后期的多元立體化評價),學生可根據(jù)自己對知識掌握的情況和自己的興趣愛好選擇一部分題目來練習。但不管是容易的題目還是難度較大的題目,都必須嚴格按照要求提交相關文檔以及編寫的程序代碼。
項目遞進階段 本階段讓學生自由組合成3~5人的互助式小組,以大作業(yè)的方式對整個學習階段的效果進行鞏固,同時進行測試和驗收。由于任務量比較大,所以該階段主要在課下完成。在本階段中,教改組成員在對不同專業(yè)做了詳細調研的基礎上,精心設計若干個與大學生各類競賽緊密結合的、貫穿整個教學過程的大項目作為本階段的任務。教改組成員為數(shù)學專業(yè)學生設計的課程大項目是學生成績管理、分析系統(tǒng),該系統(tǒng)用到大量的數(shù)學分析函數(shù)來實現(xiàn)對學生成績的統(tǒng)計分析,要求學生盡量自己編寫這些數(shù)學分析函數(shù),然后和系統(tǒng)提供的函數(shù)做出比較。為電子信息科學與技術專業(yè)學生設計的課程大項目是汽車導航系統(tǒng),該系統(tǒng)用到硬件之間的通信和C語言基礎編程,讓學生看到原來C語言還可以做出如此高級的產品。這一階段主要以學生自主完成作業(yè)、教師負責答疑的形式進行,教師對學生提出的問題并不直接給出答案,僅僅給予學生一定的指引,引導學生通過各種途徑查找資料,促使學生自覺利用互聯(lián)網(wǎng)、校園網(wǎng)、圖書館、BBS教學網(wǎng)站系統(tǒng)來輔助本課程的學習,幫助學生學會文獻檢索的技能,為學生在以后的學習和工作中保持繼續(xù)學習打下堅實的基礎。在這一階段中,要求學生必須提供完整的項目文檔并完成教師組織的簡單答辯。
以上三個階段中,除第一階段由任課教師為學生寫出項目文檔大綱、學生進行補充完善外,其他兩個階段學生都要獨立撰寫項目文檔。在第二、三階段中,教師將學生分成若干小組,每個人作為小組的成員,都有分工,每個小組選出一名小組長負責整個小組內部以及小組之間的協(xié)調和管理工作,小組和小組之間以競賽的形式完成各個實訓題目并相互評價。教師僅僅起到“導師”的作用,幫助學生打開解題思路,及時引導學生總結歸納編程技巧和語法知識,為學生提供技術支持。通過小組學生之間的討論和協(xié)作,提高他們學習C語言的主動性,同時也鍛煉了學生的團隊協(xié)作能力[3]。最終要求學生以小組為單位提交相關文檔以及編寫的程序代碼來檢驗本階段的教學效果,避免了以前個別學生抄襲別人報告的現(xiàn)象。
4 制定合理的過程監(jiān)控機制,有效記錄學生的學習過程
積極探索有效記錄學生學習過程的監(jiān)控機制,以上每個階段結束,任課教師都會及時對學生項目中的亮點和不足進行分別講解,并認真對學生的每個項目進行批注,以便學生進行改進。同時為每次作業(yè)劃分等級,讓學生明確自己本次學習所處的層次,讓學生既有學習的興趣,又有學習的壓力和動力。期末考核方式參考平時作業(yè)成績,采取“筆試+實驗考核+開放式作業(yè)+課程論文”的形式進行過程考核,積極探索C語言程序設計課程的“嵌入式”考核方式。
5 以解決本專業(yè)問題為導向的教學法的教學效果
基于專業(yè)內容的案例教學,培養(yǎng)了學生的學習興趣 以“加強基礎、拓寬專業(yè)、注重實踐”為原則,以案例教學、任務驅動、螺旋式上升模型等多元化的教學體系引導學生學習,把計算機程序設計作為解決本專業(yè)知識的工具,以本專業(yè)經(jīng)典問題為導向的課堂教學案例,促進學生對專業(yè)知識的加深理解,使學生體會到C語言程序設計課程在專業(yè)學習中的地位,培養(yǎng)學生的計算思維能力、邏輯思維能力和邏輯推理能力,以及利用計算機解決本專業(yè)問題的能力,提高學生學習本課程的主動性、積極性,促進學生個體充分自由地發(fā)展,培養(yǎng)學生的創(chuàng)新能力。
螺旋式上升的項目任務,激發(fā)了學生的求知欲 項目遞進驅動的教學法,通過一個比較實際的切入點,特別是再通過附加一些微視頻,微視頻中教師一步步的詳細演示使學生感覺能夠入手,解決了學生學習程序設計課程的恐懼心理,然后再將此實例不斷修改、擴充,加大難度,引出與此實例相關的一組例子。在這樣的案例教學中,因為有提出問題、解決問題、擴展問題、再解決問題、對解決問題的方法進行評價、優(yōu)化設計等幾個環(huán)節(jié),實際上是一個循序漸進、螺旋式滾動上升的過程[4]。
在案例教學過程中,學生和教師相互提出問題、共同解決問題、深化和擴展問題、再提升解決問題、并對問題解決方法進行評價,這就是一個不斷漸進、提升的過程,在這個螺旋式上升的過程中,能夠非常自然地調動學生的參與。通過不斷擴展一個問題的多種解決方案并對多種方案進行對比,有效開闊學生的思維,強調學生的學習主體地位。這種層層推進的教學方法避免了學生“三級跳”式學習,而有了“走臺階”的扎實基礎,使學生在解決實際問題的過程中完成學習任務,實現(xiàn)計算思維能力培養(yǎng)與專業(yè)實際應用的無縫融合,激發(fā)學生的求知欲,增強學生的自信心。
立體化的過程監(jiān)控機制,克服了學生臨時抱佛腳的學習劣習 “筆試+實驗考核+開放式作業(yè)+課程論文”的“嵌入式”過程考核機制,使得學生重視學習過程,避免考試前臨時抱佛腳的學習劣習。這種監(jiān)控機制和“課堂教學→實驗教學→創(chuàng)新實踐”理論與實踐相結合、相輔相成、相互促進的螺旋式上升模型新教學手段,更符合各專業(yè)的教學需求。
6 結語
綜上所述,從專業(yè)內容出發(fā),以解決專業(yè)實際問題為導向的C語言教學方法是以建構主義學習理論為指導,通過選取專業(yè)領域的經(jīng)典問題,以協(xié)作學習的方式開展學習,通過完成最終的工程項目來達到意義建構。它突破了一般的教學模式,通過解決學生本專業(yè)的經(jīng)典問題來實現(xiàn)學生對C語言程序設計知識的掌握,學生通過螺旋式上升的遞進教學法的學習,計算思維能力、解決專業(yè)領域實際問題的能力有了極大提高,大大提高了學習本課程的積極性和主動性。本文的教學理念和教學方法不但對非計算機專業(yè)學生的C語言課程教學效果比較好,對計算機專業(yè)學生的C語言教學也是很好的借鑒。特別是針對目前學生學業(yè)水平差異大、自主學習能力差的現(xiàn)狀,加上本課程應用性強的特點,本文的教學方法有其卓越的表現(xiàn)。
參考文獻
[1]馬玉春,汪文彬,王冬,蘇靜.面向工程技術的C語言程序設計教學實踐研究[J].瓊州學院學報,2011,18(5):64-68.
[2]姚志宏.中等職業(yè)教育中C語言教學改革[J].實驗教學與儀器,2013(6):45-47.
[3]于力.基于趣味案例驅動的C語言實驗教學設計[J].教育教學論壇,2011(32):187-188.
[4]趙亞玲.項目遞進驅動教學法在《C程序設計》的應用[J].陜西能源職業(yè)技術學院學報,2010(1):75-76.