賈金芳
摘要:C++程序設計課程作為計算機專業(yè)本科生必修的專業(yè)核心課程之一,實驗教學是課程的重要教學環(huán)節(jié),實驗教學環(huán)節(jié)在培養(yǎng)學生通過編程解決實際問題的能力和邏輯思維方面起重要作用。針對課程實驗教學過程存在的問題分析,對課程實驗教學方法、考核評價方式等方面進行多元化、過程化改革,構建“以賽促學,以賽促練”的教學體系,有助于進一步培養(yǎng)和提升學生的編程實踐能力、競賽能力和綜合應用能力。
關鍵詞: C++程序設計;實驗教學;教學改革;實踐能力
中圖分類號:G642? ? ? 文獻標識碼:A
文章編號:1009-3044(2024)08-0146-03
開放科學(資源服務)標識碼(OSID)
0 引言
C++程序設計是計算機專業(yè)學生需要重點掌握的一門程序設計課程,其主要講授C++編程語言,介紹面向對象程序設計方法,培養(yǎng)面向對象編程思維。該課程的先導課程是C語言程序設計,C語言是一種面向過程的編程語言,從C語言到C++語言的過渡, 也是面向過程思維向面向對象思維的跨越。
C++程序設計課程包括理論課和實驗課兩部分,二者相輔相成,缺一不可。俗話說:“紙上得來終覺淺,絕知此事要躬行?!保绦蛟O計類課程除了讓學生掌握基本語法和編程思想等基礎知識外,更重要的是要通過課程學習讓學生掌握編程方法,具備動手編程解決實際問題的能力[1]。因此,實驗教學是程序設計類課程教學中的重要環(huán)節(jié),在理論知識點學習和將理論應用于實踐中起到橋梁作用,也有助于培養(yǎng)學生的實踐能力、自主分析能力和解決問題的思維能力[2]。然而,傳統(tǒng)的實驗教學方法單一、技術手段相對滯后,無法完全調動學生的學習積極性,教學效果和學習成效不佳。為改善這些問題,及時調整教學手段,探索新的教學模式和方法顯得非常重要。
1 課程實驗教學現狀分析
C++作為計算機專業(yè)學生接觸的第二門程序設計語言,基于前期C語言學習基礎,學生的編程能力參差不齊,按照傳統(tǒng)的教學方法無疑是達不到平衡需求的。經總結分析,C++程序設計課程實驗教學存在的挑戰(zhàn)主要有以下幾個方面。
1) 忽略實踐的重要性。實驗課程是注重實踐能力鍛煉的重要環(huán)節(jié),傳統(tǒng)實驗教學中,大多數上機實驗內容為對理論課堂講解實例或教材上例題的練習,或對一些理論知識點的調試和驗證。實驗題目難度低,沒有與實際問題相關的針對性或綜合性訓練,只是對所學知識點的分散理解,沒有做到融會貫通,不能達到熟練應用水平。同時,缺乏與實際應用聯(lián)系的實驗,限制了學生對編程在實際應用中的理解和應用。此外,學生參加程序設計類競賽很少,如ACM、藍橋杯、天梯賽等大范圍開展的程序設計大賽,其題目難度較大,也需要全面的知識儲備。學生在這方面了解不深,未能及時掌握行業(yè)發(fā)展需求,沒有真正理解學會編程的重要性。
2) 未考慮學生能力的差異性。經過前期對C語言課程的學習,學生對編程的了解和掌握程度不可避免地會存在差異性,有些學生可能更擅長分析和解決復雜的編程問題,而另一些學生可能需要更多的指導和幫助,這種差異對實驗教學的設計和組織提出了挑戰(zhàn)。一般來說,學習能力強的學生會表現出較強的邏輯思維,容易接受新知識、新觀念,但是,正所謂尺有所短,寸有所長[3]。傳統(tǒng)實驗教學中所有學生所做實驗內容一樣,導致學習好的學生覺得沒有任何挑戰(zhàn),長此以往學生的學習興趣逐漸降低,而基礎薄弱的學生不能獨立完成或完成有一定難度,無法達到預期的教學效果。因此,實驗教學應提供不同層次和難度的實驗任務,以滿足學生的不同需求。
3) 考核方式單一。傳統(tǒng)實驗教學方法傾向于以結果為導向,重視實驗的正確性和完成度。這種評價方式忽略了學生實驗過程中思考能力和創(chuàng)造性思維能力的培養(yǎng),導致學生限于完成實驗任務,不重視解決問題的思考過程,無法有效激發(fā)學生的學習熱情。另外,傳統(tǒng)實驗教學方法受限于實驗設備、軟件環(huán)境和教師人力等資源的限制,學生的實驗時間和機會受到限制,無法充分探索和實踐。
2 課程實驗改革思路
計算機專業(yè)課程的教學與實驗及實踐環(huán)節(jié)密不可分,動手編程能力在程序設計課程中具有不可替代的重要地位,是培養(yǎng)、提高學生綜合素質和創(chuàng)新能力的重要組成部分。
理論是實踐的基礎,實踐是理論的應用,二者相輔相成,缺一不可。只有將課程理論教學與實踐教學相結合,課內教學和課外實踐相結合,才能扎實掌握一門編程語言。
針對以上課程現狀,C++程序設計課程組在計算機系的大力支持下,以培養(yǎng)學生編程實踐能力為基礎,培養(yǎng)計算思維為核心,培養(yǎng)自主學習能力為目標[4],主要從實驗教學方法和考核方式兩方面進行了多元化、過程化的改革嘗試,具體改革思路如下。
2.1 教學方法
首先,對于加強編程實踐能力方面,根據學生的能力和學習進度,提供個性化的實踐指導。一些學生可能需要更多的支持和指導,而另一些學生可能希望有更大的挑戰(zhàn)。這部分需要增加輔導人力投入,引入了“高年級助教”機制。其次,在學生能力差異性問題方面,課程以培養(yǎng)學生動手編程能力為基礎,貫徹“一提升,二突出,三層次”的實驗教學指導思想,結合教學內容和人才培養(yǎng)目標開設不同層次的驗證、綜合類實驗,每次實驗題型主要包括編程題,題目難度從易到難提升,考點從基礎到綜合,部分章節(jié)內容會增加附加題目,以利于滿足不同層次學生的學習需求,激發(fā)學生的學習興趣,突出學生自主性。此外,多元化教學方法不應該僅用于理論教學中,實驗教學也同樣適用,如小組學習機制、項目實踐練習等,利用現代化技術和在線學習平臺,提供交互式學習資源和實踐環(huán)境,使學生能夠自主學習和探索。
2.2 考核方式
課程考核方式改革一直是高等教育改革的重要組成部分[5]。傳統(tǒng)考核方式主要以學生提交的實驗作業(yè)為主,學生的學習效果很難完全得到體現,成績差距不明顯。為改善傳統(tǒng)實驗定性評價方式,引入了過程化考核方式,將CSP認證考試成績以20%的比例納入課程考核中。CSP考試有固定的考試周期和時間,不僅考查學生對計算機基礎知識的掌握,還注重培養(yǎng)學生的創(chuàng)新思維能力、問題解決能力和實踐能力,是對學生綜合能力的考驗,沒有平時的長期練習和知識、技術積累,很難取得好的成績。因此,過程化考核方式的改革既有效評估了學生的學習效果,又促進了綜合能力的提升。
3 課程實驗教學改革與探索
基于上述改革思路,課程實驗教學主要改革在以下幾方面體現。
3.1 引入助教機制
為了提高實驗教學質量,盡可能輔導到每一位同學,課程組引入“高年級助教”機制。助教通過課程組發(fā)布助教招聘公告后,由高年級優(yōu)秀同學自愿報名,然后經過課程組面試選拔選出,每個班級分配1名助教輔助任課教師完成實驗教學。
這些高年級助教通過前期的學習和實踐,對該門課程有一定的掌握和經驗。他們可以與學生進行更密切的互動,同時也更容易理解學生們的學習困難和疑惑,并結合自己學習的過程和經驗提供個性化的指導和建議,促進與學生間的思維碰撞。另外,助教可以給學生分享優(yōu)秀的學習資源、學習經驗和學習方法,幫助學生培養(yǎng)自主學習的能力,引導學生形成良好的學習習慣。助教也可以通過分享自己的編程經驗和實踐案例,激發(fā)學生對程序設計的興趣,有趣的編程項目和應用案例,幫助學生看到編程的實際應用和潛在價值,從而增強學生的學習動力。
3.2 分層實驗設計
根據理論教學及學生對知識點掌握情況自行編寫實驗卡,設計多道實驗題目,難度從易到難,難度依次遞增。將實驗任務分為不同的層次和難度,學生可根據自己的能力水平選擇適合的實驗任務,這樣可以滿足不同學生的需求,提高實驗教學的個性化和針對性。為了與競賽等編程環(huán)境保持一致,實驗題目主要以測試用例模式為準。為防止學生直接復制粘貼快速抄襲,給學生留有充分的做實驗時間,原則上學生將在課堂上完成所有題目,若有不能完成的同學,課后也會有3天左右時間繼續(xù)完成,學生完成作業(yè)后將作業(yè)壓縮包在限定截止日期前提交至網絡教學平臺,等待教師批閱。
3.3 發(fā)揮學生主體作用
實驗課堂上,強調學生的主體作用。課前教師會將每道題目需要解決的問題闡述清楚,然后由學生自由發(fā)揮,自主完成代碼編寫、調試等,期間若有不能自主解決的問題,老師和助教也是以引導、激勵的方式指導。
批改完作業(yè)后,整體分析學生作業(yè)情況,并在下次上課前半個小時內對大部分同學沒有完全掌握的題目由任課教師或助教現場實時編程講解。
3.4 小組學習機制
將班級學生按照4-5人/組劃分成多個小組,以“好帶差,小組幫扶制”為原則,學生自由組合,并推出組長的形式來分組。學生可以在小組中分享自己的理解和經驗,解答彼此的疑問,互相幫助和支持,這種互動可以加深學生對知識的理解和掌握,激發(fā)學生的學習熱情和動力。同時,通過小組討論和合作完成編程任務,學生可以相互借鑒和學習其他同學的思路和方法,促進共同進步和提升,也有助于提高學生的團隊合作能力和溝通能力,使成員個體感受到在團隊中的價值,增強團隊認同感,幫助學生樹立“團結、和諧、進取”的社會價值觀[6-7]。
3.5 引入OJ平臺
引入在線評測系統(tǒng)OJ(Online Judge) 作為實驗課程的一部分,任課教師可以根據理論教學進度和知識點范圍設計題目并在OJ平臺開放,這些題目可設置較長的時間范圍,方便學生課后隨時練習。如圖1所示為學習面向對象三大特性期間的一次練習題目,通過答題情況來看,練習題目也切實做到了分層設計。一方面,OJ提供實時的程序評測和反饋功能,學生提交代碼后,可以立即得到結果和反饋,這種實時性的評測和反饋有助于學生快速發(fā)現和修正代碼中的錯誤,提高調試和錯誤處理的能力。另一方面,基于OJ系統(tǒng)學生需要按照特定的編碼規(guī)范和要求完成編程任務,這有助于培養(yǎng)學生編寫規(guī)范、可讀性強的代碼的能力,提高代碼的質量和可維護性。同時通過學習和練習各種編程技巧和方法,提高學生的算法設計和解決問題的能力,做到與程序設計類競賽較好的銜接。
3.6 CSP機制
中國計算機學會(CCF) 計算機軟件能力認證(Certified Software Professional, CSP) 是CCF聯(lián)合華為、360、滴滴等10余家知名IT企業(yè)以及清華、北航、國防科大等15所著名高校于2014年推出CCF CSP認證標準,用于評價業(yè)界人士的計算機軟件能力。
計算機軟件能力認證以被測試者熟練掌握程序設計、數據結構以及算法,通過一定范圍內自選的通用編程語言,在指定時間空間內,熟練、準確地完成對給定問題的編程和調試為認證標準。編程語言允許使用C/C++、Java或Python。所編程序的正確性由計算機系統(tǒng)根據事先給定的數據進行測試,通過者得分,否則不得分。測試的問題覆蓋大學計算機專業(yè)所學習的程序設計基礎、數據結構以及算法,以及相關的數學基礎知識,并關注編程技巧的使用、性能的優(yōu)化,以及異常情況的正常處理。
通過準備和參加CSP認證考試,學生不僅可以提升在軟件開發(fā)領域的專業(yè)技能,包括算法設計、編程語言等方面的知識[8];取得高成績的CSP證書也可以為學生在求職和升學時提供有力的證明,增強學生的競爭力;通過考試內容還可以使學生了解實踐應用和行業(yè)發(fā)展需求,發(fā)現自身的優(yōu)勢和不足,及時彌補知識和技能的漏洞,有效優(yōu)化后期學習計劃。
構建“以賽促學,以賽促練”的教學體系,在C++課程中,除了實驗成績外,將CSP以20%的比例計入考核方式。學生學習完C語言課程后即被要求參加CSP認證考試,通過實時體驗競賽模式、考題形式、考試內容,及對所學知識的實時應用,清楚對知識的掌握情況,明確后續(xù)學習的努力方向。課程具體考核方案如表1所示,可以看出,課程考核方案更注重過程學習效果,實現以考促學、以考促教,以賽促學、以賽促練的模式。通過CSP認證要求盡早培養(yǎng)和提升學生程序設計能力,部分學生在第一學年CSP成績就可以達到200分左右水平。平時也鼓勵學生參加ACM、藍橋杯、天梯賽等程序設計類競賽,獲得了多項佳績。
綜上,通過多種實踐環(huán)節(jié),使學生更好地理解課堂教學內容,拓展知識面,延伸和擴展了課堂教學。全面地培養(yǎng)了學生的素質,提高了學生的抽象能力、邏輯思維能力、及動手編程能力等,為后續(xù)專業(yè)課程的學習打下堅實的基礎。
4 結束語
通過綜合運用課程助教、分層實驗設計、小組學習、OJ平臺、CSP認證等教學手段,為學生提供了更豐富、多樣化和個性化的學習體驗,幫助學生全面發(fā)展和成長。同時,也能夠更好地滿足不同學生的學習需求,提高教學效果和學生的學習動力。綜合來看,這些教學方式可以全面提升學生的編程能力、解決實際問題的能力、團隊合作能力和專業(yè)素養(yǎng),對學生在編程領域的發(fā)展和未來的職業(yè)發(fā)展都具有重要意義。
參考文獻:
[1] 汪香君,劉會芬.面向實踐能力培養(yǎng)的C++程序設計教學研究[J].現代信息科技,2023,7(18):176-180,184.
[2] 張維梅.融入課程思政的《面向對象程序設計(Java)》實驗教學改革[J].濰坊學院學報,2022,22(5):52-56.
[3] 岑琴.OBE理念下C語言程序設計實驗教學改革探析[J].電腦知識與技術,2023,19(8):119-121.
[4] 王雷,秦琳琳,王嵩.面向新工科人才能力培養(yǎng)的計算機程序設計課程改革[J].高教學刊,2023,9(24):161-164.
[5] 方二喜,劉學觀,譚洪,等.以目標驅動為支撐的課程過程化考核探索與實踐[J].實驗科學與技術,2016,14(4):136-138.
[6] 郭艷燕,婁蘭芳,盧云宏,等.面向深度學習的程序設計提高實驗教學設計與實踐[J].計算機教育,2022(11):119-122,127.
[7] 胡燕,孔凡哲,陳心浩.實驗項目驅動式教學促進四大關鍵能力的實證研究[J].實驗室研究與探索,2021,40(2):191-196,203.
[8] 袁國武,岳昆,楊旭濤,等.通過CSP認證提高學生程序設計能力研究[J].軟件導刊,2020,19(12):14-18.
【通聯(lián)編輯:王 力】