


摘要:數據結構是計算機相關專業的一門核心的關于培養學生編程實踐能力的課程,然而目前數據結構實驗課教學效果不佳,學生編程能力較弱。作者提出五個方面的教學改革措施,希望可以提升學生編程能力。
關鍵詞:數據結構;實驗教學;教學改革;編程能力
中圖分類號:G642.0? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2020)35-0144-02
開放科學(資源服務)標識碼(OSID):
數據結構課程是普通高等院校計算機相關專業的核心課程,是學生從傳統的形象思維轉向科學的抽象思維的第一門課程[1]。數據結構課程的教學目標是使學生建立分析問題、使用計算機編程解決問題的思維方式,和培養學生使用計算機編程解決的能力。從課程目標上看,這不僅是思維方式的學習,也是提升編程能力的學習,而數據結構實驗課是提升學生編程能力的關鍵。目前地方性本科院校的大多數學過數據結構的學生的動手編程能力并沒有達到預期效果,普遍的較差。作者分析目前數學結構實驗課程教學的一些現狀,結合多年數據結構教學經驗提出教學改革的拙見。
1數據結構實驗課教學現狀
1.1實驗學時偏少
經作者調查,目前地方性本科院校的數據結構課程教學大綱基本相近,大綱總學時為64學時,其中理論學時為48學時,授課內容大致是:線性表、棧和隊列、串、數組和廣義表、樹與二叉樹、圖(網)、查找和排序等內容。理論課學時基本足夠,但實驗課學時僅為16學時,明顯不足,僅是教師在實驗課上解答學生上機過程中的各種疑問每次課都不夠用。
1.2重理論,輕實踐
在數據結構教學中,大多數教師注重理論知識的講授,而輕視實驗課的教學。經調查,一般的學生對于數據結構理論的學習,大多數學生在聽了教師的授課之后都能接受,但是,一旦要將課本上的理論知識運用到實驗中去,大多數的學生都被卡住。
1.3實驗課中缺少引導和演示
大部分教師實驗教學中沒有引導和演示數據結構實驗的上機編程實驗過程,只是給學生提供了參考程序,并沒有告訴學生參考程序是如何生產的,這對于大多數編程基礎不強的學生來說是一道巨大的鴻溝,仿佛編程是只可意會而不可言傳的,學生最終只得到了“魚”,而沒有得到“漁”,學生沒有建立起編程的思維,甚至有少數教師對于實驗課基本上是讓學生處于類似“放羊”的自由摸索狀態。然而地方本科院校的學生不像重點大學或一流大學的學生那樣具有較強的自學能力和自控能力,地方本科院校的學生在自由摸索編程的過程中必然會遇到一些問題,如果沒有及時的解決,久而久之學生學習的興趣會被大大地削減,直到最后的放棄。于是形成了數據結構難學的錯覺。
1.4學生編程基礎差
這是地方性本科院校學生普遍的問題,在大一時學習程序設計語言沒有打下堅實的編程基礎,其關鍵是沒有學會計算機思維,具體來說是不知道如何把客觀現實的問題轉換成為計算機能夠解決的簡單的重復的基本步驟。
1.5實驗設計不合理
目前大多數的高校采用的教材都是嚴蔚敏老師和吳偉民老師所編寫的經典教材,大部分學校也訂了主教材和習題集,但是在實驗課時大多數教師并沒有深入研究習題集上實驗部分,也沒有精心設計和選擇適當的實驗內容,部分教師沒有給學生演示如何上機實驗,更關鍵的是實驗內容沒有由淺入深地讓學生去學習和適應,導致大部分學生一遇到上機實驗,便束手無策、無從下手。
2 改革措施
2.1線上與線下教學相結合[2]
目前主流的授課方式仍是線下的課堂教學,但這種教學方式不可否認地存在著一些不足,教學資源主要是教科書、教師的PPT、相應參考書等,教學資源匱乏。隨著網絡應用不斷地深入各個方面,各大高校也開展了線上與線下教學相結合的教學方式。線上教學方式的出現很好地解決了前述的實驗學時不足的問題,教師可以把上機實驗過程的演示講解,或者在實驗過程中學生遇到的普遍問題的講解錄制成為視頻發給學生觀看。此外,視頻錄制完成后,教師通過回看自己錄制的視頻,不斷地對講授內容進行改進和優化,這對教師的教學水平也有較大的提升。
2.2在實踐中聯系理論
理論與實踐是構成數據結構課程整體的不可或缺的兩個部分,理論與實踐是一體的,從實踐中獲取理論,理論又指導實踐。拋開了實踐的理論,就是空談,沒有了理論,實踐也無從做起。在數據結構的教學中如果重理論輕實踐,那么基本上是把理科當成文科來教了,學生考試結束也就忘了。對于學生來說課本上的知識還是課本上的,并沒有轉化成為學生的知識和能力。能力從何來,就是通過把課本上的理論通過實踐去體會、去運用,從而轉化為學生自身的能力。例如,在線性表的順序存儲表示的代碼中,獲取第i個元素可以直接使用L.elem[i-1]這樣的方式取得,這體現了順序表的特性之一,隨機存取。而線性表的鏈式表示中則不能有這樣的方式得到元素,它必須從鏈表的表頭開始(p=L->next;),然后重復地執行循環體內的p=p->next;并計數然后才能取到第i個元素。只有深入理解代碼表示的含義之后,學生才能夠體會到代碼無處不在體現著數據結構的理論思想。
2.3教師引導和演示上機實驗
在開展實驗課布置實驗任務時,教師得提供必要的引導和演示,讓學生在開始進行實驗時有參考和模仿的對象,學生學習起來才會事半功倍。更重要的是,教師自身的實踐能力要過硬,不僅能把算法代碼敲出來,還要能把算法建立的思路過程演示給學生,學生才會從不斷地模仿提升到獨立地上機實驗[3],甚至創新。
2.4建立計算機思維的編程邏輯
其實每門程序設計語言的語法都不難掌握,關鍵是學生不會寫算法,或者說不會用計算機能夠完成的步驟給寫出來。針對這個問題,作者在授課時,對于程序的編寫的講解演示時總是從分析問題開始,引導學生形成解題思路,再把思路用計算機思維的方式用漢字給描述出來,最后再把漢字轉換成為代碼,放到集成開發環境中運行調試。關鍵是引導學生學會分析問題,用計算機思維描述解決問題的方法,逐漸讓學生形成計算機思維,從而提升學生的基礎編程能力[4]。
2.5由淺入深漸進地開展實驗
開展數據結構上機實驗前,精心地設計實驗任務,按照先易后難的漸進的方式制定上機實驗任務的框架。在任務框架里把上機實驗任務分為三個等級。1)驗證性實驗:給出題目及相應的算法,要求學生自己實現主函數,在主函數中要求學生按相關要求調用已給出的算法,完成相應程序功能;2)設計性實驗:給出某數據結構相應的存儲結構,要求學生在此數據存儲結構之上自行設計出部分指定功能的算法,并要求學生在主函數中進行調用,完成相應的程序功能;3)綜合性實驗:給出題目,要求學生分析問題中的數據,找出數據元素,分析數據元素之間的關系,確定相應數據結構,選擇適當的存儲結構,建立該存儲結構之上的相關算法,在主函數中調用編寫出的算法,完成題目要求的功能。近兩年所開設實驗內容如圖1所示。
線性表順序表示的驗證性實驗案例,如圖2所示。
一元多項式計算器的設計性實驗案例,如圖3所示。
上機實驗任務分了等級之后,例如原本樹和圖等較為難以理解和學習的部分算法便可設計成稍微簡單驗證性實驗,讓學生做了驗證性的實驗,對算法了進一步的理解之后,再進行更深入的設計性實驗和綜合性實驗,對于較難的知識也可做到由淺入深的、漸進式的學習。這對于學生學習難以理解和學習的知識是非常有幫助的。
上述的教學改革方法作者應用在17級計算機、18 級數據科學、19級計算機等7個班級的教學過程中,上機實驗對比17級之前的班級有明顯效果,特別是將上機實驗任務分等級并給出了任務框架后,學生自己動手做實驗的人數有了較大的增加,學生實驗過程中編寫的代碼和運行結果不再像以前的千篇一律。這充分說明學生實驗動手能力有了明顯提升。
3結束語
練好數據結構的上機實驗,對于提高計算機類專業學生的動手編程能力是非常有幫助的。通過線上與線下結合的教學方式,強調理論聯系實踐,教師引導演示,建立計算機思維邏輯,給出實驗任務框架由淺入深地開展上機實驗等方面進行教學改革,對于提升數據結構課程的上機實驗的作用是非常有效的。雖然數據結構的內容多年來沒有太大的改變,但是在提倡應用型人才的時代更注重學生的動手實踐能力,教師的教學方式和自身的能力也得不斷地改革和進步。
本文針數據結構實驗課的一些現狀提出了幾個方面的教學改革建議,希望在教學中進一步提升學生的動手編程能力。
參考文獻:
[1] 李冬梅,孟偉.“數據結構”課程的教學改革與教材建設[J].計算機教育,2012(14):38-41.
[2] 任雪萍.基于線上線下融合的數據結構教學改革[J].計算機教育,2019(7):5-9.
[3] 唐型基,吳小平,周長敏.以培養實踐能力為核心的《數據結構》“三步論”教學法研究[J].凱里學院學報,2013(03):89-91.
[4] 唐型基,周長敏.基于“計算思維”的程序設計方法在《C語言程序設計》教學中的運用[J].電腦知識與技術,2017(15):77-78.
【通聯編輯:朱寶貴】