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