周 密
(長江職業學院 湖北 武漢 430074)
“C語言程序設計”是高職理工科專業的一門必修專業基礎課,是后續專業課程的前置課程,是大學生學習程序設計的入門首選課程。C 語言作為全國大學生計算機等級考試、計算機技術與軟件專業技術資格(水平)考試、普通高等學校專升本考試等的主要考核內容,具有不可或缺的地位。C 語言是一種結構化語言,語法規則復雜,內容抽象、編程靈活,多數高職學生基礎弱、自制力差,通常學習此課程較困難,再加上不適當的教學方式,會讓學生失去學習興趣甚至放棄。因此,為激發學生學習興趣,提高本課程教學質量,本課程教學改革勢在必行。
高職教育具有很顯著的職業性,其培養學生的目標為面向社會、生產、服務與管理等一線需要的高技術型人才[1]。一方面,一些高職院校忽略了高職教育的職業性與高職學生基礎弱等特點,課程教學偏向理論化,重視對語法規則和經典案例的講解,與實際應用聯系不緊密,培養目標不明確。另一方面,學生沒有建立整體的專業思想,對課程認識不足,不清楚課程的性質、培養目標及其對后續課程的影響,在學習過程中動力不足,易產生畏難情緒。
教師在教學中占主體地位,以灌輸式理論講解為主,學生被動接受知識。C 語言語法規則和知識點繁多,加之課時緊張,許多教師在課堂上通過PPT 講解理論知識,敲代碼演示書上的案例,只留下很少的時間讓學生上機進行驗證性實驗,課后布置幾道編程題讓學生統一提交。這種教學方式存在諸多弊端,首先,C 語言比較抽象化和邏輯化,PPT 講解或者單向傳授理論知識,學生很難理解這些復雜概念,多數學生根本聽不懂,缺少與教師的互動,課堂參與度低,學習積極性不高,學習效果差。其次,學生上機進行驗證性實驗,本質是在練習打字,把講過的例子“抄”一遍,如果換一道題,便束手無策,這種教學方法與實際脫節,非但沒有提高學生的編程能力和解決實際問題的能力,也不利于培養學生獨立思考的習慣。教師布置同一份作業,沒有考慮學生的整體情況和個體差異,不同生源的學生基礎水平相差很大,普通文理的學生高中階段基本沒接觸過編程,中職畢業生多數已經把C 語言學過一遍。面對不同生源的學生,統一的教學方式會導致教學效果不理想。
C 語言涉及的知識面廣、內容繁多、實操性強,教師需要講授大量的基本概念及相應的應用,并進行代碼演示,還要留時間讓學生上機練習。多數院校安排的理論課時和實驗課時基本上不夠,導致有些章節如指針、結構體、文件和編譯預處理以及綜合實訓等講不完。因此教師在實際上課時會調整教學計劃,減少教學內容,加快進度,這樣許多知識點就被忽略掉或者不能進行充分的講解,影響教學質量,學生感覺本門課沒上多久便匆匆結束。
工科專業的教師普遍在教學觀念、思政元素的挖掘與課堂融入等方面還存在一些誤區或偏差,專業知識與思政教育還不能做到無縫對接[2]。部分教師對課程思政理解不深,認識不夠,在課堂上把思政課程的內容生硬地搬過來,學生覺得很突兀;又或者是為了思政而思政,認為每堂課必須要有思政元素的教學設計,而這樣教學不但沒有達到育人的效果,反而招致學生的反感。
在課程考核方面,早些時候高校C語言考試基本上是在期末的時候進行筆試,近些年慢慢采取機考的形式,這與全國計算機等級考試二級C 語言程序設計考試形式類似,出一套題來測試學生的知識掌握程度,是一種純粹的應試形式。部分老師為了批改試卷方便,采用二級C 語言考試出題模式,80%的題型為客觀題,學生選擇、填空、改錯即可,只有一道或極少數編程題,這種考核方式未真正考查學生的程序設計能力。學生沒有從零開始構思的過程,沒有算法的設計,而是跟著出題人的思路讀懂程序,補全代碼,完成做題,沒有鍛煉其獨立思考、編寫程序實現特定功能的能力,學生在學習這門課時缺乏動力,想著只要通過期末考試即可,失去了學習這門課程的目標。
學生通常在第一次課時充滿著新鮮感,態度端正,精神飽滿,因此,教師應充分打磨第一次課的教學設計,讓學生明白本課程的性質、特點和重要地位,引導其重視這門課程。第一次課可以向學生展示高年級學生使用C 語言編寫出來的各種應用程序,或上網搜索C語言的應用產品,讓學生直觀感受C語言可以做什么,明晰其具體應用場景。許多學生對計算機十分陌生,因此第一次課可以適當補充學科前置知識,例如介紹計算機的基本組成,介紹二進制的概念,0 和1 的電路特性,猶如開關的開與關。通過C 語言的字母“C”,引出一個單詞“Combine”,意為“組合、結合”,讓學生明白C語言是高級語言和低級語言的結合體,其能直接操作計算機的內存地址,讓學生很快記住C 語言的這一特性。從“把大象關進冰箱需要幾步”談算法的概念,讓學生明白算法是解決問題的步驟和方法,不等同于數學公式,學計算機跟數學好不好關聯性不大,但是編程與邏輯思維有關系。C 語言程序設計這門課是今后其他專業課程的基礎,提醒學生在學習本門課時肯定會遇到各種困難,要做好心理準備,要持續不斷地努力。
教師可以采用線上線下混合式教學模式,通過在線開放課程或共享教學資源的方式讓學生進行課前預習并完成章節自測,讓學生帶著“知識儲備”或者疑問進課堂。在課堂上,教師根據自測結果調整教學策略,側重講解章節重難點和共性問題,留充足的時間讓學生上機實操。當學生遇到問題時,教師不要立即給出答案,要逐步引導學生自己找出問題所在,嘗試獨立思考解決,最后集中講解統一的問題。每次課必須布置實訓題目,根據學生能力水平,將題目分為基礎必做題和拔高選做題,鼓勵學生主動思考完成選做題。
興趣是最好的老師,教學活動的開展應以培養學生的興趣為目的。教師可以安排豐富有趣的教學案例,不斷提高學生對學習本門課程的興趣,一旦他們對學習產生了興趣,在上課時便會集中注意力聽講、認真思考,主動地去學習和研究他們感興趣的學科[3]。“C 語言程序設計”課程有許多專業術語,概念抽象難懂,教師應創設生活化的教學情境,充分調動學生的學習興趣,集中注意力參與課堂教學。例如在講解經典排序之冒泡排序時,教師在課堂上找5 個學生(假設要求對5 個數進行排序)代表5 個數,數的大小由身高高矮決定,一目了然。5 個學生隨意站成一排,第1 輪相鄰兩個學生比身高,如果前面比后面的高就交換兩人的位置,繼續相鄰的兩位學生比,比較4 次可得出最高的學生;第2 輪相鄰兩個學生比身高……得出第二高的學生……第4 輪……通過“比身高”的過程將冒泡排序算法演繹得淋漓盡致,場景模擬使得學生將算法牢牢記在腦海里。通過創設生活化教學情境,讓學生容易理解復雜的概念與抽象的知識,提高學習興趣,學得更扎實。
教師不必按照教材順序講授課程內容,應合理編排和裁剪教學內容,使其更符合高職院校學生的學習規律。要抓教學內容的主要矛盾,知識點“夠用、會用”就行,不必深挖其原理。例如定義一個整數使用int 類型,教師可以直接告訴學生int 類型表示數的范圍即可,編程中80%的整數使用int 類型,學生會定義和使用即可,沒必要在課堂上學習反碼、補碼進而計算每種數據類型表示的范圍。本門課是高職院校理工科各專業的第一門專業基礎課,有些章節如文件和編譯處理,講解概念與入門案例即可,后續專業核心課如Java 語言程序設計,會更深入、詳細地講解相關知識點。
C 語言程序的全部工作都是由各式各樣的函數完成的,C 語言也稱為函數式語言。傳統的C 語言課程教學講完三大結構再講解函數,學生形成思維定式,習慣在主函數中處理所有事務。作為計算機相關專業的學生,要早早建立“封裝和復用”的編程思想,遵循軟件“高內聚低耦合”的設計原則。函數的作用是把相對獨立的某個功能抽象出來,教師在一開始訓練學生編寫程序的時候,就先把函數的基本概念和傳值、傳址調用教授給學生,并要求學生對待以后的課堂實訓或是課后作業都要用函數調用的方式完成[4],培養學生利用函數調用優化程序的編程思維。
教師要加深對課程思政內涵的理解,多參與專業的課程思政培訓,多研讀優秀的課程思政典型案例,提高自身教學水平,要認識到課程中不是所有知識點都能挖掘出思政融合點,思政元素不能“硬融入”。“C 語言程序設計”這門課蘊含著許多思政元素的點,將這些點有機地融入課堂教學中,能很好地實現知識傳授與價值引領相統一的目標,以下舉幾個例子來探究如何從小知識點解鎖大思政。教師在講解C語言的發展歷程時,可以聯系我國的信息技術發展現狀,我國關鍵核心技術遭遇“卡脖子”,以此激發學生科技強國之志;在講解算法的概念時,讓學生明白做任何事情要有規劃,總攬全局,在眾多方案中求最優解,培養學生精益求精的工匠精神;在講解三大結構之選擇結構時,啟發學生人生不同的選擇有不同的結果,要樹立正確的三觀,踏實走好人生每一步。在專業教學的課堂上融合思政教育,有助于學生加深對課程內容的理解,培養健康向上的價值理念。課程思政意義重大,需要教師在教學中不斷地學習和凝練。
采用平時成績、階段性項目考核、期末考試相結合的“三位一體”考核方式。平時成績包括課前的線上視頻學習及主題討論、課前自測,課中的出勤、課堂表現以及課后作業完成情況等,占比30%。教學中采用綜合實訓項目將各個章節的知識點串聯起來,模擬真實企業場景以團隊的形式進行,這期間需要學生通力配合,教師輔助指導,以學生的項目參與度和完成度進行個人自評、組間互評、教師點評的方式形成階段性考核,占比30%。期末考試占比40%,除了注重對課程基礎知識點的考查,還應著重考查學生的實踐能力,如上機獨立設計、編寫、調試程序解決實際問題等,還可附加拔高題,鼓勵部分學生勇攀高峰。“三位一體”的考核方式更加全面、客觀,更能調動學生學習積極性,提高學生的綜合素質。
本文針對高職C 語言教學中普遍存在的問題,從提高學生對課程的認識、注重上機實踐、重構教學內容、落實課程思政、完善考核方式等方面進行改革,旨在激發學生學習興趣,培養學生邏輯思維和解決實際問題的能力。在今后的教學中,課程組將進一步探索符合高職院校人才培養目標的教學方法,進一步尋求提高學生實踐技能的教學模式,以期為社會培養更多高素質的技能型人才[5]。