期刊VIP學術指導 符合學術規(guī)范和道德
保障品質 保證專業(yè),沒有后顧之憂
來源:期刊VIP網(wǎng)所屬分類:計算機信息管理時間:瀏覽:次
摘 要:計算機類專業(yè)的學生掌握編程解決問題的基本技能,是基本的專業(yè)素質。算法是程序設計的靈魂,是用系統(tǒng)方法描述解決問題的方法,是從編程通向計算思維的必由之路。計算機類專業(yè)的“系統(tǒng)能力”,是計算機類專業(yè)相較于其他專業(yè)的核心競爭力。本文總結了六年來采用不同編程語言進行教學的比較,討論了如何貫通專業(yè)學生的這些專業(yè)基本素質和核心能力,為我們進行教學時編程語言選擇提供了基于系統(tǒng)能力的可行方案。
關鍵詞:程序設計;數(shù)據(jù)結構與算法;計算機系統(tǒng);編程語言
1 引言(Introduction)
數(shù)據(jù)結構與算法課程曾經(jīng)用偽代碼教學,旨在掌握算法思維本身。現(xiàn)在基本采用一門具體的編程語言進行教學,可能是Linus Torvalds說:“Talk is cheap,show me the code.”,也可能是程序執(zhí)行時間比算法復雜度分析更有感覺。當前計算機系統(tǒng)能力的培養(yǎng)也是一個倒逼的動力,因為體驗代碼的執(zhí)行、調試程序的bug,是讓學生深入理解計算機系統(tǒng),加強工程能力培養(yǎng)的必由之路[1-4]。
目前,計算機類專業(yè)的程序設計基礎和數(shù)據(jù)結構與算法這兩門課程的教學,選擇同一門編程語言進行兩門課程的連續(xù)教學是較好的選擇。這樣為學生“學好一門編程語言”+“計算思維”這個主線提供了很好的條件[5]。
那么是讓學生自主選擇課程的這一門編程語言,還是根據(jù)專業(yè)課程體系的需要進行設定,這是我們進行課程體系設計的時候容易引起爭論的話題。我們根據(jù)TIOBE編程語言排行榜以及網(wǎng)上招聘和地區(qū)人才需求,“所學即所用”“一點打透”等原則,在學生中試行了學生自由選擇排名前列的幾種編程語言進行這兩門課程的教學。現(xiàn)在根據(jù)計算機系統(tǒng)能力建設的趨勢,回歸了簡單的C語言路線。這又會讓人想起發(fā)明C語言的Dennis M. Richie說:“Keep it simple stupid”[6]。我們做了一些思考和總結,供專家和同行們參考。
2 面向對象編程語言的特點(Characteristics of object oriented programming language)
我們以Java語言為例來說明用面向對象編程語言來進行程序設計基礎+數(shù)據(jù)結構與算法課程教學的特點。Java的優(yōu)勢在于實現(xiàn)了面向對象的主要技術(封裝、繼承與多態(tài)、接口等),而放棄了容易引起混亂的技術(例如多繼承)。
(1)封裝。在數(shù)據(jù)結構與算法課程教學中,數(shù)據(jù)抽象是首先要面對的主題。現(xiàn)在的面向對象技術已經(jīng)很成熟,如果選擇將數(shù)據(jù)成員(數(shù)據(jù)結構)設為私有屬性隱藏起來,通過調用公有成員方法(算法)訪問私有數(shù)據(jù),Java完成了定義自己的數(shù)據(jù)類型(數(shù)據(jù)抽象)和對這些數(shù)據(jù)操作的封裝。數(shù)據(jù)類型和相關操作(算法)有了密切相關性,定義了一個類的數(shù)據(jù)成員(數(shù)據(jù)結構)之后,相應的算法就是同一個類中的各種方法,就可以創(chuàng)建對象,以及派生出更多的細分、實用的類。
(2)泛型。泛型是Java 5以上版本提供的支持這一目標的方式之一。泛型也就是參數(shù)化類型,例如Stack是某種元素的棧,而Stack處理的就是String對象。同理,Queue就是處理Date對象[7]。
算法中經(jīng)常需要進行對象的大小比較,一般采用兩種方法實現(xiàn)泛型,從而實現(xiàn)對象間可比較。一是用Object表示泛型,二是用Comparable接口類型表示泛型。用Comparable接口類型表示泛型時(從JDK 1.5開始,在java.lang.Comparable中使用了泛型),需要定義對象為Comparable接口的實例,然后調用Comparable的compareTo方法(需要重寫)就可以進行對象間的比較操作[8]。
推薦閱讀:計算機論文發(fā)表的普通期刊