譚榮麗 吳 昊 黃 馳
南寧師范大學師園學院,廣西 南寧 530226
隨著互聯網的飛速發展,我國對軟件開發人才需求量巨大,但是軟件開發專業人員專業技能高低不一、參差不齊是目前的普遍現狀,嚴重地制約了我國計算機軟件開發行業的發展。[1]獨立學院計算機及其相關專業的學生就業情況并不理想,由于生源的差異,完全采用一般本科院校計算機專業的本科培養方案難以達到企業對計算機學生的軟件開發能力的要求[2]。本文對應用型本科獨立學院的軟件開發類課程分析了教學中存在的問題及原因,并對軟件開發類課程的教學模式進行探討。
許多學生編寫的程序存在邏輯結構混亂、可讀性差、執行效率低等問題,這些問題在后期相應的課程設計和畢業設計中表現尤為突出。學生編程基礎差,其主要原因在于:
1.獨立學院學生的特性對學習的影響
學生編程能力是在程序設計、數據結構等課程學習中逐步建立起來的,作為教學體系中專業核心基礎課程,要求學生在大一學年掌握一般程序設計的流程、方法和思想。然而,獨立學院學生的學習主動性和自覺性較差、學習熱情度不高、接受新事物的能力差、缺乏克服困難的毅力等特點[3]會影響學習的效果。許多學生在初學程序設計課程時還沒有適應大學學習的節奏、對編程知識掌握的速度較慢,因而大部分學生很難與老師的教學計劃同步;同時許多學生遇到問題時往往是放任不管、等待老師解決,而不是主動查資料解決。
2.缺少調試和修改錯誤的經驗及能力
許多學生對數據結構和算法的理解尚不到位,書寫的代碼邏輯不清晰、結構混亂,因而導致程序的閱讀和修改十分困難。同時,由于在學習程序設計初期學生在調試修改程序時過多依賴老師的指導,同時由于有限的課時導致任課老師減少了對學生進行相應的培訓,部分學生在大二時依然不會通過提示信息來修改錯誤,面對程序中的邏輯錯誤更是無從下手。這就導致多數學生在開發測試程序時面對出現的錯誤時往往不知道如何處理,同時對如何查找和修改錯誤缺乏探索解決問題的毅力和信心。
許多學生在軟件開發過程中,不知道應用前沿課程的知識來實現具體的功能,同時由于對基礎知識的理解和掌握不到位,在應用過程中也會出現各種問題。在教學過程中,大部分獨立學院的教師都會發現許多學生對課程的前沿知識不會應用甚至不熟悉,那么相關課程的教師為了保證教學的正常進行會利用部分課時為學生補充復習相關的知識,從而導致教師沒有更多的課時對課程綜合知識的應用做更深入的教學。在后續的軟件開發的課程中往往要求學生熟練掌握對前沿綜合知識的應用,那相應的任課教師也可能會利用一部分課時補充相關的內容,進而后續一些綜合應用性較強的軟件開發類的課程時不能展開深入的教學,這就形成了一種非良性的效應。同時,由于傳統的教學中重視知識點的講解,而忽視了培養學生對軟件開發的整體認識,因而在軟件開發類課程的教學課程設計環節中,大部分學生在面對項目時都不知道該如何開始、具體怎么做。[4]
例如,南寧師范大學師園學院計算機專業開設的軟件開發前沿課程主要有計算機導論、高級語言程序設計、面向對象程序設計、網頁設計、數據庫原理、數據結構、操作系統、計算機網絡等,而后續開設的軟件開發課程主要有動態網頁設計、JAVA程序設計、Web數據庫程序設計、APP軟件開發、軟件工程等。一方面,由于這些課程在不同的學期由不同的教師授課,這就可能會導致在課程教學過程中出現內容重復、軟件開發必須掌握的內容沒有涉及或簡要介紹,因而學生會將這一系列課程簡單地作為單獨的幾門課程對待,不僅無法掌握好各門基礎課程,更沒有形成一個完整的知識體系,直接影響到后續的軟件開發課程的教學。另一方面,課程設計作為綜合性實踐教學環節,涉及了課程主要內容的綜合性、應用性的實踐教學,通過課程設計不僅可以檢驗學生對知識的掌握程度,更是培養學生對知識的綜合應用、提高學生軟件開發技能最有效的方式。然而,許多前期基礎課程往往對課程設計重視不夠,只有在軟件開發類課程中的綜合課程設計時才發現前期課程中知識掌握的不足。
編程基礎是培養軟件開發能力的重要因素,編程能力需要在前期的程序設計課程中通過連續系統化的教學來培養。針對目前存在的問題,在教學過程中主要采取以下的措施:
1.加強實驗課程的指導
在指導過程中了解學生對知識點的應用情況,及時糾正每個同學編程的程序中存在的各種思維錯誤。例如,在C語言程序設計中,許多學生會編寫一些無效的、但卻沒有語法錯誤的語句,如一部分同學經常定義一些沒有使用的變量,那么這時候就需要老師明確地告訴學生為什么編寫的語句無用,編寫每一行的語句的作用是什么,提高學生編程的可讀性。
2.定期開展調試改錯指導
學生調試和修改錯誤的能力需要一個長期積累的過程,而這一個過程中許多獨立院校的學生不能獨立的完成,那么這時候則需要老師的干預和指導。例如,老師在實驗指導課程中,通過發現、分類、總結學生編程中經常出現的錯誤,定期開展錯誤和調試的課堂教學,利用學生已經出現問題作為案例來講解指導學生如何閱讀錯誤提示信息、如何根據提示信息進行相應的修改;同時通過相關的典型案例指導學生如何利用調試工具、添加和注釋語句來提高學生修改錯誤的能力。
3.幫助學生建立編程思想
計算機編程的核心在于編程思想,在程序設計類的課程中幫助學生建立一定的編程思想,觸類旁通而不是局限于特定的編程技術。例如,在面向對象程序語言課程設計部分的指導過程中引入算法的思想,在解決實際問題中分析程序,引導學生編寫高質量的程序,為今后學習不斷更新的軟件開發技術做好充分的準備。
為了改善學生由于前沿知識掌握不到位、知識運用能力不強等問題,保障軟件開發基礎知識的教學更加全面、完善、實用;我們將相關課程進行整合,突出軟件開發的教學內容,修訂相應的教學大綱和教學計劃,在前期的基礎課程中加入相應的課程設計,并將后續軟件開發中所要用到的知識點作為其中的考核點,使前沿課程的教學更好地銜接后續的軟件開發課程,同時加強對課程設計的指導,為軟件開發課程打好堅實的基礎、提高學生對知識的應用能力。
以動態網頁設計這門課程為例,針對具體的科目可以調整相應的教學計劃和教學大綱,在軟件開發類的前沿課程中設置相應的一些實用綜合性的課程設計,同時需要相應的任課老師相互交流設置相應的教學內容,具體的措施有:第一,將動態網頁設計課程設計中的頁面設計部分、數據庫設計和操作部分作為網頁設計及數據庫原理課程教學中的綜合案例或課程設計的內容;第二,后續相關課程的任課老師可以將學生在編程部分、數據庫操作部分常見的錯誤反饋給前沿課程的教師,可以將這些知識作為教學內容重點講解,這樣既可以提高學生的學習興趣也更有利于后續教學的開展;第三,在做好一定前期準備后,在后續的動態網頁設計課程中,針對這部分知識點任課老師只需要幫助學生進行簡單的回顧復習或花較少的課時講解相關的內容。
1.翻轉課堂與微課
翻轉課堂是指重新調整課堂內外的時間,將學習的決定權從教師轉移給學生。在這種教學模式下,課程知識信息需要學生在課前完成自主學習,教師不再占用課堂的時間講授,而課堂變成了老師學員之間和學員與學員之間互動的場所,包括答疑解惑、知識的運用等,從而達到更好的教育效果[5]。翻轉課堂需要網絡環境和數字化學習資源和平臺的支撐,互聯網尤其是移動互聯網的普及催生了“翻轉課堂式”教學模式。目前許多高校建設有自己的教學網站,也有開放的網絡平臺,如中國大學MOOC、云班課等;而大部分高校學生可以課前通過手機、計算機在相應的網絡教學平臺上學習微課。[6]“微課”是指按照新課程標準及教學實踐要求,以視頻為主要載體,記錄教師在課堂內外教育教學過程中圍繞某個知識點(重點難點疑點)或教學環節而開展的精彩教與學活動全過程[7]。
2.微課在教學應用中存在的問題及解決措施
在各種教學方式和教學方法中摸索一種解決學生聽課效率低、互動性差的教學模式,一直以來都是獨立學院教師在教學過程中面臨的問題。微課作為課程的片段化的視頻,學生可以不限時間和地點地根據自身的實際情況網上學習,同時學生可以針對某個知識點反復觀看,這能夠有效地解決學生聽課效率不高的問題。然而,采用微課的翻轉課堂需要學生具備較好的自覺性才能保障教學的順利進行,但是實際情況是獨立學院大部分的學生自覺性、主動性較差,能夠按照教學進度學習微課的學生不多,這種情況在疫情防控期間開展的線上教學尤為明顯。目前許多高校采用的直播或微課等形式開展線上教學,由于幾乎沒有什么線下的教學活動,此時線上學習的問題也比平常更加突出。許多學生無法在規定的時間里完成學習任務,甚至部分同學只是應付式刷完微課視頻,這就導致最終的教學效果兩極分化特別嚴重:一部分同學不僅能夠如期地完成任務,且學習效果非常好;而有一小部分同學依然習慣于傳統的課堂教學,需要老師督促,這部分同學學習效果非常不理想[8]。為了更好地發揮微課優勢,同時解決微課在教學中存在的問題,我們采用基于微課的翻轉課堂與傳統課堂相結合的方式引入軟件開發類課程的教學中。
3.教學實踐
以ASP.NET這門課程中的ADO.NET訪問數據庫為例,這部分知識點是該課程中的重點和難點,其中GirdView、DataList數據綁定控件這個章節的內容包括了控件設計和編程實現具體功能兩部分,在傳統的課堂教學中無論是設計還是編程部分都需要學生高度集中注意力,學習難度較大。因而,這部分的知識點非常適合采用微課教學。

