李海豐 李俊生 謝麗霞 王宏偉 萬小艷

摘 ?要: 為了應對目前C語言程序設計課程教學中面臨的諸多問題及挑戰,提出了“三位一體”的C語言程序設計課程教學改革方案。通過專題化教學內容整合、立體化教學模式改革、多層次實驗體系建設以及多維度課程考核等方式培養學生的“編程技能、算法知識、計算思維”。上述教學改革措施已在中國民航大學實踐了兩年,取得了良好的效果。
關鍵詞: 三位一體; C語言程序設計; 教學改革; 編程技能; 算法知識; 計算思維
中圖分類號:TP311.1 ? ? ? ? ?文獻標志碼:A ? ? 文章編號:1006-8228(2019)11-93-03
Abstract: In order to cope with the problems and challenges in the teaching of C language programming course, a trinity teaching reform plan of C language programming course is put forward. Through thematic teaching content integration, three-dimensional teaching model reform, multi-level experimental system construction and multi-dimensional curriculum assessment, students' programming skill, algorithm knowledge, computational thinking are trained. The above-mentioned teaching reform measures have been practiced in Civil Aviation University of China for two years and have achieved good results.
Key words: trinity; C language programming; teaching reform; programming skill; algorithm knowledge; computational thinking
0 前言
自然科學領域有三個公認的科學方法:理論方法、實驗方法以及計算方法。與這三個科學方法對應的三大科學思維分別是理論思維、實驗思維以及計算思維[1]。計算思維是在2006年由美國卡內基·梅隆大學計算機科學系主任周以真教授提出的。計算思維是指運用計算機科學的基礎概念進行問題求解、系統設計以及人類行為理解等涵蓋計算機科學之廣度的一系列思維活動[2]。
1 “C語言程序設計”課程教學現狀分析
“C語言程序設計”是高等學校計算機公共基礎課,是大學通識教育的重要組成部分,也是培養學生計算思維的基礎課程。以中國民航大學為例,“C語言程序設計”課程是所有非計算機理工科專業學生的公共基礎課,每年有超過3000名學生在大一的第二學期學習本課程。“C語言程序設計”課程是高校計算機類通識教育的核心課程之一。然而,目前國內很多高校開設的C語言程序設計課程仍存在以下問題。
⑴ 教學知識點繁雜,教學課時不足
目前, “C語言程序設計”課程教學內容陳舊,仍然以全面的語法講解為主,課程教學內容往往不能滿足信息技術發展和實踐需求,這些都成為阻礙教學改革與發展的重要因素。此外,還存在授課內容繁雜,教師授課面面俱到,而一般高校“C語言程序設計”課程的學時僅為48-54學時(其中理論課時34左右),導致教學課時明顯不足。
⑵ 教學模式不能激發學生興趣
“C語言程序設計”課程依然延續著以往“教師講,學生聽,上機練”的教學模式,教師課堂講授理論知識部分,學生聽課后通過上機操作實驗部分。課程課內學時有限,課外學時學生積極性不高,未能很好地激發學生的學習興趣。
⑶ 實驗教學的外延性不夠
目前,實驗教學僅是課堂教學在計算機上的簡單延續,以驗證課堂所授知識為目的,無法調動學生的參與積極性,也不利于引導學生學以致用,課程實驗內容的外延性不夠,甚至導致學生感覺本課程與其他后續的專業課程關聯小,有學而無用的錯覺。
⑷ 無法滿足培養學生“計算思維”的需求
目前的C語言課程授課存在重語法、輕算法、忽略思維的傾向性,即重視語法學習,很少涉及算法掌握,無法培養學生的計算思維。
針對上述問題,本文提出了面向“編程技能、算法知識、計算思維”三位一體的C語言程序設計課程教學改革方案。
2 三位一體的教學改革
2.1 三位一體教學模式的內涵與總體改革思路
采取“技能、知識、思維” [3]三位一體的教學模式,其具體內涵及三者之間的關系如圖1所示。其中,編程技能是“C語言程序設計”課程應該培養的最基本的能力,在掌握了一定的編程技能的基礎上,融入算法知識的學習,通過自行設計不同算法,編寫程序解決各類實際問題,從而培養學生的計算思維。
圖2所示為本文設計的“C語言程序設計”課程總體教學改革思路。下面各小節將逐一闡述每一項具體的改革措施。
2.2 專題化的教學內容整合
現有的“C語言程序設計”教材在內容組織上,雖然依邏輯思維方式進行了歸類,但難點還是較為集中、跨度大[4];概念繁瑣,但分析較少。因此,需要研究在課堂教學中對教學內容重新歸納,以專題化、精簡化的方式提高教學質量。目前,已經形成了以下的C語言專題化、精簡化的教學思路。
專題一:C語言的基礎知識——從“數據被加工的過程”說起。主要從哪些數據能夠被加工的角度,來介紹C語言的數據類型,從被加工的手段出發介紹C語言的運算符,從被加工的具體過程的角度,來介紹控制語句的三種基本結構。
專題二:批量化數據的定義及使用。包括以數組的形式實現對相同類型數據的定義和處理,以及以結構體和共同體的形式實現對不同類型數據的定義和處理。
專題三:函數的定義及使用。包括函數的定義與調用,編譯預處理等內容。
專題四:指針及其應用。包括指針的定義與引用,數組與指針,以及用于表示字符串的特殊指針——字符指針。
2.3 立體化的教學模式改革
設計了課內外、線上線下等多種模式相結合的立體化教學模式改革方案。包括網絡課堂與傳統課堂相結合、課內精講與課外資源相結合、課堂教學與在線視頻教學相結合、紙質實驗報告與在線作業相結合等四個方面的具體改革措施。
⑴ 網絡課堂與傳統課堂深入結合:大規模在線開放課程(Massive Open Online Course,簡稱慕課或MOOC)[5]是今年興起的一種全新的在線教學模式。本課程組利用中國大學慕課平臺的開放MOOC課程,建設了我校的“C語言程序設計”SPOC網絡課堂。將傳統課堂教學與SPOC網絡課堂學習有機結合,SPOC主要起到課前預習、課后核心知識點考查、部分知識拓展的作用,傳統課堂主要是核心知識點的講解。
⑵ 課內精講與課外資源的結合:針對上述四個專題的教學內容,以專題化的方式精講課內核心知識,同時利用建設的校內Bb教學平臺為學生提供經典習題、應用拓展、知識延伸等的課外學習資源,豐富學生的知識體系。
⑶ 紙質實驗報告與在線提交作業相結合:采用課后作業、實驗報告和在線作業相結合的組織方法。學生的課后作業和上機實驗報告的內容仍以紙質報告提交。此外,本課程組自行設計開發了一套C語言程序在線提交系統。在我校校園網環境下,借助該系統可以實現作業題目的入庫與發布、作業發布、學生在線提交程序、系統自動批改作業并評分、組織學生進行編程類競賽實訓等功能。該系統為學生提供了提高編程技能的實戰環境,同時提高了作業批改效率。將紙質報告與在線提交作業相結合,紙質報告側重核心知識點和關鍵上機內容的考查,而在線提交程序作業則是以工程訓練的手段進一步提高學生的編程技能,鞏固課程中的算法知識。
⑷ 普通課堂教學與在線視頻教學結合:以四個專題內容為基礎,從中總結了58個核心知識點,任課教師對每個知識點專門錄制了短視頻,并以微課形式發布在網上。微課視頻涵蓋了課程的核心知識點,有助于學生的課前預習和課后復習,在課堂教學時則是針對每個核心知識點進一步展開,以經典案例的形式深入分析,并講授與其相關的其他知識點。
2.4 多層次的實驗體系
在計算思維能力培養要求的指導下,以實際案例驅動為核心思路,設計了多層次的C語言程序設計課程實驗體系,包含演示性實驗、設計性實驗、綜合性實驗、實踐創新訓練、企業實踐等五個層次。
⑴ 演示性實驗:演示性實驗的目的是直接演示相關程序,讓學生對實驗結果有直觀的認識,或者通過編譯、執行已有程序來驗證相關操作,使學生能夠“邊學習算法邊實踐編程”,通過編程實踐來驗證理論算法,進而進一步理解、掌握相關算法知識。此部分主要涉及C語言程序設計基礎、程序運行過程與調試等實驗。
⑵ 設計性實驗:設計性實驗以編程實踐為基礎,對學生的編程技能、算法知識進行訓練,以實現提高學生工程實踐能力并培養計算思維的目標。目前,本課程組已專門編撰了C語言程序設計課程的實驗指導書[6],其中包含了8個設計性實驗。在提交的實驗報告中,需包含以下要素:問題及分析、算法的設計、程序流程圖、程序源代碼、歸納總結。鼓勵學生用不同的算法去解決實際問題,通過算法多樣化訓練學生的計算思維。
⑶ 綜合性實驗:針對具體工程問題,從需求分析、算法設計、算法實現、程序實際應用、分析總結等方面完成綜合性的實驗。綜合性實驗的選題包括兩個來源:一是課程組建立了一個綜合性實驗項目庫,學生可從其中任選一題完成;二是鼓勵學生自擬題目,自擬題目可以源于自己本專業或學生參與的實際科研項目。綜合性實驗的管理采用項目管理形式,即學生可以組織團隊,經歷項目的立項、開題、需求分析、方案設計、方案實現、測試分析、結題等全部環節,通過該方式更有助于提高學生的用計算思維解決實際工程問題的能力。
⑷ 實踐創新訓練:實踐創新訓練采用大學生創新創業項目等課內科技類項目的方式開展,如果學生已經參與或者計劃參與相關項目,該內容除了可以作為綜合性課程設計外,還可得到老師的指導。
⑸ 企業實踐:企業實踐的具體落實辦法為:課程組根據任課教師各自的科研經歷,凝練了與企業合作中的實際案例,建立企業實踐案例庫。企業案例實踐以講解為主,每次以視頻、圖片、文字等形式展開,每個案例講解控制在5分鐘左右。重點是讓學生了解程序設計的意義和未來可能的應用領域,激發學生學習興趣,同時擴展學生視野。
2.5 多維度考核方式
課程考核采用包含MOOC學習成績、作業成績、考勤成績、期中和期末考試在內的多維度考核方式。其中,MOOC學習成績通過統計學生在線學習時間、完成MOOC作業和測試的方式得出;作業成績包括提交的紙質報告成績和在線提交的程序作業的成績;期中和期末考試采用題庫,以上機考試的方式完成。
3 總結
本文首先分析了目前高校“C語言程序設計”課程教學中存在的問題。然后,提出了“編程技能、算法知識、計算思維”三位一體的教學理念,并以此為指導,詳細闡述了在模塊化教學內容整合、立體化教學模式改革、多層次實驗體系建設以及多維度課程考核等方面的改革方案。該方案已在我校非計算機專業的“C語言程序設計”課程中完整實踐了兩年,取得了較好的效果,學生課程評價分數顯著提高。目前,這些教學改革經驗正逐步在我校計算機學院的程序設計類課程中推廣實踐。綜上,本文為通過C語言程序設計課程培養學生計算思維能力提供了一種具體可行的思路和方案。
參考文獻(References):
[1] 朱亞宗.論計算思維——計算思維的科學定位、基本原理及創新路徑[J].計算機科學,2009.36(4):53-55
[2] 周以真.計算思維[J].中國計算機學會通訊,2007.3(11): 83-85
[3] 尹建新,張廣群."技能-能力-思維"三層次大學計算機基礎教學[J].計算機時代, 2013.9:67-69
[4] 邱建林,劉維富,顧暉,等.C語言程序設計教學的研究與實踐[J].電氣電子教學學報,2003.25(4):96-98
[5] 蘇小紅,趙玲玲,葉麟,等.基于MOOC+SPOC的混合式教學的探索與實踐[J].中國大學教學,2015.7:60-65
[6] 謝麗霞,李俊生,王紅.C語言程序設計實踐教程[M].第2版.北京:清華大學出版社,2017.