郭健杰
淺談?dòng)?jì)算機(jī)專(zhuān)業(yè)課案例設(shè)計(jì)技巧
郭健杰
福建師范大學(xué)信息技術(shù)學(xué)院
案例設(shè)計(jì)直接關(guān)系到計(jì)算機(jī)專(zhuān)業(yè)課的教學(xué)質(zhì)量,在設(shè)計(jì)案例時(shí)要從學(xué)生的整體水平、課程的教學(xué)目的、課程之間的關(guān)聯(lián)以及課程本身的重要性等多方面綜合考慮,并在教學(xué)過(guò)程中不斷調(diào)整完善。
案例設(shè)計(jì) 教授對(duì)象 教學(xué)目的
案例是一門(mén)課程教學(xué)的核心內(nèi)容,案例設(shè)計(jì)的好壞直接關(guān)系到計(jì)算機(jī)專(zhuān)業(yè)課的教學(xué)效果。一個(gè)好的案例能夠啟發(fā)和加深學(xué)生對(duì)知識(shí)點(diǎn)的理解;反之,一個(gè)不合適的案例不但不能促進(jìn)學(xué)生對(duì)知識(shí)的理解,甚至還可能造成誤解。要設(shè)計(jì)出適合教學(xué)的案例,應(yīng)把握以下幾方面的技巧:
案例設(shè)計(jì)需要綜合考慮學(xué)生當(dāng)前的整體水平,并根據(jù)學(xué)生的總體水平來(lái)控制案例的難度,案例的難度要比學(xué)生當(dāng)前的整體水平略高。理由是顯而易見(jiàn)的,難度如果太低,學(xué)生已經(jīng)掌握,吸引不了學(xué)生的興趣,而且對(duì)學(xué)生也無(wú)促進(jìn)作用;難度如果太高,超出學(xué)生學(xué)習(xí)的能力范圍,會(huì)打擊學(xué)生的學(xué)習(xí)信心;難度比學(xué)生當(dāng)前的整體水平略高,則學(xué)生可以通過(guò)自己的努力來(lái)提高知識(shí)技能,達(dá)到課程的要求,同時(shí)也有利于增強(qiáng)學(xué)生學(xué)習(xí)的信心。
比如在《程序設(shè)計(jì)基礎(chǔ)》課程中設(shè)計(jì)了一個(gè)案例,是開(kāi)發(fā)一個(gè)《小區(qū)物業(yè)信息管理系統(tǒng)》,就這個(gè)案例本身來(lái)說(shuō)是個(gè)不錯(cuò)的案例,但是《程序設(shè)計(jì)基礎(chǔ)》這門(mén)課程是大學(xué)一年級(jí)新生第一學(xué)期學(xué)習(xí)的課程,對(duì)新生來(lái)說(shuō)連什么是程序都搞不清楚,一下子就進(jìn)入系統(tǒng)開(kāi)發(fā),對(duì)他們來(lái)說(shuō)難度太大,不易理解,會(huì)讓學(xué)生望而卻步,甚至還會(huì)降低他們學(xué)習(xí)的興趣。所以像《程序設(shè)計(jì)基礎(chǔ)》這種基礎(chǔ)課程,案例設(shè)計(jì)不應(yīng)該過(guò)于龐大,過(guò)于復(fù)雜?!冻绦蛟O(shè)計(jì)基礎(chǔ)》這門(mén)課最初的教學(xué)目的就是讓學(xué)生懂得什么是程序,能夠編寫(xiě)最基本的語(yǔ)句就夠了。至于讓學(xué)生明白什么是系統(tǒng),如何開(kāi)發(fā)系統(tǒng)那是后續(xù)高級(jí)課程的任務(wù)。
假設(shè)在《基于.NET Framework 的Windows窗體應(yīng)用開(kāi)發(fā)》這門(mén)課中設(shè)計(jì)了這樣一個(gè)案例:輸入2個(gè)數(shù),輸出較大的那個(gè)數(shù)。估計(jì)多數(shù)學(xué)生看完這個(gè)例子會(huì)認(rèn)為太簡(jiǎn)單。這明顯就是一個(gè)考查if…else…句型的例子,對(duì)學(xué)生來(lái)說(shuō)他們已經(jīng)在《程序設(shè)計(jì)基礎(chǔ)》和《Visual C# 2008程序設(shè)計(jì)語(yǔ)言》這兩門(mén)課程里對(duì)if…else…句型做了較多的練習(xí),《基于.NET Framework 的Windows窗體應(yīng)用開(kāi)發(fā)》這門(mén)課就沒(méi)必要在基本句型上花費(fèi)太多的時(shí)間了,而是應(yīng)該進(jìn)入較為大型的系統(tǒng)開(kāi)發(fā),讓學(xué)生明白什么是軟件,怎么開(kāi)發(fā)軟件。
上面兩門(mén)課程的案例就案例本身來(lái)說(shuō)沒(méi)什么問(wèn)題,只是把案例用在了不合適的課程,其實(shí)只要把這兩門(mén)課程的案例對(duì)調(diào)一下就可以了。
設(shè)計(jì)案例的目的是為了通過(guò)案例把知識(shí)點(diǎn)傳授給學(xué)生,讓學(xué)生通過(guò)案例來(lái)加深對(duì)知識(shí)點(diǎn)的理解,最終達(dá)到本門(mén)課程的教學(xué)目的。如何讓設(shè)計(jì)出來(lái)的案例能夠體現(xiàn)本門(mén)課程的教學(xué)目的呢?
首先,在設(shè)計(jì)案例前,需要弄清楚本門(mén)課程的教學(xué)目的是什么。每門(mén)課程都有每門(mén)課程的教學(xué)目的。比如《程序設(shè)計(jì)基礎(chǔ)》這門(mén)課程是讓學(xué)生掌握基本的句型,能夠編寫(xiě)一些小程序;《Visual C# 2008程序設(shè)計(jì)語(yǔ)言》這門(mén)課程是讓學(xué)生理解什么是面向?qū)ο?,怎么進(jìn)行面向?qū)ο蟮某绦蜷_(kāi)發(fā);《基于.NET Framework 的Windows窗體應(yīng)用開(kāi)發(fā)》這門(mén)課程是讓學(xué)生掌握基于windows的應(yīng)用程序開(kāi)發(fā),懂得軟件開(kāi)發(fā)的過(guò)程。
然后,明確本門(mén)課程的教學(xué)目的后,就可以圍繞它來(lái)展開(kāi)案例設(shè)計(jì)。比如《程序設(shè)計(jì)基礎(chǔ)》這門(mén)課程是讓學(xué)生掌握基本的句型,可以針對(duì)這些常見(jiàn)的句型給每種句型分別設(shè)計(jì)一些案例將他們各個(gè)擊破,最后再補(bǔ)充一些總結(jié)概括性質(zhì)的案例,將這些基本句型盡可能多地囊括進(jìn)去;《實(shí)用軟件工程方法》這門(mén)課程是讓學(xué)生了解軟件開(kāi)發(fā)的過(guò)程,軟件開(kāi)發(fā)的四個(gè)階段:需求、設(shè)計(jì)、開(kāi)發(fā)、測(cè)試具有同等重要的地位,所以在案例設(shè)計(jì)時(shí),對(duì)這四個(gè)階段要同等對(duì)待,不能厚此薄彼,只重點(diǎn)講解其中的一兩個(gè)階段,而忽略了其他階段;《軟件界面設(shè)計(jì)》這門(mén)課程是讓學(xué)生掌握軟件界面設(shè)計(jì)的技巧,在案例設(shè)計(jì)時(shí)我們重點(diǎn)要講解的是如何設(shè)計(jì)界面,至于開(kāi)發(fā)的部分可以少講,甚至不講。同時(shí)還要講解不同類(lèi)型軟件的界面設(shè)計(jì),不能只講windows應(yīng)用程序的界面設(shè)計(jì),而不講web應(yīng)用程序的界面設(shè)計(jì)?;蛘咧恢vweb應(yīng)用程序,不講windows應(yīng)用程序。
設(shè)計(jì)案例的時(shí)候,要弄清楚學(xué)生目前已經(jīng)學(xué)習(xí)了哪些課程,以后還會(huì)學(xué)習(xí)哪些課程,這些課程里面有哪幾門(mén)跟本門(mén)課程相關(guān)。
以《Visual C# 2008程序設(shè)計(jì)語(yǔ)言》為例,學(xué)生之前已經(jīng)學(xué)過(guò)了《程序設(shè)計(jì)基礎(chǔ)》,像變量、數(shù)據(jù)類(lèi)型、分支語(yǔ)句、循環(huán)語(yǔ)句、數(shù)組等知識(shí)點(diǎn),學(xué)生在《程序設(shè)計(jì)基礎(chǔ)》中已經(jīng)接觸過(guò)了,所以在講解這些知識(shí)點(diǎn)的時(shí)候就沒(méi)必要花費(fèi)太多的時(shí)間和精力,只需通過(guò)一些簡(jiǎn)單的案例來(lái)給他們復(fù)習(xí)一下就可以,但是在復(fù)習(xí)的過(guò)程中要指出兩門(mén)課程中知識(shí)點(diǎn)的細(xì)微差別。比如char類(lèi)型的變量,在C語(yǔ)言中長(zhǎng)度是8位(1個(gè)字節(jié)),而在C#中是16位(2個(gè)字節(jié))。當(dāng)然,教學(xué)過(guò)程中如果還能夠給學(xué)生指出為什么C#中char類(lèi)型的長(zhǎng)度要設(shè)計(jì)為16位(2個(gè)字節(jié))就更好,因?yàn)榻?jīng)過(guò)解釋后學(xué)生就會(huì)更好地理解(說(shuō)明:為了能夠保存得下像漢字、日文、韓文等雙字節(jié)的字符。C#中將char類(lèi)型的變量的長(zhǎng)度設(shè)計(jì)成2個(gè)字節(jié))。
《Visual C# 2008程序設(shè)計(jì)語(yǔ)言》這門(mén)課程之后還有《基于.NET Framework 的Windows窗體應(yīng)用開(kāi)發(fā)》和《Web應(yīng)用開(kāi)發(fā)——ASP.NET》這兩門(mén)后續(xù)課程。前一門(mén)課主要是介紹用C#來(lái)開(kāi)發(fā)windows應(yīng)用程序,而《Web應(yīng)用開(kāi)發(fā)——ASP.NET》主要是介紹用C#來(lái)開(kāi)發(fā)web應(yīng)用程序。在進(jìn)行《Visual C# 2008程序設(shè)計(jì)語(yǔ)言》案例設(shè)計(jì)的時(shí)候,windows應(yīng)用程序開(kāi)發(fā)和web應(yīng)用程序開(kāi)發(fā)可以適當(dāng)涉及,但是不能講解得太深入。
此外,在案例設(shè)計(jì)的時(shí)候要考慮這門(mén)課程在學(xué)生專(zhuān)業(yè)領(lǐng)域中所處的地位。像web專(zhuān)業(yè)和可視化專(zhuān)業(yè)的《網(wǎng)頁(yè)頁(yè)面設(shè)計(jì)制作(PS、Flash)》,這門(mén)課程分為photoshop和Flash兩個(gè)部分,主要是介紹圖片處理和flash制作。在進(jìn)行案例設(shè)計(jì)的時(shí)候,就應(yīng)該和圖形圖像專(zhuān)業(yè)的案例有所區(qū)別。畢竟web專(zhuān)業(yè)和可視化專(zhuān)業(yè)不是主要培養(yǎng)美工的,對(duì)大多數(shù)學(xué)生來(lái)說(shuō)只要能夠用photoshop做基本的圖片加工處理和做一些簡(jiǎn)單的flash就可以了,所以案例設(shè)計(jì)的難度就不需要太高。
在案例設(shè)計(jì)時(shí),要向?qū)W生之前所學(xué)課程和當(dāng)前課程的任課老師了解他們所使用的案例,盡量避免出現(xiàn)同樣或者類(lèi)似的案例,否則會(huì)降低學(xué)生學(xué)習(xí)的積極性,甚至影響老師在學(xué)生面前的形象(學(xué)生會(huì)誤認(rèn)為老師在抄襲案例),從而影響他們對(duì)本門(mén)課程的學(xué)習(xí)熱情。
案例設(shè)計(jì)時(shí)還要兼顧學(xué)生的學(xué)習(xí)負(fù)擔(dān)。以web專(zhuān)業(yè)大二下學(xué)期為例,他們開(kāi)設(shè)的課程有《XML Web Service 開(kāi)發(fā)》、《.NET Framework 程序設(shè)計(jì)》、《基于.NET的需求分析和解決方案設(shè)計(jì)》、《UML 基礎(chǔ)及應(yīng)用開(kāi)發(fā)》、《軟件測(cè)試基礎(chǔ)》、《Java 語(yǔ)言程序設(shè)計(jì)》這六門(mén)專(zhuān)業(yè)課程。就按一門(mén)課程讓學(xué)生開(kāi)發(fā)一個(gè)系統(tǒng)來(lái)算,學(xué)生在一學(xué)期內(nèi)要開(kāi)發(fā)6套系統(tǒng),就算是老師,同時(shí)開(kāi)發(fā)6套系統(tǒng)也會(huì)搞得暈頭轉(zhuǎn)向,更不用說(shuō)學(xué)生了。更何況很多系統(tǒng)還是類(lèi)似的信息管理系統(tǒng),學(xué)生開(kāi)發(fā)都覺(jué)得厭煩了。所以并非所有課程的案例都是開(kāi)發(fā)一個(gè)比較大的系統(tǒng),有時(shí)用一些小程序能夠說(shuō)明問(wèn)題即可。
一個(gè)案例設(shè)計(jì)的好壞,不單單是看這個(gè)案例的內(nèi)容,更重要的是看它在實(shí)際教學(xué)中的效果。設(shè)計(jì)再好的案例也難免在實(shí)際教學(xué)中出現(xiàn)一些意想不到的情況。筆者在《Visual C# 2008程序設(shè)計(jì)語(yǔ)言》這門(mén)課程的教學(xué)過(guò)程中就出現(xiàn)這樣的情況。在講完抽象方法和抽象類(lèi)這節(jié)內(nèi)容后,我設(shè)計(jì)了這樣一個(gè)案例給學(xué)生做練習(xí):
編寫(xiě)一個(gè)抽象類(lèi)和四個(gè)派生類(lèi),要求如下:
抽象類(lèi)Sharp(形狀)
有3個(gè)屬性:長(zhǎng)length、寬width、半徑radius
(注:屬性在不同的派生類(lèi)中代表的意義可能不同)
2個(gè)抽象方法:計(jì)算周長(zhǎng)perimeter()、計(jì)算面積area()
派生類(lèi)Triangle(三角形)
繼承的3個(gè)屬性長(zhǎng)length、寬width、半徑radius分別用來(lái)代表三角形的三條邊
實(shí)現(xiàn)抽象方法perimeter()和area()
編寫(xiě)一個(gè)帶參的構(gòu)造函數(shù)(創(chuàng)建對(duì)象時(shí)可以傳入三角形三邊的長(zhǎng))
三角形面積求法:s=周長(zhǎng)的一半,面積=(s*(s-長(zhǎng))*(s-寬)*(s-半徑)的開(kāi)方,使用Math.Sqrt()這個(gè)方法求開(kāi)方
派生類(lèi)Square(正方形)
繼承的屬性長(zhǎng)length代表邊長(zhǎng),其他屬性不使用
實(shí)現(xiàn)抽象方法perimeter()和area()
編寫(xiě)一個(gè)帶參的構(gòu)造函數(shù)(創(chuàng)建對(duì)象時(shí)可以傳入正方形的邊長(zhǎng))
派生類(lèi)Circle(圓)
繼承的屬性長(zhǎng)radius代表半徑,其他屬性不使用
實(shí)現(xiàn)抽象方法perimeter()和area()
編寫(xiě)一個(gè)帶參的構(gòu)造函數(shù)(創(chuàng)建對(duì)象時(shí)可以傳入圓的半徑)
圓周率取3.14
派生類(lèi)Rectangle(長(zhǎng)方形)
繼承的屬性長(zhǎng)length代表長(zhǎng),width代表寬,radius屬性不使用
實(shí)現(xiàn)抽象方法perimeter()和area()
編寫(xiě)一個(gè)帶參的構(gòu)造函數(shù)(創(chuàng)建對(duì)象時(shí)可以傳入長(zhǎng)方形的長(zhǎng)和寬)
測(cè)試這四個(gè)派生類(lèi)
分別創(chuàng)建四個(gè)圖形,輸出他們的周長(zhǎng)和面積
在筆者負(fù)責(zé)的2個(gè)班級(jí)中,其中一個(gè)班級(jí)大多數(shù)學(xué)生能夠獨(dú)立完成,并且掌握了抽象類(lèi)的相關(guān)知識(shí)點(diǎn),達(dá)到了教學(xué)目的。可是同樣的案例,在另外一個(gè)班的教學(xué)效果就沒(méi)那么明顯,大多數(shù)學(xué)生只能完成其中的一部分。主要原因是上學(xué)期他們班級(jí)的《程序設(shè)計(jì)基礎(chǔ)》這門(mén)課程掌握得不好,從而影響了后續(xù)課程的學(xué)習(xí)。
為此,需要對(duì)案例進(jìn)行調(diào)整,先以示范的形式引導(dǎo)他們寫(xiě)好了抽象類(lèi)Sharp(形狀)和派生類(lèi)Triangle(三角形)并進(jìn)行了測(cè)試,然后讓學(xué)生仿照派生類(lèi)Triangle(三角形)去編寫(xiě)剩下的三個(gè)派生類(lèi),并完成類(lèi)的測(cè)試。雖然學(xué)生主動(dòng)思考的能力不是很強(qiáng),但是模仿的能力卻不差,很多人很快就仿照我寫(xiě)好的派生類(lèi)Triangle(三角形),把剩下的三個(gè)類(lèi)都寫(xiě)好了,并進(jìn)行了測(cè)試,基本上掌握了抽象類(lèi)的相關(guān)知識(shí)點(diǎn)。