紀亞芳 張凱麗 趙紅梅 王大為
(山西師范大學物理與信息工程學院,山西 臨汾 041000)
隨著科學技術的高速發展,電子產品的集成化要求也越來越高。在此背景下,硬件軟件化是電子工業技術的未來發展趨勢。C語言是目前國際廣泛流行的通用程序設計語言,也是理工科學習程序設計首選的一門專業基礎課,為達到培養應用型本科人才的目標,培養學生綜合運用所學專業知識解決問題、完成設計任務的能力,有必要對C 語言程序設計教學進行改革研究與探索。
根據目前教學情況,盡管老師們在各個層面的教學過程中努力探索,積極實踐,也取得了一定的成效,但在具體實踐教學過程中仍存在一些問題。
在面對具體設計時,很多學生會表現得不知所措,無從下手。C 語言程序設計是電子信息工程專業學生進入大學后接觸到的第一門計算機編程類課程,而大部分學生此前并未接觸過此類課程,使用計算機解決問題的思維方式尚未形成,面對具體設計題目時往往無法順暢地將自己的構思和設計通過程序的方式表達與實現。
學生之間的基本知識扎實程度和自身素質具有一定差距,隨著學習難度的增加,部分學生學習到一定階段會產生畏懼心理,尤其在多次編譯均無法找到錯誤緣由時,很容易產生挫敗感。如果無法正確對待失敗,并且忽略了團隊合作的重要性,學生就會產生“這門課很難,自己無法學會”的心理現象,從而輕言放棄。
在進行程序設計時,學生需要有較強的邏輯思維能力,思路要保持清晰流暢,考慮充分。然而,部分學生做不到對問題的深入思考、舉一反三,并且存在對編程思想理解不透、構思和設計不明朗的現象,因此在實現和運作時往往感到力不從心。
EIP(Ethics-Integrity-Professionalism)是指講道德、講誠信和專業化,CDIO(Conceive-Design-Implement-Operate)表示構思-設計-實現-運行。EIP-CDIO就是注重職業道德與誠信并與構思-設計-實現-運作進行有機結合的新模式。本文基于EIP-CDIO 理念對C 程序設計這門課程進行教學模式探索,設計了游戲闖關式教學方式,在各個關卡充分體現EIPCDIO思想,合理設置各個章節關卡的梯度和廣度,將靈活多樣的教學方法充分運用于教學過程中,在教學過程中注重學生邏輯思維能力的培養,使學生在面對設計題目時能通過團隊協作完成構思-設計-實現-運作過程,為后續相關課程的學習奠定堅實的基礎,同時在培養過程中注重人文精神的熏陶,使培養出來的學生具備優秀的職業道德、誠實正直、富有責任感[1],畢業后可以更好地融入社會。
游戲闖關式教學方式以章節為單元,每個章節設置多個關卡,各關卡融入EIP-CDIO思想,根據章節內容及關卡特點選用不同的教學形式,授課過程注重構思-設計-實現-運作的過程,各章節關卡設計如圖1所示。

