劉悅,吳軍明,劉煒,張博鋒
(上海大學(xué)計算機工程與科學(xué)學(xué)院,上海200444)
程序設(shè)計與軟件開發(fā)類課程是計算機專業(yè)的核心課程。其中,《程序設(shè)計方法學(xué)》課程以程序設(shè)計方法為研究對象,它不僅研究各種具體的方法,而且著重研究各種具體方法的共性,涉及規(guī)范的全局性方法,以及這些方法的顯示背景和理論基礎(chǔ)[1]?!冻绦蛟O(shè)計方法學(xué)》可對程序設(shè)計人員選用具體的程序設(shè)計方法起指導(dǎo)作用,而具體的程序設(shè)計方法對程序設(shè)計工作的質(zhì)量以及所設(shè)計出大程序的質(zhì)量影響巨大。因此,將《程序設(shè)計方法學(xué)》作為高等學(xué)校計算機軟件教學(xué)體系中的一門專業(yè)選修課,對于培養(yǎng)和提高計算機專業(yè)學(xué)生程序設(shè)計的技能和水平是非常重要的。然而,目前的《程序設(shè)計方法學(xué)》教材[2-5],主要介紹《程序設(shè)計方法學(xué)》的原理、概念和定理證明,比較抽象與枯燥,定理和證明難以理解,學(xué)生更難以在具體的程序設(shè)計過程中使用這些方法。傳統(tǒng)的教學(xué)過程過分強調(diào)教師的地位,忽視學(xué)生的主動參與性,造成“滿堂灌”現(xiàn)象,大大抑制了學(xué)生的興趣,影響了教學(xué)效果。同時,傳統(tǒng)的教學(xué)中缺少充足的實踐環(huán)節(jié),學(xué)生無法自覺將知識用于指導(dǎo)程序設(shè)計,甚至使學(xué)生對知識的實用性產(chǎn)生懷疑,而且程序設(shè)計能力的培養(yǎng)不是一蹴而就的,需要在長期的實踐中提升學(xué)生的能力。因此,為了培養(yǎng)學(xué)生的計算機程序設(shè)計專業(yè)素養(yǎng),提高程序設(shè)計與軟件開發(fā)類課程的教學(xué)質(zhì)量,我們以《程序設(shè)計方法學(xué)》課程為例,研究實踐教學(xué)方法和平臺,提出任務(wù)驅(qū)動的多環(huán)節(jié)實踐教學(xué)模式。
任務(wù)驅(qū)動教學(xué)法是一種教學(xué)方式。任務(wù)驅(qū)動的教與學(xué)的方式,能為學(xué)生提供體驗實踐的情境和感悟問題的情境,圍繞任務(wù)展開學(xué)習(xí),以任務(wù)的完成結(jié)果檢驗和總結(jié)學(xué)習(xí)過程等,改變學(xué)生的學(xué)習(xí)狀態(tài),使學(xué)生主動建構(gòu)探究、實踐、思考、運用、解決高智慧的學(xué)習(xí)體系[6]。在教學(xué)實踐中,圖1所示為任務(wù)驅(qū)動的多環(huán)節(jié)實踐教學(xué)模式,根據(jù)學(xué)生在不同時期的知識水平和程序設(shè)計能力,設(shè)計難度和廣度遞增的任務(wù)。
傳統(tǒng)的“填鴨式”教學(xué)方法,過分強調(diào)教師的地位,教師忽視學(xué)生的主動參與性,造成“滿堂灌”現(xiàn)象,大大抑制了學(xué)生的興趣,影響了教學(xué)效果。在教育界有一句話:“我聽,我忘記;我看,有印象;我做,我記住?!币虼耍谡n堂講授每個知識小節(jié)后,通常要給出示例或?qū)嵗ㄟ^教師演示,幫助學(xué)生理解概念,掌握方法。接著設(shè)置一個和教師演示類似的任務(wù),讓學(xué)生自己動手同步完成任務(wù),從而幫助學(xué)生鞏固所學(xué)知識,進一步理解概念和掌握方法。例如在介紹Floyd不變式斷言法證明流程圖程序的部分正確性時,教師講授了方法的起源、證明步驟、適應(yīng)對象后,通過“求兩個正整數(shù)的最大公約數(shù)的流程圖程序”實施了“榜樣”教學(xué)法。學(xué)生聽了且看了,有一定的印象。然后馬上設(shè)計一個類似的問題——證明只用加法實現(xiàn)“計算z=[]”的流程圖程序的部分正確性。學(xué)生在做的過程中,通過小組討論方式協(xié)作完成這個小任務(wù),深入理解Floyd不變式斷言法;同時,教師可以及時了解學(xué)生的掌握情況,在課堂上及時解決學(xué)生的共性問題。
課堂受限于時間,只能設(shè)計一些玩具式的任務(wù),不利于學(xué)生真正掌握知識。同時,由于遺忘曲線,需要課后再鞏固,因此可以以有趣的任務(wù)為基礎(chǔ),設(shè)計類似表1的形式多樣的課外作業(yè)。課外作業(yè)是課堂教學(xué)的有益補充,主要是根據(jù)課堂教學(xué)進度,配套設(shè)置形式多樣的課外作業(yè),讓學(xué)生將課堂所學(xué)學(xué)以致用。其中,課外實踐環(huán)節(jié),我們編寫了《課外實踐指導(dǎo)手冊》,每個課堂教學(xué)主題為一章節(jié),包括學(xué)習(xí)入門、一系列的任務(wù)和練習(xí)以及學(xué)習(xí)小結(jié)。任務(wù)和練習(xí)設(shè)計成既有興趣、又有難度的問題,如貪吃蛇、俄羅斯方塊、八皇后問題、驗證歌德巴赫猜想等問題,要求學(xué)生用程序設(shè)計方法來設(shè)計解決方案,既可以激發(fā)學(xué)生們的學(xué)習(xí)興趣,又可以將課堂知識融會貫通用于解決問題。
表1 課外作業(yè)的設(shè)置
程序設(shè)計能力的培養(yǎng)是一個長期過程,可以將《程序設(shè)計方法學(xué)》的實踐延伸到暑期實踐和畢業(yè)設(shè)計,將其作為《程序設(shè)計方法學(xué)》課程的一個設(shè)計型、綜合性的實踐教學(xué)環(huán)節(jié)。在暑期實踐中,將小組軟件過程TSP(Team Software Process)思想應(yīng)用到程序設(shè)計和軟件開發(fā)類課程的實踐教學(xué)中[7]。該實踐環(huán)節(jié)要求學(xué)生綜合運用所學(xué)知識,從實際生活和工作中發(fā)現(xiàn)問題,提出軟件項目,在可行性分析的基礎(chǔ)上,進行項目立項開發(fā),通過小組分工、進度計劃安排、需求分析、系統(tǒng)設(shè)計、系統(tǒng)實現(xiàn)、測試、運行等環(huán)節(jié),建立一套軟件系統(tǒng)。學(xué)生在實踐經(jīng)驗豐富、動手能力強的教師指導(dǎo)下,以小組協(xié)作的方式進行,以軟件工程文檔、軟件包等形式提交自己的設(shè)計與實現(xiàn)方案,同時也向其他同學(xué)匯報、演示自己的系統(tǒng)。這種相互間的交流和討論,擴大了學(xué)生的視野,鍛煉了學(xué)生的能力,提高了學(xué)生的綜合素質(zhì)。在畢業(yè)設(shè)計環(huán)節(jié),可以將個人軟件過程PSP(Per?sonal Software Process)應(yīng)用到程序設(shè)計和軟件開發(fā)類課程的實踐教學(xué)中。學(xué)生個人以PSP方式研發(fā)一個軟件系統(tǒng),體驗軟件開發(fā)的全過程。通過延伸實踐,不僅可以激發(fā)學(xué)生的學(xué)習(xí)興趣,鍛煉學(xué)生的動手能力,而且可以培養(yǎng)學(xué)生面向?qū)嶋H應(yīng)用提出問題的意識;提高學(xué)生分析問題、解決問題的能力;增強學(xué)生的學(xué)習(xí)興趣和創(chuàng)新意識,培養(yǎng)學(xué)生的創(chuàng)新精神和創(chuàng)新能力;增強學(xué)生研究性學(xué)習(xí)的主動性。
為了配合任務(wù)驅(qū)動的實踐教學(xué)活動,可以利用信息技術(shù)來構(gòu)建課外練習(xí)實踐平臺,以供學(xué)生利用程序設(shè)計方法進行程序設(shè)計實踐;構(gòu)建開放性的互動式網(wǎng)絡(luò)教學(xué)與分析平臺,以支持任務(wù)驅(qū)動的實踐教學(xué)日常管理,展開教學(xué)數(shù)據(jù)分析。
(1)功能齊全的互動式網(wǎng)絡(luò)教學(xué)管理
設(shè)計與實現(xiàn)教學(xué)管理與分析平臺可以有助于任務(wù)驅(qū)動的實踐教學(xué)活動的開展。在我們的教學(xué)活動中,采用B/S架構(gòu),C#、ASP.NET和SQL Server 2015技術(shù),在VS 2015集成開發(fā)環(huán)境下構(gòu)建了開放性的互動式的《程序設(shè)計方法學(xué)》網(wǎng)絡(luò)教學(xué)管理與分析平臺。該平臺為師生提供如圖2所示的包括網(wǎng)站首頁、課程大綱、師資隊伍、課程資源、課程實驗、課程作業(yè)、在線答疑、在線練習(xí)、教研成果和教學(xué)分析等功能模塊,實現(xiàn)了課程資源的網(wǎng)絡(luò)化、日常教學(xué)工作的自動化、師生交流的及時化,還可以對課程教學(xué)情況進行統(tǒng)計與分析,從而為
自建常用程序設(shè)計方法的實踐平臺,可以讓學(xué)生在平臺中能夠?qū)嵺`如何在逐步求精、模塊化、最弱前置謂詞等程序設(shè)計方法指導(dǎo)下進行程序設(shè)計。在我們的教學(xué)中,利用了江西省高性能計算技術(shù)重點實驗室提供的PAR平臺,讓學(xué)生能夠利用PAR平臺中的RADL語言描述程序規(guī)約,設(shè)計算法;利用抽象程序設(shè)計語言Apla來刻畫抽象程序;利用平臺提供的轉(zhuǎn)換器,將Apla抽象程序轉(zhuǎn)換到諸如C++、Java、VB、Delphi等可執(zhí)行語言,體會軟件形式化和自動化生成的全過程。該課程的教學(xué)提供更好的網(wǎng)絡(luò)平臺,為教師改進教學(xué)方法提供決策支持。
(2)基于ECharts的教學(xué)情況分析
教學(xué)管理與分析平臺支持課程教學(xué)的全部環(huán)節(jié),可以積累教學(xué)過程中的全部數(shù)據(jù),包括師生的個人基本信息、師生的互動信息、學(xué)生的作業(yè)情況、考試成績等。對于這些豐富的數(shù)據(jù),平臺可以進行統(tǒng)計分析并采用當(dāng)今最為流行的可視化技術(shù)ECharts,以圖表的形式展現(xiàn)數(shù)據(jù)分析結(jié)果。我們的《程序設(shè)計方法學(xué)》教學(xué)分析界面主要包括教學(xué)情況總結(jié)、師資分析、作業(yè)提交分析、互動分析、成績分析和聯(lián)動分析六部分內(nèi)容。
如圖3所示,教學(xué)情況總結(jié)主要是對歷年的教學(xué)情況表進行查看;師資分析主要用餅狀圖展現(xiàn)教師的年齡分布、學(xué)位分布和職稱分布;作業(yè)提交分析主要分析每一年作業(yè)提交的比例;互動分析即為提問人數(shù)情況分析,主要用柱狀圖展示平均每周提問人數(shù),用折線圖展示學(xué)期增長情況,可以觀察到提問人數(shù)的變化;成績分析模塊主要以折線圖比較每學(xué)期平均績點、測試平均成績和平時成績,從而來觀測學(xué)生成績的變化;聯(lián)動分析主要以散點圖的形式對比了每學(xué)期的總成績、平時成績和學(xué)生人數(shù),從而可發(fā)現(xiàn)平時成績與學(xué)生總成績的關(guān)聯(lián)。教學(xué)分析平臺綜合考慮和采用了多種數(shù)據(jù)圖表類型,對存儲的教學(xué)數(shù)據(jù)實現(xiàn)可視化分析,用戶能夠很清楚直觀地理解課堂教學(xué)情況的統(tǒng)計和分析結(jié)果。
圖2 平臺功能層次圖
圖3 教學(xué)數(shù)據(jù)分析結(jié)果的ECharts可視化展示
程序設(shè)計與軟件開發(fā)類課程是計算機專業(yè)的重要核心課程,具有理論與實踐并重的特點。任務(wù)驅(qū)動的多環(huán)節(jié)實踐教學(xué)模式在《程序設(shè)計方法學(xué)》課程和中英文授課的軟件工程課程中得到應(yīng)用,實踐教學(xué)證明該模式能提高課程的教學(xué)水平和效果,對培養(yǎng)學(xué)生的程序設(shè)計和軟件開發(fā)能力起著良好作用。隨著模式的更加廣泛地應(yīng)用,平臺將積累更多的教學(xué)數(shù)據(jù),我們將引入機器學(xué)習(xí)方法對其進行學(xué)習(xí),對教學(xué)效果和質(zhì)量進行全程掌控和提前預(yù)警,從而提高教學(xué)的智能化水平。