摘要:本文針對“軟件技術(shù)基礎(chǔ)”課程的特點和要求,總結(jié)筆者多年來的教學實踐經(jīng)驗,提出了基于案例驅(qū)動的軟件技術(shù)基礎(chǔ)教學方法、基于抽象模型的軟件技術(shù)基礎(chǔ)教學方法以及實際課堂教學與虛擬課堂教學相結(jié)合的軟件技術(shù)基礎(chǔ)教學方法等。實踐結(jié)果表明這些教學方法可操作性強,且行之有效。
關(guān)鍵詞:應(yīng)用案例;案例庫;案例驅(qū)動;抽象模型;虛擬課堂
中圖分類號:G642文獻標識碼:A
“軟件技術(shù)基礎(chǔ)”是同濟大學電子與信息工程學院的公共平臺課程,它面向非計算機專業(yè)本科生,旨在介紹有關(guān)軟件方面的一些基礎(chǔ)知識。本課程的特點:(1)內(nèi)容多,涉及面廣。它主要包括數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)、數(shù)據(jù)庫技術(shù)及軟件工程等內(nèi)容,對于計算機專業(yè)的本科生來說,這里的每一個知識點都單獨開設(shè)一門課程,且四部分內(nèi)容缺乏內(nèi)在聯(lián)系。(2)軟件開發(fā)技術(shù)和開發(fā)平臺更新快。(3)面向的對象來自不同專業(yè),有關(guān)計算機方面的基礎(chǔ)知識差異較大。(4)課時較少,周學時為2。從2004級開始,該課程被列入學院公共平臺課程,因為它面向的是非計算機專業(yè)的本科生,它不屬于主干專業(yè)課程,所以其課時也由原來的周學時3縮減為2。上述因素給該課程的教與學工作帶來很大困難和問題。如,(1)部分同學感到內(nèi)容繁多,難以抓住重點。(2)有些概念或理念建立不起來,如算法概念,算法和程序總是混淆。(3)面臨實際問題感到無從下手,理論和實際脫節(jié)。另一方面,傳統(tǒng)的教學方法所產(chǎn)生的矛盾也更加突出:重算法,輕案例;重理論,輕實驗;考試方法也存在著片面性,有的學生可能考試成績優(yōu)良,但遇到實際問題不知所措,有“紙上談兵”之弊。鑒于此,本文基于筆者長期對教學方法的探索和教學經(jīng)驗的積累,提出了基于案例驅(qū)動的、基于抽象模型的以及與虛擬課堂相結(jié)合等幾種軟件技術(shù)基礎(chǔ)課程教學方法。
1基于案例驅(qū)動的教學方法
案例驅(qū)動的教學方法筆者之前已經(jīng)有所探索[1],但當時僅限于提出了一種教學理念和教學方法實施框架,其可操作性和有效性還存在嚴重不足。其原因是:(1)應(yīng)用案例過于復(fù)雜,且與相關(guān)知識點的對應(yīng)性不強。(2)應(yīng)用案例少,不足以構(gòu)成豐富的、系統(tǒng)的、組織結(jié)構(gòu)合理以及便于檢索的案例庫。在近兩年多的時間里,筆者重點研究了如下問
題:(1)案例的設(shè)計與實現(xiàn)。設(shè)計的應(yīng)用案例力求難易適中、針對性強和對本課程的覆蓋面廣,以便于基于案例驅(qū)動的教學方法可以貫穿本課程教學的全過程。(2)設(shè)計并建立了案例庫。研究了案例庫中案例的組織、存儲和檢索方法,使所提出的教學方法具有可操作性。
1.1案例庫及其三要素
所謂基于案例驅(qū)動的教學方法是指針對該課程教學大綱內(nèi)容,首先設(shè)計并實現(xiàn)若干個典型應(yīng)用案例,每個案例都對應(yīng)一個或多個相關(guān)知識點,并對這些案例進行合理組織和存放,以便于檢索和查找。由這些案例組成該課程的案例庫。在教學活動中,當教授到某個知識點時,通過一定的檢索方法在案例庫中查找相關(guān)案例,如按知識點關(guān)鍵字檢索。然后,教師通過演示案例(包括演示案例實現(xiàn)過程-Flash程序和案例實現(xiàn)結(jié)果-Visual C++程序)使學生對該知識點有了感性認識,同時使相應(yīng)的抽象概念或理念具體化和形象化。更進一步,教師通過分析案例的設(shè)計步驟:需求分析、概念設(shè)計,詳細設(shè)計和代碼實現(xiàn),引導(dǎo)學生掌握面臨實際問題時,如何應(yīng)用學過的理論知識,去分析問題和解決問題的能力。
基于案例驅(qū)動的教學方法成功實施的關(guān)鍵要素是案例庫。一個成功的案例庫必須滿足如下三個要素:(1)案例具有代表性和針對性。只有案例庫中的應(yīng)用案例設(shè)計合理,且具有代表性和針對性,才能對相關(guān)知識點的學習起到輔助功能。(2)案例具有多樣性。只有案例庫中有豐富多樣的案例,才能覆蓋該課程的絕大部分知識點,使關(guān)鍵知識點都有案例可以演示。否則,如果庫中案例太少,那么基于案例驅(qū)動的教學方法的效果將大打折扣,最多只是一種教學理念而已。(3)案例組織結(jié)構(gòu)合理性。隨著案例庫中案例的不斷積s累,對案例的組織和存放形式必須合理規(guī)劃,以便于檢索、查找和鏈接。
1.2案例設(shè)計與實現(xiàn)
依據(jù)相關(guān)知識點的學習,精心設(shè)計一些典型應(yīng)用案例,幫助學生掌握相關(guān)理論知識的學習,提高學生理論聯(lián)系實際、分析問題和解決問題的能力。經(jīng)過前期教學積累和2006年校教改項目的實施,目前為止,我們案例庫中已設(shè)計并實現(xiàn)了十幾個典型應(yīng)用案例。主要包括三類:(1)針對算法概念的案例,目的是幫助學生區(qū)分算法、程序和計算方法,使學生能由之前的程序概念提升到算法設(shè)計理念。(2)針對數(shù)據(jù)結(jié)構(gòu)知識點的案例,目的是讓學生理解數(shù)據(jù)作為軟件處理的主要對象,其數(shù)據(jù)結(jié)構(gòu)的設(shè)計在軟件設(shè)計中的重要性。同時讓學生區(qū)分數(shù)據(jù)的邏輯結(jié)構(gòu)和物理結(jié)構(gòu),以及掌握數(shù)據(jù)物理結(jié)構(gòu)的實現(xiàn)方法等。(3)針對數(shù)據(jù)庫技術(shù)知識點的案例,目的是幫助學生了解數(shù)據(jù)庫相關(guān)技術(shù)、數(shù)據(jù)庫應(yīng)用程序的設(shè)計和實現(xiàn)方法。
1.2.1基于算法知識點的案例設(shè)計與實現(xiàn)
講解數(shù)據(jù)結(jié)構(gòu)的切入點是算法。首先要讓學生掌握算法概念,理解算法和程序以及計算方法的區(qū)別,培養(yǎng)學生面臨實際問題時先設(shè)計算法而不是直接編寫代碼的習慣,這樣在設(shè)計前期無需考慮許多與方法和分析無關(guān)的細節(jié)問題,把主要精力放在算法設(shè)計上,以便于設(shè)計出更優(yōu)的算法。除此之外,該知識點還要讓學生熟悉并應(yīng)用常用的幾種算法設(shè)計方法:列舉法、回溯法、歸納法和遞推法等。目前,我們已經(jīng)開發(fā)了兩個案例分別對應(yīng)列舉法和回溯法:百雞問題和皇后問題。限于篇幅,下面僅對皇后問題的設(shè)計與實現(xiàn)給出簡單說明。
問題描述:由n×n個方格排成具有n行和n列的正方形,稱為“n元棋盤”。如果兩個皇后位于棋盤上的同一行、同一列或同一對角線上,則稱她們?yōu)榛ハ喙簟R笳页鰊個皇后在n元棋盤上互不攻擊的所有布局。
實現(xiàn)方法:n個皇后在n元棋盤上有n2種布局,如果用列舉法,則需在n2種布局中剔除相互攻擊的布局。那么,當問題尺度n較大時,該算法的時間開銷(時間復(fù)雜度)將會急劇增加,這也不符合算法設(shè)計的初衷。所以我們采用了回溯法,也稱試探法。即分析實際問題,找出一種解決問題的路徑。然后,沿著這個路徑逐步試探。對于每一步的試探,如試探成功,則繼續(xù),直到求得問題的解。如試探不成功,則原路逐步返回,換另外路徑試探。如果所有路徑都試探不成功,則問題無解。在布局第i(i=1…n)個皇后時假設(shè)前面i-1個皇后已經(jīng)布好,尋找第i個皇后與前i-1個皇后互不攻擊的布局,若找不到,則沿原路逐步返回,撤消第i-1個皇后的布局,重新尋找新的布點,以此類推。實現(xiàn)結(jié)果如圖1所示。
1.2.2數(shù)據(jù)結(jié)構(gòu)知識點的案例設(shè)計與實現(xiàn)
數(shù)據(jù)結(jié)構(gòu)知識點是軟件技術(shù)基礎(chǔ)的重要組成部分,它占用了相對多的篇幅和課時,是該課程的重點和難點。傳統(tǒng)的教學方法是占用大量課時講解各種偽碼描述的算法,而教學效果不盡人意,學生僅僅限于理解了偽碼描述的算法思想,但遇到實際問題時對數(shù)據(jù)的邏輯結(jié)構(gòu)和物理結(jié)構(gòu)的設(shè)計,尤其是物理結(jié)構(gòu)的實現(xiàn)往往感到無從下手。
數(shù)據(jù)結(jié)構(gòu)是指同一數(shù)據(jù)對象中各數(shù)據(jù)元素之間的關(guān)系。數(shù)據(jù)結(jié)構(gòu)可分為4類:(1)集合-數(shù)據(jù)元素之間除了“同屬于一個集合”外,再無其他關(guān)系;(2)線性結(jié)構(gòu)-元素之間存在一對一(1:1)的關(guān)系;(3)樹型結(jié)構(gòu)-元素之間存在一對多(1:n)的關(guān)系;(4)圖狀結(jié)構(gòu)-元素之間存在多對多(m:n)的關(guān)系。我們設(shè)計并實現(xiàn)了如下三個應(yīng)用案例對應(yīng)上述第2~4種數(shù)據(jù)結(jié)構(gòu),以輔助相關(guān)知識點的教與學。限于篇幅,下文所有案例僅就其設(shè)計目的以及它們與相關(guān)知識點的對應(yīng)關(guān)系進行論述,同時部分案例給出實現(xiàn)結(jié)果。至于設(shè)計與實現(xiàn)的過程和方法不是此文的關(guān)鍵,故不贅述。
(1) 學生信息管理系統(tǒng):該案例實現(xiàn)學生信息查找、修改、插入、刪除和顯示等功能。它對應(yīng)線性鏈表知識點。通過設(shè)計、實現(xiàn)和運行該案例,使學生加深理解并掌握線性表、線性表的鏈式存儲結(jié)構(gòu)以及線性鏈表的各種基本運算(查找、修改、插入、刪除、排序及顯示等功能)[2]。
(2) 哈夫曼編碼與譯碼:該案例實現(xiàn)哈夫曼樹構(gòu)造(哈夫曼編碼)與哈夫曼譯碼功能。它對應(yīng)樹結(jié)構(gòu)。通過該案例的設(shè)計和實現(xiàn)步驟,學生對樹及其同構(gòu)型多重鏈表存儲結(jié)構(gòu)的理解更加具體化,并通過演示Flash程序,幫助學生掌握哈夫曼樹生成和哈夫曼譯碼的算法實現(xiàn)思想。目前該案例經(jīng)過功能完善和技術(shù)優(yōu)化,很好地解決了葉結(jié)點輸入方式(實現(xiàn)了鍵盤輸入、文件導(dǎo)入和文章字符統(tǒng)計三種輸入方式。)、哈夫曼樹的顯示模式以及大問題規(guī)模尺度(問題尺度可達100)等難點問題[3]。實現(xiàn)結(jié)果如圖2所示。
(3) 旅行商(TSP: Traveling Salesman Problem)問題:該案例也稱為交通咨詢系統(tǒng),它可以解答旅客提出的各種問題,如:從A城市到B城市,選擇一條途中中轉(zhuǎn)次數(shù)最少的路徑(假設(shè)城市交通網(wǎng)絡(luò)圖中的每一站都需要換乘);從A城市到B城市,選擇一條交通費用最少的路徑;從A城市到B城市,選擇一條旅行時間最短的路徑等。該案例旨在幫助學生理解并掌握圖形結(jié)構(gòu)(有向網(wǎng))、圖的物理存儲結(jié)構(gòu)(鄰接表和鄰接矩陣)、圖的遍歷以及圖的應(yīng)用(單源最短路徑)等相關(guān)知識點。
1.2.3數(shù)據(jù)庫技術(shù)知識點的案例設(shè)計與實現(xiàn)
數(shù)據(jù)庫技術(shù)是研究數(shù)據(jù)的分類、組織、儲存、檢索及維護等功能的一門計算技術(shù),是發(fā)展最快的領(lǐng)域之一,也是應(yīng)用最廣的技術(shù)之一。圖書管理系統(tǒng)[4]、企業(yè)設(shè)備管理系統(tǒng)[5]和客戶關(guān)系管理系統(tǒng)[6]都屬于數(shù)據(jù)庫應(yīng)用系統(tǒng),它們都包含一個小型數(shù)據(jù)庫系統(tǒng),是一種以處理為中心的應(yīng)用系統(tǒng)。這些案例的目標是通過完成從用戶需求分析、數(shù)據(jù)庫設(shè)計到上機編程及應(yīng)用等全過程,進一步理解和掌握數(shù)據(jù)庫技術(shù)、面向?qū)ο蠓椒?OO)以及軟件工程方法等相關(guān)理論知識的學習。下面對企業(yè)設(shè)備管理系統(tǒng)作一簡單介紹,其他案例見相應(yīng)參考文獻。
對于一個企業(yè)來說,要想在激烈的市場競爭中成為最后的贏家,就必須不斷地改善管理和經(jīng)營水平。企業(yè)的財產(chǎn)和物品只有最大地發(fā)揮它們的用處才能有效地減少折舊成本,提高經(jīng)濟效益。尤其是設(shè)備比較多的生產(chǎn)性企業(yè),如果采購回來的設(shè)備堆放在庫房里不聞不問,借出和歸還也沒有詳細記錄,這樣的無序使用和低水平管理將極大地影響企業(yè)的正常運營。因此,對企業(yè)設(shè)備進行庫存管理是十分必要的。本文的設(shè)備管理系統(tǒng)就是為滿足該需求而設(shè)計的,它面向的對象是汽車租賃公司,它能夠保證設(shè)備(汽車)借出和歸還有序,進而指導(dǎo)企業(yè)合理地配置設(shè)備,提高設(shè)備利用率。該案例的主要執(zhí)行界面如圖3所示。
2基于抽象模型的教學方法
操作系統(tǒng)部分是軟件技術(shù)基礎(chǔ)課程的重點,也是難點。對于非計算機專業(yè)本科生而言,學習操作系統(tǒng)的目的,并不是為了開發(fā)、編制操作系統(tǒng),主要是了解操作系統(tǒng)的功能、組成部分、工作原理及體系結(jié)構(gòu),以便能更合理、有效地使用操作系統(tǒng)。顯然,前面所述的案例驅(qū)動的教學方法并不適用非計算機專業(yè)本科生學習操作系統(tǒng)。筆者認為基于抽象模型的教學方法是一種通用性好,且行之有效的教學方法。
操作系統(tǒng)結(jié)構(gòu)龐大、模塊眾多,且模塊之間的聯(lián)系也很復(fù)雜。同時,隨著計算機技術(shù)的發(fā)展和用戶對計算機使用的要求不斷提高,多道程序設(shè)計技術(shù)成為操作系統(tǒng)的核心技術(shù)之一,目的是提高計算機系統(tǒng)的資源利用率,因而出現(xiàn)了與多道程序有關(guān)的概念,如并發(fā)性、共享性、虛擬性和不確定性等,由此產(chǎn)生的多道程序并發(fā)運行時的同步、互斥和死鎖等問題,是操作系統(tǒng)部分的重點和難點[7]。
操作系統(tǒng)文化中有許多被廣為討論和分析的有趣問題,最經(jīng)典的四個同步、互斥問題為:生產(chǎn)者-消費者問題、哲學家進餐問題、理發(fā)師在空閑中的睡眠問題及讀者—作者問題,深入地分析和理解這些問題,對于全面掌握同步、互斥問題大有益處。限于篇幅,下面僅闡述基于生產(chǎn)者-消費者抽象模型解決同步與互斥問題的方法。
解決進程間的同步和互斥有多種方法,可以用硬件方法,也可以用軟件方法。最普遍的方法是用P-V操作實現(xiàn)。P-V操作實現(xiàn)進程的同步與互斥通常是教學中的重點,也是難點。重點是因為它是多道程序并發(fā)運行的一個重要的、不可避免的問題;難點具體表現(xiàn)在:學生不能掌握P-V操作中信號量的物理內(nèi)涵,因此,當面對具體問題時,對如下問題往往感到不知所措:信號量所代表的具體物理含義是什么;如何確定信號量,即設(shè)置幾個信號量;各信號量的初值又是多少等。
生產(chǎn)者—消費者問題可作為并發(fā)進程的同步和互斥問題的一個抽象模型。因為,計算機系統(tǒng)中,每個進程都申請使用和釋放各種不同類型的資源,其中把使用某一類資源的進程稱為該類資源的消費者,而把釋放該類資源的進程稱為生產(chǎn)者。
模型描述:
設(shè)有n個生產(chǎn)者進程P1,P2,…Pn,m個消費者進程C1,C2, …Cm,它們通過一個容量為L的有界緩沖池聯(lián)系。只要緩沖池未滿,生產(chǎn)者就可把產(chǎn)品放入緩沖池;同樣,只要緩沖池不空,消費者就可從緩沖池取走產(chǎn)品消費;另不允許生產(chǎn)者和消費者同時訪問緩沖池,即緩存池對應(yīng)一種計算機系統(tǒng)的臨界資源。其模型如圖4所示。
解題思路:
生產(chǎn)者-消費者問題既是一個同步問題,又是一個互斥問題。原因如下:
消費者想要取產(chǎn)品消費時,有界緩沖池中至少有一個單元有產(chǎn)品;
生產(chǎn)者想要放入產(chǎn)品時,有界緩沖池中至少有一個單元是空的;
有界緩沖池是臨界資源,生產(chǎn)者和消費者必須互斥地執(zhí)行。
對應(yīng)上述分析,設(shè)置兩個同步信號量:empty、full,一個互斥信號量mutex,分別表示有界緩沖池是否空、是否滿以及互斥使用有界緩沖池,則由問題的初始狀態(tài)可知三個信號量的初值為:empty=L、full=0、 mutex=1。
當面臨實際問題時,基于上述抽象模型,只要對應(yīng)回答如下問題:哪些(個)進程是生產(chǎn)者,哪些(個)進程是消費者,哪種資源需放入緩存池互斥使用?即可解決信號量的設(shè)置及初始值的確定等問題。使學生有章可尋,有方法可依,同時使抽象的P-V操作具體化,取得很好的教學效果。
3與虛擬課堂相結(jié)合的教學方法[8]
為了彌補課堂教學的不足(課時少、互動交流少等),我們還建立了軟件技術(shù)基礎(chǔ)課程教學網(wǎng)站,并鏈接在電信學院網(wǎng)站上,使學生、教師等有關(guān)人員可以遠程訪問該網(wǎng)站。
該網(wǎng)站主要包括:(1)信息公告模塊,主要用來發(fā)布提交作業(yè)、考試以及實驗等通知。(2)教學資源模塊,教學資源包括教學進度表、教學大綱、課件、相關(guān)教學論文、典型應(yīng)用案例、優(yōu)秀作業(yè)以及優(yōu)秀實驗報告等,學生可按需瀏覽和下載。(3)你問我答模塊,為教師和學生、以及學生之間提供了一個交互平臺,可以實現(xiàn)質(zhì)疑、答疑及交流學習方法等。主要網(wǎng)頁如圖5所示。有關(guān)課程網(wǎng)站的設(shè)計與實現(xiàn)詳見文獻[8]。
4結(jié)論
本文總結(jié)了筆者多年的教學經(jīng)驗和研究成果,提出了基于案例驅(qū)動的、基于抽象模型的及與虛擬課堂相結(jié)合的三種軟件技術(shù)基礎(chǔ)教學方法。配合2007年教育部對同濟大學本科教學水平的評估工作,我們分析了“軟件技術(shù)基礎(chǔ)”2005~2006學年(2)學期和2007~2008學年(1)學期的期終試卷(非計算機專業(yè)本科),如表1所示。其中的一個指標—試卷平均得分能充分說明教學方法改進后所取得的教學效果。今后的工作是繼續(xù)探討和實踐其他教學方法,如基于算法執(zhí)行的方法等,待完善后再續(xù)。
參考文獻
[1] 郭秀清. 基于案例組織的軟件技術(shù)基礎(chǔ)教學方法研究[J]. 電氣電子教學學報,2006,28(5):23-26.
[2] 楊玉峰,郭秀清. 學生信息管理系統(tǒng)設(shè)計與實現(xiàn)[D]. 上海:同濟大學本科畢業(yè)設(shè)計論文,2006.
[3] 任峰,郭秀清. 哈夫曼編碼與譯碼實現(xiàn)[D]. 上海:同濟大學本科畢業(yè)設(shè)計論文,2008.
[4] 魏偉,郭秀清. 圖書管理系統(tǒng)設(shè)計與實現(xiàn)[D]. 上海:同濟大學本科畢業(yè)設(shè)計論文,2006.
[5] 錢立虎,郭秀清. 企業(yè)設(shè)備管理系統(tǒng)設(shè)計與實現(xiàn)[D]. 上海:同濟大學本科畢業(yè)設(shè)計論文,2007.
[6] 莫會宇,郭秀清. 客戶關(guān)系管理系統(tǒng)設(shè)計與實現(xiàn)[D]. 上海:同濟大學本科畢業(yè)設(shè)計論文,2007.
[7] 沈被娜等. 計算機軟件技術(shù)基礎(chǔ)[M]. 北京:清華大學出版社,2000.
[8] 饒弛,郭秀清. 軟件技術(shù)基礎(chǔ)教學網(wǎng)站設(shè)計與實現(xiàn)[D]. 上海:同濟大學本科畢業(yè)設(shè)計論文,2008.
Research on Teaching Methods for Software Technology Foundation
GUO Xiu-qing
(College of Electronics Information Engineering, Tongji University, Shanghai 201804)
Abstract: In according with software technology foundation’s special characteristics and requirement, this paper summers writers’ direct teaching experience for many years, and provides three teaching methods for software technology foundation, they are based on cases-driven, based on abstract model and combining real class teaching with virtual class teaching. The result of teaching practice proves these methods are operative and effective.
Keywords: used cases, cases warehouse, cases-driven, abstract model, virtual class
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文