◇宿遷學院文理學院 張 欣 衛麗華
本文針對信息與計算科學專業特點,設計了《數據結構》中線性表這一知識點的實踐教學案例。該案例包含了數學分析中泰勒公式的理論及應用、順序存儲的線性表的定義與應用,同時非常自然地融入思政元素。該實踐教學案例的設計充分考慮了信息與計算科學專業學生的特點,有助于學生對數學和數據結構知識的理解。本文詳細給出了該案例的教學過程,具有較強的可操作性。
1998年,教育部頒布了《普通高等學校本科專業目錄(1998年頒布)》,將原計算數學及其應用軟件、運籌學、控制科學、信息科學專業合并為信息與計算科學專業,屬數學類專業[1]。由此可以看出,信息與計算機科學專業是在數學類專業的課程體系中嵌入計算機軟件類課程,這是信息與計算科學專業設立的初衷,也是該專業的基因和特色。2012和2020年,教育部又分別頒布了《普通高等學校本科專業目錄(2012年)》和《普通高等學校本科專業目錄(2020年版)》,其中信息與計算科學專業為理學門類專業,屬數學類專業,授予理學學士學位[2-3]。信息與計算科學專業的設立得益于計算機科學技術的迅猛發展,經過十幾年的發展,從專業定位、人才培養模式、課程體系、實踐教學環節、教學方法等方面都進行了積極的研究與探索[4-5],使該專業建設逐步走向完善。目前國內開設該專業的院校有337所,筆者所在院校宿遷學院于2008年在揚州大學的聯建下開設該專業,是較早開設信息與計算科學專業的院校之一。筆者畢業于信息與計算科學專業,從2009年起多次承擔《數據結構》的理論和實踐教學工作,對信息與計算科學專業《數據結構》的實踐教學工作總結了一些自己的經驗,本文簡述之。
《數據結構》是信息與計算科學專業課程體系中非常重要的一門專業課程,在課程體系中起著舉足輕重的作用,是數據庫、算法分析與設計、軟件工程等專業課程的前導課程。該課程是多門計算機課程的必備基礎。通過本課程的學習,學生可以具備數據組織和處理能力,也可以提高軟件開發能力。《數據結構》的學習也為后續課程以及程序設計水平的提高打下良好的基礎。
該課程具有較強的“計算機”屬性,“數學”屬性偏弱,因此,該課程的教學工作多由計算機相關專業的教師承擔,教學內容的安排與設計也多與計算機相關專業一致,未能充分考慮信息與計算科學專業的特點,即信息與計算科學本質上仍屬數學類專業,專業本身具有很強的“數學”屬性。因此,在教學中,若能充分結合學生所學的數學知識,在實踐教學中為信息與計算科學專業的學生“量身定制”一部分實驗內容,一方面可以加深學生對數據結構和高等數學知識的理解程度,另一方面,也可以讓學生體會到知識融合的魅力,提高學生學習興趣。
關于信息與計算科學專業《數據結構》課程的教學改革,不少學者對此提出了好的理念和思路[6-10]。謝爽、吳彩云[6]提出了基于數學思維的《數據結構》課程教學方法研究,文章論證和分析了《數據結構》課程成績與數學基礎成正相關關系,且線性關系顯著。王嘉[7]對信息與計算科學專業《數據結構》課程的教學進行了探索,提出將學習目標和實踐環節分級,依托“微助教”平臺進行信息化教學,通過線上導學、測評、實踐指導等環節,優化教學過程。唐年慶、汪在榮[8]對數據結構中的線性結構教學進行了分析;黃紫成、隋占麗[9]探索了在移動學習環境下《數據結構》課程教學的改革;甘秋云、鄭春聰[10]以《數據結構》課程為例,結合本科高校教學經驗,探討了基于OBE-CDI教學模式下的課程改革實踐。本文在以上理論的基礎上,從實踐教學的角度給出了《數據結構》中線性結構的教學案例。
《數據結構》的教學內容主要包含線性表、棧和隊列、串和數組、樹和二叉樹、圖、查找與排序等。我們主要在線性結構部分設計了與高等數學知識密切相關的實驗,如表1所示。

表1 線性結構實驗內容
本文主要對表1中的第一個實驗項目進行詳細闡述。
泰勒公式是數學分析中非常重要的內容,泰勒公式的幾何意義是利用多項式函數來逼近原函數,由于多項式函數可以求任意階導數,易于計算,且便于求解極值或者判斷函數的性質,因此通過泰勒公式可以求函數值和獲取函數信息。不僅如此,泰勒公式在算法的收斂性分析中也是非常基礎和重要的工具。因此,熟練掌握、理解和運用泰勒公式對信息與計算科學專業的學生而言非常重要。
基于此,我們將泰勒公式的知識融入線性表這一知識點中,設計了“利用泰勒公式計算的值”這一實驗項目。實驗內容如下:
有了上述知識,我們便可以利用數據結構中順序存儲的線性表來完成相應的計算。首先,定義順序表的結構如下(用C語言描述):
為了測試本案例代碼的可行性和正確性,我們將運算結果與調用相應庫函數計算得到的結果進行對比,并設計了部分測試用例進行測試。其中主函數代碼如下:
在上述代碼中,expValue(x),sinValue(x)和cosValue(x)這三個函數是本案例的代碼;exp(x),sin(x)和cos(x)是庫函數math.h中的函數。我們分別輸入x=1,1.57,3.14,50,700,-1,-1.57,-3.14,-50,-700來進行測試,運行結果均與庫函數運行結果相同,部分運行結果截圖如下:

圖1 =1時程序運行結果

圖2 =700時程序運行結果

圖3 =-700時程序運行結果
在實際教學中,除了與庫函數的運行結果進行對比,我們還讓學生將運行結果與手機自帶的計算器運算結果進行對比。學生會發現不同型號的手機運算結果并不完全相同,有部分運行結果甚至是錯誤的。比如在計算時,庫函數和本文中的程序運行結果均為:0.999999682932,而有些計算器計算出的結果為:0.017452406437,由于近似等于1才是合理的。計算余弦函數也存在類似問題。這樣的發現增加了學生對科學知識的敬畏感,同時也激發了學生認真學習的熱情。
該實踐教學案例的設計充分考慮了信息與計算科學專業兼具“數學”屬性和“計算機”屬性這一特征,將數學分析中非常重要的泰勒展開式融入在數據結構的線性表這一知識點中,同時,在進行多項式求值時,非常自然地融入思政元素。本文詳細地介紹了該實踐案例的實施過程,具有較強的可操作性。利用該實驗項目,學生可以體會到數學分析知識在數據結構中的應用,一方面提高學生對數學知識的理解;另一方面,學生利用所學的數據結構知識,可以切實地計算出初等函數的函數值,同時還能發現手機“計算器”這一應用中的一些錯誤,同學們也非常有成就感,提高了學生對數據結構的學習興趣。