摘要:“C語言程序設計”是高校工科類學生與計算機世界接觸的一門基礎課程,是其他高級編程語言的奠基石。為更好地培育新工科所需的集創新、實踐及合作于一體的高素質復合型人才,本文針對“C語言程序設計”課程存在的問題進行分析探討,探索本課程教學改革的可能性,旨在培育學生積極主動的學習精神,幫助學生建立新思維,提升學生探索性學習能力。
關鍵詞:新工科;“C語言程序設計”課程;教學改革
一、引言
在信息技術飛速發展的時代,以新興技術為驅動的新興產業和經濟模式大量涌現,社會對于復合型人才的需求逐漸增長,對應用型本科工科教育的人才輸出提出了更高的要求,而高校教學模式的改革也成為人才培養和知識深度探索的有力途徑。2016年,《教育部高等教育司關于開展新工科研究與實踐的通知》提出以“工程教育新理念”“學科專業新結構”“人才培養新模式”“教育教學新質量”為主要內容的指導思想,為推進新工科建設,深化工程教育改革提供理論指導[1]。2019年,文獻[2]提出了新工科背景下人才培養的“新模式”,從素質培養、重視訓練、密切聯系實際產業和提高實踐能力等方面切入,為教育改革提供了新思路。20世紀80年代,從美國興起的“以學生為中心”的本科教學改革運動成為本科教育改革的范本[3]。其中,工程教育CDIO教育理念以構思、設計、實現和運作模式融入本科教育教學,結合“以學生為中心”,以“學生產出”為導向,對創新課程設計有著重要指導意義。CDIO教育理念教育實踐,是通過課程教學與課程實訓相結合,讓學生積極主動融入實踐,和課程建立有機聯系,真正將課程知識應用于工程場景。本文以CDIO教育理念為指導思想,以培育卓越人才為目標,針對“C語言程序設計”課程理論和實際相結合特性,分析現有“C語言程序設計”課程存在的問題,探討應用型課程改革思路。
二、“C語言程序設計”課程現狀
“C語言程序設計”是學院為計算機、機械、電子信息、電氣類工科專業學生開設的公共基礎課,也是一門重要的必修課。該課程旨在培養學生程序設計、開發與測試能力,應用計算機思維方法分析和解決問題的能力,以及團隊合作精神,為學習后續課程和進一步獲得程序設計相關知識奠定堅實的基礎。
(一)教學內容安排
本課程共96個學時,由理論學時和實驗學時組成。目前,理論學時占比和實驗學時相當。目前的教學內容主要分初級階段、中級階段和高級階段。初級階段主要介紹編程概念,C語言基礎語法,數組和字符串與模塊化、過程化編程等基礎知識。中級階段涵蓋指針的基本概念和內存管理,其中,內存管理包括動態內存的分配和釋放。同時,中級階段包含結構體的基本概念和文件的讀寫、關閉,文本文件和二進制文件的區別。高級階段涉及多線程和并發編程,同時會涉及一些基礎的數據結構和算法,最后將其融入開放式項目實踐中。本課程是一門理論和實踐相結合的綜合性課程,需要在各階段教學中合理平衡理論教學與實踐教學的比重。考慮到學生個體學習差異以及基礎知識儲備差異的情況,如果理論教學過多,基礎知識較差的學生很難消化相關重難點,而學習能力較強的學生就頗為輕松,但是缺少挑戰的機會,限制了對學生創新能力的培養。若按照平等切分的方式教學初級到高級階段知識,在學生能力和基礎存在個體差異的情況下,學生差距會進一步拉大,不利于學生的整體進步。因此,初級到高級階段的教學內容應該各有側重點,根據學生過程化學習原則衡量制定。
按照教學大綱進度,前半個學期在理論教室上課,后半個學期在機房實驗教室上課,理論和實踐脫節較長時間,教學效果不佳。學生不能完全熟練掌握在常規編程軟件DEV-C++、Visual Studio中進行程序編寫和編譯的操作,且通常程序預期輸出結果往往和實際輸出結果有所偏頗,學生在理論內容上的困惑不能得到及時解決,課堂效率降低。
(二)注重課堂講授法
課堂講授法是一種單方面的教學方法,授課教師通過簡明、生動的口頭語言向學生傳授知識、發展學生智力。它是通過敘述、描繪、解釋及推論等形式來傳遞信息、傳授知識、闡明概念、論證定律和公式,引導學生分析和認識問題。但由于“C語言程序設計”是一門實操性很強的課程,同時,加上C語言知識點繁雜且抽象,過度采用講授法,不一定能幫助學生更好地理解程序的功能和邏輯。如若知識點晦澀難懂,課堂講授法的教學效果會大打折扣,容易導致學生被動學習,出現“一刀切”的現象。課堂講授法模式下,教師和學生之間的互動性不強,教師也會習慣性過度依賴教材,照本宣科。久而久之,教師和學生缺乏課程有機聯系,課后交流也會相對減少,教師容易忽略學生的多樣性,學生容易感覺被邊緣化。學生主動學習的積極性不高,獨立思考的能力得不到提升,同時看待問題的角度也很局限,不利于新工科人才的培養。
(三)考核與成績評定方式結構失衡
目前,“C語言程序設計”課程的考核與成績評定比例為,課堂占比8%,平時作業和在線測試占比12%,上機實驗占比20%,期末紙質化考試占比60%。考核與成績評定方式中,期末紙質化考試權重很高。期末試卷注重基礎知識考核,會將學生的學習導向基礎知識的硬性記憶,考后就忘,不能將所學知識真正應用到實際場景中,解決實際問題。同時,這種失衡的考評方式不能全面精準反映學生的綜合能力,忽略了對學生創新能力的培養,不利于學生實踐能力提升。
三、“C語言程序設計”教學改革
“C語言程序設計”課程屬于應用型課程范疇,注重基礎知識的夯實,強調讓學生運用計算機思維去分析和解決問題。“C語言程序設計”的教學目標是,針對實際的問題,學生能熟練運用邏輯思維和數學等工具分析,采用自上而下的結構化程序分析方法,給出邏輯正確的、低復雜度的、可讀性強的C語言程序,與此同時,幫助學生形成做事有章法、百折不撓的工匠精神。傳統C語言教學注重語法基礎教學,實驗教學缺乏量化指標,同時考核方式單一等問題[4]。下面,筆者就“C語言程序設計”課程教學目標、教學方式、教學評價提出改革意見。
(一)教學目標改革
在學生具備扎實理論知識基礎的條件下,應用實踐型課程教學可以培養學生的自主實踐能力,讓學生養成從實踐中發現問題、自主解決問題的習慣,從而螺旋式上升夯實C語言基礎,為后續學習高階編程語言進行鋪墊。教師應該以學生為中心,把課內理論教學與課外實踐教學相結合,把教師教學與科學研究相結合。在專業建設和人才培養方面,加強與產業的融合,并以產業人才需求指導“C語言程序設計”課程的教學設計。基于此,教學目標也應調整為:通過本門課程的學習,學生能夠準確、牢固掌握C語言相關的基本語法和基礎知識,包括但不限于C語言常量、變量、控制結構、數組、結構體、共用體、函數、指針以及文件的操作等模塊的內容;學生能夠根據給定的完整代碼或代碼片段,準確理解所給代碼的功能,理解代碼的執行邏輯,并能正確推斷代碼的運行結果;學生具備發現代碼中語法錯誤和邏輯錯誤的能力;掌握面向過程的基本概念和基本算法,能熟練將基礎知識應用于程序閱讀、編寫程序等領域,亦即能夠利用理論知識解決實際問題。在實現以上目標的同時,培養學生良好的編程習慣和嚴謹的計算機分析能力。
(二)教學方式改革
教學方式改革應以“學生產出”為導向,建立多元化實踐創新平臺,將培養目標反向設計并浸入到不同教學環節[5],力爭培養新工科所需的高素質人才。
首先是課堂教學,在“C語言程序設計”課程中,需要改變滿堂灌的教學方式,鼓勵引導學生自主學習、個性化學習,巧用翻轉課堂,才能因材施教。同時,重構C語言課程體系和教學內容,推動學生進行基于問題的學習、基于項目的學習、基于案例的學習,以達到強化其工程創新、工程設計、工程實踐能力的目的。除了課堂講授法,討論教學法、自主學習法、任務驅動教學法[6]都能夠有效調動學生自主學習的積極性。討論教學法中,學生以小組為單位,根據教師提出的問題或提供的教學資料,在教師的組織和引導下,積極參與課堂討論,從而實現教與學的互動。討論教學法有助于增強學生思維的靈活性,提高課堂的教學效率。自主學習法能夠拓寬學生的視野,培養學生的自主學習習慣和能力,提高學生的綜合素質。在自主學習法模式下,教師通常會給學生留思考題或實際生產問題,讓學生通過利用網絡資源自主學習的方式尋找答案,提出解決問題的措施,然后進行討論評價。任務驅動法能夠讓學生帶著目的性開展學習,有助于培養學生自主發現問題、解決問題的能力。實例驅動式教學模式下,教師可將陳述性知識、程序性知識、策略性知識三者相結合,通過案例開展課堂教學,使學生能夠將枯燥的基礎知識融會貫通,并巧妙應用于實際問題的解決中[7]。其次是課后自主學習。網絡給學生提供了大量學習資源。超星學習通作為一款自主學習軟件,方便學生自主學習。教師可以提前發布教學內容、教學計劃,引導學生自主學習,同時,教師在學生自主學習的過程中起到輔導和監督作用。學生可以根據自己的進度安排完成學習計劃,而不是被動接受教師的輸入知識。最后是指導學生的學科創新活動。開展學生項目開發、競賽均是提高學生學習興趣的有效方法。通過項目化教學、引導式學習,制定實際場景模擬考試等方式,讓學生在模擬的實際環境中完成編程任務,培養學生的知識應用能力和解決問題的能力。這種方式可以檢驗學生對實際工作中的問題的應對能力,促進學生將理論知識轉化為實際技能。
同時,這種方式也能讓學生在實踐中,根據編程軟件的報錯提示準確地定位錯誤并改正錯誤,確保源程序能夠正確編譯并得到正確的結果,讓學生在改Bug的過程中培養挑戰自我、反思自我、提升自我的意識和勇氣。除了以上的教學方式改革外,學校還可與企業合作開展專業教學。根據學校與企業聯合培養工程技術人才的相關制度、計劃以及保障措施的精神,引入“C語言程序設計”課程,建立行業指導、校企合作的協同育人機制[8]。
(三)教學評價改革
教學考核制度需要圍繞學生過程化學習成果展開,而不是以一張占比權重很高的紙質化試卷來判定學習質量。教學評價方法不再局限于平時作業、上機實驗和期末書面考試,而是倡導引入更為多元化、更具實踐性的評價方法,如將實驗上機部分進行深入拓展,創設實際場景,安排團隊合作項目,針對項目完成過程及結果進行考核評價。教師可將項目設計與評價劃分為不同的階段,每個階段都設定明確的目標和評價標準,以便及時發現問題并幫助學生持續改進。例如,第一階段可以是項目需求分析,第二階段是初步編碼,第三階段是測試改進,最后階段是項目的完整實現和演示。中間穿插引入代碼審查環節,讓學生以提高代碼的可讀性和可維護性為目標,相互評估和改進彼此的代碼,以培養學生對代碼質量的敏感性, 除了實操性項目,實際問題解決報告也是考查學生分析和解決問題能力的方式,其不僅能夠考查學生的編程技能,還能夠培養學生的團隊協作和溝通技能。引入這些多元化的評價方法,教師可以更全面地考查學生在知識應用、實際問題解決和團隊協作等方面的能力,從而更好地反映他們在C語言學習過程中的真實水平。
引入多元化評價方法后,量化考查學生基礎知識的期末測試的權重會相對降低,更能展現學生的綜合素質,更全面地考查學生學習“C語言程序設計”課程的成果。但是,不得不提到一個多元化考查的弊端,即引入項目化場景、團隊協作、提交解決問題的PPT方案均是團隊參與。以小組協作的方式提交一份報告容易造成學生依賴他人、濫竽充數的僥幸心理。因此,教師在引入開放式項目設計考查學生時,要關注每個學生的動態及其在團隊里的作用、成果輸出,關注每個學生的情感發展、任務進展,才能更全面、真實地衡量學生的實踐、團隊合作、自主學習、創新能力,給出客觀、公正的評價。
四、結束語
本文借鑒CDIO教育理念,圍繞“以學生為中心”,主張以“學生產出”為導向,探索“C語言程序設計”課程教學改革。從教學內容安排、教學方式和教學評價機制方面分析目前課程現狀,結合教師、學生和課程方面的實際情況,提出教學改革的可行性方案,倡導教學方式多途徑、多樣化,教學評價多元化,全方位考查學生綜合素質,為新工科輸送高質量人才。
作者單位:姜鋒 長春工業大學人文信息學院
參考文獻
[1] 教高司函(2017) 6號.教育部高等教育司關于開展新工科研究與實踐的通知.[EB/OL]. http://www.moe.gov.cn/s78/A08/tongzhi/201702/t20170223_297158.html.
[2] 李飛.新工科要求下的地方高校網絡工程專業建設思路[J].計算機教育, 2019,(04):1-3.
[3] 趙炬明.聚焦設計:實踐與方法(上)--美國“以學生為中心”的本科教學改革研究之三[J]. 高等工程教育研究,2018,(02):30-44.
[4] 楊琦,張曉月,韓鑫.C程序設計課程案例教學內容研究與實踐[J].高教學刊,2023, 9(12):112-115.
[5] 楊陽,吳其林,徐秋月.新工科背景下基于OBE的教學模式研究與實踐——以C語言程序設計課程為例[J].曲靖師范學院學報,2020(39):79-84.
[6] 于剛.面向新工科的C語言程序設計教學模式改革實踐與研究[J].互聯網周刊, 2023(20):46-48.
[7] 駱魁永,王思霖.新工科背景下“C語言程序設計”課程教學改革探索——以信陽農林學院為例[J].無線互聯科技, 2022,(19):161-162.
[8] 黃昌興.應用型人才培養模式下的校企協同創新創業育人新路徑[J].學周刊, 2020(23):9-10.