冉娟++張鋼



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