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