冉娟++張鋼
摘 要:針對獨(dú)立學(xué)院非計(jì)算機(jī)專業(yè)的教學(xué)現(xiàn)狀,分析程序設(shè)計(jì)課程目前存在的問題,提出“以思維培養(yǎng)為主體,以能力培養(yǎng)為核心,以服務(wù)專業(yè)為目標(biāo)”的教學(xué)改革目標(biāo),結(jié)合天津大學(xué)仁愛學(xué)院Python程序設(shè)計(jì)課程的教學(xué)情況,探討以程序設(shè)計(jì)思想為重心的“精講導(dǎo)學(xué)+課堂翻轉(zhuǎn),RAPTOR流程圖+程序設(shè)計(jì),實(shí)例貫穿”等多元化教學(xué)模式。
關(guān)鍵詞:獨(dú)立學(xué)院;計(jì)算思維;精講導(dǎo)學(xué);實(shí)例貫穿;RAPTOR流程圖+程序設(shè)計(jì)
0 引 言
2017年,教育部啟動“新工科”發(fā)展研究工作,即針對新技術(shù)、新產(chǎn)業(yè)與社會新形態(tài)的變化,推進(jìn)面向可持續(xù)競爭力的新型工科人才培養(yǎng)模式改革[1]。基于此人才培養(yǎng)模式改革,計(jì)算機(jī)基礎(chǔ)教育的任務(wù)和目標(biāo)更要注重培養(yǎng)各專業(yè)學(xué)生在理解知識的基礎(chǔ)上,掌握和應(yīng)用知識,從而達(dá)到能力和素質(zhì)的提升[2]。程序設(shè)計(jì)作為計(jì)算機(jī)基礎(chǔ)教學(xué)的核心課程之一,正是在實(shí)踐中培養(yǎng)學(xué)生逐步掌握程序設(shè)計(jì)的思想和方法,培養(yǎng)學(xué)生解決問題的思維習(xí)慣和能力,讓學(xué)生真正掌握利用計(jì)算機(jī)解決專業(yè)問題的通用方法。面向非計(jì)算機(jī)專業(yè)開設(shè)第一門程序設(shè)計(jì)課程時(shí),要考慮以下幾點(diǎn):①非計(jì)算機(jī)專業(yè)學(xué)生學(xué)習(xí)本課程后,可能不再學(xué)習(xí)其他計(jì)算機(jī)課程,要通過該課程盡可能激發(fā)學(xué)生對程序設(shè)計(jì)的學(xué)習(xí)興趣,并讓學(xué)生今后能夠以此為基礎(chǔ),自學(xué)其他計(jì)算機(jī)知識;②非計(jì)算機(jī)專業(yè)學(xué)生通過學(xué)習(xí)該課程,應(yīng)該掌握程序設(shè)計(jì)的思想和方法,重點(diǎn)是學(xué)會利用計(jì)算機(jī)解決問題,而不是關(guān)注其底層實(shí)現(xiàn);③非計(jì)算機(jī)專業(yè)學(xué)生除了要學(xué)習(xí)程序設(shè)計(jì)的一些基本概念外,還要學(xué)習(xí)今后可能用到的專業(yè)技術(shù)和知識,以更好地為專業(yè)服務(wù)。
1 獨(dú)立學(xué)院程序設(shè)計(jì)課程面臨的問題
長期以來,我國高校針對非計(jì)算機(jī)專業(yè)普遍開設(shè)C語言程序設(shè)計(jì)課程,實(shí)際教學(xué)內(nèi)容圍繞數(shù)據(jù)類型、指針、內(nèi)存、字符操作等開展[3]。由于非計(jì)算機(jī)專業(yè)學(xué)生缺少計(jì)算機(jī)體系結(jié)構(gòu)相關(guān)知識、沒有專業(yè)需求、認(rèn)識程度不高、學(xué)習(xí)困難等諸多因素,C語言程序設(shè)計(jì)課程教學(xué)出現(xiàn)前所未有的困難,無法滿足非計(jì)算機(jī)專業(yè)學(xué)生在后續(xù)計(jì)算機(jī)應(yīng)用中繼續(xù)使用該語言解決問題。對此,2015年開始,天津大學(xué)仁愛學(xué)院嘗試用Python語言替代非計(jì)算機(jī)專業(yè)的C語言,主要出于以下幾個(gè)原因:①語言代碼簡潔,不要求程序通過函數(shù)封裝,代碼行數(shù)比C語言簡短;②語法簡單,沒有C語言中的指針、地址等涉及計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)的元素,能降低非計(jì)算機(jī)專業(yè)學(xué)生的學(xué)習(xí)難度;③擁有豐富的圖形庫和科學(xué)計(jì)算庫,能夠完成各種實(shí)用程序,特別是具有圖形界面的應(yīng)用程序能夠很好地提高學(xué)生學(xué)習(xí)程序設(shè)計(jì)的興趣,如藝術(shù)圖形繪制;④強(qiáng)大的標(biāo)準(zhǔn)庫可以實(shí)現(xiàn)大數(shù)據(jù)處理、機(jī)器學(xué)習(xí)、網(wǎng)絡(luò)爬蟲等,有助于學(xué)生學(xué)會一種終身受用的編程語言。用Python語言替代非計(jì)算機(jī)專業(yè)的C語言是程序設(shè)計(jì)課程發(fā)展的必然趨勢[3],但在教學(xué)實(shí)踐中仍然面臨以下問題。
(1)Python語言成為C語言的替代品,教學(xué)內(nèi)容和教學(xué)案例卻都照搬C語言,仍然圍繞編程語言展開教學(xué),無法體現(xiàn)Python語言自身的優(yōu)勢,課程內(nèi)容“換湯不換藥”。
(2)課程教學(xué)內(nèi)容沒有針對不同專業(yè)做適當(dāng)調(diào)整,學(xué)生仍然認(rèn)為學(xué)習(xí)程序設(shè)計(jì)課程沒有用處,與其專業(yè)的后續(xù)課程沒有必然聯(lián)系,學(xué)習(xí)本課程只追求拿到學(xué)分。
(3)教學(xué)模式?jīng)]有隨程序設(shè)計(jì)語言的改變而改變,仍然是“以教師為中心”,且采用“課堂講授理論—上機(jī)操作—課后練習(xí)”的傳統(tǒng)教學(xué)方式,導(dǎo)致學(xué)生學(xué)習(xí)興趣仍然不高、學(xué)習(xí)了編程卻不會編程,也不會利用計(jì)算機(jī)解決問題。
綜上所述,用Python語言替代非計(jì)算機(jī)專業(yè)的C語言,初衷是一方面可以降低學(xué)生學(xué)習(xí)程序設(shè)計(jì)的難度,提高學(xué)生的學(xué)習(xí)興趣;另一方面在“互聯(lián)網(wǎng)+”時(shí)代,非計(jì)算機(jī)專業(yè)學(xué)生能夠運(yùn)用Python語言解決實(shí)際問題,以更好地服務(wù)于專業(yè)。然而,教學(xué)實(shí)踐反映出學(xué)生對該課程仍然很迷茫,他們認(rèn)為只是更換一種語言,與本專業(yè)聯(lián)系不大,課程用處不大,學(xué)習(xí)程序設(shè)計(jì)課程目的只是獲得學(xué)分,從而失去替換的真正意義。
2 Python程序設(shè)計(jì)課程教學(xué)改革探索
2.1 課程定位和目標(biāo)制訂
在深入分析研究“教指委”提出的“大學(xué)計(jì)算機(jī)基礎(chǔ)課程教學(xué)基本要求”有關(guān)Python程序設(shè)計(jì)課程教學(xué)目標(biāo)的基礎(chǔ)上[4],2016年,天津大學(xué)仁愛學(xué)院重新探討和研究面向非計(jì)算機(jī)專業(yè)開設(shè)Python語言程序設(shè)計(jì)課程的教學(xué)定位和目標(biāo),確定“以思維培養(yǎng)為主體,以能力培養(yǎng)為核心,以服務(wù)專業(yè)為目標(biāo)”的課程教學(xué)定位,突出不同專業(yè)的特點(diǎn)與需求,突出學(xué)生創(chuàng)新思維能力和計(jì)算機(jī)實(shí)際應(yīng)用能力培養(yǎng)的教學(xué)目標(biāo),探索該課程新的教學(xué)內(nèi)容體系、研究和實(shí)踐新的教學(xué)模式與教學(xué)方法,讓學(xué)生能將所學(xué)知識轉(zhuǎn)化為能力,以達(dá)到培養(yǎng)學(xué)生計(jì)算思維能力,讓學(xué)生真正掌握利用計(jì)算機(jī)解決專業(yè)問題的通用方法。
2.2 課程教學(xué)內(nèi)容改革
根據(jù)課程定位與目標(biāo),我們對該課程教學(xué)內(nèi)容改革并重新規(guī)劃,將其分為基礎(chǔ)部分、能力部分以及應(yīng)用部分。其中,基礎(chǔ)部分主要包括基礎(chǔ)語法和基本程序結(jié)構(gòu);能力部分包括基本算法和高級數(shù)據(jù)結(jié)構(gòu);應(yīng)用部分根據(jù)專業(yè)需求不同設(shè)計(jì)不同的專題應(yīng)用,讓學(xué)生結(jié)合所學(xué)專業(yè)綜合系統(tǒng)地開展程序設(shè)計(jì),達(dá)到學(xué)以致用的效果。這種課程內(nèi)容組織形式不僅有利于教師在教學(xué)過程中把握教學(xué)知識點(diǎn),還有利于學(xué)生理解課程的總體結(jié)構(gòu);同時(shí),遵循循序漸進(jìn)的原則,讓學(xué)生逐步提高計(jì)算思維能力和系統(tǒng)能力。課程所涉及的語法知識在課堂上簡單講解,并利用SPOC給學(xué)生提供自主學(xué)習(xí)平臺。課程教學(xué)內(nèi)容劃分[5]見表1。
2.3 教學(xué)過程組織和教學(xué)模式改革
程序設(shè)計(jì)課程是一門實(shí)踐性很強(qiáng)的課程,針對該課程的特點(diǎn)和學(xué)習(xí)理念,整個(gè)教學(xué)過程組織將傳統(tǒng)“理論+實(shí)踐”相融合,即充分體現(xiàn)“理論教學(xué)融于實(shí)踐、實(shí)踐貫穿教學(xué)全過程”。在教學(xué)學(xué)時(shí)不變的情況下,授課地點(diǎn)全部安排到機(jī)房,教師講完理論知識,學(xué)生可以立即實(shí)踐驗(yàn)證,并配合相應(yīng)練習(xí)以鞏固對知識點(diǎn)的理解。這種教學(xué)過程組織能夠及時(shí)解決學(xué)生對教學(xué)內(nèi)容的疑惑,使教師更容易開展計(jì)算思維教學(xué)活動,使學(xué)生在思維和技能兩方面都受益。endprint
程序設(shè)計(jì)課程的教學(xué)重點(diǎn)是讓學(xué)生能將所學(xué)知識轉(zhuǎn)化為能力,真正掌握利用計(jì)算機(jī)解決問題的通用方法,從而培養(yǎng)計(jì)算思維能力。在前導(dǎo)課程RAPTOR可視化程序設(shè)計(jì)的基礎(chǔ)上,教師要進(jìn)一步培養(yǎng)學(xué)生的學(xué)習(xí)興趣和計(jì)算思維能力,積極推行“以學(xué)生為中心”的教學(xué)理念,改變以往傳統(tǒng)的教學(xué)模式,建立以程序設(shè)計(jì)為重心的“精講導(dǎo)學(xué)+課堂翻轉(zhuǎn),RAPTOR流程圖+程序設(shè)計(jì),實(shí)例貫穿”等多元化教學(xué)模式,以激發(fā)學(xué)生的學(xué)習(xí)興趣,引導(dǎo)學(xué)生按照“提出問題—分析問題—解決問題”的方法進(jìn)行主動學(xué)習(xí)。
3 基于計(jì)算思維的多元化教學(xué)模式
3.1 精講導(dǎo)學(xué)+課堂翻轉(zhuǎn)
傳統(tǒng)程序設(shè)計(jì)課程的教學(xué)方式是“課堂講授理論—上機(jī)操作—課后練習(xí)”,教師花費(fèi)大量時(shí)間用于課堂講解語法結(jié)構(gòu)和基礎(chǔ)理論知識,學(xué)生在實(shí)踐課上按照教師布置的實(shí)驗(yàn)題目將程序錄入,調(diào)試程序就算完成任務(wù)[6]。這種教學(xué)模式下,教學(xué)過程枯燥無味,學(xué)生只能一味地接受知識,容易失去學(xué)習(xí)興趣。為了解決這個(gè)問題,我們認(rèn)為教學(xué)過程在體現(xiàn)“理論教學(xué)融于實(shí)踐,實(shí)踐貫穿教學(xué)全過程”的同時(shí),教師還應(yīng)將教學(xué)重心轉(zhuǎn)移為程序設(shè)計(jì)的思想和方法。對此,我們借助北京理工大學(xué)Python語言程序設(shè)計(jì)MOOC課程資源,采用“精講導(dǎo)學(xué)+課外自主學(xué)習(xí)+自測”的方式完成理論知識的教學(xué),教學(xué)模式包括創(chuàng)建SPOC、課前自主學(xué)習(xí)、課堂精講、課后自測4個(gè)教學(xué)環(huán)節(jié)。
(1)創(chuàng)建SPOC。我們基于北京理工大學(xué)Python語言程序設(shè)計(jì)MOOC課程資源,建設(shè)本校SPOC;根據(jù)課程教學(xué)需求,為學(xué)生建立學(xué)習(xí)資源、提供網(wǎng)絡(luò)交流平臺并設(shè)置課前引導(dǎo)問題,讓學(xué)生帶著問題進(jìn)行課前學(xué)習(xí)。
(2)課前自主學(xué)習(xí)。根據(jù)教師指定的教學(xué)任務(wù)和引導(dǎo)問題,學(xué)生在課前通過SPOC資源和“雨課堂”智慧教學(xué)工具,對課程視頻和課件進(jìn)行自主學(xué)習(xí),可以提前發(fā)現(xiàn)自己難以理解的知識點(diǎn),并在自主學(xué)習(xí)過程中利用“雨課堂”及時(shí)反饋給教師,讓教師準(zhǔn)確了解學(xué)習(xí)的程度,以便在課程講解時(shí)做到有的放矢。
(3)課堂精講,主要完成課前小測——編程——實(shí)踐。教師利用“雨課堂”教學(xué)工具,在課前5~10min對學(xué)生課前自主學(xué)習(xí)內(nèi)容進(jìn)行小測試,如圖1所示,以及時(shí)獲知學(xué)生的答題和知識掌握情況,有針對性地開展課堂教學(xué);將更多課堂時(shí)間用于引導(dǎo)學(xué)生討論和分析問題,提出解決問題的方法和途徑;將理論知識融于程序設(shè)計(jì)中,讓學(xué)生在課堂上開展編程實(shí)踐,及時(shí)理解并解決問題。教師在整個(gè)教學(xué)過程中只需要講解重點(diǎn)與難點(diǎn),提高課堂利用率。
(4)課后自測。學(xué)生在課后除了要完成必要的基礎(chǔ)編程題目外,還需要完成SPOC資源中的課后自測題目,以鞏固所需理論知識點(diǎn)。
3.2 以“RAPTOR流程圖+程序設(shè)計(jì)”為框架
程序設(shè)計(jì)是計(jì)算思維的教學(xué)重點(diǎn),對于大一新生而言,理解和掌握程序設(shè)計(jì)是學(xué)習(xí)中的難點(diǎn),對于“三本”院校的學(xué)生更是如此。為了讓學(xué)生更好地理解和掌握,在前導(dǎo)課程RAPTOR可視化程序設(shè)計(jì)的基礎(chǔ)上,與Python程序設(shè)計(jì)相結(jié)合,既能強(qiáng)化學(xué)生的思維訓(xùn)練,又能輔助學(xué)生更好地理解Python程序設(shè)計(jì)語法結(jié)構(gòu)。以實(shí)現(xiàn)“PM2.5空氣污染指數(shù)分級問題”為例,講解Python的分支嵌套結(jié)構(gòu),學(xué)生往往在理解分支嵌套結(jié)構(gòu)上容易出現(xiàn)困難,即如何給出一個(gè)清晰的嵌套結(jié)構(gòu),對此,教師在教學(xué)過程中不應(yīng)急于講解Python分支嵌套語法結(jié)構(gòu),而應(yīng)該先讓學(xué)生使用RAPTOR給出解決該問題的流程圖。由于思維模式不同,學(xué)生可能會給出圖2所示的2種流程圖;教師可以根據(jù)前面所學(xué)的if-else結(jié)構(gòu),引導(dǎo)學(xué)生對照RAPTOR流程圖逐步寫出分支嵌套結(jié)構(gòu),以圖3(a)為例寫出Python代碼,如圖3(b)所示,并在此流程圖的基礎(chǔ)上,引出為避免程序代碼縮進(jìn)越來越多,給出Python特有的分支嵌套結(jié)構(gòu)if-elif-else以一次性寫完程序條件,如圖3(c)所示,從而讓學(xué)生了解程序設(shè)計(jì)的不同方法,引導(dǎo)學(xué)生從流程圖角度理解程序設(shè)計(jì),具有更直觀、更感性的認(rèn)識。
3.3 以“實(shí)例化”貫穿
教學(xué)過程中要實(shí)現(xiàn)“以思維培養(yǎng)為主體,以能力培養(yǎng)為核心”的目標(biāo),必須根據(jù)教學(xué)內(nèi)容和學(xué)生特點(diǎn)精心選取并設(shè)計(jì)教學(xué)案例,以“實(shí)例化”引導(dǎo)學(xué)生從基本問題到綜合問題逐步深入學(xué)習(xí),充分利用Python語言優(yōu)勢,讓學(xué)生感受到Python語言與其他語言的不同,培養(yǎng)學(xué)生的編程興趣,掌握利用計(jì)算機(jī)解決問題的方法,提升學(xué)生的計(jì)算思維能力。因此,教學(xué)案例選取要從以下兩方面著手:一是以圖形化案例培養(yǎng)學(xué)生對Python程序設(shè)計(jì)課程的學(xué)習(xí)興趣;二是案例既要典型,又不要過于復(fù)雜,還要具有趣味性,可以融會貫通知識點(diǎn),能實(shí)現(xiàn)提高學(xué)生綜合應(yīng)用能力的目標(biāo)。
例如,利用Turtle庫繪制一個(gè)簡單等邊三角形,首先引出如何使用Python庫和程序順序結(jié)構(gòu)設(shè)計(jì);其次講解如何利用循環(huán)結(jié)構(gòu)方法簡化代碼行,進(jìn)一步引出循環(huán)結(jié)構(gòu);最后擴(kuò)展使等邊三角形旋轉(zhuǎn)形成螺旋等邊三角形且每個(gè)等邊三角形邊顏色不同,引出高級數(shù)據(jù)結(jié)構(gòu)列表的概念和使用。這樣由一個(gè)簡單繪制等邊三角形,就讓學(xué)生由淺入深地學(xué)習(xí)同類問題。
此外,還有一些實(shí)例可以聯(lián)系起來,如根據(jù)某人出生年份判斷其屬相。學(xué)生初學(xué)時(shí),可以讓其使用if-else結(jié)構(gòu)或者if-elif-else結(jié)構(gòu)方法實(shí)現(xiàn),之后使用列表結(jié)構(gòu)方法實(shí)現(xiàn),引導(dǎo)學(xué)生比較這兩種方法的不同,進(jìn)一步引出是否所有if-elif-else結(jié)構(gòu)實(shí)現(xiàn)的代碼都可以使用列表結(jié)構(gòu)實(shí)現(xiàn)。教師除了精選教學(xué)案例解決問題之外,還要引導(dǎo)學(xué)生發(fā)揮創(chuàng)造力和想象力,制作更有趣的教學(xué)案例,如利用Turtle庫繪制精彩藝術(shù)圖“火柴人”等。
4 教學(xué)效果分析
通過對學(xué)生進(jìn)行網(wǎng)上問卷調(diào)查,我們共收集了285份問卷,如圖4所示,將多元化教學(xué)模式運(yùn)用于Python程序設(shè)計(jì)課程的教學(xué)實(shí)踐中,教與學(xué)雙方都有了較大轉(zhuǎn)變。從學(xué)生角度分析,65.96%的非計(jì)算機(jī)專業(yè)學(xué)生不再認(rèn)為程序設(shè)計(jì)是計(jì)算機(jī)專業(yè)特有的課程內(nèi)容,并認(rèn)為可以在今后工作中幫助其解決專業(yè)問題;63.86%的學(xué)生認(rèn)為程序設(shè)計(jì)有利于培養(yǎng)計(jì)算思維能力;32.28%的學(xué)生認(rèn)為“RAPOTR流程圖+程序設(shè)計(jì)”教學(xué)模式使編寫程序變得容易;47.72%的學(xué)生愿意開展SPOC課堂翻轉(zhuǎn),認(rèn)為這種教學(xué)模式對課程學(xué)習(xí)有幫助;52.98%的學(xué)生認(rèn)為以“實(shí)例化”引導(dǎo)其從基本問題到綜合問題逐步深入,對于學(xué)習(xí)該課程有很大的幫助。從教師角度分析,教師不再僅僅是教授知識,而是從單一知識傳授者轉(zhuǎn)變?yōu)榻虒W(xué)設(shè)計(jì)者、引導(dǎo)者和管理者。不僅如此,這種教學(xué)模式還有效提升了學(xué)生的主動學(xué)習(xí)能力和問題求解能力,學(xué)科之間的差異也讓他們相互之間有了更多的學(xué)習(xí)機(jī)會[7]。
5 結(jié) 語
針對非計(jì)算機(jī)專業(yè)的Python程序設(shè)計(jì)課程,實(shí)施以程序設(shè)計(jì)為重心的“精講導(dǎo)學(xué)+課堂翻轉(zhuǎn),RAPTOR流程圖+程序設(shè)計(jì),實(shí)例貫穿”等多元化教學(xué)模式,有效激發(fā)了學(xué)生的學(xué)習(xí)興趣,提高了學(xué)生的主動學(xué)習(xí)能力和問題求解能力,并在一定程度上突出了不同專業(yè)特點(diǎn)與需求。下一步,我們將繼續(xù)以學(xué)生為教學(xué)主體,持續(xù)探索如何將程序設(shè)計(jì)課程與專業(yè)實(shí)踐應(yīng)用更好地結(jié)合,以最大限度地提高程序設(shè)計(jì)課程的教學(xué)質(zhì)量和學(xué)生程序設(shè)計(jì)的實(shí)踐能力。
參考文獻(xiàn):
[1] 徐曉飛, 丁效華. 面向可持續(xù)競爭力的新工科人才培養(yǎng)模式改革探索[J]. 中國大學(xué)教學(xué), 2017(6): 13-17 .
[2] 中國高等院校計(jì)算機(jī)基礎(chǔ)改革課題研究組. 中國高等院校計(jì)算機(jī)基礎(chǔ)教育課程體系[M]. 北京: 清華大學(xué)出版社, 2014: 9-10.
[3] 嵩天, 黃天羽, 禮欣. Python 語言: 程序設(shè)計(jì)課程教學(xué)改革的理想選擇[J]. 中國大學(xué)教學(xué), 2016(2): 42-47.
[4] 教育部高等學(xué)校大學(xué)計(jì)算機(jī)課程教學(xué)指導(dǎo)委員會. 大學(xué)計(jì)算機(jī)基礎(chǔ)課程教學(xué)基本要求[M]. 北京: 高等教育出版社, 2016: 85-91.
[5] 嵩天, 禮欣, 黃天羽. Python語言程序設(shè)計(jì)基礎(chǔ)[M]. 2版. 北京: 高等教育出版社, 2017:34-278.
[6] 許麗娟, 黃冬梅, 王愛繼. 以計(jì)算思維為導(dǎo)向的非計(jì)算機(jī)專業(yè)程序設(shè)計(jì)課程創(chuàng)新教學(xué)[J]. 計(jì)算機(jī)教育, 2015(12): 31-34.
[7] 張莉, 金瑩, 張潔. 基于MOOC的“用Python玩轉(zhuǎn)數(shù)據(jù)”翻轉(zhuǎn)課堂實(shí)踐與研究[J]. 工業(yè)和信息化教育, 2017(3): 70-76.
(編輯:宋文婷)endprint