雷小宇+胡斌+曾喜良+丁學雷

摘要:程序設計能力是計算機科學及相關專業學生的核心能力。當前該專業的學生程序設計能力的培養存在一些問題,如重理論、輕實踐,而且理論教學與實踐教學脫節,傳統的教學模式忽視學生對在線資源和在線教學方式的需求等。因此,本文提出,應充分利用在線學習平臺和資源,探索基于線上線下相結合的程序設計能力培養模式,通過重組教學內容、改革教學組織方式、搭建在線實踐平臺及完善考核方案等一系列改革與實踐,開拓學生視野,培育程序設計氛圍,提高學生程序設計能力。
關鍵詞:程序設計能力;在線學習;培養模式
中圖分類號:TP311.1-4 文獻標識碼:A 論文編號:1674-2117(2017)17-0085-04
● 引言
程序設計基礎是計算機及相關專業的基礎核心課,是奠定學生信息素養的基礎性課程,同時也是學習計算機程序設計的入門課程。[1]學生通過本課程的學習,能夠了解一門程序設計語言的基本結構和執行流程,學會使用程序設計語言編制計算機程序,夯實程序設計基礎知識,培養程序設計的實踐能力,提高程序設計綜合素質,為學習后續課程打下基礎。學習程序設計方法是學生理解計算機知識的最好途徑[2],也是培養學生計算思維的重要途徑。同時,隨著大數據和云計算技術的發展,在線學習風靡全球,MOOC(Massive Open Online Courses,大規模開放網絡課程)、SPOC(Small Private Online Course,小規模限制性在線課程)的興起對我國高等教育產生了重大影響。
● 程序設計基礎教學存在的一些問題
程序設計基礎課程在教學實施過程中,因學生基礎差異大以及課程內容抽象、思維方式不同于常見思維等特點,往往要面臨如下問題:
首先,課程教學很容易陷入語言表達形式的誤區,課程的教學應突出體現使用編程解決特定問題的方式,即程序設計方法,而不是語言本身。[3]
其次,部分教師對理論教學投入較多,講得比較深、比較透,而對實踐教學和課后輔導及交流的投入卻有限,實踐操作中不能及時指導和糾正學生在學習過程中出現的問題和所犯的錯誤,而且實踐教學環節往往與理論教學脫節,課上學到的知識點不能及時上機實踐。
再次,當前大學生是伴隨著網絡興起而成長的一代,對網絡依賴度比較高,傳統的書本理論知識講授已經不能滿足他們的學習需求。另外,傳統的考核方式主要是采取“期末紙質考試+平時表現”的形式,這種結果式評價的考核方式比較單一,許多考試內容偏重語言而不是編程,且類似的考核內容和方式不能有效地提高學生學習積極性,也缺乏對學生及時的督促、疏導。
● 基于線上線下混合的教學模式改革
程序設計基礎課程是一門教學難度較大的課程,其原因是程序設計初學者難以由常見的數學思維和物理思維向計算思維轉變,難以理解程序設計的思維方式[4],同時大多數學生沒有程序設計經歷,對計算機程序具有極大的神秘感。[5]因此,如何幫助學生破除神秘感,樹立學習信心,實現思維方式的轉變,成為程序設計基礎教學的關鍵問題。為此,筆者提出基于O2O(Online to Offline,線上線下)的混合教學模式(如下圖),實現教學內容、教學資源、教學實踐線上化,將實踐教學與理論教學融為一體,解決理論學習與上機實踐的時延、脫節等問題。
1.教學內容和組織方式改革
在教學內容方面,增加貼近實際應用的案例,簡化抽象概念和理論的理解。整個課程大致分為三個階段:第一階段為基礎篇,包括程序設計基本語法和控制結構。考慮到初學者由常見的數學思維和物理思維向計算思維轉變比較困難的情況,增加了“數學問題的程序設計方法”和“常見的問題求解方法”,如分治、貪心、動態規劃、線性規劃、迭代、遞推等內容,進而提高學生的問題分析與設計能力。第二階段為提高篇,主要有函數與程序結構、數組與指針,首先重點介紹地址的概念,然后再深入講解數組和指針等知識點。第三階段為增強篇,主要講授結構和文件,注重C語言語法和程序設計能力與實際應用相結合,結合授課對象的專業特點,在學期末設置一個課程設計案例,綜合課程的大部分知識點,并通過案例調動學生的學習積極性,使其共同參與分析、討論案例,提出解決方案,并實現系統,進而提高學生的程序系統綜合設計能力。
在教學組織方面,教師以學生為中心,優化教學組織形式,增強學生學習主動性。強化教師與學生之間的教與學互動,實施小組協同學習。同時,結合不同教學內容,把課程分為三個教學階段,在每個階段末期組織班內挑戰賽,激發學生學習興趣,使其感受緊張的競賽氛圍,提高程序編碼和實現能力。
課前,教師要求學生在學校SPOC在線學習平臺上預習課程所需學習知識點,掌握基本概念和編程技巧。接著教師根據每個學生的特長和偏好,將授課對象劃分多個學習小組,每組三人,設組長一名,小組成員協同學習,結對編程,提高學習效率,觸發學生深入反思、積極探討,并且在課程開始前在程序設計在線評測平臺布置了100多道分層次、有梯度的競賽習題,供學生自主練習。
課中,采用極域教學系統,靈活地在教師端和學生端收發教學資料和程序代碼,自由地捕捉任意學生編程畫面,邀請學生講解自己的程序思想,并組織全班一起分析編程思路,剖析代碼的精妙之處或錯誤根源。每次課的最后五分鐘為課堂翻轉討論環節,針對所學的知識進行總結討論,對尚未很好解決的問題提出可能解決方案或者對已經解決了的問題提出更優化解決方案。
課后,以每天一題的作業方式要求學生利用程序設計在線評測平臺進行上機實踐。通過平臺的自動化測試,學生可以及時得到編譯運行結果及錯誤提示,同時教師也能動態地考查和監管學生的學習狀態。學生可利用課余時間盡可能多地完成題目,這樣既充分尊重了學生自主學習的自由,增強了其自主學習興趣,也提高了他們動手實踐能力及測試和調試能力。
2.實踐教學改革
依托學校教學網,建設比較完善的網絡教學資源。在SPOC在線學習平臺上,除了正常的課程標準、實施計劃、教案、課堂幻燈片和習題等教學資源外,筆者還針對較難理解的知識點錄制了五分鐘一個的mini-lesson視頻,滿足學生課前預習需求。同時,搭建程序設計在線評測平臺(PLAUST OnlineJudge),采用競賽式實驗方法,改進實驗教學進程,營造具有挑戰性和正向激勵作用的學習氛圍,學生在線練習,并能夠及時得到反饋結果,進而鞏固學習效果。另外,在平臺上建設擁有2000道區分不同水平的試題的題庫,建成一套實踐教學、訓練、考核以及競賽四位一體的教學資源體系,定期更新題庫,充分滿足學生看、聽、學、練、賽的個性化學習需求。
發揮學校教學網和即時通信軟件的作用,大力開展在線交流,拓寬了師生交流的渠道,教師可以隨時隨地回答學生疑問。根據課程操作性強、初學時問題較多的特點,結合實驗班學生的學習時間安排,制訂了詳細的線下輔導答疑計劃,對學生在學習過程中存在的問題進行講解、討論和知識拓展;同時,建立即時通信軟件交流群和SPOC在線學習平臺問題反饋區,組織學校程序設計俱樂部中的高年級學生協助教師在線進行答疑解惑,并及時交流與反饋學習中遇到的問題和疑惑,有效地減少學生學習過程中的挫折感,增強學生學習自信心。
3.考核方式改革
改變過去結果式的課程考核方式,建立以衡量綜合素質為依據的過程化考核評價體系。采用“期末理論考試(40%)+在線譯測平臺系統通過題量(30%)+課堂表現(10%)+課程設計(20%)”綜合衡量方式來考核學生。通過降低期末理論考試成績的比重,提高在線測試平臺通過的題量(包括三次階段挑戰賽排名)考核和期末課程設計考核的比重,充分激勵學生利用更多的課余時間動手實踐。同時,在學期末設置課程設計大作業,進一步考核了學生綜合運用知識解決實際問題的能力。過程化考核方式能夠動態監督和管理學生學習情況,在教學過程中教師能夠隨時發現并糾正偏離正確“航向”的學生,并且能夠有效地避免平時不學習、靠考前幾天死記硬背的不良學風,也能夠很好地觀察到哪些知識點學生掌握不夠牢靠,哪些程序設計環節中的細節容易忽略,進而在后期的教學過程中,能夠及時調整教學方案或個別重點輔導。這不僅改變了“結果式”的傳統考核方法,充分體現了“過程化”考核的思想,也尊重了學生作為教學活動的主體,較好地滿足了學生個性化學習的需求,并有效地激勵學生在學習過程中取長補短,全面掌握課程標準所涉及的知識點。
● 教學改革取得的成效
筆者所在學校的教學改革最初始于2013年,在2013—2016年連續四個秋季學期開設《程序設計基礎》教改實驗班,持續、深入地展開了程序設計能力培養教學改革,教改成效顯著。相對于平行班,教改實驗班的學生學習主動性和學習效果明顯提升,同時也獲得了學生的好評(四年的學生評教結果優秀率均在99%以上)。實驗班學生也在一系列科技創新活動和學科競賽中獲獎。近年來在各類程序設計競賽中共獲得獎勵200余項,其中江蘇省大學生程序設計競賽銅獎10項,藍橋杯全國總決賽上獲得一等獎6項、二等獎24項,中國大學生程序設計競賽銀獎1項、銅獎1項,ACM-ICPC國際大學生程序設計競賽亞洲區域賽銀獎1項、銅獎1項。
● 結語
程序設計基礎課程改革以“案例驅動、興趣引導、動手實踐、競賽提高”貫穿整個教學過程,突出程序設計能力的培養,重基礎、重實踐、重應用,著力培養學生的問題求解能力——分析與設計,培養學生語言運用能力——編碼與實現,培養學生程序排錯能力——測試與調試。采用過程化考核方式,對學生實施動態監管,能夠有效地激發學生學習興趣和潛能。運用極域教學系統和在線評測平臺把實踐與理論教學有機結合起來,提高了課堂效率,而且在線評測平臺作為學生實踐和競賽的學習平臺,發揮了很好的作用,學生的個性化學習需求得到較好的滿足,整體程序設計能力及信息素養得到顯著提高。
參考文獻:
[1]教育部高等學校計算機基礎課程教學指導委員會.高等學校計算機科學與技術專業核心課程教學實施方案[M].北京:高等教育出版社,2012.
[2][3]何欽銘,陸漢權,馮博琴.計算機基礎教學的核心任務是計算思維能力的培養——《九校聯盟(C9)計算機基礎教學發展戰略聯合聲明》解讀[J].中國大學教學,2010(9):5-9.
[4]何欽銘,顏暉,蘇小紅,等.“程序設計基礎”課程教學實施方案[J].中國大學教學,2010(5):62-65.
[5]周榮輝,郝曉楓,趙宏宇.學生程序設計能力培養的思考[J].吉林大學學報:信息科學版,2005(S2):122-126.
作者簡介:雷小宇(1979—),男,湖南雙峰人,講師,博士研究生,研究方向為機器學習、軟件質量評估、計算機基礎教學與研究。