摘 要:“C語言程序設計”課程是機械電子工程專業的專業基礎課,對學習后續專業課程非常重要。針對學生計算機基礎參差不齊、灌輸式教學、實驗課和理論課分開、缺乏編程規范性和可讀性等問題,提出分層教學和個性化學習;加強和學生互動,引導學生主動學習;理論和實踐并進;培養編程規范性和可讀性意識等措施。經過上述措施,課程目標基本達到期望值,學生獲得多項省級、國家級競賽獎項。學生上機編程和解決實際問題的能力得到有效提升,教學效果良好。
關鍵詞:C語言程序設計;機械電子工程;理論和實踐并進;編程規范;教學效果
Abstract:The C Programming Language course is a core foundational course for the Mechatronic Engineering major,which is crucial for learning subsequent specialized courses.To address issues such as the uneven foundation of students' computer skills,rote teaching,the separation of practice and theory,and the lack of awareness of programming standards and code readability,the following measures were proposed:differentiated teaching and personalized learning,integration of theory and practice,encouragement to participate in subject competitions,and fostering an awareness of programming standards and code readability.With these measures,the course objectives have been largely achieved,with students receiving several provincial and national competition awards.The students' programming skills and their ability to solve practical problems have been significantly improved,and the teaching effectiveness has been satisfactory.
Keywords:C programming language;mechatronic engineering;integration of theory and practice;programming standards;teaching effectiveness
1 概述
“C語言程序設計”課程是機械電子工程專業的專業基礎課。C語言執行效率高,可讀性強,接近于自然語言,“C語言程序設計”課程是實踐性極強的一門課程[1],也是其他編程語言的基礎,如C++、Python[2]、MATLAB等。C語言課程可培養學生的邏輯思維和解決實際問題的能力。C語言編程是機械電子工程專業的學生畢業要求的基本技能之一,后續專業課程也是以C語言為基礎,如單片機與嵌入式技術、畢業設計等。
以安徽工程大學機械電子工程專業的“C語言程序設計”課程為例,針對教學中發現的若干問題,提出分層教學和個性化學習、加強和學生互動、理論和實踐并進、培養規范性和編程可讀性意識等教學方法,并應用到教學中,旨在加深學生對C語言知識點的理解和應用,培養學生的邏輯思維能力和上機編程能力,提高學生解決實際問題的編程能力。
2 “C語言程序設計”教學中存在的問題
在教學中存在學生計算機基礎參差不齊、灌輸式教學、理論課與實驗課分開、缺乏編程規范和編程可讀性意識等問題,具體如下。
2.1 學生計算機基礎參差不齊
由于計算機硬件普及程度不同,部分學生具備編程基礎,但多數學生未接觸過編程,尤其是偏遠地區的學生甚至沒有接觸過計算機,導致學生的計算機基礎差異較大,增加了教學難度。
2.2 灌輸式教學方法為主
C語言知識點多,內容繁雜[3]。部分教師存在灌輸教學的現象,單純羅列編程概念,導致未接觸過編程的學生理解困難,無法跟上后續上課節奏,后續課程進度滯后。學生一直處于被動接受的狀態,缺乏主動參與課堂、自主探索和實踐的機會,導致欠缺實際編程能力,課堂教學效果大打折扣。
2.3 理論課與實驗課分開,實驗課偏少
“C語言程序設計”課程實踐性極強[1],動手實踐對學習C語言極為重要,有助于學生理解語法和編程規則,培養學生的編程思維和解決問題的能力[4]。在當前課程設置中,理論課和實驗課分開且實驗課時較少,學生缺乏足夠的實踐機會,導致理論與實踐脫節,教學效果受限。
2.4 缺乏培養編程規范性和可讀性的意識
編程規范性和可讀性對可維護程序極為重要[5]。編程規范性是編寫代碼時應遵循一定的規則和標準,確保代碼的整潔和一致性。而可讀性是代碼的清晰程度,使其他開發者能容易理解代碼的意圖和結構。當前教學中,普遍存在缺乏培養學生編程規范性和可讀性意識的問題,導致代碼難以維護和擴展,團隊工作效率降低,開發成本增加,程序出錯的概率提高。
3 C語言教學方法探究
針對上述問題,提出如圖1所示的措施,具體如下。
3.1 采用分層教學和個性化學習
分層教學是根據學生的能力水平和學習需求進行分組的教學方法[6]。課程開始前,通過問卷調查學生的編程基礎,評估學生能力。根據評估結果,將學生分為初級組、高級組,每組提供不同難度的教學內容。隨著教學內容不斷推進,根據學生的學習狀態動態調整學生組別。對初級組和高級組提供差異化教學,提供不同的教學資源和輔導。初級組需要更多講解基礎概念,而高級組則可深入探討更復雜的編程問題。
個性化學習強調根據每個學生的特點和需求定制學習計劃,提供豐富的學習材料,如在線教程、視頻講座、編程練習和案例研究,以適應不同學習風格的學生,鼓勵學生根據自己的興趣和學習風格選擇學習路徑和資源。
3.2 加強和學生互動,引導學生主動學習
加強和學生互動,包括課堂互動和課下交流。課堂教學中,采用教師提問、學生主動提問等方式,及時了解學生課上的學習狀態。教師在講臺上需要隨時觀察學生抬頭率,多走下講臺和學生交流,督促后排學生抬頭認真聽課。在課下,通過調查問卷等方式及時了解學生的學習情況。根據課堂和課下反饋,及時調整教學進度、教學內容。課程結束后,學生通過調查問卷對教學方式、知識難點等方面提出建議。教師應反思教學過程,采納學生的合理建議,便于改進后續教學。
引導學生主動學習,鼓勵學生主動參與課堂教學,尤其是主動提問。教師詳細解答學生提出的問題。通過教師提問和學生提問,活躍課堂氣氛,建立和學生之間的良好溝通關系。向學生提供自學素材,包括書籍和視頻。鼓勵學生報名計算機二級C語言科目考試,為通過考試,學生會大量做題,復習并查找C語言知識點,加深并鞏固理解C語言編程知識點,鍛煉上機編程能力。
3.3 理論和實踐并進
將理論和實驗混合教學,在課堂上引入實踐操作環節。要求學生每節課攜帶筆記本電腦,便于學生在課堂上動手編程實踐。具體過程如下:(1)引入教學應用場景,詳細講授知識點。(2)將經典編程案例展示在投影儀上,展示編程思路,實時編寫程序,演示程序運行過程和執行結果。(3)課堂上留有適當時間,要求學生手工編寫每行代碼。上述動手過程尤為重要,只有在動手過程中,學生才能理解程序運行的過程和邏輯,加深理解相關知識點。教會學生調試程序,包括單步運行、設置程序斷點、觀察變量中間值、觀察程序運行結果、根據編譯器提示修改編程錯誤。(4)在學生編寫代碼過程中,走下講臺實時觀察學生的編程情況,解答學生編程調試方面的問題。督促學生動手編寫每行代碼,避免簡單復制粘貼。通過理論和實驗混合教學,培養學生的動手能力、獨立編程能力和解決問題的能力。
鼓勵學生參加學科競賽。學科競賽是實踐運用專業知識的重要手段[7],通過參加學科競賽,學生可加深對專業知識的理解。C語言在學科競賽中應用廣泛。學科競賽對C語言編程要求較高。在主動參與學科競賽的過程中,學生會自學C語言,掌握C語言教材上的內容。在學科競賽中,教師和學生探討項目解決方案、總體思路、時間安排等,解答學生疑惑。通過學科競賽,學生的獨立解決問題能力、團隊協作和創新能力可以得到快速提升。
3.4 培養學生編程規范性和可讀性的意識
編程規范性和編程可讀性緊密相連。規范編程有助于增強程序的可讀性,有助于后續維護程序。參照知名企業編程規范,將重要規范整理成文檔并在課堂上講授,提供具有優秀編程風格的編程案例。定期審查學生代碼,督促學生遵守編程規范。授課中反復強調編程規范性和可讀性,包括:(1)使用空格和制表符對齊代碼。在通用運算符左右兩側增加空格。多行代碼時,使用多個空格和制表符對齊運算符左右兩側的代碼。(2)使用大括號和制表符分清程序層次。遇到循環語句、選擇語句、函數體、結構體定義等,規范使用大括號,將大括號中所有代碼縮進對齊。(3)教會學生命名變量、函數,將注釋中含義寫入變量名和函數名。
4 教學效果
經過上述教學改革,學生主動提問和回答問題的人數增多,課堂氛圍更加活躍,學生上機編程能力得到快速提升,編寫代碼的規范性和可讀性得到顯著改進,課程目標達成度較好。根據課程大綱,C語言課程目標如下:課程目標1為掌握C語言基本數據結構,包括數據類型、結構體等。課程目標2為掌握程序控制語句,包括選擇結構和循環結構。課程目標3為掌握函數定義和調用,將復雜問題分解為子模塊,使用多個函數解決大型復雜問題。課程目標4為使用C語言描述并解決現實世界中一般問題的能力。
機械電子專業課程目標達成度如圖2(a)所示。其中,課程目標1達成度為62.6%,離期望值70%仍有一定差距。課程目標2達成度84.6%,表明學生基本結構語句掌握良好。課程目標3和課程目標4達成度分別為75.9%和76.1%。總體而言,所有課程目標均達到合格值,課程目標2、課程目標3和課程目標4都達到期望值。課程目標1的達成度和期望值有7.4%的偏差,為此,后續教學將加強結構體內容的講授和訓練,培養學生解決工程問題的能力。
“C語言程序設計”課程總成績在各分數段的分布情況如圖2(b)所示。其總成績平均分為74.5,達到了期望目標值。設總成績在80和89之間等級為良好,90分及以上為優秀,則良好和優秀比例高達42.86%,表明C語言教學效果良好。此外,從圖2(b)中可看出,不及格比例為19.05%。這表明學生成績存在兩極分化現象,是后續教學改進方向。
機械電子工程專業學生主動參與學科競賽,獲得藍橋杯全國軟件和信息技術專業人才大賽全國二等獎1項、全國大學生智能車競賽安徽賽區二等獎1項和三等獎2項、全國大學生電子設計大賽安徽賽區三等獎2項。這表明,部分拔尖學生具備較強的工程實踐能力,具備使用C語言解決現實世界中復雜問題的能力。
結語
本文針對“C語言程序設計”課程教學中發現的若干問題,采用分層教學和個性化學習;加強和學生互動,引導學生主動學習;理論和實踐混合教學;培養編程規范性和可讀性意識等教學改革措施。通過實施以上措施,學生更加積極參與課堂教學過程,學生的實踐動手能力、解決工程問題能力得到較大提升,大部分課程目標和平均成績達到期望值,學生主動參與學科競賽并獲得多項省級、國家級獎項,“C語言程序設計”課程的教學效果良好。然而,部分學生跟不上課程進度,存在兩極分化現象,后續教學中,將重點關注學業困難學生的學習狀態,加強對這部分學生的輔導。
參考文獻:
[1]夏輝麗.面向新工科的“程序設計基礎”課程教學改革與實踐[J].湖北理工學院學報,2024,40(1):6771.
[2]魯月林,史晨陽,劉永明,等.智能科學與技術專業Python課程教學探索[J].科技風,2024(15):1113.
[3]范嘉,劉夢.汽車類專業C語言課程教學方法改革淺析[J].教育教學論壇,2019(26):102103.
[4]夏長林.面向計算思維培養的PBL教學模式設計與實踐:以中職《C語言程序設計》課程為例[D].新鄉:河南科技學院,2023.
[5]李菊,傅向華,馬軍超.基于代碼編程規范的在線評測系統研究與實現[J].計算機時代,2023(1):6265.
[6]付淼.實踐教學法在學前教育鋼琴教學中的運用研究[J].佳木斯職業學院學報,2024,40(4):7072.
[7]冀燕麗,關典.高校學科競賽管理系統的設計與實現:以北京科技大學為例[J].中國信息化,2024(9):5152,54.
基金項目:2024年度教育部產學合作協同育人項目“機械電子工程專業新工科建設”(230901094183332);2021年度安徽工程大學引進人才科研啟動基金項目“非等軸殘余應力的球形壓入檢測技術及其儀器”(2021YQQ024)
作者簡介:徐風雷(1991— ),男,漢族,安徽淮北人,博士研究生,講師,主要研究方向為微/納米力學測試技術;楊春來(1982— ),男,漢族,安徽蕪湖人,博士研究生,講師,研究方向為能量采集、振動控制;王恒(1981— ),女,漢族,河北石家莊人,碩士研究生,副教授,研究方向為信號處理;王海(1976— ),男,漢族,安徽馬鞍山人,博士研究生,教授,研究方向為智能機器人及振動控制。