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