謝曉艷 楊圣洪 陳娟 李小英 蔡宇輝



摘? 要:程序設計基礎課程是高校計算機基礎教學的核心課程,針對程序設計基礎課程在教與學兩方面存在的問題,采用翻轉課堂、案例教學、項目教學等混合式教學方式,從教學方法、教學內容、教學模式和考評方式等方面進行改革實踐,以提高教學質量,使學生在提高程序設計能力的同時,培養學生的計算思維和解決實際問題的能力,在實踐中取得了較好的效果。
關鍵詞:程序設計;教學方法;教學模式
中圖分類號:TP311.1-4;G642? ? ? 文獻標識碼:A 文章編號:2096-4706(2021)02-0177-04
Abstract:The basic programming course is the core course of computer basic teaching in universities. This paper aims at the problems existing in the learning and learning of the basic programming course. Using flipped classroom,case teaching,project teaching and other blended teaching methods. Make reform and practice from the teaching methods,teaching content,teaching mode and evaluation methods and other aspects,in order to improve the quality of teaching. So that students can not only improve their programming ability,but also cultivate their computational thinking and ability to solve practical problems. Good results have been achieved in practice.
Keywords:programming;teaching method;teaching model
0? 引? 言
程序設計基礎課程是高校非計算機專業學生的公共基礎課程,是計算機基礎教學的核心課程[1]。該課程通過學習一門計算機語言(如C語言),使學生了解高級程序設計語言的基本結構,逐步理解和掌握程序設計的思想和方法,具有一定的分析問題和利用計算機解決問題的能力,為以后利用計算機解決自身專業問題打下堅實的基礎。
從多年的程序設計基礎課程的教學中,發現由于程序設計語言概念抽象,內容繁多,對于大多數學生而言有一定的難度,學生有畏難情緒,甚至有的學生從入門到放棄,“C語言程序設計”課程長期占據程序設計語言類課程“掛科”率的榜首;造成此現象的原因,本人認為是在這門課程的教和學兩方面都存在一些問題,影響了這門課程的教學效果和學生計算思維能力的培養。如何提高學生的程序設計能力,如何提高程序設計基礎課程的教學質量,一直是我們在教學過程中思考的主要問題。
1? 教與學中的問題
1.1? 教方面的問題
經過調查分析,發現教學過程中主要存在以下問題:
(1)在壓縮課時和學分的大環境下,程序設計基礎課程課時少,內容多,涉及的概念龐雜,知識點多,教學任務繁重。本人所在的高校,程序設計基礎課程的理論授課是38學時,學生難以在較短的時間內學好一門程序設計語言。
(2)教材重語法輕實踐,教材往往是圍繞語法展開知識點,書上的例題也是說明語法,導致教學過程過分強調語法,糾纏于一些小細節,忽略了學生邏輯思維能力和計算思維的培養[2]。
(3)評價手段單一。由于課程成績由平時成績和考試成績綜合評定,期中平時成績占50%左右;考試題型不外乎選擇題、填空題、程序閱讀題、編程題等,只要掌握基本的語法,即使不會編程的學生也能通過考試,對于那些勤于思考,編程能力強的學生沒有起到激勵作用。
1.2? 學方面的問題
學生在學習這門課程的過程中主要存在以下幾個方面的問題:
(1)由于本課程是高校非計算機專業開設的一門公共基礎課程,學生對課程的重要性認識不足,重視程度不夠,學習目的不明確,學習動力不足。
(2)受地域的影響,學生的計算機基礎參差不齊,差異很大,有些學生在中學就開設了計算機課程,有一定的編程基礎,但有些偏遠地區和農村的學生甚至沒接觸過電腦。
(3)學習主動性不夠,缺乏刻苦鉆研的精神。現在學生過分依賴手機,不愛動腦筋,很多問題似懂非懂,作業敷衍應付,沒有深入理解。
2? 教學改革與實踐
針對以上問題,結合本人多年的程序設計基礎課程中積累的經驗,在教學過程中進行了一些有效的嘗試。
2.1? 明確學習目標
在第一堂課首先就告訴學生為什么要學習程序設計(Why),通過學習程序設計語言,主要培養學生的邏輯思維、計算思維和使用計算機解決實際問題的能力。
然后,告訴學生如何學習程序設計(How),C語言是實踐性非常強的一門課程,一定要通過自己多上機,多寫代碼,多實踐,才能提高自己的編程能力,學好這門高級語言。
再次通過幾個簡單的C語言程序,使學生了解C語言程序的基本結構(What),快速入門,提高學習效率。
2.2? 合理組織和優化教學內容
C語言知識點繁多,有嚴格的語法規則,并且各知識點之間相對獨立,學生難以建立系統的、全局的概念[3]。因此,在教學中,我們按照學生的認知規律,精心設計教學內容,在已有知識基礎上拓展新的知識的同時,關注各知識點之間的聯系,使學生建立系統的、全局的知識架構。
譬如,C語言有多種數據類型,除了基本數據類型外,還包括構造數據類型、指針數據類型,學生理解有一定的難度。在教學中,在講解基本數據類型時,先從日常生活中具體的事例,比如班上學生的人數,姓名和成績等信息如何表示,引出在計算機中,一切信息都是以數據的方式進行處理。介紹數據在計算機中的存儲方式,進而講到C語言基本的數據類型包括整形、字符型、浮點型和空類型,在程序中要定義正確的數據類型,因為一旦定義了數據的數據類型,就決定了該類數據在內存中的存放長度、數據可執行的操作以及數據的取值范圍。
在此基礎上,介紹基本數據類型的局限性,如果只有基本數據類型,程序將變得非常復雜。當要對大量相同類型數據操作時,比如,一個班有70個學生,求某科目考試的平均成績,并輸出所有大于平均成績的學生成績,就要使用數組。適時引入數組的概念,數組是具有相同數據類型的變量的集合,類似的問題,使用數組來解決,程序將十分簡潔。但是,有些問題數組也不能解決,有時我們需要將一些屬于不同類型的數據組合成一個整體來處理,例如:建立一個學生信息系統,對每一個學生至少需要以下一些信息:學號、姓名、性別、年齡、成績等,這樣的問題就要用結構體。像這種不同類型但相互之間有關聯的數據集合定義為結構體類型,程序可讀性好,運行效率高。通過引入實例,學生更容易接受,加深了理解,學習的積極性提高了。
2.3? 案例驅動
在課堂教學方法中,采用案例引入的方法,結合實際案例組織和實施教學,將程序設計的方法貫穿到每一個知識點中。選用經典案例,使用不同的算法來實現,逐步深入,拓展學生的思路,打開思維空間,培養學生的計算思維能力。
譬如,以求斐波那契數列前20項為例,在學習循環結構時,根據斐波那契數列的特點,循環的處理過程是:將數列的第一項和第二項賦值為1,f1=1,f2=1,則第三項f=f1+f2;然后整體平移,f1=f2,f2=f,那么第四項f=f1+f2,以此類推,可求到數列各項的值。在學習函數時,對斐波那契數列遞歸函數的處理過程是:只有當f(1)=1和f(2)=1時函數返回值為1,函數結束;其他情況一直調用函數本身F(n)= F(n-1)+F(n-2),如圖1所示。
在學習數組時,由于數組元素在內存是連續存放的,使用數組來求斐波那契數列前20項,程序更加簡潔,可設數組的大小為f[20],由于數組的下標從0開始,將第一項和第二項賦值為1,f[0]=1,f[1]=1,從第三項開始,每一項都是前2項的和,使用循環結構即可求前20項的值,循環變量從2開始,直到<20,如圖2所示。
2.4? 改革教學模式
采用傳統的教師主導課堂,學生被動聽課的教學方式,學生處于被動接受狀態,難以調動學生的學習積極性。在程序設計基礎課程的教學中,我們采用以學生為主體,以教師為主導的方式,通過課堂互動等多種形式,使學生融入課堂,激發學生的學習興趣,使他們更加積極主動地學習,挖掘他們的潛能。
以泛雅網絡教學平臺和學校課程中心為依托,根據大數據技術對教學過程實時監控得到的數據,了解學生在學習過程中存在的問題和疑惑,教師可根據反饋的信息及時調整教學進度和教學內容,提高教學效果;同時,在課堂中可以更有效地進行互動,打開他們的思維空間,提高他們解決實際問題的能力。泛雅網絡教學平臺課程界面如圖3所示。
教學中,運用翻轉課堂、案例教學、項目教學等混合教學方式,在課前,教師精心設計教學內容,學生按照學習任務單,觀看微課視頻,閱讀教材、資料以及課件[4],如圖4所示。例如:在講授C語言的基本程序語句時,由于C語言的語法規則繁雜,在有限的課時內,難以面面俱到,因此,采用翻轉課堂的教學模式,學生按照老師提供的導學案,看微課視頻,并做相應的練習,進行自主學習;在課堂上,老師除了講解本節的重點和難點問題外,還將講解典型案例和綜合性案例,并編程實現,如圖5所示。由于課前,學生通過教學視頻了解了課程相關的知識點,因此,可以有更多的時間進行課堂討論,改變了學生被動學的狀態,能更好地融入課堂,便于教師引導學生深入思考,培養學生的邏輯思維能力和發散性思維,更好地學習知識和內化知識;課后,完成實驗作業,鞏固提高。學生通過這些環節掌握了利用計算機求解問題的思路和方法,促進了計算思維的培養,提高了學生的編程能力和計算機應用開發能力。
2.5? 調整考核方式
完善考核方式,使之更合理,強調過程化考核[5]。學生的成績由考勤、課堂表現、實驗作業、單元測試、期中考試、期末考試等組成,取加權平均值;所有的測試全部采用機試,隨機組題。采用這種方式綜合評定學生的成績,使學生感到了壓力,每一節課、每次作業都認真對待,一刻都不能松懈,避免了平時不認真,考試前一個月臨時抱佛腳的現象,使學生的學習更加積極、主動。
綜合成績由平時成績一、平時成績二、期中考試和期末考試組成。其中:平時成績一占總成績的20%、平時成績二占20%、期中考試占20%、期末考試占40%。平時成績一包括考勤+課堂表現+課程中心作業+機考系統作業,平時成績二包括各單元測試成績;同時,鼓勵學生參加CCPC、ACM等程序設計競賽,并在平時成績中進行加分,成績組成如表1所示。
采用新的考核系統,考核內容覆蓋面更廣,對學生提出了更高的要求,更有利于激發學生的學習興趣和學習積極性。
3? 結? 論
為提高程序設計基礎課程的教學效果,我們從教學方法、教學內容、教學模式和考評方式等全方位進行改革實踐,學生的學習積極性提高了,邏輯思維和計算思維能力增強了,后續我們將學習更先進的教學理念,提升教學實效。
參考文獻:
[1] 文萬志,程學云,陳文蘭,等.面向OBE的程序設計基礎課程的計算思維培養 [J].計算機教育,2020(6):85-89.
[2] 丁海燕.計算機程序設計課程中計算思維的培養 [J].實驗技術與管理,2015,32(12):16-18+21.
[3] 彭立宏,肖曉強,周麗濤.“計算機程序設計”課程教學研究與實踐 [J].計算機工程與科學,2014,36(S1):39-42.
[4] 張泳,顏暉,張高燕.以應用能力培養為核心的程序設計課程教學全面重構 [J].計算機教育,2021(1):70-74.
[5] 張廣斌,張潤梅,劉瑾,等.混合式教學在程序設計基礎課程中的應用 [J].軟件導刊,2019,18(11):176-179.
[6] 項響琴.線上線下深度融合,打造程序設計“金課” [J].電腦知識與技術,2020,16(11):180-181+191.
[7] 李薇,黑新宏,王磊.C語言程序設計課程的金課建設實踐 [J].計算機教育,2020(6):142-146.
作者簡介:謝曉艷(1966—),女,漢族,湖南長沙人,副教授,碩士,研究方向:計算機應用。