楊秋紅
【摘要】 ? ?C語言課程與數據結構課程是高職院校中有關計算機專業較為基礎且重要的課程。傳統模式教學常以分開的形式進行授課,其教學效果并不理想,存在一些問題。針對這種情況,本文論述了將C語言課程與數據結構課程相結合,通過案例、分組式等教學方式,在實際教學中取得良好的效果。
【關鍵詞】 ? ?C語言 ? ?數據結構 ? ?課程整合
隨著教育的發展,高職教育課程需要在一些授課方式方法上進行改革。C語言課程與數據結構課程是計算機課程中兩門相對獨立又聯系緊密的課程,是高職院校計算機應用技術專業的重要組成部分。在傳統教學中,C語言和數據結構課程分開獨立授課,學生在學習過程中,很難將兩部分課程融合在一起。因此,通過對C語言與數據結構兩門課程的整合,來提高兩門課程教學質量,提供新思維,以期取得良好的效果。
一、C語言整合數據結構課程的重要性
首先來說,整合C語言與相關的數據結構課程,是因C語言在計算機程序課程中比較基礎,在這門課程學習中學生需要了解C語言的設計原理和語法規則,能夠運用C語言做好程序運用與設計。而數據結構對于C語言從某種意義上來講,是對其的延展,基于C語言程序基礎上對計算機設計語言進行深層次的探討與理解。數據結構是對C語言熟練運用和充分理解,C語言是掌握好數據結構的基石,兩門課程是相輔相成的[1]。在以往授課方式中,兩門課程學習是分開進行的,這樣安排課程在教學過程中存在弊端:在學習數據結構課程時,部分教學內容學生在實際學習中應用難度較大,要想熟練運用數據結構,透徹掌握,還要有良好的C語言功底,因此整合對高職教育水平、整體素養提高有著重要意義。
然而,從兩門課程學習過程來看,學生對兩門課程的學習并不理想,不能將課程熟練運用掌握。有如下原因:
1、C語言,是打開學生程序設計世界的第一門課程,大部分學生精力主要用在對基礎概念的理解和一些簡單編寫程序上,對結構體、指針、函數等深層次含義理解不夠,從而在處理復雜問題時,能力有所缺乏。而在數據結構學習中,因C語言學習環節薄弱,導致不能得心應手去學習數據結構。
2、大部分學校都會將兩門課程分為上、下兩學期進行授課。在數據結構課程學習中發現,大多數學生對C語言相關的基礎理論忘記殆盡,在學習數據結構時,不得不花費很大一部分時間去復習上學期學過的內容,在某種程度上增大學習任務量,增加學生對數據結構課程學習難度。
3、很多時候,學生在學習數據結構時,學會了算法,卻不知道怎樣運用,忘記了怎樣轉換,算法與程序之間無法融合。
最后,在學習C語言過程中,初級的程序,比較簡單,在授課中看不到學生對課程的熱情,對學習編程覺得困惑:這樣的程序編寫出來有什么意義?而數據結構課程恰好從學習中彌補了這點,復雜中解決實質性難題,激發學科潛能,調動學生興趣,主觀上讓學生熱愛學習。
二、C語言與數據結構課程的整合思路
2.1明確課程整合的方式與方法
我們整合課程的前提條件是要明確以什么樣的方式進行整合,來達到預期的效果。雖然C語言與數據結構兩門課程在內容上有著一定聯系,但也有相應區別。在整合過程中,是以其中哪一門課程為主,另一門課程為輔助參考;還是應該將原有的兩門課程結構、框架打散,重新組織框架;這需要根據教學目的,全方面去考慮。從兩本課程的內容特征來看,將內容打散,重新組織框架,能夠更好地將兩門課程的內容關聯,根據不同教學內容可以靈活性調整[2]。如果單純性以某一門課程為主要內容,另外一門課程作為輔佐,可能在教學知識點上比較生硬,結構邏輯搭建不夠清晰,影響兩門課程整合的整體效果。
2.2跟蹤課程整合構建反饋機制
無論是以其他方式教育機制的改革,還是以課程整合方式整改,都要考慮會有一定風險性。沒有成功的案例作為借鑒,也沒有成熟方案作為參考,難免會存在一些方案不合理性、措施無法落實等一系列問題。所以,要先做好整合課程的反饋與跟蹤,來確保課程整合的質量與效果。需要通過群體調研、教師研討、例會、報告等形式,對整合課程改革進度、教師教學方式方法、學生課堂表現、學習成績反饋等,全方面進行跟蹤調查,及時調整,避免課程整合的誤區。
三、C語言與數據結構課程整合的方式與方法
3.1明確知識要點,整合也要有區分
課程整合,并不是將所有知識點漫無目的進行融合,要做到先分解,再構建。無論是C語言還是數據結構,構建課程都有它核心要點,基礎理念。如果連最基本的理念都相互混淆,會給學生正常學習造成誤導。而是要根據教學需求,在合理背景下將兩門課程知識點融合為一體,構建新的課程。包括以下教學內容:
1、C語言程序常用數據的類型:包括表達式、運算符號、常量、指針、變量以及指針變量等的具體用法。
2、設計順序結構程序:主要包括函數和預處理命令的常用輸入與輸出用法。
3、程序設計-選擇結構:switch語句、if語句的用法。
4、程序設計-循環結構:break和continue語句、while循環、for循環以及do-while循環的相關用法。
5、設計模塊化程序的重要基礎:具體包括變量作用域和儲存類型、函數的相關調用和具體定義以及函數與指針。
6、結構體與共用體:主要對結構體變量結構體變量、指針以及枚舉類型等數據類型進行講解。
7、查找與排序算法:具體包括動態查找、選擇排序以及快速排序等。
8、圖:圖的遍歷、儲存、拓撲排序、關鍵路徑。
9、文件:針對文件需要掌握相關文件的具體打開、關閉以及讀寫等方法。
只有在準確區分知識概念之間的關聯和差異后,才能明確區別,整合創建聯系。只有區別出不同,才能整合出相同。在教學過程中,不能在某個知識點上單純進行原理上的詮釋,而是通過對兩門課程拆解整合,參照所有標準去解讀,這樣才能讓學生方便理解相關知識、概念。通過整合課程,可以有效實現相關知識點的一體化處理[3]。如果教師在授課的過程中,無法感覺到學生的積極性,沒有調動起對學習的主動性,導致具體的學習活動出現混亂現象。因此,當課程整合之后,對于教師和學生而言都會產生相應的改變,并要面臨新的挑戰。
3.2調動學生積極性
在C語言與數據結構課程整合教學過程中,要重視培養學生對學科的興趣,老師講的再好,學生沒有興趣,教學仍然不能達到最佳效果。怎樣才能在第一堂課就調動起學生對課程的積極性,非常關鍵。所以,整合課程首先要讓學生了解學到的知識在我們生活中有那些幫助,在生活中能夠為我們解決哪些事情,例如打磚塊、貪吃蛇等游戲,使學生的學習積極性得到充分調動,激發學生的好奇心理。與此同時,要對后續課程的重要性進行介紹。在實際教學中,要對學生在學科的知識接納程度上進行觀察,時刻調動積極性,實時講述一些生活案例,引導學生獨立思考與解決。
3.3引導式教學
兩門學科的整合課程在教學過程中,難點在于最終算法的實現。在解決問題時,一般采用逐級分析法進行解決,一般分為五步:引入-分析-框架-算法-設計。遇到問題時先要明確問題是什么,引入我們所需要思考的問題;然后對我們所研究的問題進行細化分析,在分析過程中得到解決方案;其次,將方案構造相對應框架劃分模塊;對程序關鍵步驟進行有效計算,學生與老師共同完成。最后,需要將相關算法具體轉化成為相應的C程序。
3.4網絡途徑教學
教師可以對已有的網絡交流平臺進行使用,如可以通過BBS等有效實現學術交流,根據學習要點,并由教師進行指引,使學生能夠準確獲取相關信息和資料,共同對問題進行探討。教師可以通過網絡途徑對一些典型案例進行查詢,再提供給學生。信息網絡化,為學生提供實踐性,提高學習積極性。
3.5案例教學
通過案例教學,可以開拓學生的思維,了解更多學科對我們的生活帶來哪些影響,更加熱愛、主動學習。在學習的過程中可以通過以下案例,來教學:
1、引入經典問題,來研究算法,比如用蠻力法方式來解決二維幻方問題,分治方法去解決棋盤覆蓋,貪心法來思考背包問題,回溯法來解決n皇后問題等等。
2、通過醫院多項式求和、走迷宮、約瑟夫環等案例的引入,增加理解,引入哈夫曼編碼增強對樹的應用。
3、以實際案例對隨機選數、選數、多項式求和等方面的應用進行講解。
四、實踐教學設計
在實際教學過程中,結合實際課程內容,為課程提供不同的教學方式,來達到在鞏固基礎知識的基礎上、深入了解教學內容。為全面提高學生應用能力,我們努力探索,對兩門課程整合內容進行改革。以驗證型、引導型等教學內容進行實驗,在題目設計中做好既覆蓋知識要點,又要符合現實生活,有趣不能乏味。
例如,讓學生在實踐中,選擇一個自己比較感興趣的題目,如華容道、坦克大戰等,學生對課題感興趣,在課程的討論與設計過程中,即讓學生自己有積極性,又培養了學生發現、解決、分析問題的能力。課題結束時,教師要對每一位學生的成果進行效驗,效果極佳。
學生在學習構建設計課程中,可安排一些關于程序設計類型題目,比如,我們取一個四位數的正整數,隨機不確定,讓我們的學生通過編寫程序,對四位數進行判斷,或者求出這四位數的總和,應用選擇結構的同時,是否運用循環結構也能達到一樣的編程效果。分層次、有目的地培養學生實操能力,讓學生在自主學習中獲取更多知識儲備和經驗積累。
每一門課程結束時,都要安排周期性檢測,要求學生以2-6人為小組單位,對小組進行綜合性實踐監測。以小組的形式進行考核,不僅能提高學生軟件的開發水平,還能培養學生團隊精神,增強學生在學習過程中的積極性,深入強化知識層次,開闊視野,為自己在日后實踐中,打下良好基礎。
五、結語
在高職教學不斷改革深入的今天,C語言和數據結構這兩門課程的整合已經具備充分的條件。不過,在課程具體整合的過程中會出現怎樣的問題,又要如何去解決這些問題,是當今教育工作者應該去研究,慎重考慮的。相信在課程整合工作不斷地摸索中,深化成熟,為社會各界培養更多精英。
參 ?考 ?文 ?獻
[1]趙穎珺,金寧敏. “C語言與數據結構”課程整合教學改革分析[J]. 計算機產品與流通,2019,(12):202.
[2]. 山西省2019年專升本選拔考試 C程序設計 數據結構(C語言版)[J]. 山西教育(招考),2020,(03):77-80.
[3]沈嫻. 基于C語言的數據結構課程教學改革研究探討[J]. 才智,2019,(15):133.