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