鄧紅衛,魏書堤,王 櫻,蔣瀚洋
(衡陽師范學院 計算機科學系,湖南 衡陽 421002)
程序設計是各普通高校非計算機專業的核心通識課程,C語言是程序設計課程的首選語言。教學實踐證明,該門課程對引領學生進入編程世界、激發學生編程興趣、完成從傳統思維方式向計算思維方式的轉變、培養學生分析問題和解決問題的能力、提高學生的實踐動手能力和創新精神等起著決定性的作用。由于C語言涉及數據類型繁多、語言結構復雜、比較靈活,教學難度比較大。目前各高校C語言程序設計課程教學普遍存在以下幾個問題:(1)教學目標比較單一,就是讓學生通過國家或省級計算機等級考試?,F行國家或省級計算機等級考試過分注重語法規則和程序結構等細節內容的考查,誤導教師的教和學生的學糾纏其中,忽略了學生分析問題和解決問題能力的培養;(2)編寫和所用教材中的選例缺乏針對專業問題的算法分析設計和程序編寫,對學生后續專業課程的學習幫助不大,從而在一定程度上影響學生學習的積極性;(3)任課教師對學生的專業背景和后續專業課程的學習要求缺乏足夠的了解,習慣用“專業”眼光去看待和要求非專業學生,教和學沒能有效進行融合。
2010年7月,西安交通大學等九所985高校(簡稱C9)在西安召開 “九校聯盟(C9)計算機基礎課程研討會”,并發表了《九校聯盟(C9)計算機基礎教學發展戰略聯合聲明》。聲明強調:必須正確認識大學計算機基礎教學的重要地位,需要把培養學生的計算思維能力作為計算機基礎教學的核心任務[1]。體現出985高等院校對計算思維培養的重視。
那么,在C語言程序設計課程教學過程中,如何訓練和培養學生的計算思維能力,讓學生學會更好利用計算機去分析和解決其學習工作中的專業問題,是一個非常值得商榷的問題。
計算思維(Computational Thinking)是美國卡內基·梅隆大學華裔教授周以真在美國計算機權威期刊《Communications of the ACM》(2006.3)上提出來的。她認為計算思維是指運用計算機科學基礎概念進行問題求解、系統設計、以及人類行為理解的思維活動[2-5]。計算思維是一種科學思維,與實證思維、邏輯思維一起構成了人類的三大思維,是信息社會中的每一個人都具有的一種技能,是人類改造世界最基本的思維模式。
隨著電子科學技術的發展,計算機已成為人們生活工作中一種不可或缺的信息處理工具。人們利用計算機分析解決問題的能力成為衡量其工作能力的重要標志,這對高等學校的計算機基礎課程教學提出了更高要求。各高校應重新審視計算機基礎課程教學,著力培養學生的計算思維能力,提高其信息素養,讓學生學會用計算機進行思維表達和信息加工處理,把掌握的專業知識更好地應用到生產實際中,促進社會經濟的發展。
計算思維是利用計算機對問題進行分析和求解的一種能力,需要不斷地接近問題、分析問題和運用知識持續反復驗證才能形成。因此,計算思維能力的形成是一個緩慢的過程。計算機基礎課程的學習通常以學期為周期,學習的是某個方面知識點,課程教學注重的是基礎知識傳授,距離形成計算思維能力,還有一定的差距。學校和教師應樹立知識傳授與計算思維培養相結合的教學理念。教師的教學由“教給學生知識”向“教會學生學習”進行轉變,幫助學生理解問題解決過程中如何使用計算機的“計算機意識”培養。在教學實踐過程中,從教學模式、教學內容及教學方法等方面加以改革,把基于計算思維培養的教學理念貫穿到教學的各個環節,以適應時代發展的要求。
以培養應用型人才為主的地方本科院校,教學更應與社會需求接軌,積極推進教學改革,以適應信息化社會對應用型人才的要求。首先在專業人才培養方案和指導性教學計劃上做好頂層設計,在教學過程中,加強教學內容和教學方法改革方案的落實。
2.2.1 調整各專業指導性教學計劃
在各普通高校專業人才培養方案中,計算機基礎課程的教學時間基本上集中在大學一年級,課程內容安排:第一學期為《大學計算機基礎》;第二學期為《計算機程序設計》。二年級以后主要學習專業課程,個別學校雖然開設了計算機選修課程,但是實際選修學生數量不多,計算機課程和專業課程教學缺乏有效的聯系。學生在后續專業課學習中遇到需要利用計算機解決的問題,不知道如何解決,也不知道去請教哪些教師,計算機課程缺乏對專業課程學習有力的支持。計算機課程的階段性和孤立性與計算思維能力形成的長久性相悖,不利于學生計算機思維能力的培養。應及時調整專業指導性教學計劃,將計算機課程教學劃分為兩個階段:大學一年級課程內容安排:第一學期為《大學計算機基礎》,第二學期為《計算機程序設計》;第六學期為《高級程序設計》,該課程針對各專業課程具體問題開展教學,教學案例和教學方法具有較強的專業針對性。
2.2.2 保持相對穩定的教師隊伍
目前,國內的高校非計算機專業學生占全校學生比例約為90%左右,專業面廣,學生人數多,教學任務重。為此,各高校組建專門的教學部門和專職的教師隊伍。以衡陽師范學院為例,計算機科學系公共基礎教研室負責非計算機專業計算機基礎教學。該教研室的教師基本上是數學和物理本科專業畢業,碩博階段學的是計算機專業。我?,F有數學、物理、化學和生物等非計算機專業。在教學任務安排上進行有效對接,數學專業畢業的教師擔任數學專業班級課程教學、物理專業畢業的教師擔任物理專業班級課程教學。讓有相關知識背景和專業背景的教師擔任熟悉專業的計算機課程教學,就會更好把握專業發展方向,發現教學過程中可能存在的問題,更快地找到相應解決問題的方法,符合專業培養和計算思維能力培養相結合的規律,教學效果也就顯而易見了。同時,也要保持教師隊伍的相對穩定性,無特殊情況一般不作調整,保持教學的延續性,一個教師跟蹤所教的專業班級到畢業,甚至畢業后的發展。
2.2.3 基于計算思維的教學項目案例選擇
擔任同一專業教學任務的教學團隊深入各系部,與專業教師座談,了解專業課程教學現狀和未來發展趨勢,專業教學中急需利用計算機來解決的問題,從這些尚待解決的問題選取一些典型問題作為教學項目案例。教學團隊集體研究教學方案,確保來源于專業課程實際的教學項目案例貫穿于整個教學過程,課程教學內容涵蓋完成項目所需要的理論知識和基本技能。
2.2.4 基于計算思維的教學內容設計
在教學過程中,理順計算思維能力培養和計算機知識傳授之間的關系,把計算思維的觀念注入程序設計課程教學中,需要做好教學內容設計工作。教學內容設計以教材和教學內容為基礎,對教學內容進行適當的取舍和組合,降低難度、分散難點。教學內容設計分為理論教學內容設計和實踐環節設計兩部分。① 理論教學內容設計。內容設計以培養計算思維能力為目標,采用“以程序設計為主線,編程應用為驅動,通過案例和問題引入內容”的方式組織內容。教學內容劃分10個教學單元,主要包括:C語言概述、基本數據類型與運算、語句與流程控制、函數、數組、指針、結構體、編譯預處理與外部函數、文件操作、工程化程序設計。重點講解程序設計的思想和方法,淡化語法教學,由單純的語法教學向實用型教學轉變,及早引入函數和指針的概念,明晰使用函數和指針的原因和方法,再循序漸進講述函數和指針組合編程,加強練習分散難點,讓學生能夠學以致用,真正理解程序設計思想和方法。② 實踐環節設計。實踐教學是理解理論知識和掌握計算思維方法的必需環節。為了達到更好的實踐效果,將實驗分為驗證型、設計型和綜合型三種類型的實驗。細分為9個實踐單元,主要包括:熟悉VC++編程環境、解決一個簡單的問題、結構化程序設計、函數、數組、指針、結構體、文件操作、綜合實驗。每個實驗單元包含5~6個實驗內容,精心設計實驗題目,實驗題目的難易程度形成一定的梯度,以適應具有不同基礎學生的學習。驗證型實驗要求學生能夠使用老師所教的思維方法完成實驗內容,引導學生跟蹤調試程序的運行過程,觀察變量內容及內存地址、函數調用棧等運行信息;設計型實驗運用多種計算思維方法分析實例,構建數學模型,描述算法,編寫和調試程序,分析運行結果;綜合型實驗選擇專業性比較強的案例,以課程設計的形式完成,要求學生分工合作設計和實現一個小型的應用系統。不僅培養了學生自主發現、解決問題的能力和探索創新能力,而且也培養學生團隊合作精神,是計算思維方法進一步升華。
2.2.5 基于計算思維的教學方法改革
講授這門課程的第一章——C語言概述,不要按部就班講解其中的內容,可以直接在VC環境下現場手動錄入、編寫一個簡單的算術運算題,編譯、鏈接和執行程序驗證結果,讓學生感知計算機如何進行解題的。這一過程不但體現了C語言的程序結構在解題過程所起的作用,又向學生展示了人們利用計算機解題的思維方法。這種自然引入是學生比較容易理解和接受的,從而激發他們對該課程的學習興趣。然后告知學生,在經過一個學期的系統學習后,不僅要掌握程序設計的基本知識,更為重要的是培養和訓練他們的計算思維能力和創新能力,為后續的專業課程的學習打下良好地基礎。在理論教學環節中,通過“案例驅動”教學方法,以具體專業特點的應用實例作為切入點,分析實例想實現的功能,為實現這些功能需要C語言中哪些知識點,如何用C語言的語法表述知識點,從而推進計算思維的理解,強化邏輯思維能力的培養。在實踐教學環節中,采用“驗證一調試一設計一反饋訓練”教學法,讓學生可以逐漸掌握編寫程序的語法規范及思維技巧,讓學生理解、習慣算法構造的思維方法,促進對學生邏輯抽象能力和創新能力的培養。
計算思維是信息化社會對普通高校人才培養提出的新培養要求,學校和教師需要重新認識并審視程序設計課程對學生計算機思維培養的重要性,樹立基于計算思維的教學理念,積極穩妥推進與之相稱的程序設計課程教學改革。教師應加強對計算思維能力教學方法的研究,從培養學生計算思維能力的角度來看待所講授的課程,將計算機思維的方法貫穿于程序設計相關知識點的講解中,著力培養學生利用計算思維來分析和解決問題的能力。
[1]佚名.九校聯盟(C9)計算機基礎教學發展戰略聯合聲明[J].中國大學教學,2010(9):4.
[2]周以真.計算思維[J].中國計算機協會通訊,2007,3(11):83-85.
[3]陳國良,董榮勝.計算思維與大學計算機基礎教育[J].中國大學教學,2011(1):7-11.
[4]何欽銘,陸漢權,馮博琴.計算機基礎教學的核心任務是計算思維能力的培養[J].中國大學教學,2010(9):5-9.
[5]牟琴,譚良.計算思維的研究及其進展[J].計算機科學,2011,38(3):10-15.