張樹兵,衡紅軍,張 良,姜 洋
(中國民航大學計算機學院,天津300300)
《VB程序設(shè)計》課程是中國民航大學交通運輸專業(yè)的計算機技術(shù)基礎(chǔ)課,課程教學目標是掌握高級程序設(shè)計語言的知識、程序設(shè)計的技術(shù)和基本算法,深入理解并掌握程序設(shè)計的思維和方法,培養(yǎng)學生發(fā)現(xiàn)問題、分析問題、解決問題、探索和創(chuàng)新的能力以及計算思維和復合思維的能力。然而,在現(xiàn)實中,實現(xiàn)上述目標并不容易,究其原因,有很多因素影響教學質(zhì)量,尤其是師資水平、課程建設(shè)水平、灌輸為主教學模式和學生學習積極性不高等。
MOOC[1-2]是近幾年出現(xiàn)的新的教學模式,是大規(guī)模在線開放教學課堂,是現(xiàn)代教學技術(shù)與網(wǎng)絡(luò)技術(shù)結(jié)合的產(chǎn)物,徹底改變了課堂教學理念和方式。中國大學慕課、清華大學、北京大學等國內(nèi)知名大學,為全球?qū)W者提供優(yōu)秀質(zhì)量的MOOC平臺教學課程。針對程序設(shè)計類課程[3-4],如何充分利用國內(nèi)優(yōu)質(zhì)課程資源,如何使MOOC平臺微型化的學習單元設(shè)計和線下的編程能力訓練模式有機結(jié)合[5-6],是提高教學效果的一個重要突破方向和路徑,已經(jīng)有了一些探索和實踐。為了有效利用一流大學的MOOC優(yōu)質(zhì)課程資源,為了讓學生深刻理解領(lǐng)會編程思想,養(yǎng)成良好編程思維習慣,VB課程組、逐步探索和實踐了一套全新的基于MOOCS的問題導向式程序設(shè)計能力培養(yǎng)教學新模式,學生學習興趣高漲,取得了良好的教學效果。
新模式教學總體設(shè)計思路是:利用MOOC的知識學習+編程實踐能力的訓練,注重編程思想熏陶,編程方法傳授。利用MOOC進行知識學習的優(yōu)勢為:學生直接獲得了高水平教師的傳授,能夠加強對所學基礎(chǔ)內(nèi)容和重點內(nèi)容的精確理解,建立整本書的基本概念體系和基本語法規(guī)則,為后續(xù)的編程能力訓練打下一個堅實的基礎(chǔ)。編程能力訓練以問題導向式方法進行,結(jié)合各章節(jié)的基本概念和基本語法規(guī)則,從生產(chǎn)、生活中選擇有實際問題背景的教學案例,在問題情境中,教師引導學生實踐編寫程序的整個流程,領(lǐng)會其中編程思想,學習編程技巧,熟悉相關(guān)知識點,逐步提高編程能力。
為了獲得高質(zhì)量的MOOC資源,課程組積極組織了多次研討和精心篩選,最終我們采用了同濟大學龔沛曾老師主講的《VB程序設(shè)計》。為了利用好MOOCS資源,讓學生學習有效果,養(yǎng)成自學習慣,我們的教學設(shè)計包括以下四個環(huán)節(jié):MOOCS資源的精編,學生自學MOOC的組織,作業(yè)設(shè)計,作業(yè)講解,下面依次介紹:
教師應在授課前熟悉和學習同濟大學VB的MOOC教學視頻,針對每個視頻了解知識點、案例、講解思路、教學疑難點等內(nèi)容,再結(jié)合學校VB課程的教學大綱和計劃,對視頻使用做出詳細安排,在授課前按課程進度列出安排表,并發(fā)布給學生。
要求學生在指定時間內(nèi)完成MOOC自學,自學完后,要記錄視頻中不懂的地方,可以通過答疑群從老師處得到解答,或者上課期間向老師當面請教。在具體實踐中,存在很多問題,主要是學生自覺性不夠,學生腦袋里“跟著老師學”的思想根深蒂固,還沒有形成自己主動學習的習慣,這就需要老師線下強有力的教學監(jiān)督和管理機制,督促學生端正學習態(tài)度,改變不良學習習慣??刹扇W習筆記評比,表彰措施優(yōu)秀筆記等辦法,督促學生自覺主動學習。
為了檢查學生自學MOOCS效果,老師可根據(jù)視頻涉及的知識點,設(shè)計作業(yè)題,作業(yè)的設(shè)計重點是針對學生常犯的錯誤,設(shè)置一些概念上和語法規(guī)則理解上的辨析題,為后續(xù)學習奠定扎實的基礎(chǔ)。整個學期的作業(yè)在開學前一起發(fā)布給學生,要求學生必須在該章老師授課前完成,并要求學生在課前獨立完成,上交紙質(zhì)作業(yè),按作業(yè)完成情況給出成績,計入結(jié)課成績。
教師建立QQ或微信的課程答疑群,實時在線回答學生的問題,解決學生的疑惑。教師在理論課堂上進行作業(yè)講解,糾正學生的錯誤理解,建立正確的概念和認識。這樣的教學安排完全顛覆了傳統(tǒng)教學模式,學生通過課下自學獲得了基本知識,為教師課上節(jié)省了大量時間,從而使老師可以集中精力培養(yǎng)學生的編程能力,最終提高教學效率和教學質(zhì)量。教師上課第一任務不是傳授基本概念和語法規(guī)則,而是檢查學生自學MOOCS的情況,通過課堂作業(yè)習題的講解,幫助學生進一步掌握基礎(chǔ)知識,教師應利用自己豐富教學經(jīng)驗,判斷章節(jié)知識點的重點、難點,并且有針對性地進行講授,解決學生在自學過程中碰到的難題。
在傳統(tǒng)的教學中,學生碰到一個全新問題時,往往只會照葫蘆畫瓢,機械模仿,對編程思維方式缺乏深刻理解,造成這種結(jié)果一個主要因素是教學中過度注重了代碼解讀,而對隱藏在代碼之后深層次的思維活動,沒有給予有效分析和演示。而過于抽象的缺乏實際問題背景的教學案例也會加重這種情況的發(fā)生。因此,應將教學重心由傳統(tǒng)的知識傳授轉(zhuǎn)向編程思想和思路的啟發(fā),課上教學為問題導向式的編程能力訓練。
教師廣泛閱讀國內(nèi)外同類教材的例題和習題,結(jié)合教師自己的編程經(jīng)驗,篩選出近50道具有實際問題背景的教學案例,題目來源有3個方面:經(jīng)典案例(IF版、循環(huán)版、數(shù)組版的猜數(shù)游戲等),教材案例,實際問題解決(Word字數(shù)統(tǒng)計功能、Word查找替換、全班學生隨機點名、交通紅綠燈控制、飛機飛行動畫演示等)。
綜上所述,在具體授課中,老師往往陷入語法細節(jié)講授的沼澤里,而最重要的編程思想和思維訓練過程卻被忽略。為了解決這個問題,通過反復實踐和不斷改進,摸索出了一套行之有效的注重編程思想的案例講授方案:①實際問題分析或案例結(jié)果分析,針對實際問題,注重引導學生,從實際問題中,提取出要處理的原始數(shù)據(jù),分析出數(shù)據(jù)處理的相關(guān)步驟(算法);針對具體小問題,按已知什么數(shù)據(jù)求什么數(shù)據(jù)模式,分析數(shù)據(jù),分析數(shù)據(jù)處理算法;②以數(shù)據(jù)為中心,以數(shù)據(jù)存儲方式(變量、數(shù)組、文件)、數(shù)據(jù)輸入方式(相關(guān)控件)、數(shù)據(jù)處理方式(公式或算法)和數(shù)據(jù)輸出控制四個環(huán)節(jié)進行程序設(shè)計,總結(jié)共性部分,分析程序的個性部分。
在具體講授中,每個程序按照問題分析—數(shù)據(jù)分析—程序框架偽代碼—現(xiàn)場編程—調(diào)試和運行—程序功能拓展和完善六個步驟詳細講解。要求學生在老師講解下,用漢語或英語寫出程序框架偽代碼,然后才是分析或套用VB相關(guān)知識點,將偽碼翻譯成VB合格的代碼。再具體問題環(huán)境中,演示如何利用VB提供的語法結(jié)構(gòu)或小工具解決實際問題,長而久之,形成自己的編程思維方式,并付之實踐。
通過老師現(xiàn)場編程,而不是傳統(tǒng)的貼出代碼將代碼方式,一步一步地分解地實現(xiàn)程序要實現(xiàn)的功能,這樣能使學生更能深刻理解代碼為什么要這樣寫的背后深層此原因。這樣做還可以使教師靈活地修改代碼,實時演示編寫該案例時學生容易犯的各種錯誤,有助于學生少犯錯誤,更深刻理解相關(guān)語法規(guī)則。在具體實踐中,學生往往興趣盎然,經(jīng)常提出老師意想不到的想法或功能拓展。老師應抓住有利時機,利用其深厚的編程經(jīng)驗,快速實現(xiàn)學生的新需求,往往能令學生信服,在師生良性交互中,共同交流編程策略。如:在猜數(shù)游戲中,有學生提出讓機器自動隨機產(chǎn)生答案,看需要幾次能猜中?還有根據(jù)猜數(shù)的次數(shù),給游戲者貼上各種雷人的標簽等;在統(tǒng)計字符不同類型個數(shù)的經(jīng)典案例中,學生提出如果碰到漢字,如何統(tǒng)計?碰到英文單詞,如何區(qū)分和統(tǒng)計個數(shù)等。
為了打破理論和實踐的界限,讓學生邊聽講邊練習,第一時間深刻理解代碼的含義和領(lǐng)會代碼之后的邏輯之美,教師應鼓勵學生帶筆記本電腦來教室上課。在教師現(xiàn)場編寫代碼階段,學生也可同時在座位上輸入教師的代碼或自己的代碼,調(diào)試運行,測試輸出結(jié)果是否正確,這樣既能提高學習氛圍,又能將自己所想立刻實踐,老師可以第一時間解決學生遇到的問題,引導學生認識到自己的不足,提高動手能力訓練。
為了督促學生養(yǎng)成獨立編程的習慣,學以致用,教師可布置一些有實際問題背景的應用題,這些題都是教師的獨創(chuàng),學生無法獲得正確的代碼,只能自己尋找答案,并在老師指導下,加以解決。如“手機短信發(fā)送完整過程”“門禁系統(tǒng)仿真實現(xiàn)”“工商銀行登錄界面設(shè)計”“民航大學績點計算程序”“民航大學獎學金指標評判”等,由于具有較強的實用性,往往能激發(fā)學生興趣,積極開展編程訓練。另外,教師應鼓勵一題多解,拓寬學生的視野,邀請有獨創(chuàng)思路的學生,講解其開發(fā)程序的步驟。
實驗環(huán)節(jié)應依據(jù)教材的實驗指導書,要求學生獨立完成,教師現(xiàn)場指導實驗中遇到的各種各樣的問題,培養(yǎng)學生程序調(diào)試能力,檢驗學生程序設(shè)計開發(fā)的水平。
為了解決尖子生“吃不飽”的問題,為了培養(yǎng)交通運輸行業(yè)的領(lǐng)軍人才,可在期中考試后,選拔一些優(yōu)秀學生,組建一個面向民航空中交通管制領(lǐng)域軟件開發(fā)的編程提高班。該班單獨設(shè)班上課,采用國外主流優(yōu)秀教材為教學內(nèi)容,不僅包括VB知識拓展,而且增加了軟件開發(fā)完整流程的教學內(nèi)容,軟件開發(fā)流程選用《HeadFirst軟件開發(fā)》,VB采用《Visual Basic大學教程》。老師嚴格按照軟件開發(fā)流程各個步驟,以“爭上游撲克游戲”軟件開發(fā)為案例,向?qū)W生們演示軟件開發(fā)完整過程,重點講解需求分析、框架設(shè)計和重要核心算法設(shè)計。要求學生以該游戲為樣板,結(jié)合民航空管領(lǐng)域的實際問題或已有信息處理軟件,從頭到尾,自己獨立開發(fā)一個面向?qū)I(yè)應用的作品。目前,大一學生自愿成立作品開發(fā)小組,在老師的指導下,自學相關(guān)內(nèi)容,開發(fā)了一些民航領(lǐng)域的優(yōu)秀作品:飛機多人選座系統(tǒng)、飛行器機場路徑規(guī)劃仿真系統(tǒng)、地面管制機位自動調(diào)配系統(tǒng)、民航訂票查詢支付系統(tǒng)、雙跑道容量預估算法研究、在家自助值機系統(tǒng)等,極大鍛煉了學生軟件開發(fā)能力,達到一定水準,為大學生創(chuàng)新創(chuàng)業(yè)項目提供了一批優(yōu)秀隊員。
教學實踐表明,基于MOOCS的問題導向式程序設(shè)計能力培養(yǎng)新模式,可以使學生養(yǎng)成自學習慣,鍛煉了不斷獲取新知識的能力,而老師將教學重心從知識傳授轉(zhuǎn)移到能力培養(yǎng),將傳統(tǒng)灌輸教學模式變?yōu)閷W生自主學習新模式,取得了良好的教學效果。