何受倩
(廣東科貿(mào)職業(yè)學(xué)院,廣東 廣州 510640)
程序設(shè)計是軟件開發(fā)的基礎(chǔ),數(shù)據(jù)結(jié)構(gòu)和算法則是程序主要的兩大組成部分。所以說數(shù)據(jù)結(jié)構(gòu)既是軟件專業(yè)的一門基礎(chǔ)課程,也是一門專業(yè)核心課程。
數(shù)據(jù)結(jié)構(gòu)旨在培養(yǎng)學(xué)生的邏輯思維能力,作為計算機軟件專業(yè)的學(xué)生,不苛求你有多聰明、數(shù)學(xué)基礎(chǔ)有多好。但是,至少你要有較清晰的思維。數(shù)據(jù)結(jié)構(gòu)課程涉及到很多常用的算法,通過大量的算法設(shè)計與上機實踐,學(xué)生的邏輯思維和程序設(shè)計能力得到提高。
數(shù)據(jù)結(jié)構(gòu)傳統(tǒng)的教學(xué)重理論輕實踐,這種教學(xué)模式更適用于本科院校。而在我們這類高職高專院校,開設(shè)這門課程時,已加大了實踐比例。但是,不管從實踐課時、教學(xué)內(nèi)容設(shè)置,還是教學(xué)方法來看,原教學(xué)模式存在一定問題。具體問題及改革措施如下:
問題一:理論和實踐課時比例分配不合理。
原理論課時和實踐課時比例為3:1,這和高職高專培養(yǎng)實踐型、技能型人才的人才培養(yǎng)目標(biāo)不相吻合。
改革措施一:針對理論和實踐課時比例分配不合理,重新調(diào)整比例,加大實踐課時數(shù),將實踐、理論課時調(diào)整至1:1。
問題二:實踐時間安排不合理。
前半學(xué)期先上理論,后半學(xué)期再上實踐,同學(xué)們在后面實踐環(huán)節(jié)往往已將前面的理論知識忘得差不多。
改革措施二:將數(shù)據(jù)結(jié)構(gòu)改到一體化教室上,即一次課包含理論和實踐,教學(xué)分三步走。第一步,教師介紹基本概念、術(shù)語和原理。第二步,教師介紹算法。先選定數(shù)據(jù)結(jié)構(gòu),在介紹算法前先給學(xué)生講做法,讓學(xué)生明白解題的思路。第三步,由學(xué)生自己上機實踐,實現(xiàn)程序功能。
問題三:在介紹各種概念、術(shù)語上花費過多的時間。
改革措施三:應(yīng)選擇性并用簡單易懂的語言來介紹基本的概念、術(shù)語,遵從理論夠用就好的原則,力求簡潔、易懂。
問題四:采用多媒體教學(xué)帶來的弊端。
多媒體教學(xué)有著圖文并茂,可加入聲音、動畫等多種元素到課件中,雖然能更好地吸引學(xué)生的注意力,但缺點是,課件是課前準(zhǔn)備好的,在教學(xué)課程中,教師很容易陷入整節(jié)課都在連續(xù)講,讓學(xué)生大腦陷入疲憊狀態(tài)。傳統(tǒng)版書教學(xué)方式,教師在版書時,能留給學(xué)生更多的停頓、思考和接收時間。
改革措施四:利用多媒體或一體化教室教學(xué)時,要注意適當(dāng)?shù)耐nD,提醒學(xué)生適當(dāng)做一些筆記。教師不要一味地坐在電腦旁邊講,要適當(dāng)走到臺下,適當(dāng)提一些問題,和學(xué)生要有交互。
問題五:單一的教學(xué)方法和手段。
教師若從開學(xué)初至學(xué)期末均采用單一的教學(xué)模式,不利于激發(fā)學(xué)生的積極性。
改革措施五:在教學(xué)過程中,采用多種教學(xué)方法和手段。如案例教學(xué)、項目教學(xué)、引導(dǎo)文教學(xué)等。
例如,在講到順序查找算法時,要完成電話簿的查找功能,查找成功則輸出“查找成功”提示,并輸出查詢結(jié)果;若查找失敗,則輸出“對不起,沒有您要查詢的號碼信息”。本次內(nèi)容,我沒有具體講該如何實現(xiàn)算法,而是引入了引導(dǎo)文教學(xué)法,設(shè)計了系列引導(dǎo)問題,讓學(xué)生根據(jù)問題獨立完成程序功能。設(shè)計的引導(dǎo)問題如下:
(1)你打算選擇何種存儲結(jié)構(gòu)?
(2)你打算采用原子類型還是結(jié)構(gòu)類型?如果采用結(jié)構(gòu)類型,你準(zhǔn)備定義含幾個分量的結(jié)構(gòu)類型呢?
(3)你打算利用一個函數(shù)實現(xiàn)所有功能,還是分解成模塊,利用函數(shù)調(diào)用來完成功能呢?
(4)如果使用函數(shù)調(diào)用,你準(zhǔn)備在被調(diào)函數(shù)中使用幾個何種類型的形參呢?
(5)在實現(xiàn)算法時,你打算如何獲取線性表的長度(元素總數(shù))呢?
又如,在應(yīng)用案例教學(xué)時,如何選擇實用且讓學(xué)生印象深刻的例子很重要。比如,在講到隊列的插入和刪除元素算法時,舉接近生活的排隊打飯的例子,先來先服務(wù),隊頭同學(xué)得到服務(wù)后出隊(即在隊頭刪除元素),要打飯的同學(xué)只能從隊尾加入到隊中(即在隊尾插入元素)。
再如,排序算法是數(shù)據(jù)結(jié)構(gòu)學(xué)科經(jīng)典的內(nèi)容,其中內(nèi)部排序方法有很多(如冒泡排序,直接插入排序,選擇排序,快速排序等),怎樣才能讓學(xué)生掌握多種排序算法呢?請一部分同學(xué)上來扮演待排序結(jié)點,然后再請同學(xué)上來將其按升序或降序排好序。先通過類比的方法,讓學(xué)生更好地理解做法,然后再講解對應(yīng)的算法,通過生活中的例子來激活學(xué)生的興趣。
問題六:沒能給學(xué)生呈現(xiàn)聯(lián)貫的思路。
有些同學(xué)在學(xué)完數(shù)據(jù)結(jié)構(gòu)課程后,還不知道究竟數(shù)據(jù)結(jié)構(gòu)是學(xué)什么的以及數(shù)據(jù)結(jié)構(gòu)有什么用。
改革措施六:在第一次課就應(yīng)該讓學(xué)生知道數(shù)據(jù)結(jié)構(gòu)是一種思想,是一種工具,當(dāng)要保存一些非基本數(shù)據(jù)類型的數(shù)據(jù)時,必須得自己定義一種新型的數(shù)據(jù)結(jié)構(gòu)。再者,將圖1的數(shù)據(jù)結(jié)構(gòu)關(guān)系示意圖呈現(xiàn)給學(xué)生,讓他們明白數(shù)據(jù)結(jié)構(gòu)是學(xué)習(xí)什么的,以及這些知識之間的關(guān)系。
圖1 數(shù)據(jù)結(jié)構(gòu)關(guān)系示意圖
數(shù)據(jù)結(jié)構(gòu)課程是計算機軟件專業(yè)的一門核心課,存在一定的難度和抽象性。學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu),能讓學(xué)生理解內(nèi)存分配和處理機制,數(shù)據(jù)的邏輯關(guān)系和物理關(guān)系,以及它們之間的對應(yīng)關(guān)系,同時,還能讓學(xué)生們的邏輯思維能力和算法設(shè)計水平得到提高。
[1]李筠.數(shù)據(jù)結(jié)構(gòu)(高職高專精品課程規(guī)劃教材)[M].北京:清華大學(xué)出版社,2008.
[2]王宇川.數(shù)據(jù)結(jié)構(gòu)用C語言描述[M].北京:中國水利水電出版社,2008.
[3]馬秋菊.數(shù)據(jù)結(jié)構(gòu)(21世紀(jì)高職高專新概念教材)[M].北京:中國水利水電出版社,2006.