唐鳳仙
摘要:本文通過分析非計算機專業(yè)程序設計傳統(tǒng)教學存在的弊端,提出融入計算思維能力培養(yǎng)的重要性,結合筆者多年的教學經(jīng)驗,從教學內(nèi)容的組織、理論和實驗教學、考核方式的體現(xiàn)等環(huán)節(jié)進行探討,旨在培養(yǎng)學生的計算思維能力,促進學生以計算機科學的概念和方法對問題進行求解,激發(fā)學生的學習興趣和編程欲望,達到教學改革的目的。
關鍵詞:計算思維;程序設計;教學方法
高校為非計算機專業(yè)的學生開設計算機基礎課程,目的是讓他們掌握一定的計算機基本技能并能運用計算機工具獲取知識或解決實際問題提供一個入門指導。C語言程序設計是非計算機專業(yè)計算機基礎類課程的主要課程,既是影響最大也是難度最大和要求最高的課程。該課程一般安排在大一的第二學期,如何上好這門課,對學生今后的學習和工作起著不可忽視的作用。
一、 計算思維
美國卡內(nèi)基·梅隆大學計算機科學系主任周以真(Jeannette MWing)教授于2006年首次在美國計算機權威期刊Communications of the ACM上提出“計算思維”(Computational Thinking):計算思維是運用計算機科學的基礎概念進行問題求解、系統(tǒng)設計以及人類行為理解的思維活動。按周以真教授的理解,計算思維是建立在計算過程的理論上的,但是又超越了計算機本身。它是人的思維,而不是機器思維,計算思維最本質(zhì)的內(nèi)容是抽象(Abstraction)和自動化(Automation),是每個人的基本技能,而不僅僅是計算機科學家。
計算思維是利用啟發(fā)式推理來尋求解答,它強調(diào)的是如何求解問題及其操作過程和機器實現(xiàn)方法。高校非計算機專業(yè)的計算機基礎類課程,重點加強程序設計類課程的建設,除了教會學生如何使用一門語言,更重要的是提高學生利用計算機思維來解決問題的能力,在程序設計教學中,融入計算思維能力的培養(yǎng),實現(xiàn)單純程序語言的學習到利用計算機科學的概念和方法對問題進行求解的能力培養(yǎng)。
二、 非計算機專業(yè)C語言程序設計教學現(xiàn)狀
1學生基礎薄弱
作為新升格的本科院校,學生生源整體基礎薄弱。尤其對于非計算機專業(yè)的學生來說,沒有系統(tǒng)的基礎知識背景,感覺程序設計這門課程難懂、難學,即使把語法格式和語句功能背下來了,也難以進行編程。
2傳統(tǒng)教學存在弊端
傳統(tǒng)教學很容易陷入程序語言為中心的誤區(qū),以傳授程序設計的語法和語義為主,在以教師為中心的灌輸式教學雖然能保證教學內(nèi)容的系統(tǒng)性和連貫性,但是學生被動地聽和記憶,難以在課堂上體會到程序的問題分析、程序思維和構造的方法。學生學習主動性差,教學效果也可想而知。
3學生學習目標不明確
非計算機專業(yè)學生學習程序設計,純粹是為了考試而學習,沒有把計算機分析和解決問題的基本過程和思路當作學習的目的,也沒有真正理解程序設計課程的內(nèi)容。
三、 基于計算思維的培養(yǎng)途徑
1教學內(nèi)容的重組
教學過程中,為了突出算法和程序的整體框架,筆者在教學的過程中進行內(nèi)容的重組。不用刻意去講解某一個語法,教學過程以“程序設計為主,語法規(guī)則為輔”,結合一些具體的有意義的案例,分析編程的算法思想,涉及的語法穿插式地講。這樣保證了教學內(nèi)容始終貫穿于教學過程,逐步培養(yǎng)了學生用計算機解決實際問題的能力,為以后其他專業(yè)的學習和工作實踐打下良好基礎。為此筆者自編了教材《C語言程序設計教程》和配套習題《C語言程序設計教程習題解答與上機指導》,主教材體現(xiàn)了“應用性”,由簡到難、由淺入深,把算法和語法緊密結合在一起;習題為課堂的拓展做了有力補充,為學生從會編寫簡單的程序到使用算法解決實際問題提供了借鑒。
2教學過程中的培養(yǎng)
筆者在教學過程中精心準備一些實例,不一定按教材順序講解語法,以實例貫穿教學過程,適時呈現(xiàn)一些有趣的或上一屆學生的程序。具體編寫程序的引導過程中,盡量從學生角度出發(fā),先把最能體現(xiàn)求解問題算法思想的代碼寫出來,然后再補充其他部分的代碼,讓學生的思路跟隨教師的筆尖逐步完善,
并在舉一反三的教學過程中不知不覺地感受到算法在程序中的靈魂,如此循環(huán),學生在輕松的互動學習中提高解決問題的能力,并能養(yǎng)成良好的編程風格。比如:求階乘的程序。
(1)建立程序的框架:
(2)在函數(shù)體內(nèi)填充循環(huán)語句:while(i (3)補充變量的聲明和初始化:int n,i=1,sum=1。 (4)修改、調(diào)試、運行,并對第(2)步進行更改:用for或do~ while語句來實現(xiàn)。 (5)對n的取值提出問題:當n<0時;當n=0或1時;當n>1時。 (6)完善程序再運行。 (7)思考并完成程序:1!+2!+3!+…+n! 每一個問題的求解都可以有不同的算法和寫法,通過由簡單到復雜、并趁熱打鐵給出幾個相似難度和升華的題目,積累解題和調(diào)試的經(jīng)驗。 3實驗課教學思維培養(yǎng) 實驗課的效果直接影響著程序設計課程的教學效果,實驗課中學生不僅要學會編寫代碼的方法,還要學會調(diào)試程序的能力。為了提高實驗課效率,我們課題組做了不同嘗試,大體達成了共識:初級階段,以填空式方式讓學生完善程序并運行代碼,寫出實驗結果;中級階段:給出問題,尋求多種編程方式、方法;高級階段:分組完成一些有意義的小程序,并進行交流驗收。經(jīng)過不同階段的訓練,旨在讓學生加深理解程序設計學習的目的是解決實際問題,并在實驗過程中體會到合作的力量,提升交流能力。 4考核方式的體現(xiàn) 近幾年來,我們學校C語言課程的考試,不使用紙質(zhì)考試方式,采取了在線考試系統(tǒng),這種考核方式不僅減輕教師出題和改卷的繁重工作量,更重要的是激發(fā)了學生學習動力,在課程的第一次課,我們就讓學生了解課程考核的方式,在線考試系統(tǒng)也分為期中和期末,另外還有考前測試模塊,學生課程總成績由期中,期末和平時成績按2∶7∶1的比例構成。 順應計算機教育改革之風,作為應用型地方本科院校,我們進行了有益的嘗試,取得了一定的成效。近年來,非計算機專業(yè)學生在全國計算機二級考試中通過率逐年上升,并在挑戰(zhàn)“藍橋杯”全國軟件設計大賽中,獲得一等獎的好成績?;谟嬎闼季S的程序設計課程教學不僅提升了學生的計算機應用能力,而且對于提升學生的專業(yè)能力具有重要意義。 參考文獻: 何欽銘,陸漢權,馮博琴計算機基礎教學的核心任務是計算思維能力的培養(yǎng)——《九校聯(lián)盟(C9)計算機基礎教學發(fā)展戰(zhàn)略聯(lián)合聲明》解讀中國大學教學,2010(09). 鮑潔新時期大學計算機教育改革前沿動向——第八屆全國高等學校計算機教育改革與發(fā)展高峰論壇(計算機基礎教育部分)綜述計算機教育, 2013(07).