圖1 游戲關卡設計
初始環節即為每一章的導入,根據每個章節的特點選擇不同的導入方式。在循環章節可通過自然界的重復動態圖片進行導入,將循環的概念滲入其中,在數組章節中以求班級中學生某門課的成績作為研究對象采用“拋錨式”方式導入,使學生對所學內容有直觀印象,從而激發其認知需求,形成學習期待。在此教學環節中著重培養學生的創造性思維,刺激與激發學生的好奇心,鼓勵學生的冒險精神,敢于大膽猜測、大膽假設、大膽想象,打破固有思維的束縛,遇到問題時能多角度、多層面、多結構去思考問題,尋找答案。
尋寶環節是最重要的課堂活動之一,重點為學生知識點的獲得和邏輯思維方式的培養。該環節中要培養學生預習習慣,注重教學形式的多樣性,在教學中淡化語法上的細節部分,按照“人腦思維—計算思維—C語言程序設計思維”的順序努力將計算思維融入C語言建構中,使學生的邏輯思維能力得到鍛煉,同時充分調動學生學習的積極性,積極引導學生參與到課堂中來,在課堂上達到師生思維上的同頻共振。在教學過程中,每一個題目都可看作一個小項目,引導學生嘗試按照“構思-設計-實現-運行”的思路去完成,其中構思即為題目的需求分析部分,在此部分可滲透數據類型、函數、指針、數組、結構體等概念;設計對應詳細設計部分,可將結構化程序設計思想與算法融入其中,并通過流程圖的方式將設計思路體現出來;實現則為具體程序代碼的編寫過程,在此過程中注意使用正確的語法規則,把握好程序的可讀性與效率;運行即運用編程軟件將編寫好的程序編譯,學生可根據編譯結果提供的信息對程序中的錯誤進行改正,同時具備檢查運行結果是否正確的能力。
在學習過程中,故意在程序中設置一些錯誤來驗證學生的掌握情況和理解程度,既可以在課堂氛圍低落時重新燃起學生的學習熱情,又可以加深學生對程序的理解和思考。該環節著重培養學生嚴謹細致的學術態度,例如在寫程序時可能少了一個符號或字母、大小寫混淆或者是把字母“l”看成了數字“1”都會導致程序編譯報錯,因此在學習與工作中需堅決杜絕馬虎粗浮的思想,做到專心、細心、精心。
練級環節主要是學生練習課后習題及作業,要求學生按照CDIO思想,編程前先理清思路,并畫出流程圖,將編寫的程序進行上機運行。這樣既可以直觀地查找到程序中的語法錯誤,驗證程序結果,又可以增強學生的實踐能力,培養程序思維,使學生的項目開發、設計能力有質的提升。在此教學環節中著重培養學生良好的責任心,做有益于網絡秩序的事情,要謙虛謹慎,戒驕戒躁,寫出高質量的代碼。
該環節主要是上機實踐環節,經過上面幾個環節的練習,尤其是練級環節的訓練,學生實踐能力已經有很大的提高,因此實驗課程可以設置一些與實際問題緊密結合的設計型和創新型實驗,訓練學生創新能力和學以致用的綜合能力。在該環節中仍然要求學生按“構思-設計-實現-運作”的過程去完成實驗題目的程序設計,同時在碰到難題時可通過與同學交流或小組討論等方式解決,從而增強學生與人積極交流溝通的能力、團隊精神和協作能力。
該環節為每個章節的測試環節,挑戰有輸有贏,輸了可通過該環節進行查缺補漏,對不熟悉、沒掌握的內容進行復習強化,贏了可增強學生信心和成就感,以更濃厚的興趣和熱情進入下一個章節的學習。在此教學環節中,教師需引導學生擁有積極向上的學習態度和鉆研精神,著重培養學生堅強的意志與經得起失敗磨練的健康心理,使學生形成良好的心理素質和品行。
該環節為本課程的期末測試環節,對學生的成績有很大的影響,因此要求前面所有關卡都通過后才能進行終極挑戰,若挑戰失敗,只能從頭再來,即為補考或重修。
在具體實現時,應合理設置各個環節的梯度,各環節之間的難度應是循序漸進、逐層遞進的,難度跳躍過大會挫敗學生銳氣,打擊積極性,過于簡單又難以達到鍛煉學生思維能力的目標,因此需要在實踐中逐步摸索與調整。
C 程序設計課程的游戲闖關式教學主要通過理論課與實踐課、線上與線下相結合來實現。面對2020年突如其來的新冠疫情,開學日期被迫延后,為保障“推遲開學不停教、不停學”,線上教育飛速發展,各個專業網課平臺逐漸融入到我們的教學工作中,也促使C程序設計的線上課程體系逐步完善。本門課程目前的教學安排是32講授課時,32實踐課時,在教學過程中根據環節的內容及特點進行教學安排,初始環節與尋寶環節主要是在理論課程中完成的,線上資源作為線下補充;火眼金睛環節與練級環節則采用線下線上三七分方式,課上進行少部分訓練,課下利用線上資源完成相應環節的闖關,同時針對一些易錯題、難題在課上進行重點分析與講解;更上一層樓環節中主要采用線上設置發放實驗內容,要求學生在實踐課時能按時完成任務并進行互評;打BOSS環節采用線上發放測試內容,學生利用課余時間完成并提交,只有分數達到一定分值才能開啟下一關,否則重新進行測試;最后的挑戰終極BOSS環節根據學校期末考試統一安排,在此之前需要同學們完成所有關卡的挑戰。
C 程序設計課程的線上教學主要借助超星泛雅網絡教學平臺來完成,各個章節內容按游戲闖關環節設計,各個環節內容發放均設置為闖關模式,如圖2所示,學生們只有完成前面環節的任務才能進入后面的環節,教師在后臺可隨時檢查學生的完成情況,及時督促與指導需要幫助的學生。

圖2 各章節內容設計
由上學期學生的問卷調查可知,學生們對各個環節的設置較為認同。火眼金睛環節中,34.1%的同學認為可以驗證自己的掌握情況與理解程度,29.5%的同學認為能激發學習熱情,36.4%的同學認為可以避免自己寫程序時出現此類錯誤;打BOSS環節中,100%的同學認為是非常有必要的;在學習過程中,98%的同學在遇到難題時能夠克服畏難心理,不懼失敗,勇于嘗試,可通過自主思考或與同學合作等方式解決難題。學生反饋的學習難點集中體現在具體題目從設計到實現的過渡上,在今后的教學中,將增強相應環節的訓練力度,更好地發揮學生的主觀能動性,幫助學生打下堅實的C語言基礎。