馮滿堂,王瑞杰
(1.南京市莫愁中等專業(yè)學(xué)校,南京210017;2.江蘇鳳凰數(shù)字傳媒有限公司,南京210009)
隨著教育部《關(guān)于全面深化課程改革落實(shí)立德樹人根本任務(wù)的意見》頒布,核心素養(yǎng)成了學(xué)科課程標(biāo)準(zhǔn)、課堂教學(xué)的指引,并成為學(xué)生培養(yǎng)質(zhì)量評(píng)判的標(biāo)準(zhǔn)。如普通高中新課程標(biāo)準(zhǔn)(2017 版)最顯著的特點(diǎn)是凝練了各學(xué)科的核心素養(yǎng),并以此來引領(lǐng)各學(xué)科課程標(biāo)準(zhǔn)的制定和各學(xué)科的課堂教學(xué)。核心素養(yǎng)只是一個(gè)理論框架,只是指明了學(xué)生接受完相應(yīng)學(xué)段的學(xué)校教育后應(yīng)具有的面對(duì)未來的必備品格和關(guān)鍵能力。而核心素養(yǎng)的落地,仍需課程和課堂教學(xué)為載體。理應(yīng)把核心素養(yǎng)融合到相應(yīng)學(xué)科的課程教學(xué)中。
《C 語言程序設(shè)計(jì)》是五年制高職移動(dòng)互聯(lián)應(yīng)用技術(shù)專業(yè)、軟件應(yīng)用技術(shù)專業(yè)的一門專業(yè)基礎(chǔ)課,是后續(xù)課程(Java、數(shù)據(jù)結(jié)構(gòu)、Python 等)的前導(dǎo)課程。目前該門課程的教學(xué)過多的關(guān)注了語法、語句等知識(shí)點(diǎn)的教學(xué),忽視了像計(jì)算思維、深度學(xué)習(xí)和自主學(xué)習(xí)等核心素養(yǎng)的培養(yǎng)。本文嘗試著把核心素養(yǎng)引入到《C 語言程序設(shè)計(jì)》的課堂教學(xué)中,圍繞著計(jì)算思維這一核心素養(yǎng)要素開展核心素養(yǎng)視野下的課堂教學(xué)研討,以期提高《C 語言程序設(shè)計(jì)》課堂教學(xué)的成效性。
“核心素養(yǎng)是學(xué)生在接受相應(yīng)學(xué)段過程中,逐步形成的適應(yīng)個(gè)人終身發(fā)展和社會(huì)發(fā)展需要的必備品格與關(guān)鍵力?!薄吨袊鴮W(xué)生發(fā)展核心素養(yǎng)》從三個(gè)方面(文化基礎(chǔ)、自主發(fā)展和社會(huì)參與)六大要素(人文底蘊(yùn)、科學(xué)精神、學(xué)會(huì)學(xué)習(xí)、健康生活、責(zé)任擔(dān)當(dāng)和實(shí)踐創(chuàng)新)十八個(gè)要點(diǎn)來進(jìn)行論述中國學(xué)生發(fā)展應(yīng)具備的核心素養(yǎng)。核心素養(yǎng)作為教育培養(yǎng)人才的主要目標(biāo),主要回答了“培養(yǎng)什么樣的人”的問題,這一目標(biāo)可以帶動(dòng)和引領(lǐng)課程改革,變革教學(xué)方式,推動(dòng)課程教學(xué)評(píng)價(jià),是知識(shí)、技能、態(tài)度、情感價(jià)值觀的綜合體[1]。要想體現(xiàn)核心素養(yǎng)的育人目標(biāo),必須立足課堂教學(xué),讓學(xué)科特有的素養(yǎng)在學(xué)生身上體現(xiàn)和落實(shí)。
對(duì)于核心素養(yǎng)的界定與涵義,不同國家和組織有不同的描述,但基本上都突出強(qiáng)調(diào)了學(xué)習(xí)思維能力的培養(yǎng)和在此基礎(chǔ)上的情感態(tài)度價(jià)值觀等非知識(shí)本身的強(qiáng)調(diào)。而思維能力是學(xué)習(xí)者對(duì)世界的理解與改造水平,對(duì)其培養(yǎng)是學(xué)科課程教學(xué)特定的責(zé)任和目標(biāo)。高中信息技術(shù)課程標(biāo)準(zhǔn)將計(jì)算思維、信息意識(shí),數(shù)字化學(xué)習(xí)與創(chuàng)新等作為其學(xué)科的核心素養(yǎng)[2]?!吨械嚷殬I(yè)學(xué)校信息技術(shù)課程標(biāo)準(zhǔn)》也將“計(jì)算思維”作為學(xué)科的核心素養(yǎng)納入其中,而作為專業(yè)基礎(chǔ)課的《C 語言程序設(shè)計(jì)》理應(yīng)做出自己的回應(yīng),將計(jì)算思維作為自己學(xué)科應(yīng)當(dāng)承載的核心素養(yǎng)之一。
計(jì)算思維最早由周以真教授提出,即“計(jì)算思維是一個(gè)明確問題和制定解決方案的思維過程,由此解決方案就可以表示為能夠被信息處理代理有效執(zhí)行的形式”,為了使計(jì)算思維的培育在實(shí)際的課堂教學(xué)中具有可操作性,ISTE 和CSTA 聯(lián)合給出了一個(gè)具有可操作性的定義,即“計(jì)算思維是一個(gè)問題解決的過程,包括制定問題、分析數(shù)據(jù)、抽象、設(shè)計(jì)算法、選擇最優(yōu)方案,推廣六大要素”[3-4]。這個(gè)定義表明計(jì)算思維的培育應(yīng)聚焦于問題的解決,使其在實(shí)際的課程教學(xué)中應(yīng)用具有了很強(qiáng)的可操作性。但是計(jì)算思維培育不能僅僅停留在問題解決這些知識(shí)與技能培育的目標(biāo)上,還應(yīng)該融入像情感、態(tài)度等核心素養(yǎng)要素。美國麻省理工學(xué)院媒體實(shí)驗(yàn)室從三個(gè)維度分析和定義了計(jì)算思維的新概念,即計(jì)算概念、計(jì)算實(shí)踐和計(jì)算觀念。和目前課程的三維課程目標(biāo)相呼應(yīng),就《C 語言程序設(shè)計(jì)》課堂教學(xué)來講,具體對(duì)應(yīng)關(guān)系如下表所示[3-4]。更好地詮釋了計(jì)算思維不僅僅是算法和編程,還有像態(tài)度、寬容、與他人溝通交流解決問題的能力等,也從另一個(gè)側(cè)面說明核心素養(yǎng)視野下的計(jì)算思維是在差異化的問題情境中,分析問題、設(shè)計(jì)算法,利用C 語言編程實(shí)現(xiàn)問題解決,形成解決問題的思維過程,并應(yīng)用在其他相似的情境中。
表1 計(jì)算思維與三維目標(biāo)對(duì)應(yīng)表
《C 語言程序設(shè)計(jì)》作為理工科專業(yè)的一門專業(yè)基礎(chǔ)課,其知識(shí)點(diǎn)(常量、變量、運(yùn)算符、表達(dá)式、選擇、循環(huán)、數(shù)組、函數(shù)、結(jié)構(gòu)體等)多,理論深(面向結(jié)構(gòu)化程序設(shè)計(jì)),靈活性強(qiáng),實(shí)踐性(編程實(shí)踐)要求高。但教師在日常的課堂教學(xué)中過于關(guān)注知識(shí)點(diǎn)的教學(xué),過于關(guān)注C 語言本身語法的教學(xué),沒有很好地處理好程序語言、算法與應(yīng)用的關(guān)系,更別說像自主創(chuàng)新和學(xué)會(huì)學(xué)習(xí)等與核心素養(yǎng)相匹配的教學(xué),造成學(xué)生“一講都會(huì)、一做都錯(cuò)”的課堂教學(xué)窘境,學(xué)生普遍感覺不知“為何學(xué)?”、“學(xué)何用?”。造成課堂教學(xué)成效性不高。為改變這種課堂教學(xué)現(xiàn)狀,本文嘗試著把核心素養(yǎng)融入到《C語言程序設(shè)計(jì)》的課堂教學(xué)中,圍繞著計(jì)算思維這一核心要素,提出了教學(xué)內(nèi)容聚焦問題解決、算法設(shè)計(jì)引入算法原型工具、編程實(shí)踐驗(yàn)證問題解決,知識(shí)遷移融會(huì)貫通的“四位一體”的《C 語言程序設(shè)計(jì)》課堂教學(xué)的新模式,具體的模式如圖1 所示。并以“尋找所有水仙花”為例開展核心素養(yǎng)視野下的課堂教學(xué)實(shí)踐,以期培養(yǎng)學(xué)生的計(jì)算思維,培育學(xué)生的核心素養(yǎng),提升《C 語言程設(shè)計(jì)》課堂教學(xué)的成效性。
圖1 四位一體的課堂教學(xué)模式圖
(1)教學(xué)內(nèi)容聚焦問題解決
計(jì)算思維就是指使人們能夠按照計(jì)算機(jī)的工作思路來解決現(xiàn)實(shí)生活中的問題,形成解決問題方案的一種思維活動(dòng),核心在于聚焦問題的解決,形成解決問題的思維活動(dòng)。程序設(shè)計(jì)卻能夠很好的展示解決問題的思維過程,培育學(xué)生積極主動(dòng)的利用計(jì)算機(jī)來解決現(xiàn)實(shí)生活問題的意識(shí),提高計(jì)算機(jī)思維能力。在《C 語言程序設(shè)計(jì)》的課堂教學(xué)中,教學(xué)內(nèi)容的選擇應(yīng)聚焦問題的解決,問題的難度應(yīng)符合學(xué)生的最近發(fā)展區(qū),最好是符合學(xué)生生活背景的真實(shí)問題。針對(duì)比較復(fù)雜的問題,教師應(yīng)引導(dǎo)著學(xué)生按照問題解決的思路分解成若干個(gè)小問題,且這些小問題應(yīng)該具有遞進(jìn)性和梯隊(duì)化,從簡(jiǎn)單的問題不斷思考,隨著一個(gè)個(gè)問題的解決,形成解決問題的思路,構(gòu)建相應(yīng)的模型,形成解決問題的方案,培育學(xué)生的計(jì)算思維能力。現(xiàn)在以“尋找所有水仙花”為例來進(jìn)行說明。
“尋找所有水仙花”是《C 語言程序設(shè)計(jì)(第五版)》(譚浩強(qiáng)著)第五章“循環(huán)結(jié)構(gòu)程序設(shè)計(jì)”中的一個(gè)經(jīng)典例子,這個(gè)例子在教材中重點(diǎn)考核學(xué)生對(duì)循環(huán)知識(shí)的掌握情況,而在核心素養(yǎng)理念的引領(lǐng)下,《C 語言程序設(shè)計(jì)》這門課程除了傳授給學(xué)生學(xué)科知識(shí)外,還應(yīng)培育學(xué)生和這門課程相匹配的核心素養(yǎng),如計(jì)算思維,等等,因此,這節(jié)課設(shè)計(jì)時(shí)融入了枚舉算法的內(nèi)容在內(nèi),并根據(jù)問題解決的過程,把問題解成如下兩個(gè)問題。
問題1:如何判斷一個(gè)數(shù)是水仙花數(shù)?
問題2:如何尋找所有水仙花數(shù)?
針對(duì)問題1 的解決,教師可以繼續(xù)引導(dǎo)學(xué)生進(jìn)行思考,想判斷一個(gè)3 位正整數(shù)x 是否是水仙花?應(yīng)該想辦法截取其百位數(shù)、十位數(shù)、個(gè)位數(shù)?以使其滿足各位數(shù)字立方和等于該數(shù)x 本身。進(jìn)而引導(dǎo)學(xué)生利用已有知識(shí)想辦法得出如下解決方案:個(gè)位數(shù)=x%10;十位數(shù)=x/10%10;百位數(shù)=x/100;這個(gè)方案不是唯一的,可以引導(dǎo)學(xué)生發(fā)散思維,得出多種不同的答案。
針對(duì)問題2 的解決,教師應(yīng)在問題1 的基礎(chǔ)上繼續(xù)引導(dǎo)學(xué)生進(jìn)行思考,問題1 解決了如何判斷一個(gè)三位正整數(shù)是否是水仙花的問題,對(duì)于尋找所有水仙花,首先讓學(xué)生明白水仙花數(shù)是一個(gè)三位數(shù),水仙數(shù)一定存在于100 至999 的范圍之內(nèi),如果采用鍵盤從100開始往后一個(gè)個(gè)輸進(jìn)電腦,利用問題1 的方案一定能夠找出所有的水仙花,這種一個(gè)一個(gè)試的辦法,可以利用C 語言的循環(huán)來解決,同時(shí)引出了一個(gè)經(jīng)典算法“窮枚法”。采用以上問題分解的方法來解決問題,比一開始從循環(huán)知識(shí)點(diǎn)角度來講解,然后上機(jī)編程,不管是學(xué)生的接受度還是學(xué)生計(jì)算思維的培養(yǎng)都要好很多。
(2)算法設(shè)計(jì)引入原型工具
對(duì)于程序設(shè)計(jì)來說,有了問題的解決方案,并不代表一定能夠利用C 語言編程實(shí)現(xiàn),尤其對(duì)五年制高職生來講,本身自己就是初中生畢業(yè),中考的失利者,再加上C 語言本身語法知識(shí)點(diǎn)復(fù)雜,在上機(jī)實(shí)踐的過程中會(huì)遇到形形色色的問題和錯(cuò)誤,這些意想不到的問題和錯(cuò)會(huì)消耗學(xué)生大量的時(shí)間,并打擊他們學(xué)C 語言的積極性。為了方便學(xué)生把自己解決問題的思路通過C 語言編程實(shí)現(xiàn),在課堂教學(xué)的實(shí)踐過程中引入算法設(shè)計(jì)原型工具——Raptor。
Raptor 是一款可以進(jìn)行算法設(shè)計(jì)的原型工具環(huán)境,讓學(xué)生用基本的流程圖符號(hào)可視化的快速有序推理的創(chuàng)建算法,不用在語法上花費(fèi)太多精力,就可以快速的把解決問題的思考過程用算法的形式設(shè)計(jì)出來。和傳統(tǒng)的流程圖相比,不用像C 語言那樣需要編譯調(diào)試運(yùn)行程序,可以直接在Raptor 環(huán)境中基于流程圖進(jìn)行執(zhí)行,驗(yàn)證和調(diào)試算法,且能動(dòng)態(tài)的展示算法的執(zhí)行過程,變量值的變化,避免算法的邏輯錯(cuò)誤,并助于提高學(xué)生的計(jì)算思維[5-6]。借助Raptor 表達(dá)算法,可以激發(fā)學(xué)生的學(xué)習(xí)激情和興趣,培養(yǎng)學(xué)生的邏輯思維能力,促進(jìn)學(xué)生的思考與創(chuàng)新,“尋找所有從水仙花數(shù)”的流程圖如圖2 所示。
(3)編程實(shí)踐驗(yàn)證問題解決
借助于算法原型工具設(shè)計(jì)的流程圖,學(xué)生會(huì)很快實(shí)現(xiàn)“尋找所有水仙花數(shù)”的C 語言代碼,把代碼輸入到C 語言編譯器中,運(yùn)行調(diào)試代碼,驗(yàn)證問題的解決,由于借助了Raptor,在程序的編寫調(diào)試過程中,減少了邏輯上的錯(cuò)誤,增強(qiáng)了學(xué)生的成就感,提高了學(xué)生學(xué)習(xí)的主動(dòng)性和積極性,使自己全身心的投入到問題解決之中。
(4)知識(shí)遷移融會(huì)慣通。
計(jì)算思維是一種思維活動(dòng),是人類利用計(jì)算機(jī)領(lǐng)域的方法來解決現(xiàn)實(shí)中的問題,并形成解決問題的方案,且能有效的遷移到與之相關(guān)的其他問題的解決當(dāng)中,也就是做到知識(shí)遷移,能夠融會(huì)慣通的應(yīng)用所學(xué)知識(shí)。這就要求在實(shí)際的課堂教學(xué)中要差異化的創(chuàng)設(shè)教學(xué)情境。針對(duì)“尋找所有水仙花數(shù)”這一問題,如果只是停留在循環(huán)語句的使用這一層面,那就太淺層化了,應(yīng)在解決這一問題的過程中,引導(dǎo)學(xué)生總結(jié)出所蘊(yùn)含的“窮枚算法”,并遷移到其他如“暴力破解密碼”、“換零錢”、“雞兔同籠”、“百錢百雞”等相關(guān)問題情境中。
在《C 語言程序設(shè)計(jì)》課堂教學(xué)中傳授學(xué)科知識(shí)固然重要,但更重要的在于利用學(xué)科知識(shí)在差異化的情境中解決問題,并關(guān)注問題解決的思維過程和方法[7],形成計(jì)算思維。本文在分析了核心素養(yǎng)與計(jì)算思維的涵義和特征,結(jié)合《C 語言程序設(shè)計(jì)》課程特點(diǎn)的基礎(chǔ)上,提出了“四位一體”的教學(xué)模式,并結(jié)合“尋找所有水仙花數(shù)”這一具體教學(xué)案例進(jìn)行實(shí)踐,取得了不錯(cuò)的效果,對(duì)促進(jìn)高職《C 語言程序設(shè)計(jì)》課堂教學(xué)改革具有重要意義。
圖2 尋找所有水仙花數(shù)的流程圖