廖彬 黃小虎 吳鑫成 黃榕榕
摘? 要 針對C語言程序設計在理學專業程序設計課程群中的作用與教學現狀,基于現階段的本科建設任務與學生特點,合理編排C語言程序設計的理論和實踐教學內容,結合教育技術與教育資源的發展,融合線上與線下教學,從而促進學生程序設計、計算思維能力的提高,實現培養創新人才的目標。
關鍵詞 理學專業;C語言程序設計;教學方法;線上教學平臺;實踐教學;計算思維
中圖分類號:G434? ? 文獻標識碼:B
文章編號:1671-489X(2021)24-0049-03
Study on Teaching Method of C Language Programming for Science Majors//LIAO Bin, HUANG Xiaohu, WU Xincheng, HUANG Rongrong
Abstract In view of the role and teaching status of C language pro-
gramming in the programming course group of science majors, the
paper studies on the theoretical and practical teaching content and
arrangement of C language programming based on the undergraduate
teaching and students’ characteristics. This research is going to im-prove students’ programming and innovation ability by combining the online/offline teaching technology and resources.
Key words science majors; C language programming; teaching me-thods; online teaching platform; practical teaching; computational thinking
0? 前言
信息技術已經被大量運用在當前社會的各行各業中,由此導致現階段我國社會對專業人才的信息處理能力的要求逐漸提高[1]。在信息處理能力中,程序設計能力是必不可少的組成部分,而信息處理中的程序設計能力的核心[2]主要包括編程能力、計算思維和算法能力。
在理學專業本科教學中,程序設計課程群的主干課程由C語言程序設計、離散數學、數據結構、算法組成。學生通過學習此課程群的主干課程,掌握編程基本思想與技能,從而具有程序設計能力、計算思維和基本算法實現能力。其中,C語言程序設計作為專業學習的第一門編程語言,能使學生了解、掌握和運用程序設計的基本概念、原理與方法,從而訓練和培養學生的程序設計與程序調試能力,具備程序設計的基本能力。該課程是現階段大部分學科中程序設計培養的入門課程,通過學習該課程,能為學生后續學習其他編程語言及相關課程打下堅實的基礎。
C語言程序設計在程序設計課程群中具有重要作用,同時由于其具有實踐性強的特點,因此要求學生在該課程的學習中學以致用,以實現理論向實踐的轉化,并能充分理解程序設計基本知識,能靈活應用,為后續相關課程的學習做好理論知識與應用能力的準備。在針對理科專業開設的C語言程序設計教學中,結合該課程在程序設計課程群中的作用與教學現狀,基于現有的教學設置,合理編排理論教學與實踐教學內容,從教學內容和實驗設置出發,探索適用于當前理學專業的C語言程序設計課程教學方法。
1? 理學專業C語言程序設計課程教學現狀
在現階段的教學中,理論教學與實踐教學是C語言程序設計教學的必要組成部分[3],學生通過在C語言程序設計的實踐教學中理解與加強理論課所授知識,并通過實踐過程提高分析、解決問題的能力。為此,需要根據學生的專業特點有針對性地為C語言程序設計的教學活動合理地編排理論課、實踐課教學內容,并充分利用已有的在線教學內容與移動手機端編程方式使理論與實踐互相促進,從而使學生能充分理解與掌握該課程知識。
1.1? 零起點程序設計教學
在大部分院校早期的理科課程設置中,入校新生一般先學習大學計算機基礎課程,其后開始學習C語言程序設計。隨著近年來國家在高中階段對信息技術課程的重視,越來越多的高中開設了信息技術初級課程。與此相適應,許多高校開始對大一新生的信息學課程設置進行改革,將程序設計類課程的教學前移,以期更快更好地提高現階段大學生對信息技術的掌握程度。
在華南農業大學近年開始實行的部分理科課程教學改革中,在大學本科第一學期即開設C語言程序設計,不再開設大學計算機基礎課程,因此,C語言程序設計成為此類專業學生入校后的第一門信息類課程。雖然近年來部分高中開設了信息學課程,但是由于高中階段的高考主導作用,以及缺少足夠的教師、配套硬件等,大部分大一新生對程序設計所需的理論基礎知識較為陌生,如計算機軟硬件系統結構,進位計數制,二、八、十、十六不同進制數之間的轉換,不同數據類型在計算機中的表示與存放等。在此狀況下的程序設計教學,與零起點程序設計教學有諸多相似之處。如果在C語言程序設計教學中,不考慮前期課程設置的變化,機械照搬以往的教學編排與教學內容,將在一定程度上增加學生理解與掌握概念的難度,并會影響后續相關課程的學習。
1.2? 程序設計教學內容與學生的學習興趣
C語言程序設計作為專業基礎課程,近年來的教學大綱較穩定,教學內容更新不多,這導致該課程的教學內容在一定程度上與實際應用的聯系不太緊密。隨著信息技術在社會生活方方面面的使用,學生日常對科技知識與科技信息的獲取更為便捷。同時,近年來隨著自主意識的增強,學生的創新思維更加活躍,由此引發了他們對課程所學知識與專業應用、工程應用聯系的關注。若在授課中僅使用傳統案例講授與展示學科知識,則難以調動學生的學習積極性,不利于激發學生的學習興趣,導致不利于創新人才的培養。對此,通過將學生專業的相關應用實例適度引入傳統教學內容,借此提高學生的學習興趣,達到實現培養創新人才的目的。
1.3? 后續課程的銜接
在程序設計課程群中,C語言程序設計的后續課程通常包括數據結構、算法分析與設計。數據結構主要介紹使用計算機解決問題時組織數據、存儲數據結構以及在各種結構上執行操作的方法。算法分析與設計教學內容一般包括遞歸法、分治法、動態規劃算法等。通過數據結構和算法的結合,培養學生解決實際問題的能力。在傳統教學中,數據結構講授的數據關系較為抽象。在算法分析與設計教學中,培養學生分析與設計算法的能力是教學目標之一。若前期C語言程序設計中的知識與實踐掌握不牢,將影響后續對數據結構、算法等相關課程知識的掌握。C語言程序設計、數據結構和算法分析與設計作為程序設計課程群中的主體課程,教學目標都包括培養學生解決實際問題的程序設計能力,然而在傳統教學中,這三門課程的教學與實驗相對獨立,課程間的實驗內容較少銜接與統一。為了實現課程群間相關課程的延續性與一貫性,需要在C語言程序設計教學中為后續數據結構、算法分析與設計的學習適當引入相關內容,循序漸進地逐步構建數據結構與算法的知識體系,實現程序設計課程群中各門課程知識的統一與銜接。
2? 理論教學、實踐教學與教學手段的改革探索
在C語言程序設計教學初期,需要先為學生鞏固相關的數據表示與存儲、進制轉換的概念;在教學后期,需要有針對性地強化學生的程序設計能力,為后續的數據結構、算法知識的學習打下良好的基礎,并通過程序設計的學習與實踐,提高學生的程序設計和實現能力。在線下的面授教學中,充分利用疫情期間建立的線上教學平臺與取得較好效果的線上教學經驗,將適宜的線上教學手段與合理設計、編排的程序設計教學內容相結合,使學生更好地掌握與理解C語言程序設計知識,并能建立起程序、數據結構和算法之間的聯系。
2.1? 理論課教學內容與案例設計
C語言程序設計課程是學生接觸的第一門程序設計語言,其包含的概念、原理、方法較多,技巧靈活且繁雜,需要針對所學專業學生的特點進行合適的教學內容設計。考慮到大部分理學專業新生對程序設計所需的信息技術基礎了解不多,在實際教學中,在講授程序設計內容前增加講授程序設計所需的信息技術基礎知識的內容,具體包括計算機系統基礎知識、微型計算機的硬件組成、數制及其相互轉換、數值數據編碼、西文字符編碼。學生掌握了這些信息技術基礎知識后,將能較好地掌握與理解程序設計中諸如數據類型與存儲、變量與常量、表達式與運算、輸入與輸出等知識。
由于理學專業后續的專業課程中通常涉及較多的數值計算、數據分析等,若學生能在程序設計學習中盡早地掌握信息化手段,使用程序設計知識完成數據分析等任務,將極大地提高專業學習興趣并能提升專業素養,有助于培養創新能力。為此,在C語言程序設計教學中主要使用數值計算、數據分析等作為教學的示例案例。如在講授了選擇與循環知識點后,使用示例程序“水仙花數的判斷”展示選擇與判斷的綜合使用。通過引入此類內容,既能對已學的程序設計知識進行簡單回顧,也能為后續的數值計算、數據分析等相應概念的表示與實現打下前期基礎。
2.2? 實驗課教學內容的設計
在程序設計課程群中,實踐教學作為C語言程序設計知識內化的有效途徑,有助于提升學生的探究與創新能力。針對C語言程序設計的實驗需要設計能有效檢驗知識點的實驗內容。以循環的實驗為例,實踐教學安排的實驗內容為“整數間的數制轉換”。數制轉換的基本方法是大學計算機基礎課程的內容,在C語言程序設計中進行了補充學習,且通常大部分理學專業學生能較好地掌握。通過數制轉換的編程實驗,既能考查學生對計算機基礎知識的掌握與理解情況,也能反映學生對循環、選擇、輸出格式控制的掌握情況。
2.3? 線上線下融和
近年來,隨著個人電腦、智能移動設備的普及以及網絡建設的發展,在線教育具備了推廣與普及的條件。各高校紛紛推出在線精品課程、MOOC課程等線上教學方式,對教學空間與廣度進行拓展。2020年初,在新冠疫情嚴峻的形勢下,學校教學采用完全在線教學的形式。在此期間,為了適應網絡教學的特點,保證學習效果,無論是教學設計還是教學組織,都突破傳統,進行重新規劃。各門課程的教師利用在線教學的優勢,充分發揮信息化教學的優勢[4],
積累與總結了許多教學經驗[5]。在恢復線下教學后,仍可繼續利用疫情期間的線上教學資源、教學優勢。
在線下教學中,課前根據教學內容確定學生需要掌握的知識點和相關能力,在學校建立的教學平臺上布置課前需要觀看的視頻并發布預習問題。在線下面授課中,教師先采用講授的教學模式講解本課需要掌握的知識點,其后引導學生討論與交流在預習、自主學習中易出錯與混淆的問題。課后通過在線課后作業與測驗了解學生對知識點的掌握程度,可迅速地獲得學生學習情況的反饋。
C語言程序設計是一門與實踐緊密結合的課程。在教學中通過引入移動手機端編程應用,使學生在有限的實踐課外能隨時隨地、快速便捷地檢驗與測試所學的程序設計知識,更利于學生掌握C語言程序設計的理論知識,并極大地豐富學生的編程實踐經驗。
3? 結語
本文從C語言程序設計與程序設計課程群之間的關系出發,結合現階段的本科建設任務與學生特點,針對理學專業的C語言程序設計理論教學和實踐教學進行合理編排,充分利用現代化的教學平臺與教學手段,對現階段高校理學專業C語言程序設計課程教學進行改革與實踐,通過融入線上線下教學的教學改革以提高教學效率,增強教學效果,從而培養學生的創新能力,達到培養創新型人才的教學目的。■
參考文獻
[1]張先偉,曲志堅,張立紅,等.程序設計能力培養體系建設與實踐[J].計算機教育,2019(9):75-79.
[2]蔣宗禮.計算機類專業人才專業能力構成與培養[J].中國大學教學,2011(10):11-14.
[3]楊傳棟,范昊,王志軍,等.非計算機專業C語言程序設計教學方法研究[J].教育教學論壇,2020(36):284-285.
[4]李薇,黑新宏,王磊,等.C語言程序設計課程的在線教學組織與實踐[J].計算機教育,2020(10):37-41.
[5]白琳.疫情期間基于教學共同體的精準在線教學設計:以C語言程序設計課程為例[J].計算機教育,2021(1):36-41.