謝黨恩 梁瑞 張志立



關鍵詞:前置性學習;PTA 平臺;課程改革;程序設計基礎
1 研究背景
程序設計基礎課程是計算機相關專業新生入校后的第一門專業基礎課[1]。該課程是一門實踐性很強的必修課,也是學習后續專業知識的基礎,因此在整個課程體系中占據舉足輕重的地位。
結合學校實際,該課程以C語言為依托,主要講授程序設計語言的基本原理和程序設計方法。在整個培養方案中,期望通過本課程的學習,使學生初步形成良好的程序設計風格,能夠利用編程工具熟練進行程序的編輯、編譯、連接、運行并對程序能夠調試和測試,具備初步的分析問題和利用計算機表述復雜工程問題的能力,為后續課程如數據結構、面向對象程序設計等課程打下良好的專業基礎。
2 現狀分析
程序設計基礎課程內容較多,實踐性較強,有一定抽象性,對初學者有一定難度。為配合高校課程改革“減學分、減學時”的總體指導思想,程序設計基礎課程的學時也受到一定程度的縮減[2],導致教師在課時的安排上總是存在捉襟見肘的困難,加之新生入校后軍訓還要占用2周左右的時間,進一步加劇了“課時不足”現象的產生。“課時不足”最終表現在任課教師講授到在該課程后面重點內容(如指針、鏈表等)時只能點到為止,而這部分內容對后續課程數據結構等的學習是至關重要的,由此會引發一系列不良的連鎖反應。
3 前置性學習的實踐研究
3.1 前置性學習
“前置性學習”本質上是學習起點的前移,即學生先進行個性化的自學,將學習任務提前。前置性學習一般安排在課外進行,教師可以提前發布相關章節任務,然后讓學習者帶著問題和思考進行自主學習。
3.2 前置性學習的可行性
1)環境及資源可行性
隨著我國“互聯網+教育”工程的不斷推進,網絡已經觸及千家萬戶,即便是在偏遠的農村,互聯網也都已經有效覆蓋,為遠程教學提供了保障[3]。同時,各類網絡教育資源平臺也應運而生,尤其是近幾年受疫情影響,各高校都建有自己的網絡教學平臺,為前置性學習提供了條件。
2)設備可行性
隨著計算機硬件技術的發展,硬件設備的性能越來越高,但價格越來越低,這也為普通家庭購買電腦提供了可行性。對于高考被錄取到計算機相關專業的學生,配置計算機是開展后續學習的前提條件。因此,很多家長在接到孩子錄取通知書后,都會在開學前為學生配置一臺個人計算機(以筆記本電腦為主),這也為本課程的前置性學習的實踐操作提供了可行性。
3)時間可行性
從學生接到入學通知書(以許昌學院為例,一般在8月10日左右)至學生入學報到(9月初),學生在家有大約20天的空閑時間,利用這段時間將學生組織起來每天抽出3~4小時進行程序設計基礎課程的前置性學習,絕大部分學生是可以接受的。
3.3 前置性學習的實施方法
前置性學習以學生自學為主,但需要任課教師制定相關的學習內容、完備的自學方法、還要精選與自學內容匹配的練習題,同時還要與學生建立通暢的線上答疑渠道(QQ群等)。
3.3.1 優選合適的前置學習內容
針對程序設計基礎課程,課程組在實施過程中,選取了教材前三章的內容并凝練為5個基本學習模塊作為學生前置性學習的主要內容。這些模塊主要包括:
1)程序設計和C語言介紹:讓學生了解程序設計語言的內涵,熟練掌握C語言程序的開發過程。
2)C語言的基本知識:介紹C語言的基本數據類型、常量和變量的使用方法、C語言的各類運算法和表達式的使用方法等。
3)順序結構程序設計:重點掌握printf 語句和scanf語句的使用方法。
4)分支結構程序設計:重點強調程序流程圖的繪制方法,掌握單分支、雙分支及多分支的程序設計實現方法。
5)循環結構程序設計:主要介紹C語言的3種循環語句實現循環結構的程序代碼設計。
3.3.2 制定授課方案
授課方案的制定采用騰訊會議隔天授課的形式,每次授課時長2個小時。采用隔天授課主要是考慮到學習者的接受能力,放慢節奏,確保學生打牢基礎。
如表1所示為實施過程中的具體時間安排表。其中第一次課主要為沒有電腦的同學采購電腦做準備,幫助同學們選擇機型,根據自己的所學專業選擇合適的硬件配置,盡量讓學生獲得較高的性價比。接下來大概有一周的時間供大家去采購硬件設備。后續的7 堂課,基本上按照預定的模塊內容開展線上授課。
線上授課全程錄像并在課后及時上傳到學習通在線學習平臺,供同學們進行回放學習,也為不能參與直播課堂的同學提供了學習機會。
3.3.3 精選同步練習題
程序設計課程的學習重在上機實踐環節,為了確保學生有足夠的上機實踐時長,課程組借助于PTA平臺[4]發布了57道同步練習題,學生在每次授課結束通過實操這些題目來檢驗對知識點的掌握程度。PTA是由浙江大學主導,杭州百騰教育科技有限公司管理運營,全國高校教師共同建設的程序設計類課程的輔助教學平臺[5]。如圖1所示,在PTA平臺上教師可以建立并分享自己的題目集、創建自己的班級、布置作業、統計成績并進行數據分析等。
學生通過平臺完成作業,提交代碼,平臺自動完成批改,并生成相關的統計數據,學生可以實時看到自己在班級中的排名情況,在動手實踐的過程中形成一種“你追我趕”的學習氛圍,如圖2所示。
3.3.4 做好答疑及引導
通過建立線上QQ群,及時解決學生學習過程中遇到的問題。首先,教師要堅持“授之以漁”的思想,避免“就題論題”。在問題的解答過程中應注重培養學生借助于互聯網手段自主解決問題的能力,教師給予學生的是一種普適性的解決同類問題的手段或方法,而不要局限于學生提出的問題本身。
其次,要引導學生“互幫互助”,在班級內部解決問題。教師要引導學生把遇到的問題用簡潔準確的語言在QQ群中進行描述,然后配以問題截圖,讓同學們一起思考問題的解決辦法。在這個過程中,可能有的同學也遇到了類似問題并已解決,就可以直接給出解決方案。這種方式不僅可以有效降低教師答疑的工作量,也有助于培養了學生的語言組織和表達能力。
此外,答疑環節可以請高年級的學習成績較好的學生入群做助教,協助老師解答問題。教師要做到及時查看學生問題是否得到解決,一定不能出現長期無答復的情況,避免挫傷學生的前置性學習積極性。
4 實踐效果及分析
經過近20天的前置性學習,學生入校后組織進行了一次摸底測驗,主要用于檢驗學生在假期學習的成果。本次測驗借助于PTA平臺發布,要求在40分鐘內完成4道編程題,涵蓋程序設計中數字類型及表達式應用、分支語句及循環語句的使用等知識點(如圖3 所示),參與測評學生總計129人。
從總體考試成績分布情況可以看出(如圖4 所示):(1)11位同學在有限時間內拿到了滿分;(2)有近20%同學得分在[80,100)分之間,至少做對了3道題;(3)過半數的學生(69人)成績在[50,80)分之間,至少完成了2道題;(4)存在少部分同學(26人)得分小于50分,其中有20個同學得分大于20分(完成了1道題),有6個同學得0分。
學生入校后,經調研6名得0分的同學在接到通知書后,始終沒有加入班級QQ群,未得到提前學習的信息,因此在報到前沒能正常開展“前置性學習”,加上高中階段也沒有接觸過程序設計課程的學習或培訓,對C語言編程一無所知,無法完成測試題目。11 位得滿分的同學,除了按時參與了假期幾次線上課程的學習外,還及時完成了57道同步作業,全部通過系統檢測。
從成績分布可以看出,前置性學習在培養學生基礎編程能力方面取得了不錯的效果。在沒有正式授課之前能夠通過短時間的學習,完成2道及以上的題目的學生比例高達80%,說明學生已經跨過了程序設計入門階段的“黑暗時刻”,具備了初級的編程思維能力。
5 結束語
實驗表明,大一新生自拿到錄取通知書到正式報到這段時間屬于是一個完全放飛自我的短暫時期(差不多有近1個月的時間),利用這段時間讓學生集中精力學習一門大學階段的基礎編程課程是完全可行的,并且是高效的。
本文詳細介紹了計算機相關專業借助于前置性學習方法,利用短暫的20天時間引導學生積極開展程序設計基礎課程的前置學習,并配以同步的練習題目,可以有效提升學生的編程思維能力,同時也解決了程序設計基礎課程開課學時嚴重不足的問題。學生入校后,已經進行過前置性學習的內容就可以加快授課進度,為后續的內容預留出更多的教學時間。