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