張素真,楊學鋒,曹東燕,楊延玲
(德州學院 物理與電子信息學院,山東 德州 253023)
C語言是全世界普及推廣的程序設計語言之一,其語言簡潔、使用靈活、可移植性好、更接近計算機底層設計、執行效率高,歷年在軟件開發領域占據主流地位[1],因此,成為了高等學校非計算機專業普遍開設的一門專業基礎課程。該課程不僅是后續專業課程的基礎,也是學生以后從事編程行業必備的學習基礎。通過對該課程的學習,可以培養學生的計算機邏輯思維能力,為學生從業后拓展職業發展空間打下堅實基礎。本研究從C語言程序設計的課程特點、傳統課堂教學模式的特點及學生學習認知的特點出發,分析了實際教學中存在的問題,并結合MOOC網絡課程的特點,進一步探討如何將MOOC與傳統教學相融合,通過線上線下混合教學的模式來提高學生學習的積極性及實際編程的能力。
C語言程序設計是德州學院面向電子信息和物聯網專業開設的必修課和專業基礎課。該課程的前導課程是計算機應用基礎,其后續課程有物聯網軟件設計基礎、射頻識別技術及應用、Java SE程序設計及實踐、Android程序設計及實踐、Android特色應用開發等專業課程,它不僅是電子信息類和通訊類等專業的基礎課程,也是計算機、軟件等各種專業等級資格考試中所要求的程序設計語言之一。
C語言程序設計課程內容繁多,主要包括基礎知識概述、選擇結構程序設計、循環結構程序設計、數組、函數、指針、結構體與共用體、編譯預處理和文件等核心單元。每個核心單元中的知識點也很多,如:函數這一單元中就包含了函數的定義、函數的參數與函數值、函數的調用和變量的作用域與存儲類型等內容,而且每個知識點中的內容還可以進一步細分。該課程的教學目標不僅要求學生了解算法的基本概念,掌握基本的語法知識,還要培養學生的計算思維能力及運用C語言編程來解決實際問題的能力[2]。以傳統教學方式通過有限的64學時來完成以上教學內容并實現相應的教學目標,無論是對學生還是對教師來說,都具有一定的挑戰性。
C語言程序設計是大部分理工科的專業基礎課程,很多專業的開課時間都設置在大一下學期或大二上學期。對于初進大學的很多學生來說,此時還沒有形成自主學習的能力,而且C語言程序設計也是大部分學生接觸的第一門編程類課程,無論是在學習方式,還是對課程的認識上,都還需要一定的適應過程。此外,C語言程序設計的學習內容較多,C語言語法繁瑣,比較接近計算機的硬件底層,很容易讓初學者摸不到“門”,特別是指針部分的學習。指針是內存空間的地址,在C語言中的應用十分廣泛,利用指針可以有效表示各種數據結構,方便使用數組和字符串,能夠簡潔實現各種函數之間的數據傳遞,使編寫的程序高效而簡練。但指針的使用復雜,難以理解,容易出錯,一旦發生錯誤,其糾錯相對也比較困難。指針不但是C語言學習的重點,也是學習的難點。在教學過程中,經常有學生表示指針這部分內容特別抽象,很難理解,學習的時候有畏懼心理,以至于學習的主動性和積極性都不高。
傳統課堂教學大多是以教師為主體,學生被動接受的填鴨式教學。C語言程序設計內容繁雜,包括十幾個章節,每個章節里面又有大量的概念和眾多的語法規則,涉及的算法很多且比較抽象,前后知識點之間的相關性較強,加之有些學生學習的主動性和積極性不高,一旦某個知識點沒掌握,就會對后續課程的學習造成很大影響,部分學生越來越聽不懂,以至于漸漸喪失了學習的自信心。
C語言程序設計是一門專業基礎課程,大多都采用大班或合班上課的形式。由于上課學生人數眾多,教師不能兼顧到所有學生,不能全面掌握學生學習的具體情況。C語言程序設計的課時有限,一般周學時只有3個或4個,而課程的教學內容又很多,教師在課堂上花費大量時間進行內容講解,留給學生自己思考和探索的時間較少,很難實現學生編程思維能力的訓練,這也是目前學生實際編程能力普遍較弱的重要原因。
學生在智力、學習能力和認知能力等方面都存在差異。學生之間的智力差異是客觀存在的,從而直接影響其學習能力和認知能力。此外,學生學習的內部動機也存在差異,有些學生有很強的自我提高內驅力,對C語言本身很感興趣,有很強烈的學習愿望,能主動學習,提前預習,很好地完成教師布置的任務,而有的學生更多依賴于外部動機,自己沒有學習愿望或學習愿望很弱,在課堂上主要表現為注意力不集中,學習不認真、不努力。由以上的個體差異從而導致了學生認知方式的差異,也就是掌握知識過程中的具體表現差異,如學生是否提前預習、聽課是否認真、課后是否復習、是否能很好地完成教師布置的作業以及在完成教師布置的任務之外能否更進一步積極主動拓展自己的知識面,等等。
不同學生對學習內容的接受程度是不同的,有的學生學得又快又好,能當堂掌握所學知識,甚至課后積極主動的進一步擴大自己的知識面,而有的學生學習能力和知識接受能力稍差,跟不上教師的節奏,難以掌握當堂所學知識。在傳統教學中,因為教學進度及課時的限制,教師不可能反復多次講解,也不可能對每個學生都能做到因材施教,這就使得有些學生進入了一步跟不上,步步跟不上的惡性循環。
MOOC簡稱為“慕課”,是英文Massive Open Online Course的首字母縮寫,其中文直譯為“大規模開放在線課程”。MOOC是在互聯網大背景下發展起來的一種在線免費課程,其目的是使學習者不受地域、年齡、學習時間和學習地點的限制,能夠根據自己的興趣自主地、有系統地進行學習[3-5]。MOOC自出現以來就形成了一股浪潮,受到了極大關注,國內很多高校也都紛紛加入到MOOC建設中去。
針對C語言程序設計課程本身的特點,本研究分析了MOOC與傳統教學方法相比所具有的優勢及存在的缺點。MOOC通過互聯網平臺將傳統課堂以在線學習的形式呈現,為學員提供優質視頻、課件及教學資料,具有“大規模”“開放”“在線”三個最主要的特征[6-7]。越來越多的商業機構和高等院校都紛紛加入到MOOC建設的浪潮中,大大增加了網上課程的數量及種類,拓展了學生的學習途徑,使學生的學習方式有了更多的可能性和選擇性。
大數據統計,國內很多高校都開設了C語言相關的在線課程,如浙江大學翁愷老師的程序設計入門——C語言、C語言程序設計和C語言程序設計進階及哈爾濱工業大學蘇小紅老師的C語言程序設計精髓,等等。中國大學MOOC網上有很多這樣的國家精品課程,學生可以根據自己的喜好和需要選擇適合的課程。MOOC的課程是以短視頻的形式呈現的,其視頻長度往往控制在20 min以內,主題鮮明,重點突出,特別適合C語言知識點繁雜的情況。傳統課堂教學每節課長達45 min,學生很難保持始終如一的注意力,而MOOC時間較短,學生的注意力相對比較集中,可以很好地提高學習效率[8]。
隨著互聯網的普及,學生可以通過電腦、手機等多種終端隨時隨地進行上網,擺脫了課堂時間上的束縛,為更好地利用各種碎片時間進行學習提供了可能。和傳統教學相比,MOOC的另一大優勢是它的可重復性。同一班級中,不同學生之間的學習能力和認知能力是不同的,有的學生學習能力強,接受比較快,可以跟上教師上課的節奏,而有的學生反應比較慢,理解能力也比較差,課堂上跟不上教師的節奏,慢慢的,差距越來越大,以致失去學習的信心。若將MOOC引入教學中,每一個知識點都可以錄成相應的視頻、音頻或其他類型的可重復載體,學生可以針對每一個知識點或某一個視頻進行反復學習,不受時間和次數的限制。將MOOC引入傳統教學,可以很好地解決學生學習能力差異與傳統統一式教學模式之間的矛盾。
除了上面說到的各種優點,MOOC也存在缺點[9]。一是課程的監管問題。對于專注和求知欲強的學生而言,他們往往能自覺完成課前網上課程的學習任務,但對于一些基礎較弱的學生而言,由于缺乏師生間的直接互動,加之本身的自制力較差,網上學習又有太多的誘惑,很容易注意力不集中。因此,在網課學習的過程中,學生的完成情況和學習效果都要打一個大大的問號;二是MOOC的互動性不如傳統教學直接和有效。MOOC的互動性主要體現在討論區及發帖提問,但無論是哪種方式,都沒有及時反饋的效果,而在學習過程中,及時反饋是非常重要的;三是MOOC的錄制往往需要投入很大的人力、物力及財力。如何在內容上更能吸引學生,制作高質量的課程,這對教學任務本身就十分繁重的教師來說有一定難度。雖然可以選擇MOOC網絡平臺上的已有課程,但這種課程往往有時間限制,在上課時間的選擇上受限制。
MOOC是一種新興的課程形式,既有網絡課程的獨特優越性,又有網絡課程的一些弊端。要想將其運用到教學過程中,還需要不斷進行研究和探索。關于MOOC在C語言程序設計中的應用,針對前面對此課程的分析以及該課程在傳統教學中存在的問題和MOOC課程的特點,可以將傳統教學和MOOC有效結合起來,取長補短,采用線上線下混合的方式充分發揮兩種教學形式的優點。下面在教學的三個過程中分別加以討論。
教師根據教學內容,提前布置教學任務,讓學生在網上觀看相應的教學視頻,完成初步的、低層次的認知過程,這一過程可以緩解課堂滿堂灌的問題。至于所觀看的視頻,可以是教師本人錄制,也可以是網上各種MOOC平臺上的現有資源。雖然這個過程看似與傳統教學中的課前預習相似,但在這種混合式教學中卻是至關重要的,是混合式教學的關鍵。要想學生能自覺按時、按要求完成教師提前布置的自學任務,那就面臨一個監管的問題,如何保證學生提前觀看視頻?建議采用學習小組的形式,小組以宿舍為單位集體觀看視頻并相互討論,小組長負責監督。同時,教師在錄制視頻時也要考慮如何能更吸引學生,如何在微信、微博和抖音等各種軟件中吸引那些求知欲不強、自制力不高的學生。針對C語言程序設計這門課,建議以知識點為單位設計課程視頻,盡量短小精悍。如果知識點內容較多,可以適當分解,但不能打斷課程的連續性和完整性。
課堂教學是以學生課前完成線上學習任務為基礎,教師應該對學生課前的學習情況有一個大致的了解。學生應將觀看視頻過程中存在的問題反饋給教師,教師要通過提問進一步了解學生掌握的情況。在此基礎上,教師將教學任務整體梳理一遍,使學生將獨立分散的知識點形成完整的知識體系,并通過適當引導讓學生掌握重點和難點。當教師和學生之間進行充分溝通且學生對知識有了深層次理解之后,進入編程訓練階段。教師要先根據程序實例講解編程思想及編程過程中需要注意的語法規則,然后讓學生自主上機練習,并通過改寫程序進一步加強訓練。這個過程中,教師的主要任務是引導并幫助學生解決編程過程中遇到的實際問題,比如一些不易察覺的邏輯錯誤,一些容易忽視的語法錯誤,等等。通過不斷地練習和糾錯,逐步提高學生靈活運用所學知識并熟練編程的能力。
教師可根據上課的實際情況,布置一定的實踐任務,比如根據教學任務設計幾個趣味小程序,也可以完成MOOC網絡平臺上面的作業與練習以及每個章節后面的測驗與作業,或根據學生的情況將兩者結合起來。基于及時反饋在教學過程中的重要性,為了彌補MOOC難以在師生之間進行有效及時反饋的弊端,教師可以建立一個班級QQ群,這樣就建立了師生之間實時有效的溝通渠道,學生在學習中遇到任何問題都可以在群中提出,教師或同學都可以給出及時解答。通過這種有效的交流,學生的疑問可以被高效解決。此外,通過學生的反饋教師能夠知道學生有沒有認真去學習和思考;通過教師的反饋學生也能知道自己的答案對不對,是否掌握了知識的要點。
基于C語言程序設計的課程特點,在教學過程中引入MOOC網絡平臺,實現線上和線下的混合式教學模式。針對傳統教學和MOOC各自的優缺點,將兩者有效結合并給出了具體的方法和實施措施。MOOC平臺的引入增加了學生和認知之間的鏈接通道,讓教師課上的時間更加充裕。這種方式能有效改變傳統教學教師滿堂灌,學生被動接受知識的現狀,也有利于調動學生學習的積極性和主動性,進而提高學生的計算思維能力和實際編程能力。