鄭琪(廣東外語外貿(mào)大學(xué)思科信息學(xué)院,廣州 510006)
算法分析與設(shè)計(jì)課程的拓展式教學(xué)
鄭琪
(廣東外語外貿(mào)大學(xué)思科信息學(xué)院,廣州510006)
算法設(shè)計(jì)與分析課程作為一門重要的程序設(shè)計(jì)類課程,主要目的是通過對計(jì)算機(jī)算法的系統(tǒng)學(xué)習(xí)與研究,掌握算法設(shè)計(jì)、算法實(shí)現(xiàn)和算法比較,培養(yǎng)學(xué)生正確分析算法計(jì)算復(fù)雜性的能力以及對不同實(shí)際問題設(shè)計(jì)出高效算法的能力?!陡叩葘W(xué)校計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)實(shí)踐教學(xué)體系與規(guī)范》把算法設(shè)計(jì)與分析能力界定為計(jì)算機(jī)專業(yè)高級人才的基本學(xué)科能力之一。這門課程既包含抽象的理論,又強(qiáng)調(diào)算法的實(shí)踐,對于提升學(xué)生的邏輯思維能力和編程解決實(shí)際問題的能力有著非常重要的意義,大型公司面試和研究生入學(xué)考試時(shí)都會側(cè)重這方面的知識。但是這類課程理論兼顧實(shí)踐的特點(diǎn),使得學(xué)生間能力的差異表現(xiàn)得更為突出,很多學(xué)生剛接觸到這門課程就出現(xiàn)畏難情緒,而不愿意花精力去學(xué)好這門課程。因此我們研究使用拓展式的教學(xué)方法,以生動有趣的方式引導(dǎo)學(xué)生一步步地實(shí)現(xiàn)程序設(shè)計(jì)類課程的教學(xué)目標(biāo),達(dá)到提升學(xué)生個人能力的目的,同時(shí)使得學(xué)習(xí)能力和興趣各不相同的學(xué)生在這門課程的學(xué)習(xí)過程中能夠充分發(fā)揮自己的潛力。
目前算法設(shè)計(jì)與分析課程的教學(xué)存在如下問題:
(1)學(xué)時(shí)不足,不能保證充分的上機(jī)時(shí)間。算法課程是一門實(shí)踐性較強(qiáng)的課程,只有通過大量的編程實(shí)踐,才能夠加深對理論的理解。而目前有限的學(xué)時(shí)數(shù)無法保證學(xué)生在課堂上有足夠的上機(jī)時(shí)間。這就需要通過布置作業(yè)的方式,調(diào)動學(xué)生利用課外時(shí)間來完成編程實(shí)踐。但是學(xué)生會由于這門課程的難度而產(chǎn)生倦怠情緒,而不能積極地完成作業(yè),甚至產(chǎn)生抄襲的情況。
(2)學(xué)生水平參差不齊,千人一題難以兼顧所有學(xué)生。目前很多高校為了提高學(xué)生算法的實(shí)踐能力,將國際大學(xué)生程序設(shè)計(jì)競賽(ACM/ICPC)的做題模式引入到大學(xué)。學(xué)生將代碼提交到判題系統(tǒng)后,系統(tǒng)立刻對代碼進(jìn)行評測,將程序是否正確反饋給學(xué)生,學(xué)生可以及時(shí)修改程序,繼續(xù)提交直至成功。這種方式極大地提高了學(xué)生學(xué)習(xí)的交互性,增強(qiáng)了學(xué)生分析、調(diào)試程序的能力。但是各高校在實(shí)施過程中,所有的學(xué)生都布置相同的題目。水平差的學(xué)生覺得題目難而放棄努力,抄襲別人的代碼。水平高的學(xué)生覺得題目相對簡單,能力不能得到進(jìn)一步的提升。
(3)學(xué)習(xí)目的不明確,學(xué)生單純?yōu)榱俗鲱}而做題。部分學(xué)生為了通過期末考試對一些算法和解決問題的代碼死記硬背,不能領(lǐng)會到在今后的開發(fā)實(shí)踐中算法能夠發(fā)揮的巨大的作用。因此需要引導(dǎo)學(xué)生根據(jù)自己的興趣和能力,找到算法應(yīng)用的切入點(diǎn)。
(4)算法課程內(nèi)容的設(shè)計(jì)上不能做到承上啟下的作用。每個高校的課程設(shè)置都不同,因此算法的內(nèi)容設(shè)置也要因地制宜地照顧到先修課程和后續(xù)課程。以我校為例,數(shù)據(jù)結(jié)構(gòu)課程是算法課程的先修課程。數(shù)據(jù)結(jié)構(gòu)課程中講授的一些方法,學(xué)生只是知其然而不知其所以然。算法課程則可以對這些方法從設(shè)計(jì)思想的角度進(jìn)行分析,加深學(xué)生的理解。后續(xù)課程如計(jì)算機(jī)網(wǎng)絡(luò)、自然語言處理中使用的算法也可以先行引入到算法課程中,促進(jìn)對后續(xù)課程的教學(xué)和理解。
以上問題是每所高校在程序設(shè)計(jì)類課程教學(xué)過程中遇到的問題,高校教師們也都積極地嘗試用各種方法去解決問題。電子科技大學(xué)的林劼使用項(xiàng)目驅(qū)動法[1],中國礦業(yè)大學(xué)的吳川通過引入大學(xué)生程序設(shè)計(jì)競賽的模式提高學(xué)生的實(shí)踐動手能力[2];南京郵電大學(xué)的陳蕾將實(shí)驗(yàn)題目劃分為不同難度,針對不同水平的學(xué)生[3];信息工程大學(xué)的李云強(qiáng)通過專題化教學(xué)解決教學(xué)課時(shí)不足的問題[4];山東省工會管理干部學(xué)院的曲德祥通過教學(xué)內(nèi)容問題化、教學(xué)體系層次化引導(dǎo)學(xué)生學(xué)習(xí)[5]。但是以上的這些解決方案只是針對教學(xué)過程中的某一個問題,而沒有給出一個完整的解決方案。
拓展學(xué)習(xí)是指教育教學(xué)過程中,學(xué)生學(xué)習(xí)內(nèi)容、學(xué)習(xí)形式、學(xué)習(xí)方法等向社會學(xué)習(xí),向網(wǎng)絡(luò)拓展,使學(xué)習(xí)內(nèi)容在更廣闊的背景上獲得全方位的充實(shí)和增加。因此我們提出以拓展式教學(xué)作為我們的主線,針對該課程的教學(xué)設(shè)計(jì)出一個完整的教學(xué)改革方案。
2.1教學(xué)內(nèi)容的前向拓展
由于這門課程對學(xué)生的綜合能力要求較高,學(xué)生剛開始接觸,往往會有畏難情緒而導(dǎo)致厭學(xué)。興趣是最好的老師。一方面,教師結(jié)合情景教學(xué)法,創(chuàng)設(shè)熟悉的情景,吸引學(xué)生,自然地導(dǎo)入教學(xué)內(nèi)容。例如講解貪心算法時(shí)引入日常生活中的紙幣找零問題。另一方面從本課程的角度解讀其他先修課程的知識點(diǎn)。例如數(shù)據(jù)結(jié)構(gòu)中的快速排序算法學(xué)生只知道該算法的效率較高,而不知道該算法的設(shè)計(jì)思想。教師利用分治的思想對這個算法進(jìn)行深度解析,可以鞏固學(xué)生之前所學(xué)的知識,啟發(fā)學(xué)生的思維。通過將學(xué)生已有的生活經(jīng)驗(yàn)或者知識進(jìn)行引申,學(xué)生更容易接受和理解新的知識點(diǎn)。
2.2教學(xué)內(nèi)容的后向拓展
部分后續(xù)的課程中會涉及到本課程的相關(guān)知識。例如計(jì)算機(jī)組網(wǎng)技術(shù)課程中涉及的生成樹協(xié)議,它的實(shí)現(xiàn)思想來源于算法課程中的最小生成樹算法。在學(xué)習(xí)相應(yīng)算法的同時(shí),對未來的課程知識點(diǎn)做一個鋪墊,有助于學(xué)生對未來相關(guān)課程的理解和掌握。教學(xué)內(nèi)容的后向拓展有利于學(xué)生將各門課程的學(xué)習(xí)融會貫通,構(gòu)建一個完整的知識體系。
2.3教學(xué)內(nèi)容的橫向拓展
課程內(nèi)容引入后,在學(xué)生對所學(xué)知識感性認(rèn)識的基礎(chǔ)上,通過以問題為導(dǎo)向的教學(xué)方法(PBL)貫穿這個教學(xué)過程,幫助學(xué)生進(jìn)一步加深知識點(diǎn)的理解,發(fā)揮問題對學(xué)習(xí)過程的指導(dǎo)作用,調(diào)動學(xué)生的主動性和積極性。PBL方法以問題為基礎(chǔ),以學(xué)生為主體,以教師為導(dǎo)向,采用啟發(fā)式教育培養(yǎng)學(xué)生的分析問題,解決問題能力。例如講授貪心算法時(shí),鼓勵學(xué)生討論如何解決文件壓縮的問題。在眾多的學(xué)生建議方案中引申出哈夫曼編碼,講解如何通過貪心算法解決這個問題。進(jìn)一步引導(dǎo)學(xué)生以此作為理論基礎(chǔ),借助于其他開發(fā)工具和方法實(shí)現(xiàn)一個具有實(shí)際應(yīng)用價(jià)值的文件壓縮軟件,實(shí)現(xiàn)從理論知識向工程實(shí)踐轉(zhuǎn)化,讓學(xué)生清楚認(rèn)識到課程學(xué)習(xí)的目的和意義。
2.4教學(xué)實(shí)踐的層次拓展
在程序設(shè)計(jì)類課程的教學(xué)過程中必然要面對嚴(yán)重的學(xué)生能力不平衡的問題。一方面要避免基礎(chǔ)差的學(xué)生掉隊(duì),另一方面要解決能力強(qiáng)的學(xué)生得到進(jìn)一步提升的問題。我們將教學(xué)實(shí)踐劃分為理論實(shí)踐和應(yīng)用開發(fā)兩個不同的方向。理論實(shí)踐針對喜歡理論課程學(xué)習(xí)的學(xué)生,注重算法思想的理解和靈活應(yīng)用。應(yīng)用開發(fā)針對熱衷開發(fā)軟件的學(xué)生,注重于將算法包裝為有現(xiàn)實(shí)意義的軟件,實(shí)現(xiàn)算法的核心價(jià)值。理論實(shí)踐方向的題目又劃分為驗(yàn)證型、提高型和競賽型。驗(yàn)證型題目面向基礎(chǔ)差的學(xué)生,要求實(shí)現(xiàn)教材中典型的算法題目。提高型題目面向基礎(chǔ)較好的學(xué)生,要求可以靈活應(yīng)用算法思想解決一些簡單題目。競賽型題目面向綜合能力強(qiáng),有志于參加大學(xué)生程序設(shè)計(jì)比賽的學(xué)生,要求可以綜合應(yīng)用多種方法解決比較復(fù)雜的問題。教學(xué)實(shí)踐的分方向與分層次可以滿足不同興趣、不同層次學(xué)生的學(xué)習(xí)需求。
2.5教學(xué)實(shí)踐的課堂外拓展
由于程序設(shè)計(jì)類課程的教學(xué)課時(shí)往往不足,因此大部分教學(xué)實(shí)踐要依賴于課外時(shí)間,編程題目以作業(yè)的方式布置給學(xué)生。學(xué)生在解題過程中如果無法及時(shí)得到結(jié)果的反饋,而統(tǒng)一等待教師批改,無疑會削弱學(xué)生學(xué)習(xí)的主動性和積極性。因此我們將大學(xué)生程序設(shè)計(jì)競賽的程序在線評測系統(tǒng)引入程序設(shè)計(jì)類課程。學(xué)生在提交程序作業(yè)后,可以實(shí)時(shí)地得到反饋結(jié)果。如果發(fā)生錯誤,可以不斷地修改嘗試,直至正確解答。這種方式培養(yǎng)了學(xué)生發(fā)現(xiàn)問題、解決問題的能力。
本文針對目前算法分析與設(shè)計(jì)課程教學(xué)過程中存在的問題進(jìn)行了分析,從學(xué)習(xí)內(nèi)容、學(xué)習(xí)形式等多個方向進(jìn)行教學(xué)拓展,建立完整的教學(xué)方案,全面解決教學(xué)課時(shí)不足、學(xué)生能力差異、學(xué)習(xí)動力不足、課程教學(xué)銜接等問題,培養(yǎng)學(xué)生理論知識向應(yīng)用實(shí)踐的轉(zhuǎn)化能力。
[1]林劼,戴波.項(xiàng)目驅(qū)動型算法設(shè)計(jì)與分析課程教學(xué)方法[J].計(jì)算機(jī)教育,2014(09).
[2]吳川,孫錦程.基于ACM的《算法設(shè)計(jì)與分析》教學(xué)改革研究[J].中國科教創(chuàng)新導(dǎo)刊,2010(32).
[3]陳蕾,張怡婷,許建.基于創(chuàng)新能力培養(yǎng)的算法設(shè)計(jì)與分析課程教學(xué)改革[J].計(jì)算機(jī)教育,2010(20).
[4]李云強(qiáng),王愛蘭.課時(shí)壓縮的算法設(shè)計(jì)與分析課程教學(xué)模式探索[Z].中國北京:20113.
[5]曲德祥.關(guān)于實(shí)踐教學(xué)中算法設(shè)計(jì)與分析課程的研究及應(yīng)用[J].信息技術(shù)與信息化,2012(01).
Algorithm Analysis and Design;Expansive Teaching
Expansive Teaching of Algorithm Analysis and Design
ZHENG Qi
(Cisco School of Informatics,Guangdong University of Foreign Studies,Guangzhou 510006)
1007-1423(2015)24-0003-03
10.3969/j.issn.1007-1423.2015.24.001
鄭琪(1973-),男,內(nèi)蒙古呼和浩特人,講師,博士,研究方向?yàn)閿?shù)據(jù)挖據(jù)、自然語言處理
2015-06-26
2015-08-06
算法設(shè)計(jì)與分析作為一門理論與實(shí)踐要求都比較高的課程,在教學(xué)過程中存在著學(xué)生學(xué)習(xí)目的不明確,積極性不高;水平差異尤為明顯,難以兼顧;教學(xué)內(nèi)容相對獨(dú)立等問題。針對這些問題,提出教學(xué)內(nèi)容進(jìn)行前向、后向與橫向的拓展,提高學(xué)生的學(xué)習(xí)興趣,便于學(xué)生培養(yǎng)完整的知識體系。教學(xué)實(shí)踐的層次拓展和課堂外拓展,使得每個學(xué)生在學(xué)習(xí)這門課程中都有努力的空間,提升個人的編程實(shí)踐水平。
算法分析與設(shè)計(jì);拓展教學(xué)
廣東外語外貿(mào)大學(xué)校級教改項(xiàng)目(No.GWJYYB14031)
Algorithm Analysis and Design is a course that requires both theory and practice.During the teaching of the course,a series of problems arise.Students are aimless,passive;it's hard to care for each student for their significantly different ability;the teaching content is isolated.To solve these problems,expands the content of the course forward,backward and crosswise to motivate students'interest and help them to develop complete knowledge system.The expansive learning in a hierarchy and outside class leave space for each student to improve themselves and raise the level of programming.