知識點微課視頻控件設計 編程GirdView列設置、分頁設置 綁定數據、實現分頁設置編輯、更新、取消按鈕,模板列設置 實現編輯、更新、取消編輯模板列設置 綁定數據、更新保存高亮顯示數據排序設置、實現數據排序設置及實現全選、全不選功能模板設置 綁定顯示數據SelectedItemTemplate模板設計 實現查看詳細信息EditTemplate模板設計 實現編輯操作ItemTemplate模板設計 分頁綁定ItemTemplate模板設計刪除功能 實現單條、批量數據刪除DataList
(1)微課設計。由于一些案例的教學時間較長,同時也為了方便學生后期操作練習,因而將這部分案例微課分為控件設計和編程兩部分。這兩個數據綁定控件中的第一個案例包含了控件最基本的設置操作和訪問數據庫的基本流程,是所有案例的基礎。為了減少知識點的重復教學,后續的案例盡量在前一案例的基礎上操作和講解。
(2)微課與傳統課堂的結合。在微課制作好以后,我們借助云班課平臺進行發布任務開展翻轉課堂,但考慮學生的特點,在具體的實施過程中額外采取其他措施:
①教師要在平臺上了解學生學習進度,針對一些進度緩慢的同學進行適當的提示。由于大部分的學生自覺性較差,不能完全放任學生自主學習,教師要全程主動地了解學生學習情況,早發現早干預,從而能夠盡量保障大部分同學在規定時間內完成學習任務,避免對影響后續章節的學習。例如,在這些微課視頻中第一個案例最為重要,因此在課堂上和平臺上都會強調相關視頻的重要性,并要求學生務必在上課前完成。為了避免部分學生應付式刷完微課視頻,在課堂教學前由各班學習委員匿名收集學習情況,包括是否已經學過、對視頻中哪部分有疑問等等問題,這樣能夠有效地收集到比平臺更真實的數據。
②突出重點內容,與傳統的課堂教學相結合。例如,在收集的數據中對于特別重要的知識點,若有超過40%的學生反饋還未學或依然沒有掌握的情況,則將這部分內容進行課堂教學。采取這種方式的主要原因在于,部分學生不適應翻轉教堂的微課教學,比較依賴傳統教學;此外也是為了保證還未學的同學能夠通過課堂教學掌握基本的內容,課后再通過微課補充學習,從而盡量保障大部分學生能夠緊跟教學的進度。
③在課程教學正式開始前,通過調查問卷的方式了解學生對前沿課程知識的掌握程度,針對相關的知識制作相應的微課,這樣可以彌補部分同學對基礎較差的不足;針對另一部分學習能力較好的同學,可以額外利用微課擴展難度較大的課外新知識;同時也可以采用微課將最新的技術帶入相應課程的教學中,避免占用過多基礎知識的教學。
(3)教學實施結果。采用微課的翻轉課堂在教學實施階段,我們主要應用于在計算機科學與技術專業2017級、2018級兩屆的學生,我們采用調查問卷的方式收集學生對于微課教學的評價。首先是2017級畢業班的學生:58.54%的同學認為比傳統教學方式要好;85.37%的同學認可對課程設計是有幫助的;78.05%的同學認為對畢業設計有一定的積極影響;87.8%的同學認為對在職業崗位上學習新的知識有幫助。其次是2018級的學生:97.5%的同學認為微課對學習有一定的幫助,其中30%認為對其學習效果很好;小部分同學反映不適應線上學習、注意力不集中、自主學習能力不夠等問題,更希望老師采用常規的課堂教學、微課作為后續的課后輔助學習。
從問卷調查結果我們可以看出:利用微課實現翻轉課堂,不僅可以提高軟件開發類課程教學的效果,對學生走上工作崗位學習新知識起到一定的積極作用;同時,由于部分課程采用了微課,學生需要一個適應過程,需要適當地將傳統的課堂教學相融合。
軟件開發是獨立學院計算機科學與技術專業一個重要的培養目標,而軟件開發類課程包含了一系列相關課程,這些課程的教學需要任課老師針對其課程定位和學生的特性尋找合適的教學方法,同時能夠將基于微課的翻轉課堂與傳統課堂相結合的教學模式合理地應用于軟件開發類課程的教學中,培養學生學習的興趣、自主的學習能力、為今后在工作崗位適應不斷推陳出新的知識和技術。