張敏
以計算思維為導(dǎo)向的程序設(shè)計課程教學(xué)案例設(shè)計探析
張敏
針對《C語言程序設(shè)計》課程的傳統(tǒng)教學(xué)存在的問題,文章提出以計算思維為導(dǎo)向的案例教學(xué)法,而如何設(shè)計有效的教學(xué)案例是核心。針對傳統(tǒng)教學(xué)存在的問題,以計算思維為導(dǎo)向,總結(jié)教學(xué)案例設(shè)計的原則,設(shè)計教學(xué)案例。通過《C語言程序設(shè)計》課程教學(xué)實(shí)驗(yàn),證明提出的以計算思維為導(dǎo)向的程序設(shè)計教學(xué)案例設(shè)計方法是有效的。
計算思維 C語言程序設(shè)計 教學(xué)案例設(shè)計
課題資助:陜西省教育科學(xué)“十二五”規(guī)劃2014年度課題(SGH 140896)。
計算思維的概念是由美國卡內(nèi)基·梅隆大學(xué)計算機(jī)科學(xué)系周以真(J eannette M.W ing)教授于2006年提出的教育理念,2013年,周教授接受《中國信息技術(shù)教育》雜志社劉向永記者的訪談時對計算思維進(jìn)行了詮釋[1-3]。
國外的眾多研究者涵蓋計算機(jī)教育界、社會學(xué)界以及哲學(xué)界等各個領(lǐng)域?qū)τ嬎闼季S進(jìn)行深入的研究[4]。AC M和IEEE-CS在修訂后的《計算機(jī)科學(xué)教程2008》(C o mputer Science Curricul um 2008)[5]79-84中明確指出應(yīng)該將計算思維作為計算機(jī)科學(xué)教學(xué)的重要組成部分。
在國內(nèi),基于計算機(jī)技術(shù)和Internet技術(shù)的飛速發(fā)展,培養(yǎng)大學(xué)生計算機(jī)綜合能力,提高大學(xué)生使用程序語言解決問題的能力,是當(dāng)今大學(xué)生計算機(jī)基礎(chǔ)教育的核心點(diǎn)之一[6]。根據(jù)《中國高等院校計算機(jī)基礎(chǔ)教育課程體系2008》的規(guī)定,高校程序設(shè)計基礎(chǔ)課程的學(xué)習(xí)目標(biāo)是:
⑴學(xué)習(xí)問題求解的思路和方法,即算法。
⑵理解計算機(jī)是如何具體實(shí)現(xiàn)算法的,即如何才能有效利用計算機(jī)編程。
因此在程序設(shè)計課程教學(xué)任務(wù)中,不僅要使學(xué)生掌握程序語言的語法規(guī)則來編寫程序,更重要的是掌握算法思想與問題求解的思路,而計算思維正是使學(xué)生掌握使用計算機(jī)科學(xué)對問題進(jìn)行求解的一種思維方法和能力。
國內(nèi)外的眾多學(xué)者把計算思維能力的培養(yǎng)視為教育界改革的重要研究范疇,特別是在計算機(jī)教育領(lǐng)域,進(jìn)行了多年的研究與探索。如何將計算思維的理念融入到計算機(jī)教學(xué)中,培養(yǎng)學(xué)生計算思維能力,成為計算機(jī)教學(xué)研究的焦點(diǎn)和改革的突破點(diǎn),并在此研究中取得了一定的成果,但在程序設(shè)計課程教學(xué)中培養(yǎng)計算思維尚未形成一套完整的教學(xué)模式,仍處于探索階段。
如何將計算思維真正融入程序設(shè)計課程中,我們進(jìn)行了一定的探討,在多年的程序設(shè)計課程教學(xué)中總結(jié)了一定的經(jīng)驗(yàn),基于計算思維的案例教學(xué)法比較適用,但是如何設(shè)計合理有效的設(shè)計案例是案例教學(xué)法成功的關(guān)鍵。
托爾說:“一個出色的案例,是教師與學(xué)生就某一具體事實(shí)相互作用的工具;一個出色的案例,是以實(shí)際生活情境中肯定會出現(xiàn)的事實(shí)為基礎(chǔ)所展開的課堂討論。它是進(jìn)行學(xué)術(shù)探討的支撐點(diǎn);它是關(guān)于某種復(fù)雜情境的記錄;它一般是在讓學(xué)生理解這個情境之前,首先將其分解成若干成分,然后再將其整合在一起?!?/p>
對C語言程序設(shè)計課程的教學(xué)任務(wù)而言,更重要的是使學(xué)生學(xué)習(xí)計算機(jī)分析、解決問題的思路和方法[7]。因此,在C語言程序設(shè)計課程教學(xué)過程中,一定要避免只重視程序設(shè)計語言的語法規(guī)則的錯誤思想,在將計算思維的培養(yǎng)作為教學(xué)核心任務(wù)的教學(xué)過程中要重視程序設(shè)計方法,而不是語言本身,不僅要求學(xué)生用計算機(jī)讀得懂程序,編寫和調(diào)試代碼,更重要的是要學(xué)會如何設(shè)計算法,從而開發(fā)學(xué)生的主動性和能動性。
如何設(shè)計以計算思維為導(dǎo)向的程序設(shè)計案例,是案例教學(xué)法的核心,經(jīng)過多年程序設(shè)計課程教學(xué)的經(jīng)驗(yàn),將程序設(shè)計課程的教學(xué)案例設(shè)計原則總結(jié)如下:
1.案例選題的生活化
在教學(xué)案例的選擇中堅持生活化、常態(tài)化的原則,即選擇貼近生活、學(xué)生比較熟悉的問題,讓學(xué)生在熟悉的問題下思考解決方法,這樣可以緩解學(xué)生對程序設(shè)計的畏懼感。在學(xué)生給出問題的解決方法并用計算機(jī)進(jìn)行求解后,學(xué)生會有一種恍然大悟的感覺,他們從中認(rèn)識到計算機(jī)竟然能這么方便地用以解決日常生活中的問題,從而消除對程序設(shè)計語言的抽象、枯燥的感覺。這樣生活化的案例在問題的求解中激發(fā)學(xué)生的學(xué)習(xí)興趣,讓學(xué)生在興趣盎然的氛圍中學(xué)習(xí),感受到程序就在身邊。而對生活化的問題求解鍛煉了學(xué)生日常問題求解的思維,從而培養(yǎng)學(xué)生的計算思維。
2.案例涵蓋知識點(diǎn)的典型化
根據(jù)每節(jié)課的教學(xué)目標(biāo)和教學(xué)內(nèi)容的需要適當(dāng)選擇教學(xué)案例,將本節(jié)課的教學(xué)內(nèi)容涵蓋在案例的解決中,同時要符合學(xué)生的認(rèn)知水平,案例的設(shè)計既是學(xué)生平時耳聞目睹的,但又了解不深的普遍問題,這樣可使學(xué)生對這些問題的實(shí)際背景容易接受,從而愿意去深入了解,這樣的案例可以使學(xué)生更容易理解教學(xué)內(nèi)容,同時能夠讓學(xué)生觸類旁通,利用所學(xué)知識解決類似問題。
3.案例問題的提出和解決的程序化
使教學(xué)案例的設(shè)計與計算思維相結(jié)合,在案例問題的解決中注重算法的設(shè)計,方法的選擇,培養(yǎng)學(xué)生獨(dú)立解決問題的能力,并在案例中適當(dāng)添加程序語言,使學(xué)生在問題解決的同時可以使算法程序化,這樣既可以培養(yǎng)學(xué)生的計算思維,又可以培養(yǎng)學(xué)生的程序思維,使枯燥無味的程序語法知識順其自然地在案例中學(xué)習(xí),從而提高學(xué)生應(yīng)用計算機(jī)知識抽象和分解問題的能力。
根據(jù)課程教學(xué)目標(biāo)和教學(xué)內(nèi)容,以選擇生活化、常態(tài)化的案例為原則,以計算思維為導(dǎo)向的程序設(shè)計案例的選擇原則,讓學(xué)生體會到如何用計算機(jī)解決問題的方法來解決日常生活中的問題。下面以一個典型案例的設(shè)計為例具體實(shí)現(xiàn)案例設(shè)計和應(yīng)用。
教學(xué)內(nèi)容:指針和數(shù)組。
教學(xué)目的:掌握指針和數(shù)組的定義以及使用。
教學(xué)重點(diǎn):指針和數(shù)組的定義及使用。
教學(xué)難點(diǎn):指針和數(shù)組的使用。
針對C語言程序設(shè)計課程中指針和數(shù)組知識的學(xué)習(xí),下面給出一個常見問題求解的案例,這一案例同樣適用于數(shù)組知識的學(xué)習(xí),只是案例中問題求解的方式有所變化。
1.問題提出:根據(jù)二代居民身份證號確定此人性別的問題。
2.常識解答:居民二代身份證號共18位,從左向右前6位為戶口所在地,第7~14位共8位為出生年月日,第15~17位為順序位(同地區(qū)同年同月同日生的人的順序編號)其中第17位代表性別(奇數(shù)為男、偶數(shù)為女),最后1位為校驗(yàn)位。
3.問題求解:從18位數(shù)字中取出第17位,然后判斷奇偶性,奇數(shù)為男、偶數(shù)為女。
對分解后的兩個問題,針對不同的理論學(xué)習(xí)內(nèi)容,我們有很多種解決方法,如:使用函數(shù)提取字符串中的一個或多個字符、使用數(shù)組下標(biāo)提取數(shù)組元素、使用指針提取數(shù)組元素等多種方法。下面針對指針的學(xué)習(xí)給出求解方法。
4.求解方法:
Step1:利用數(shù)組存儲給定的18位數(shù)字,利用指針的移動提取第17位數(shù)字;Step2:用取出的第17位數(shù)字與2模除取其余數(shù),判斷奇偶性。5.算法分析:針對以上問題的求解方法為例寫出相應(yīng)算法:Step1:定義整型數(shù)組a,整型變量b,整型指針變量p;
Step2:將18位身份證號賦值給a數(shù)組,指針p指向數(shù)組的首地址;
Step3:移動指針指向第17位數(shù)字;Step4:指針提取第17位數(shù)字后模除2取余數(shù)賦值給b變量;Step5:判斷b的奇偶性,如果是奇數(shù)則是男,如果是偶數(shù)則為女;
Step6:輸出結(jié)果。
6.問題求解方法的代碼化:
這一案例是非常生活化的案例,每個人都有身份證號,但是將這樣一個常見問題用程序設(shè)計語言在計算機(jī)上實(shí)現(xiàn)確實(shí)不是一件容易的事情,結(jié)合教學(xué)內(nèi)容和教學(xué)目標(biāo),將問題的解決方法限定在指針和數(shù)組的使用,更是加大了問題的解決難度。就案例分析和問題的解決而言,讓學(xué)生選擇多種解決方法,訓(xùn)練學(xué)生如何將生活中的問題用計算機(jī)來解決,同時掌握指針和數(shù)組的定義、賦值及使用等基礎(chǔ)知識。使學(xué)生在案例分析和算法設(shè)計時培養(yǎng)了計算思維能力,同時讓學(xué)生在有趣的案例中學(xué)習(xí)相對枯燥的理論知識。
大學(xué)教育更多的是素質(zhì)的養(yǎng)成,能力的培養(yǎng),正像一條教育格言講的:“T e ll me an d I wi ll f o rget.T eac h me an d I wi ll kn o w.Inv ol ve me an d I wi ll l earn.”在大學(xué)教育中,要少一些灌輸,多一些參與。《C語言程序設(shè)計》課程的傳統(tǒng)教學(xué)存在一定的問題,在多年的程序設(shè)計課程教學(xué)中提出以計算思維為導(dǎo)向的案例教學(xué)法,并針對教學(xué)案例設(shè)計的核心問題進(jìn)行研究,針對傳統(tǒng)教學(xué)存在的問題,以計算思維為導(dǎo)向,總結(jié)了教學(xué)案例設(shè)計的原則,設(shè)計了教學(xué)案例。通過《C語言程序設(shè)計》課程教學(xué)實(shí)驗(yàn)證明,提出的以計算思維為導(dǎo)向的程序設(shè)計教學(xué)案例設(shè)計方法是有效的。學(xué)生通過案例教學(xué)可以提高學(xué)生的學(xué)習(xí)積極性和主動性,大眾化的案例解決在使學(xué)生掌握了相關(guān)理論知識的同時培養(yǎng)了學(xué)生分析和解決問題的能力,培養(yǎng)了學(xué)生的計算思維。
[1]Jeannette M.W ing,“Computational Thinking,”Communication of the ACM,no.49(Mar.2006):33-35.
[2]劉向永、周以真:《計算思維改變信息技術(shù)課程》,《中國信息技術(shù)教育》2013年第6期,第5-12頁。
[3]周以真:《計算思維》,《中國計算機(jī)學(xué)會通訊》2007年第3卷第11期,第83-85頁。
[4]《九校聯(lián)盟(C9)計算機(jī)基礎(chǔ)教學(xué)發(fā)展戰(zhàn)略聯(lián)合聲明》,《中國大學(xué)教學(xué)》2010年第9期。
[5]“CM/IEEE Computer Society Interim Review Task Force,”Computer science curriculum 2008:An interim revision of CS 2001,accessed June 28,2010,http://www.acm.org/education/curricula/.
[6]教育部高等學(xué)校計算機(jī)基礎(chǔ)課程教學(xué)指導(dǎo)委員會:《高等學(xué)校計算機(jī)基礎(chǔ)教學(xué)發(fā)展戰(zhàn)略研究報告暨計算機(jī)基礎(chǔ)課程教學(xué)基本要求》,高等教育出版社,2009。
[7]戰(zhàn)德臣、聶蘭順:《計算思維與大學(xué)計算機(jī)課程改革的基本思路》,《中國大學(xué)教學(xué)》2013年第2期,第56-60頁。
作者單位:西安翻譯學(xué)院電子工程系陜西西安
G642