孫培鋒

摘要:C程序設計課程作為工科專業學生的一門公共基礎課程,其旨在培養學生的抽象思維能力,而計算思維的核心就是抽象思維能力。本文針對當前C程序設計課程教學中存在的問題,分析產生這些問題的主要原因,并提出了以培養學生計算思維為核心的C程序設計課程模式改革方法。
關鍵詞:計算思維;C程序設計;教學模式
一、計算思維與程序設計
2006年,美國卡內基梅隆大學的周以真教授在計算機權威期刊《Communications of the ACM》雜志上指出:“計算思維是運用計算機科學的基礎概念進行問題求解、系統設計、人類行為理解等涵蓋計算機科學之廣度的一系列思維活動” [1]。她指出,計算思維是每個人的基本技能,不僅僅屬于計算機科學家,我們應當使每個孩子在培養解析能力時不僅掌握閱讀、寫作和算術(Reading,Writing,and aRithmetic,3R),還要學會計算思維。計算思維是一種形式規整、問題求解和人機共存的思維。計算思維概念一經提出,就引起了國內外研究者的注意。2010年,在西安交通大學舉辦的首屆“九校聯盟(C9)計算機基礎教學課程研討會”上,明確提出計算機基礎教學的核心任務是計算思維能力的培養。
計算思維能力培養是計算機學科教學的核心任務,涉及計算機學科專業能力培養的目標是對計算機的認知能力和應用計算機的問題求解能力[2]。計算思維培養的本質是培養問題求解能力,而程序設計課程重點體現了計算機語言的問題求解方法,這與計算思維能力培養的主要內容相吻合。當然一門課程并不能包含計算思維的所有內容,需要一系列計算機基礎應用課程協作完成計算思維能力的培養。因此,計算思維能力的培養為今后學生應用計算機技術解決專業問題奠定了堅實的基礎。
作為計算機類專業基礎課,程序設計是將分析和解決問題的思維活動轉化成計算機程序的過程。學生在學習程序設計課程中,可以通過問題分析、算法設計、程序實現來體驗問題求解的思維訓練過程。所以,學習程序設計課程的目的不應是單純掌握某門程序設計語言的語法規范或單純學習一門程序設計語言,而是學習利用計算機分析和解決問題的基本過程和思維方法[3]。
二、現有程序設計課程存在的問題
1.計算機類課程課時頻頻遭減,但為保證完成必要的教學內容,無疑會為了追求進度而放棄深度和引導學生自行思考解決的課時,學生來不及理解消化所學內容。
2.教師在課程講授的過程中過于重視程序語法細節,而忽視了需求分析、功能劃分、編程思路以及算法設計等,導致學生在學習的過程中常一知半解的狀態,從而在編程的過程中存在缺乏思路、條理不清、代碼使用不規范等問題。
3.隨著各種校外考試機構主辦的證書考試在校園內廣泛開展,學生學習“程序設計”課程的目的正在發生變化,相當多的學生只是為了一紙證書在學習,一些學校也在為證書忙碌,能力最大化經常被晾在一邊,正常的教學活動與教學改革受到沖擊。
4.“學不致用”的質疑聲一直實際伴隨著程序設計課程。不同于傳統的公共基礎課程,程序設計課程具有鮮明的應用性,而“學不致用”是一種致命的質疑。筆者對計算機相關專業的200名畢業生的進行問卷調查,結果如表1所示。
通過表1可以發現,調查對象可以分為三種人群:Ⅰ類為有需求并使用的人;Ⅱ類為有需求但沒有能力使用的人;Ⅲ類為沒有需求的人。此外,調查過程中發現:Ⅲ類人中一部分人認同“學習編程沒有用處”的觀點,即認同“學不致用”;而另一部分人則認同“并不是自己的工作不需要編程,而是自己的水平無法勝任編程從而選擇不需要編程的工作”的觀點,這一部分人肯定程序設計課程的應用性而未能實踐其應用性,即“學不能用”。而Ⅰ類人中部分人則認同“僅靠學校學到的編程知識是不能勝任工作需要的,要編出程序還需自己繼續學習、查閱許多資料”的說法,這從反面也印證了“學不致用”現象的客觀存在。
三、程序設計課程改革的必要性
傳統的程序設計教學模式一般為:
①介紹該語言數據類型及運算符、表達式;
②介紹其語法規則,講解例題;
③最后布置作業。
這種教學模式以教師為中心,雖然能較好地保證知識的系統性,但因知識枯燥,在影響學生學習積極性的同時,也束縛了學生思維的發展,學生實踐能力不足,綜合分析能力及創新能力薄弱,難以滿足當今社會對人才培養的要求。
近年來,教育部高等學校大學計算機課程教學指導委員會提出了“大學計算機基礎課程教學基本要求”,明確了以計算思維為導向的計算機基礎教學改革方向,目的是通過梳理核心知識體系,改革教學內容和教學方法,將計算思維培養建立在知識理解和應用能力培養基礎上[4],以提升學生的計算思維能力。計算思維能力的培養已經成為高校計算機基礎教學改革的目標。因此,急需將程序設計課程的編程基礎和計算思維的培養結合起來,對程序設計課程進行教學改革,以提高程序設計課程的教學質量,培養學生的編程能力、計算思維能力及應用創新能力。
四、基于計算思維的C程序設計課程教學模式改革
作為工科專業學生的一門公共基礎課程,C程序課程教學的目標是幫助學生學習計算機分析和解決問題的基本過程和思路,而不是成為程序員。因此,改革的方向應當是幫助學生降低學習門檻,逐步展現計算思維方法和程序設計過程,從而幫助學生培養分析問題與通過程序設計解決問題的能力。具體做法如下:
(一)教學內容改革
適當淡化語法細節,在“以程序抽象為主線”的思想指導下,對程序設計語言本身進行適當裁剪,去除較為復雜、較難理解、使用很少、不太規范的部分。將教學重心放在計算思維能力和程序設計能力的培養上,將分解、抽象、自動化、約簡、轉化、遞歸、迭代、啟發式、折中等計算思維的主要特征融入到程序設計教學過程中,如通過順序結構把復雜工作分解為一系列較簡單的工作;通過分支結構,把整體處理分解為對一些互不相交、更為簡單的分支處理;通過循環,把復雜問題的處理分解為一系列類似處理;通過函數機制實現功能模塊的分解和抽象;采用抽象、分解來解決相對比較復雜的問題,通過約簡、轉化、遞歸、迭代來實現復雜問題的分而治之等。endprint
(二)教學過程改革
引入基于問題的互動教學,精選反映計算思維思想的問題案例或者相關知識模塊的引導性問題,通過課堂互動討論等方式,討論問題的分析、分解和精確化,找出問題解決的主要步驟,確定函數抽象,找出循環迭代、條件控制結構,最后進行程序實現。做完之后還應該分析討論所設計程序的優點和缺點,考慮其他設計實現的可能性。
(三)實驗內容改革
C程序設計課程是理論與實踐并重的課程,在實際教學過程中必須將理論教學與實踐教學緊密結合,使其相互促進。為了解決學生對所學知識缺乏必要的感性認識的問題,必須設計合理的實驗教學內容,將知識傳授、技能訓練、能力培養融于一體,讓學生做中學,學中做,使所學理論知識在實驗中得到驗證和應用。依據“理論夠用,突出實踐”的原則,將C程序設計實驗教學內容采用循序漸進、由淺入深的方法,分為驗證型實驗、設計型實驗、綜合型實驗,使學生在記憶中理解,在理解中應用,在應用中創新。
(四)考核方式改革
傳統的C 程序設計課程一般采取閉卷紙質考試的方式,題型主要包括:選擇、填空、判斷和程序設計題等。而C程序設計課程培養的是學生的思維能力和實際操作能力[5],以往的考核方式只能考核學生對于書本知識的掌握情況,并不能真正考查學生的實操能力。學生即使通過了閉卷考核,相關知識點掌握得很好,但獨立設計算法和動手編程能力卻并不強,在上機解決實際問題時依然舉步維艱。
因此考核方式應采用上機考試代替紙質考試。依據課程要求,事先將考試題目導入考試系統。學生需要在規定的考試時間內提交完整的程序,測試通過即為合格。如果測試未通過,教師會通過查看源代碼,依據學生的答題情況,給出合適的成績。
五、結語
計算思維包含的內容不是一門課程所能承擔的。計算和計算思維是計算機基礎課程的基本理論和基本思維,早期的計算機課程教學強調技能培養和能力培養,計算思維的引入,將計算機課程對于大學生科學思維能力培養的重要性提升到了前所未有的高度。在大學計算機課程里面有目的地引入計算思維,并且加以適當訓練,有利于提高學生對于計算機科學的理解和認識,有利于訓練科學思維的素質和能力。
C程序設計課程是高校計算機教育的重要基礎課程。通過基于計算思維的程序設計公共基礎課程教學改革,可以使學生在掌握程序語言語法規則的基礎上,培養學生計算思維能力和創新能力,從而進一步提高C程序設計公共基礎課程的教學質量。
【參考文獻】
[1]Jeannette M. Wing. Computational Thinking.Communications of the ACM, 2006(03).
[2]王榮良.計算思維教育[M].北京:上海科技教育出版社, 2014.
[3]陳國良.計算思維與大學計算機基礎教育[C].濟南:第六屆大學計算機課程報告論壇,2010.
[4]牟琴,譚良.計算思維的研究及其進展[J].計算機科學,2011(03).
[5]吳文虎,徐明星.程序設計基礎[M].北京:清華大學出版社,2008.endprint