王娟,孔宇彥,黃培泉,譚明超
(1.廣東工貿職業技術學院,計算機與信息工程學院,廣州510510;2.中國人民解放軍75839部隊,廣州)
《程序設計基礎》是面向高職院校計算機軟件專業的大一新生開設的專業基礎課程,主要用以培養學生程序設計能力,為后續的專業課程和以后的軟件開發奠定基礎。在引入數字化教學平臺之前,課程教學模式是傳統的以老師為中心進行教學內容講授和實驗教學指導相結合的方式,這種模式以教師為主體,學生處于被動地位,忽視了學生學習的主動性、積極性和創造性,與高職院校對人才培養要求中學生應具備獨立自學能力和較強的創新能力的要求是不相符合的,因此,改變傳統教學模式,在教學過程中突出學生主體地位,激發學生的學習積極性,以有效提高課程教學效果,達到人才培養目標就變得十分必要。
《程序設計基礎》課程采用C語言作為教學語言,教學過程中主要存在以下問題:
(1)教學內容多與課時不夠的矛盾。程序設計是理論和實踐相結合的課程,C語言本身涵蓋知識內容多,基本語法知識包含了豐富的數據類型、運算符和表達式,程序結構中的選擇結構和循環結構又分別對應了多種實現語句,而數組、函數、指針等內容的難度對于高職的大一新生難度較大,但是總課時數只有60學時,這樣便導致授課內容的深度和難度受到很大限制,課堂教學中僅能講授重點知識,學生不能深入全面地完成課程理論知識的學習。
(2)學生計算機基礎知識薄弱。課程面向剛入學的大一新生,高中階段的信息技術課往往被主課擠占,多數學生信息技術基礎薄弱,計算機基礎理論知識(如:計算機中數據的表示、存儲等方面的知識)普遍缺乏,學生的知識儲備不能滿足程序設計課程先導知識需要,如果在有限的學時中再補充這些知識,將嚴重影響教學的進度。
(3)學生學習水平差異大。高職學生生源種類多,既有普通高中畢業生又有中職學生,學生的入學基礎和學習能力差異很大,有的吃不飽,有的消化不了,統一的授課模式很難兼顧到每一個學生的需要,必然影響教學效果。
(4)學生的主動思考和創新能力差。傳統教學模式中,學生往往被動接受知識,缺乏自主學習和主動思考的機會,對知識往往死記硬背,不能將知識轉換為自己的能力,沒有達到教學的最終目標。
混合式教學是要把傳統學習方式的優勢和數字化或網絡化學習的優勢結合起來;也就是說,既要發揮教師引導、啟發、監控教學過程的主導作用,又要充分體現學生作為學習過程主體的主動性、積極性與創造性[1]。
本著以“教師為主導、學生為主體”的教學理念,利用數字化在線課程平臺,程序設計基礎課程采取線下課堂教學和線上教學相結合的新型教學模式,重新規劃教學單元、確定教學目標、教學內容、教學資源,細化每一個教學單元的課前、課中和課后教師的教學活動和學生的學習活動,并對教學效果進行評價反饋,及時調整教學方式方法,以獲取最佳的教學效果。
課程采用“課前(線上)—課中(線下)—課后(線上)”混合教學模式,如圖1所示。學生課前通過在線導學設計文檔、思維學習導圖、微視頻、教學PPT等方式自主學習先導知識、預習本單元內容,課中通過提問、案例教學、隨堂練習、學生試講、實驗指導等方式學習掌握本單元知識,課后通過提交作業、在線測試、論壇討論、單元小結、拓展提高環節對知識掌握情況進行檢測、分析、總結和提高。

