[摘 要]本文旨在探討如何提升高職學生在Python程序設計中的算法能力,并提出有效的教學方法。Python語言作為一門流行的編程語言,其簡潔和易學性使得在高職計算機類學科中得到廣泛應用。然而,許多高職院校計算機專業學生在學習Python語言時,往往面臨算法設計和編程能力較低的困境。為幫助學生提升Python語言的算法能力,本文提出基于項目實踐和案例分析的實踐教學方法,學生可以通過解決實際問題并編寫Python代碼提高算法設計與實踐能力,同時通過設計翻轉課堂等教學方法激發學生的學習興趣和積極性。
[關鍵詞]Python;教學設計;算法能力;職業教育
一、研究背景
在全球化的信息時代,計算機科學與技術已經成為推動社會進步的重要力量,而編程語言作為計算機科學的基礎,更是起著極其重要的作用。Python是一種目前比較流行的解釋型編程語言,以其簡潔易懂、功能強大、易于上手等特點,廣受行業和教學界的青睞,應用領域覆蓋了人工智能、大數據處理、網絡編程、科學計算等多個方面,這使得Python編程語言在計算機類學科中占據越來越重要的地位[1]。
然而,當前高等職業教育中Python程序設計課程在教學中仍存在一些問題。首先,在教學中學生雖然已經掌握和理解Python語言的基礎知識,但是學生在進行更深入的學習和實際開發過程中會遇到各種困難;其次,目前的教學方法較為傳統,缺乏針對性和實效性,導致學生的學習效果不佳,對Python的熱情和興趣也難以持久。此外,在教學實踐中,部分學生對于Python語言的數據結構和算法的掌握不夠準確,以至于在解決實際問題的過程中,缺乏有效的思路和方法,這對于學生的實踐開發能力提升有著非常大的
影響。
因此,如何有效提升高職學生的算法設計能力、加強學生對Python數據結構與算法的理解和應用,以及如何通過有效的教學策略和措施,提高學生的實踐開發能力,成為當下高職教育領域亟待解決的問題[2]。
二、厘清大數據處理、大數據分析、人工智能與算法設計之間的關系
大數據處理、大數據分析、人工智能和算法設計之間有著密切的關系,它們相互交織并共同推動數據驅動的智能化應用和決策。
首先,大數據處理是指對大規模數據進行采集、存儲、處理和管理的過程。它提供了收集和存儲大量數據的基礎,以便后續進行數據分析和建模。大數據處理技術包括數據清洗、數據集成、數據存儲和分布式計算等。大數據分析是指利用大數據技術和算法設計對數據進行統計和分析,以揭示隱藏在數據中的規律。數據分析可以通過描述統計、推斷統計、關聯分析、聚類分析、分類和預測等方法,從大數據中挖掘出有價值的信息[3]。因此,大數據分析是大數據處理過程中的一個關鍵環節。人工智能則是利用計算機技術實現人的智能行為。在大數據處理和數據分析的基礎上,人工智能技術通過學習和推理,能夠自動識別和理解復雜的數據結構和數據規律。人工智能的算法包括機器學習、深度學習、自然語言處理、圖像處理等,這些算法通過對數據的學習和模式匹配,使得人工智能系統能夠具備解決問題和做出決策的能力。
而算法設計則是人工智能的核心,在大數據處理和大數據分析的背景下,算法設計扮演著極其重要的角色[4]。算法設計既包括常見的統計和數學算法,也包括基于機器學習和深度學習的算法。好的算法設計能夠提高數據分析和人工智能系統的準確性和效率,從而實現更好的決策和擁有更強的預測能力。
因此大數據處理、大數據分析、人工智能和算法設計之間是相互依存、相互促進的關系。大數據處理提供了數據基礎,數據分析揭示了數據之間的關系及規律,而人工智能和算法設計則通過學習和推理,將這些模式和規律轉化為智能決策和預測[5]。
三、目前Python課程中算法設計部分的教學現狀分析
(一)學生基礎不同:學生的編程基礎可能參差不齊,高中層次學生可能沒有接觸過編程但是數學基礎較好,而中職層次的學生可能已經有一定的編程經驗,但是數學基礎較差。這種情況會對教學產生影響,需要教師在教學中對不同層次學生的學情進行分析,并提供適合不同水平學生的教學資源和輔導。
(二)算法抽象性難以理解:算法設計的內容通常較為抽象,對一些學生來說,難以理解其原理和實現方式。這可能導致一些學生對算法設計產生抵觸情緒,從而影響其學習效果。
(三)缺乏實踐性教學:在一些高等職業院校Python程序設計課程中,算法設計部分的教學偏重于理論講解,缺乏實踐性教學。學生可能只是單純地理解了算法的原理,卻無法將其應用到解決實際問題中。
(四)缺乏實例和練習:學生對于算法設計需要大量實例和練習來加深理解。然而,在一些課程中,實例和練習的數量較少,這導致學生的實際應用能力和編程能力得不到充分鍛煉。
(五)理論與實踐脫節:在某些課程中,算法設計的理論與實踐之間存在脫節現象。學生雖然掌握了算法的原理,但卻無法將其轉化為實際的可行解決方案。
四、建立Python算法設計部分的教學模型
(一)確定教學目標:明確Python算法設計部分的教學目標,例如學生應該掌握什么樣的算法設計知識和技能,以及能夠解決怎樣的問題。
(二)制訂教學計劃:根據教學目標,制訂教學計劃,包括教學內容、教學方法和教學資源等。教學內容可以涵蓋常見的算法設計思想和技巧,例如遞歸、動態規劃、貪心算法等。教學方法可以結合實例和練習,以及項目實踐,讓學生在實際操作中學習算法設計的過程。教學資源可以包括教材、課件、示例代碼等。
(三)分層教學:根據學生的基礎和能力水平,進行分層教學。對于初學者,可以從基礎的算法設計思想開始講解,例如遞歸和循環等。對于進階學生,可以深入講解更復雜的算法設計思想和技巧,例如動態規劃和分治法等。
(四)實踐教學:注重實踐性教學環節,通過編程實例、項目實踐等方式,讓學生親自動手實踐算法設計的過程。教師可以提供一些實際問題,并引導學生運用算法設計知識解決問題,加深學生對算法設計的理解和掌握。
(五)引導思考:在教學過程中,應該引導學生進行思考,而不僅僅將算法設計的步驟和代碼呈現給學生。教師可以提出問題,引導學生思考解決問題的思路和方法,培養學生的算法設計思維能力。
(六)反饋與評估:及時反饋學生的學習情況,并進行評估。可以通過作業、小測驗、項目實踐等形式對學生進行評估,了解學生對算法設計的掌握程度,及時發現問題并進行指導。
在建立Python算法設計部分的教學模型時,可以根據實際情況進行調整和改進,以提高學生的學習效果和應用能力。同時,教師和學生的互動和反饋也是不可忽視的重要環節,通過與學生的互動和反饋,可以進一步優化教學模型。
五、教學設計案例
下面以“斐波那契數列”為例(Python歸并排序的教學設計示例)。
教學目標:通過編寫代碼來實現斐波那契數列的計算,并讓學生理解遞歸和迭代的概念和應用場景。教學時長:1小時。
準備工作:一臺計算機或設備,安裝 Python 解釋器。可以編寫和運行 Python代碼的環境,如 Jupyter Notebook 或文本編輯器和終端。
(一)引入斐波那契數列的概念(5分鐘):
解釋斐波那契數列的定義和規律:前兩個數字為 1,之后的每一個數字都是前兩個數字之和。舉例說明斐波那契數列的前幾個數字:1, 1, 2, 3, 5, 8……
引導學生思考:如何通過編寫代碼來計算斐波那契數列?
(二)解釋遞歸的概念和實現斐波那契數列的遞歸算法(15分鐘):
介紹遞歸的概念:函數調用自身的過程。編寫遞歸函數`fibonacci_recursive()`來計算斐波那契數列。使用遞歸函數計算斐波那契數列的過程進行示范。強調遞歸算法的特點:簡潔但效率較低。
(三)解釋迭代的概念和實現斐波那契數列的迭代算法(15分鐘):
介紹迭代的概念:循環執行一段代碼的過程。編寫迭代函數`fibonacci_iterative()`來計算斐波那契數列。使用迭代函數計算斐波那契數列的過程進行示范。強調迭代算法的特點:效率較高但代碼較復雜。
(四)代碼原型以及應用方向講解
斐波那契數列是一個非常經典的數列,每個數都是前兩個數的和。斐波那契數列在實際中有許多應用,下面介紹其中幾個常見的應用場景以及詳細的Python代碼解釋。
1.自然科學中的建模:斐波那契數列可以用于描述一些自然界的現象,如兔子繁殖、植物生長等。例如,當一對兔子從出生后的第3個月起(包括第3個月)每個月可以生一對兔子,而每對兔子從第2個月起(包括第2個月)才能生育,則兔子的總數符合斐波那契數列。
2.金融和投資領域:斐波那契數列可以用于研究金融市場中的股票價格走勢、利潤增長等。一些技術分析工具和交易策略也以斐波那契數列為基礎。
3.算法和編程:斐波那契數列在算法和編程中也有一些應用。例如,可以使用遞歸算法或動態規劃算法來計算斐波那契數列。
4.練習與實踐(20分鐘):
讓學生編寫代碼,使用遞歸方法來計算斐波那契數列的第10個數字。提供一些額外的挑戰和問題,如計算斐波那契數列的第n個數字,或者通過字典來優化迭代算法的效率等。
5.總結與討論(5分鐘):
讓學生分享其代碼和解決方案,在課堂上進行展示和討論。與學生一起總結遞歸與迭代的優缺點,以及斐波那契數列的計算方法。引導學生思考和討論其他優化斐波那契數列計算方法的可能性。
六、Python算法設計部分教學設計的重點與難點
(一)基本數據結構:重點是理解和應用Python中的基本數據結構,如列表、字典、集合等。學生需要了解每種數據結構的特點、方法和操作,并能夠根據問題的需求選擇合適的數據結構來解決問題。
(二)算法設計和分析:重點是培養學生的算法設計思維和分析能力。學生需要理解不同的算法設計思想(如貪心法、分治法、動態規劃等)和常見的算法模式(如遞歸、迭代、回溯等),并能應用這些思想和模式解決各種問題。此外,學生還需要學習如何分析算法的時間復雜度和空間復雜度,以評估算法的效率和資源消耗。
(三)問題建模和抽象能力:重點是培養學生的問題建模和抽象能力。學生需要學會將實際問題轉化為計算機可處理的形式,包括定義輸入輸出、確定問題的核心要素、設計數據結構和算法等。這需要學生具備良好的問題分析和抽象能力,能夠從復雜的問題中抽取出關鍵的信息和特征,并將其轉化為清晰的問題描述。
(四)算法調試和優化:重點是培養學生的算法調試和優化能力。學生需要學習如何調試算法中的錯誤和問題,包括利用調試工具和技巧進行代碼的斷點調試、變量跟蹤等。另外,學生還需要了解常見的算法優化技術,如剪枝、緩存、并行計算等,以提高算法的效率和性能。
結束語
本文對Python程序設計課程中算法設計部分的教學設計進行了研究,重點討論了在教學過程中應注意把握的重難點,以提升學生的算法能力。通過充分分析教學內容、學生需求和教學目標等因素,得出以下結論:
首先,對于算法設計部分的教學設計,應注重的重點包括:一是強調培養算法思維,通過分析真實問題和解決方案設計,引導學生掌握算法設計的基本思想和方法。二是注重訓練算法優化與效率,教師應引導學生評估和改進算法,提高程序的運行效率。三是加強實際應用訓練,通過案例演練和項目實踐,培養學生將算法知識應用到實際問題的能力。
其次,在教學設計中,需要重點關注以下難點。一是學生初學階段可能對算法設計的復雜性感到困惑,教師應采用啟發式問題和實例講解等方式,幫助學生理解和掌握算法設計的核心概念。二是算法優化和效率問題對學生來說可能是一個挑戰,教師應引導學生學習采用常見的算法優化技巧,并通過實踐對比分析不同算法的效率。三是實際應用的培養需要學生進行更多的實際項目和綜合性任務的實踐訓練,教師可以設計真實的案例和項目,激發學生的興趣和積極性。
只有把握好重難點問題,才能更好地指導教學實踐,提高學生的算法能力。在此基礎上,可以思考將其他領域的算法應用和案例引入教學中,進行學科交叉教學,以培養學生的跨學科思維能力和創新能力。相信通過不斷改進和創新的教學設計,高職“Python程序設計”課程將能更好地提升學生的算法能力,為學生的職業發展和科學研究打下堅實的基礎。
參考文獻
[1]劉東文.信息時代:計算機科學助推建筑業智能化發展[J].區域治理,2019(46):61-63.
[2]王琳,張學波.遞歸算法課堂教學設計探討[J].電腦知識與技術,2021,17(27):208-209,250.
[3]張駿.信息技術學科核心素養落實策略:以制作課程表一課為例[J].中國信息技術教育,2020(15):97-99.
[4]岳彥龍,張學軍,梁嶼藩.人工智能教學如何培養高中生的計算思維?基于人工智能案例驅動的Python編程教學的實證研究[J].基礎教育,2022,19(1):74-84.
[5]于寧,聶清林.突出問題求解能力訓練的Python課程設計[J].計算機時代,2022(3):110-113.
作者簡介:蘭曉天(1981— ),男,漢族,貴州貴陽人,貴州經貿職業技術學院,副教授,本科。
研究方向:計算機應用技術。