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