圖1 程序設計基礎混合教學模式
教學單元1程序設計和C語言導學設計
課內外學時分配:
課內(線下:課堂+實驗):3學時
課外(線上):0.5學時
課前教學視頻:
【視頻】C程序的輸入、編輯和運行
自主學習任務單設計:
(1)子單元1:什么是計算機程序
達成目標1:通過教師提出問題、學生思考回答問題、教師點評分析的方式,學生理解計算機的概念、計算機程序的作用,能夠用自己的語言解釋什么是計算機程序。
學習形式:
【討論1】什么是計算機?
【討論2】什么是計算機程序?
(2)子單元2:什么是計算機語言
學習任務:
【PPT課件】計算機語言的發展
【PPT課件】編譯程序
達成目標1:通過學習在線教學課件,學生了解計算機語言的發展階段,能夠區分機器語言、符號語言和高級語言。
達成目標2:通過學習在線教學課件,學生理解源程序、編譯程序和目標程序的關系,能夠用自己的語言解釋編譯程序的作用。
學習形式:
【討論3】高級語言與低級語言的區別?
【測試1】選擇題和判斷題若干
(3)子單元3:C語言的發展
學習任務:
【資料1】C語言的發展過程
達成目標1:通過在線學習平臺中的相關文檔資料,學生了解C語言的發展過程,能夠大致介紹C語言的來源和發展變化過程。
(4)子單元4:最簡單的C語言程序
達成目標1:通過教師課堂的案例教學,學生熟悉簡單C語言程序的基本結構,能夠閱讀并大致解釋簡單C語言程序的功能。
達成目標2:通過教師課堂的案例教學,學生熟悉C語言程序結構的特點,能夠描述一個C語言程序的執行過程及各個組成部分的含義。
學習形式:
【案例1】用C程序輸出:This is a C program
【案例2】用C程序求兩個整數之和。
【案例3】用函數實現求兩個整數中的較大者。
【任務1】分析給定C程序的功能
(5)子單元5:運行C程序的步驟與方法
學習任務:
【視頻】C程序的輸入、編輯和運行
達成目標1:通過觀看教師課堂上的演示操作,學生掌握C程序的編譯和運行過程,能夠實際操作完成簡單C程序的編譯和執行。
學習形式:
【案例4】輸入并運行一個簡單的、正確的C程序。
【任務2】輸入并運行一個自己編寫的C程序。
【作業1】輸入并運行教材中給定程序,并分析程序運行結果。
【作業2】運行一個自己編寫的程序,輸入3個數,輸出其中的最大值。
3.2.1 提問式教學
當理論課堂上講授的內容比較繁雜和枯燥的時候,學生很容易走神或犯困,這時候可以適當地通過課堂提問的方式,將走神的學生拉回課堂,集中精力認真聽課,同時能讓學生由被動學習變主動思考,積極參與到課堂教學活動中。而且通過學生的回答了解學生的知識掌握情況,特別是在答錯的時候,要引導學生找到錯誤的原因,這樣能對這一知識點和與之相關的知識點理解地更透徹,掌握地更牢固。
比如,在介紹到scanf函數的使用時,對于數值型數據的輸入和字符型數據的輸入很容易混淆,通過操作演示scanf(”%c%c%c”,&c1,&c2,&c3);和scanf(”%d%d%d”,&c1,&c2,&c3);對比,學生知道字符輸入不可以有空格回車等字符,數值輸入則需要通過空格回車等字符來分隔。了解到這個知識后,學生并不一定能真正理解并正確使用,此時再引入綜合性的例子scanf("%d%c%f%c",&a,&b,&c,&d);。講解前,先向學生提問:“如果輸入1234a123o.26,會如何賦值?”a學生回答:“1234賦值給d,后面不知道”,老師提示:“接下來是字符a,對應的格式聲明符是c,該如何賦值?”接著b同學回答:“1234賦值給變量a,字符a賦值給變量b,123賦值給變量c,o賦值給變量d”。這樣便解決了賦值的問題,接著還可以在此基礎上復習printf函數的輸出格式。繼續提問:“那如果執行printf("%d%c%f%c",a,b,c,d);會輸出什么結果?和輸入一致嗎?”,c學生回答:“應該一致吧”,繼續提示“注意格式聲 明 符,d、c、f的 區 別”,老 師 演 示 輸 出1234a123.000000o,再提問:“哪里不一致?為什么?”,此時大部分學生都能意識到浮點型數字輸出時要規定小數部分應該是6位。這樣既解決了scanf字符和數值輸入的問題,又鞏固了printf中的格式聲明符的區別。最后,還可以在此基礎上留課后作業,進一步加強理解和鞏固。
3.2.2 案例教學
程序設計基礎課程涉及到的程序語法知識非常多且不易理解,采用案例教學即可將很多的理論知識融入的案例中,又有趣味能激發學生的學習興趣。本課程大部分的理論知識都是通過案例來講授的,特別是一些經典的、有趣的或者實用的案例比如猴子吃桃、百錢白雞、素數的判斷、密碼的翻譯、各種排序算法等等。
3.2.3 任務驅動
在教學的過程中針對學生的實際水平和教學內容,給學生布置一些熟悉的相對容易一點的題目,把知識點融入到任務中,比如完成圓的周長和面積計算的任務既展示了程序的順序結構又包含了符號常量和變量的定義使用、表達式的計算。通過完成相關任務,學生就很容易入門,不但掌握了相關的知識,還可以繼續擴展到求平方的函數的使用、輸入函數和輸出函數的使用,由淺入深,層層推進學生也獲得了滿足感和成就感。
3.2.4 學生試講
在教學過程中選取部分非難點的重點內容,對學生來說比較容易理解又能夠表達出來的知識點或者案例布置給學生,讓學生提前預習,自己制作PPT,到講臺上當一回老師,也就是“教中學”,接受其他同學的提問和評分,最后老師進行點評。這個方法比較適用于一些基礎較好,善于表達的學生,他們通常比較踴躍;而對于基礎差一些,不太愿意表達的學生,則以引導鼓勵為主,不必強迫。這種教學形式鍛煉學生的語言組織表達能力和應變能力的同時也加深了學生對知識的理解和掌握。
3.3.1 在線作業
結合每個學習單元的教學內容,布置在線作業以加強對知識的理解、鞏固和運用,每次的作業都會評出優秀作業供大家參考學習,起到激勵學生的作用。
3.3.2 在線測試題
通過在線測試測試本單元學生掌握知識的情況,測試完針對學生存在問題及時進行講解,使學生發現問題所在,及時更正并掌握一些重點難點的問題。
3.3.3 論壇討論
每個學習單元圍繞某個知識點發布討論話題,大家通過發表不同的觀點看法,互相交流的過程中更好的理解和掌握相關知識點。
3.3.4 單元小結
每一單元結束,都給出本單元的知識總結,歸納總結所學知識,便于學生理順思路,抓住重點,使知識系統化。
3.3.5 拓展知識
課后拓展一方面是補充一些與課程相關的作為了解的知識,例如C語言的發展歷史;另一方面是有限的課堂時間不可能講解地很詳細很完備的知識,例如算法的表示、printf()函數輸出格式詳解等。這些拓展知識主要是有利于學有余力的同學進一步拓寬知識面,進行更深入的學習。
程序設計基礎課程混合教學改革在2019級新生進行了試行,結合“課前(線上)—課中(線下)—課后(線上)”各個教學環節要求和課程總體教學目標,確定學生的課程考核成績組成情況為:自主學習情況10%+在線測試20%+在線作業20%+期末閉卷機考50%。其中,自主學習情況根據學生在平臺上參與論壇討論、文檔閱讀、PPT預覽、觀看微課視頻、在線學習時長的綜合情況給分。與傳統教學模式課程考核成績組成(平時成績30%+期末閉卷機考70%)相比較,混合式教學考核方式多樣,改變了主要依據最后期末考試成績進行評定的方式,要求學生從課程伊始就要積極參與線上線下的教學活動,認真完成每一次測試和作業,體現了學習過程和學習結果同等重要的理念[2]。
從19級學生的課堂教學表現來看,靈活多變的教學方式吸引了更多的學生積極主動地參與到課堂教學活動中,而在線教學平臺中豐富的教學資源能滿足不同層次學生的學習需要,對提高學生的自主學習能力有一定的促進作用。混合式教學方式方法的滿意度調查結果顯示:滿意占35.54%、基本滿意占35.19%、中立占29.27%、不滿意占3.83%。在混合式教學的初次探索和實踐過程中,得到了大多數同學的肯定和認可,當然還有部分同學未能很好地適應新的教學模式,這需要在接下來的教學中,進一步完善教學方式方法,細化教學內容,劃分不同層次以更好地適應不同學生的需求,取得更好的教學效果。