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