楊彥紅
[摘 要] 針對算法分析與設(shè)計(雙語)課程的當(dāng)前教學(xué)狀況,分析和研究國內(nèi)外計算機學(xué)科頂尖大學(xué)相關(guān)課程的開設(shè)情況,針對學(xué)生實踐能力、問題分析求解能力及創(chuàng)新思維能力的不足,提出課程的實踐教學(xué)改革,介紹了開放式研討式教學(xué)結(jié)合的實驗教學(xué)到開放式大作業(yè)考核方式的關(guān)鍵環(huán)節(jié)具體實施過程。
[關(guān)鍵詞] 算法分析與設(shè)計;雙語課程;實踐教學(xué)
doi : 10 . 3969 / j . issn . 1673 - 0194 . 2017. 19. 095
[中圖分類號] G642 [文獻標識碼] A [文章編號] 1673 - 0194(2017)19- 0227- 02
1 背景及意義
隨著“互聯(lián)網(wǎng)+”技術(shù)的推進,使用計算機解決實際領(lǐng)域問題的專業(yè)人才培養(yǎng)是計算機相關(guān)學(xué)科教育的根本目的[1]。算法分析與設(shè)計(雙語)課程(以下簡稱“算法課程”),在國內(nèi)外各大學(xué)的計算機專業(yè)課中處于核心地位,卡內(nèi)基梅隆大學(xué)將“Algorithm Design and Analysis”列為必修課程,斯坦福大學(xué)和麻省理工學(xué)院分別將“Design and Analysis of Algorithms”列為核心課程和先導(dǎo)課程。
算法課程開設(shè)在本科大二的下半學(xué)期,課程要求綜合利用所學(xué)過的知識,學(xué)習(xí)和研究經(jīng)典的問題及其算法,并能夠面臨實際的問題給出高效優(yōu)化的算法。課程首先需要有一定的英文基礎(chǔ)能力,需要具有邏輯性、抽象性和較好的數(shù)學(xué)基礎(chǔ)。
算法課程的教學(xué)安排上借鑒開放式教學(xué)模式,是科恩的人本主義教學(xué)理論和斯皮羅的建構(gòu)主義教學(xué)理論。教學(xué)主要目的是激發(fā)學(xué)生的學(xué)習(xí)主動性和熱情,培養(yǎng)學(xué)生的創(chuàng)造力和提高學(xué)生的主動思維能力、口頭表達能力、書面表達能力和實際應(yīng)用能力;中心問題就是更好地發(fā)揮學(xué)生在學(xué)習(xí)中的主動性和積極性,擺脫以往教與學(xué)脫節(jié)的痼疾,以更有效地培養(yǎng)學(xué)生的獨立工作和學(xué)習(xí)能力[2]。
2 算法課程實踐教學(xué)的具體過程
算法課程實踐教學(xué)的為了培養(yǎng)學(xué)生的計算思維,運用計算機科學(xué)的基礎(chǔ)概念進行問題的求解、系統(tǒng)設(shè)計及其人類行文理解等涵蓋的一系列思維活動。包括了一整個把一個困難問題,通過簡約、嵌入、轉(zhuǎn)化和仿真等方法進行求解的一系列過程的思維方法??梢哉J為是一種遞歸思維,采用抽象和分解的方法來控制龐雜的任務(wù)或復(fù)雜系統(tǒng)的設(shè)計,或?qū)σ粋€問題的相關(guān)方面建模使其易于處理的思維方式。作為計算機專業(yè)的人才,需要進行計算思維的實踐能力的訓(xùn)練。算法課程要求能夠?qū)?fù)雜問題加以抽象或約簡,給出形式化的描述并找到正確高效的求解方法。在課程實踐教學(xué)的過程中,通過以下幾個方面進行實踐教學(xué)的探索。
2.1 教材及參考文獻選擇
為了借鑒國內(nèi)外優(yōu)秀教材的精華,選擇了兩本外文書籍:由Thomas H.Cormen編寫的《算法導(dǎo)論》和Jon Kleinberg編寫的《算法設(shè)計》。參考了弗吉尼亞大學(xué)和普林斯頓大學(xué)的課件。
為了幫助學(xué)生更好地理解,盡管是雙語課程,仍然選取了屈婉玲編寫的《算法設(shè)計與分析》作為課后閱讀材料。
2.2 課堂討論設(shè)計
采用課堂講授與研討式課堂討論結(jié)合的教學(xué)形式。由于算法課程本身的特點,每個專題具有一定的獨立性,而且非常適合通過以具體的問題和具體應(yīng)用為驅(qū)動,展開分析和討論,并引導(dǎo)學(xué)生設(shè)計算法,培養(yǎng)創(chuàng)新能力。
例如在講使用動態(tài)規(guī)劃完成最長字符串匹配的過程中,引入基因組序列的匹配的背景,引導(dǎo)學(xué)生展開討論。通過讓學(xué)生進行研討和匯報,表達能力、思維能力、實踐能力都得到了提升。在整個的教學(xué)過程中,這樣類似的討論在5次以上,時間控制在半小時內(nèi)。
2.3 大作業(yè)實踐內(nèi)容的安排
由于算法課程是一門專業(yè)選修課,采用大作業(yè)的形式進行考核。為了提高學(xué)生的實踐能力,并且和學(xué)生的生活中的實際問題相結(jié)合。設(shè)計了三個開放式的大作業(yè)的題目,內(nèi)容如下:
(1)高考考生志愿推薦。運用學(xué)生的知識和能力,完成一個高考志愿推薦的程序。提示:只針對北京市地區(qū)的學(xué)校,從網(wǎng)站找一下近三年的計算機專業(yè)錄取的高考分數(shù),及學(xué)校的其他信息(可以選擇10所學(xué)校)。 輸入: 成績 要求(對校園環(huán)境、食堂情況、教師情況等);輸出: 第一志愿 第二志愿 第三志愿。
(2)游戲組隊。假設(shè)學(xué)生在一家游戲公司實習(xí),要求實現(xiàn)一個程序,當(dāng)一個用戶進行游戲前,自動給出一個匹配的方案(3~4人的組隊游戲)。提示: 可以根據(jù)具體的游戲具體分析。
(3)閨蜜好友推薦。假設(shè)現(xiàn)在是一個微信聊天群的群主,可以獲取群內(nèi)人的信息及朋友圈的信息。寫一個程序,利用你可以獲取的信息為群里的每個人推薦3個志趣相投的好友。通過朋友圈的信息,年齡,地區(qū)等進行特征的提取。
這些題目和學(xué)生生活的環(huán)境相關(guān),他們很容易理解題目的內(nèi)容,但是對于大二的學(xué)生而言非常具有挑戰(zhàn)性。首先需要對問題進行抽象,選取關(guān)鍵的因素。其次,對問題進行建模。再次,選取合適的算法,例如可以使用在課堂上講過的逆序?qū)Φ挠嬎銇肀硎酒ヅ涠?。最后,通過測試并完成作業(yè)的報告。
2.4 教學(xué)評價
教學(xué)評價采用綜合評定的方式進行,平時成績占20%,實驗成績占30%,大作業(yè)成績50%。平時成績包括到課率、上次率及討論發(fā)言的情況給予成績。實驗成績是由6~7個小的實驗組成,重點聯(lián)系單個算法的思維,例如貪心、動態(tài)規(guī)劃、回溯等。大作業(yè)評分標準按照問題抽象程度,問題考慮的范圍,算法實現(xiàn)過程,測試的結(jié)果和報告等幾個部分給出分值。
3 結(jié) 論
通過算法課程的雙語教學(xué),穩(wěn)抓實踐的過程,學(xué)生在英語語言水平、實際編程能力、分析問題能力得到了提高。對之前所學(xué)的數(shù)據(jù)結(jié)構(gòu)、程序設(shè)計基礎(chǔ)等課堂內(nèi)容知識加深了理解,建立了優(yōu)化的計算思維,從之前單純的解決問題,到立體全面的分析問題,給出較優(yōu)解并能夠分析算法的復(fù)雜度。
課程教學(xué)過程中,充分參考和借鑒國內(nèi)外的優(yōu)秀教材的,加入了思維訓(xùn)練和開發(fā)式討論,擴展學(xué)生思維。在這次的大作業(yè)的實踐過程中,題目是開放式的,需要學(xué)生自己去查找相應(yīng)的資料,網(wǎng)上找數(shù)據(jù)或是自己模擬一些數(shù)據(jù)。關(guān)于算法的設(shè)計也不是固定的,因此很多學(xué)生反饋大作業(yè)較難。確實和傳統(tǒng)的課程大作業(yè)有較大的區(qū)別,但這種訓(xùn)練培養(yǎng)學(xué)生對復(fù)雜問題的解決能力。算法分析設(shè)計的思維和能力是計算機專業(yè)的基礎(chǔ)能力,具有其專業(yè)特色,并使學(xué)生在以后的工作中受益。
主要參考文獻
[1]屈婉玲,王捍貧,段莉華. 面向軟件工程學(xué)科的算法課程建設(shè)[J]. 中國大學(xué)教學(xué),2012(12):55-57.
[2]何克晶,張星明,鄭運平. 算法設(shè)計與分析課程全方位實踐教學(xué)改革探索[J]. 計算機教育,2017(2):45-49.endprint