孫曉玲 王金玲
摘 要:結合多年的教學實踐,對C語言課程從教學內容、教學方法與手段、考核評價體系與考核方法等方面的改革舉措進行了總結,分析了存在的問題和取得的成效;用實例介紹了使用PTA實驗教學輔助平臺進行實踐教學改革的具體做法,分析和探討了C語言課程實踐教學中存在的問題和改革的方法及取得的成效。
關鍵詞:C程序設計課程;教學改革;PTA+模式;實驗教學
中圖分類號:G642.0? 文獻標識碼:A? 文章編號:1673-260X(2021)11-0089-04
1 引言
“C語言程序設計”是我校計算機各相關專業的基礎課程,也是程序設計類的核心和入門課程。主要培養學生程序設計基礎,把握程序設計方法和基本思想,奠定學生的編程能力基礎。該課程歷史悠久,由于其長期以來在軟件開發和嵌入式系統開發中具有舉足輕重的重要地位,所以特別受到各高校和軟件開發企業的重視[1],我校計算機學院及與其合作的達內科技、青島軟件、安博教育等企業都十分重視C語言課程建設,將其列入專業改革重點建設的課程。該課程師資力量雄厚,參與課程建設的人員較多,多年來C語言課程組的老師們付出了艱辛的不懈的努力,使該課程建設不斷邁上新臺階,成為我院具有示范作用的課程,通過積累經驗,夯實基礎、突出特色,使該課程在教學思想和觀念、教學方法與手段、教學內容與體系、教學質量與水平、教改成果和教材建設方面均處于領先地位。
2 課程改革主要措施
2.1 教學內容建設和教學方法舉措與成效
作為專業基礎課,我校計算機相關專業均設置了“C語言程序設計”課程,C語言程序設計課程組根據各專業特點依據專業培養方案,立足學生實際多次討論、修訂教學大綱,經過深入實踐和研究,編寫了滿足不同層次不同專業教學需求的理論課教學大綱、實驗課教學大綱,并根據我校學生實際編寫了實驗指導書。在課程體系與教學內容設計上,突出把握程序設計方法和思想,充分體現項目教學的思想,注重程序設計實踐訓練,重點引入典型程序設計案例,將程序設計的學習融入對案例的研究和解決過程中,注重程序設計算法的實現,以學生實際編程解決問題的能力為突破口,培養學生分析和解決實際問題的能力。
2.1.1 教學內容注重突出“先進性、實用性和趣味性”
該課程在建設過程中,以程序設計為主導,努力適應市場和程序開發主流環境,重點體現“先進性、實用性和趣味性”,注意引進新知識、新技術、新思想和新理念,注重理論與實踐緊密結合,在教學內容上給出與生活密切相關的、有趣的、有意義的典型案例,使學生對學習內容充分感受到樂趣,學生的學習熱情得以充分調動,能夠自覺地學習和掌握相應的基本理論和專業知識,從而能盡快適應軟件的開發過程。
在突出先進性方面,講授內容上注重介紹和使用C語言新的標準和編譯版本,具體做法上選用了內容新穎、使用新標準的新版本教材,選擇流行的、新穎的編譯系統,教學理念上注重對學生程序設計思想方法的培養。
在突出實用性方面,以項目驅動為導向設計教學內容,首先根據項目的具體要求,提出問題,然后根據具體問題設計教學內容,由淺入深、從易到難,從簡單到復雜不斷充實內容,使得知識脈絡更清晰。學生也通過項目任務的引導,不斷面對新的問題,思索設計新的解決辦法,循序漸進地解決一系列問題,并通過編寫程序調試和完善程序的過程,獲得了成就感,激發了求知欲望。通過對實際項目的分析得到解決方案,又通過編寫和調試程序,使學生得到軟件開發實際工作的鍛煉。在分析解決方法的過程中,算法很自然的滲透其中,學生從中得到訓練,在編程調試程序的過程中,枯燥難懂的語法規則也不再是困擾解決問題的屏障。
在突出趣味性方面,課程組的老師們開動腦筋,充分利用現代化教育技術和專業特長,制作有趣的教學課件,并針對學習重點和難點問題采用先進的多媒體技術手段制作動畫、錄制視頻,將抽象的知識融入其中,結合典型的案例展示給學生,增強了趣味性,提高了教學互動效果,也極大地激發了學生的學習興趣,使學生更自覺的在快樂的學習中學會知識。多年來,C語言課程的教學課件不斷更新完善,生動形象,課程組老師設計的“C語言中的遞歸”、“排序算法”等教學課件在內蒙古自治區高校課件設計大賽和學校組織的課件設計大賽中多次獲獎,非常受學生喜愛,取得了明顯的效果。
2.1.2 教學環節和教學方法的改革注重實效和可操作性
程序設計能力和程序設計思想的培養是程序設計課程教學的最終目的[2]。我們緊緊圍繞這個主題,采取一些行之有效的教學方法組織開展教學活動。
首先,抓住教學重點,精講多練。我們始終把教學的重點放在培養學生的基本編程能力上,側重講授用正確的計算機語言描述算法,對編程的細節與技巧向學生做一些介紹,要求學生學會先分析算法和數據,再畫出流程圖,然后進行程序的編寫。教學過程中充分利用多媒體教學手段,給學生演示程序設計的全過程,隨著課程的不斷深入,對編程細節的講授逐漸淡化,而對程序的整體掌握的要求則逐漸加強,使學生充分感受到程序設計的魅力,編程能力也逐步躍上一個臺階。
其次,引入項目驅動和經典案例教學方法。在授課過程中采取項目驅動的教學方法,即以實際問題引出相關的理論和概念,在講述實例的過程中融入知識點,通過分析歸納,建立解決工程實際問題的思想和方法,以提高解決工程實際問題的能力[3]。由于C語言是專業基礎課程,我院的C語言程序設計課程都是在第一學年的第一個學期開設的,學生都是初次接觸程序設計語言,對程序設計思想方法難以理解和掌握,思維方式的轉變存在很大的障礙,這也是我們在教學中面臨的最大困難。針對這一難題,課程組老師積極研制和整理教學案例,經過了艱辛的勞動和不斷創新思維,對經典教學案例,進行歸類總結、完善并系列化,使得各知識點教學內容都有標桿并緊密銜接,便于學生理解掌握經典算法并活學活用,舉一反三,取得了事半功倍的效果。
其三,強化教學活動中的“教、學、做”統一。其中教師的“教”是主導、而學生的“學”是主體、“做”則是教學實踐活動。“教、學、做”三方面通過有機的結合,形成了三位一體的教學方法,有效地避免了教和學、學與做等教學環節的分離和脫節,“教、學、做”統一起來后,教學活動得以形成一個整體[4],在教學設計、課堂授課、上機實驗、布置作業、項目實訓、實踐活動輔導、師生互動、學生自我學習等各個教學環節上全面兼顧,都得到關注,總體把握教學效果,最終用“做”取得的成績來衡量“教”與“學”的能力和水平。
其四,課內與課外相結合。豐富學生課外活動內容,為適應后續課程的學習打下了較為堅實的基礎。引導學生參加學習興趣小組,鼓勵和指導學生積極參加程序設計大賽,利用程序設計輔助教學平臺,開展競賽活動,熟悉和了解ACM大賽的賽事和做題方法,選拔優秀學生組隊參加自治區高校ACM程序設計大賽。越來越多的學生加入到科技活動中,在教師指導下開展軟件開發,積累了一定的經驗也取得了可喜的成績。
2.2 新工科背景下實踐教學改革具體措施與成效
2.2.1 以往實踐教學中存在的問題
最近幾年,為了適應以互聯網和工業智能為核心的新興產業的發展,我校和企業合作,相繼開設了一些新興的專業,如大數據、云計算等,C語言程序設計作為這些專業的基礎課程,在目前工程教育專業認證背景下,其改革的目標有了更高的要求,學生在課程實踐中,運用該課程所學的專業知識解決實際的復雜工程問題的能力需要進一步加強。C語言是實踐性很強的一門課程,以往的實踐教學環節中存在著如下一些問題:
(1)實驗課學生基本上是在機房上機,教師給學生發布實驗內容和要求,學生在課堂上完成編程任務,教師一人面對整個班級的同學,學生編程是否正確需要教師一個一個進行判斷,不能完全關注到每個同學的狀態。
(2)實驗的內容也基本上是教材上的例題和習題,題目量比較少,也不夠新穎。
(3)有的學生在課下完成的程序,由于編程題無法自動評判,不能及時的得到正確與否的反饋,使學習積極性受到影響。
(4)編程任務對于所有學生都一樣,不能滿足不同層次的學生需求和個性發展。
(5)缺少綜合性和合作性的編程訓練。
2.2.2 PTA平臺+實訓大作業的訓練模式
以上所列出的問題也背離了工程教育認證標準的要求,C語言課程組針對這些問題,在實踐教學環節采用了PTA平臺+實訓大作業的模式進行改革,這項改革措施首先在2019級學生中一個班級進行了教學改革實驗,而后在2020級的所有6個班級中進行了推廣。
程序設計類實驗教學輔助平臺(Programming Teaching Assistant,簡稱PTA)是由浙江大學牽頭建設的在線程序評測系統,目前已經有800多所高校的6000多名教師共同建設和使用。平臺題目數量足夠大并且還一直在不斷擴充。教師注冊并申請開通教師權限后,可以創建班級,新建自己的題目,創建題目集,布置作業,查看作業情況,開通討論話題、考試并進行成績統計等操作。
程序設計類課程重在培養和提高學生的程序設計能力,進而培養學生的解決實際問題的能力,尤其對于初次接觸程序設計的學生,在上機實驗中往往發現問題就手忙腳亂,不知道該如何查找錯誤,怎么樣排除錯誤,這也是實踐教學中的一大難點,針對這樣的現實情況,我們在實踐教學中加強了程序的編寫、錯誤的調試等基礎訓練內容,借助PTA這個平臺反復訓練,鍛煉了學生分析解決問題能力和動手能力。具體做法如下:
(1)結合課程內容的不同知識點,創建和組織了適合我校學生的題目,并針對相應的章節創建了題目集。每一個知識點結束后,通過PTA教學平臺,將題目集發放給學生,學生可以利用課上課下的時間,通過電腦或者手機進行反復的編程、糾錯和線上提交等操作,自動評判系統會給出具體的正確或者錯誤的提示。教師可以隨時查看本班級題目集的提交和排名情況。學生在平臺上也可以查看自己在本題目集的排名和得分情況。
(2)為了適應不同層次學生的學習進度,題目集的編排是通過“模仿、改寫、編寫、提高”的循序漸進的方式來組織。每套題目集里面都設置了基礎題目和提高題目,基礎題目屬于必做題,是學生必須掌握的對課程基本知識點的鞏固題目;提高題目是對于學有余力的學生的“加餐”。通過這種分層練習的方式來確保滿足不同層次學生的學習需求。
(3)學生在提交所編寫程序的過程中遇到的問題,可以通過討論區進行交流,大家可以提問題、可以說出自己的疑惑、分析編程思路和設計實現的方法,學習好的學生能夠從中起到示范作用并給與其他同學一些指導,既培養了學生之間互幫互學的精神也鍛煉了學生自主學習能力,同時激發了學生積極參與討論的熱情,也帶動了整個班級的學習氛圍,教師只需要在適當的時候有針對性的給與指導和隨時把控當前的學習狀況,解放了教師的工作強度,也便于教師把更多的精力投入到課程內容的研究和教學上。
(4)在學期的最后四周布置分組大作業。學生以小組為單位分別選擇題目并進行組內分工和代碼編寫。作業結束需要進行答辯和評分。答辯以小組為單位推舉出答辯代表,其他成員給予補充。由任課教師和邀請的學院其他老師作為答辯教師給出答辯成績。這個過程讓學生能夠體會到程序的模塊如何劃分,小組成員相互協作分工完成大作業的團隊協作精神。
2.2.3 將項目實訓內容融入課堂,貫穿于教學中
在與企業合作辦學以來,合作企業每學期針對C語言課程進行2次集中項目實訓,項目實訓內容結合課程進度進行,企業的實訓指導教師和任課教師及時溝通教學進度情況,使實驗課緊緊圍繞項目實訓內容或大作業開展,根據項目實訓的內容,把算法的分析、數據處理的方法以及技術要求先介紹給學生,而將一些輔助性的或通過訓練可由學生編程實現的部分,交由學生自己完成,經過反復上機調試,鍛煉了學生解決實際問題的能力。在項目訓練過程中教師加強了實驗指導,幫助學生調試程序的過程中指導學生掌握調試程序的一些技巧和方法,學生完成實訓項目過程中寫出階段性實驗報告。
2.2.4 使用PTA平臺進行實驗教學的實施效果
PTA平臺在2019級新生一個班級開始首次實施,2020級大一新生的6個本科班級開始推廣使用,與未使用PTA平臺的2019級學生進行比較,有如下的一些變化:
(1)編程數量的變化:2019級學生沒有使用PTA平臺的,整個學期給學生布置的編程題目約為90道題目,學生的完成情況沒有辦法具體統計。2020級學生共布置了編程題目142道,平均完成并通過測評的題目數在90道題以上。從兩屆學生的數據對比看,學生編程的數量和質量都是有可見的提高,并且通過PTA平臺的試題分析,教師對于學生的做題情況是可以詳細掌握的。
(2)這些量變也確實產生了“質變”:首先報名參加比賽的學生人數逐年增加,而且前幾年學生參加ACM競賽,獲得了“優勝獎”。2021年帶領學生參加ACM競賽,2020級的學生踴躍參加并獲得了二等獎和三等獎的好成績。參加團體程序設計天梯賽的成績也從2020年的未獲獎,到2021年的二等獎,成績有了明顯的提高。
(3)使用PTA平臺極大程度的激勵了學生的做題積極性,培養了學生自學能力,建立了良好的學習氛圍。學生的分析問題和解決問題的能力有明顯的提高,動手能力越來越強,并且從做題中獲得了學習的成就感,為后續課程的學習打下良好的基礎。對于普通二本院校的學生來說,確實給學生提供了更高更廣闊的鍛煉平臺。
(4)綜合性作業培養學生的工程素養。學生的團結協作能力和實踐創新能力都得到了鍛煉。學生在做完項目后都能體會到這一學期的課程帶來的收獲和成就。
(5)項目實訓,使學生實驗目的更加明確,對調試程序的方法和過程加深了理解,對化解教學難點起到了實效,同時鍛煉了學生分析解決問題的綜合能力,提高了應用能力。
3 改革課程考核評價體系和實驗教學評價方法
為增強課程考核的公平、公正和權威性,使課程考核能夠全面、公正、真實地考察學生的學習情況,積極引導學生的學習方向,促進學生學習方式的改進,課程組老師積極進行考試評價方式的革新與實踐,并不辭辛苦廢寢忘食根據學生實際設計組織試題,使得編程題考試實現了系統自動評判。
該課程考核遵循重學習過程、輕考試結果的原則,注重對學生平時學習和實驗、自主設計、完成階段性實訓項目的記錄和考察。
課程評價包括理論和實踐兩部分,實踐部分包括編程題和項目綜合實訓兩部分。平時成績占總成績15%,平時作業理論部分客觀題使用學習通和泛雅平臺分單元或階段進行測試,系統進行評判;實踐部分編程題使用PTA平臺,分單元發布題目進行單元測試。在學期期中和期末使用PTA平臺分別進行兩次考試,由系統進行評判,成績各占30%和40%,項目綜合實訓采用大作業方式在課程的最后四周進行,學生分組,小組成員分工完成,答辯方式評判,成績占15%。通過近兩年采用新的考核方式和評價方法,實現了教考分離,評卷都由系統自動進行,考核結果全面客觀,更注重過程。取得了積極的效果。
4 結語
經過C語言課程組全體教師多年來的辛勤工作和努力,該課程建設取得了一些顯著成績和效果,尤其近兩年來,通過利用泛雅(學習通)、PTA等網絡平臺,極大地豐富了課程的教學資源,方便了師生互動和學習交流,教學效果能夠及時得到反饋,教學成效性得到增強。但在目前教學資源條件大好的形勢下,也迎來了一些新的問題和挑戰,需要我們不斷努力探索、實踐與創新。如何讓學生恰當地使用網絡資源而不是過分依賴,需要有更好的解決辦法,針對我校學生特點,開發充實適合學生實際的練習題和試題在PTA平臺使用,也是需要長期進行的,為學生打造更大的提升空間,還需要創新性課外指導。課程改革的工作無止境,需要不斷的努力探索前行,不斷總結經驗,彌補不足,創新舉措,使得課程建設不斷完善,為培養應用型復合型創新人才貢獻力量、做出更大成績。
參考文獻:
〔1〕崔武子.C程序設計教程(第3版)[M].北京:清華大學出版社,2012.
〔2〕張基溫.新概念C程序設計大學教程[M].北京:清華大學出版社,2012.
〔3〕袁寶華,朱長水,吳許俊,等.面向應用型人才培養的C語言教學改革研究[J].辦公自動化,2018,29(04):11-15.
〔4〕楊洪偉,王開田,李曉輝,等.面向創新能力培養的C語言教學改革研究[J].計算機時代,2018,36(04):197-200.