蘆碧波,孟祥龍,袁婷婷,王劉杰,朱世松,張建春
(河南理工大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,河南 焦作 454003)
Python 是一門入門簡(jiǎn)單、使用靈活、生態(tài)完整、應(yīng)用廣泛的語(yǔ)言[1]。國(guó)內(nèi)很多高校都開設(shè)了相關(guān)課程,開設(shè)專業(yè)不僅包括計(jì)算機(jī)、軟件工程、大數(shù)據(jù)等與信息技術(shù)密切相關(guān)的專業(yè),機(jī)械、生物、管理、包裝等專業(yè)也開設(shè)了這門課程[2-3]。
案例教學(xué)是程序語(yǔ)言類課程教學(xué)的有效手段之一[4-6]。為激發(fā)學(xué)生興趣,文獻(xiàn)[4]給出將Python 程序設(shè)計(jì)課程的案例以圖形化的方式進(jìn)行呈現(xiàn),給出一種圖形引導(dǎo)的案例式教學(xué)方案。文獻(xiàn)[5]針對(duì)交叉學(xué)科,提出一種通專融合的程序設(shè)計(jì)教學(xué)模式,并以材料專業(yè)的教學(xué)實(shí)踐為例,介紹了與該專業(yè)相關(guān)的案例教學(xué)方法。文獻(xiàn)[6]基于 Python 廣泛的計(jì)算生態(tài),給出了多個(gè)“有趣+有用”的教學(xué)案例,極大豐富了案例教學(xué)的體系和內(nèi)容。
實(shí)驗(yàn)是軟件類課程教學(xué)重要的一個(gè)環(huán)節(jié),但目前關(guān)于Python 實(shí)驗(yàn)教學(xué)的研究較少。筆者考慮在Python 程序設(shè)計(jì)這一課程的實(shí)驗(yàn)教學(xué)中,利用軟件工程的思想,將大型項(xiàng)目案例的解決方案分解成若干模塊,將模塊實(shí)現(xiàn)與實(shí)驗(yàn)內(nèi)容進(jìn)行有機(jī)結(jié)合,構(gòu)建一個(gè)問(wèn)題驅(qū)動(dòng)、分散實(shí)施的實(shí)施方案,以提高學(xué)生分析問(wèn)題和利用Python 程序解決問(wèn)題的能力。
傳統(tǒng)程序語(yǔ)言類課程實(shí)驗(yàn)教學(xué)安排與教材內(nèi)容同步,以復(fù)習(xí)、鞏固理論課的知識(shí)點(diǎn)為主,通過(guò)代碼驗(yàn)證理論課中講授的語(yǔ)法、函數(shù)和算法。通常的做法是對(duì)課堂代碼或者課后習(xí)題或其簡(jiǎn)單變形進(jìn)行編程實(shí)現(xiàn),該做法的優(yōu)點(diǎn)在于與課堂內(nèi)容結(jié)合緊密,便于理解,易于上手,其不足在于各個(gè)章節(jié)習(xí)題較為分散,實(shí)驗(yàn)與實(shí)驗(yàn)之間聯(lián)系松散,不利于學(xué)生形成一個(gè)整體的概念,缺乏一個(gè)紅線將其串聯(lián)起來(lái)。
問(wèn)題驅(qū)動(dòng)、分散實(shí)施的Python 程序設(shè)計(jì)語(yǔ)言課程的實(shí)驗(yàn)教學(xué)內(nèi)容設(shè)計(jì)方案主要思路是依據(jù)理論課教學(xué)內(nèi)容,將一個(gè)問(wèn)題解決實(shí)例或項(xiàng)目進(jìn)行合理分解,得到若干個(gè)模塊,在每個(gè)模塊與理論課教學(xué)內(nèi)容相對(duì)應(yīng)的情況下,將模塊的實(shí)現(xiàn)作為實(shí)驗(yàn)課教學(xué)內(nèi)容。在所有實(shí)驗(yàn)教學(xué)結(jié)束之后,要求學(xué)生將相關(guān)實(shí)驗(yàn)課內(nèi)容進(jìn)行連接、合并和擴(kuò)展,實(shí)現(xiàn)一個(gè)可以解決實(shí)際問(wèn)題的基本框架。
Python 程序語(yǔ)言設(shè)計(jì)課程需要傳授給學(xué)生分析問(wèn)題、解決問(wèn)題的方法。實(shí)驗(yàn)教學(xué)是學(xué)生了解課程用途的重要途徑之一。學(xué)習(xí)課程能干什么,是學(xué)生在學(xué)習(xí)每門課程中從始至終存在的一個(gè)問(wèn)題,學(xué)生也期望在實(shí)驗(yàn)教學(xué)中得到能力的提升。在編程類課程的實(shí)驗(yàn)課中,進(jìn)行基本的、簡(jiǎn)單的“翻譯數(shù)學(xué)公式”編程例子已經(jīng)不能滿足學(xué)生的要求。通過(guò)實(shí)驗(yàn)課提高學(xué)生分析問(wèn)題、表達(dá)問(wèn)題、解決問(wèn)題的能力,也是產(chǎn)出導(dǎo)向的工程教育理念在實(shí)驗(yàn)教學(xué)中的基本要求。因此,教師在組織教學(xué)中,需要重視并努力設(shè)計(jì)實(shí)驗(yàn)教學(xué)安排,強(qiáng)調(diào)“學(xué)以致用”的思想,發(fā)揮Python 應(yīng)用廣泛的優(yōu)勢(shì),將課程知識(shí)的應(yīng)用實(shí)例合理安排在實(shí)驗(yàn)教學(xué)環(huán)節(jié)中。另一方面,Python 語(yǔ)言在人工智能、數(shù)據(jù)分析等領(lǐng)域應(yīng)用廣泛,可以為實(shí)驗(yàn)設(shè)計(jì)提供豐富的應(yīng)用案例。授課教師可以根據(jù)自己的學(xué)科和專業(yè)背景,從科學(xué)研究、教學(xué)研究、社會(huì)調(diào)查等大量實(shí)際問(wèn)題中精選部分應(yīng)用指向明確的具體問(wèn)題,將其設(shè)計(jì)為實(shí)驗(yàn)課的內(nèi)容。這樣做可以豐富傳統(tǒng)實(shí)驗(yàn)課的教學(xué)內(nèi)容,還可以激發(fā)學(xué)生的學(xué)習(xí)熱情、提高其分析問(wèn)題和解決問(wèn)題的能力。
因各個(gè)學(xué)校情況不同,Python 語(yǔ)言程序設(shè)計(jì)課程在大一、大二、大三開課的情況都存在。各年級(jí)學(xué)生在理解問(wèn)題、分析問(wèn)題、處理問(wèn)題的能力方面存在較大的差異。因此,在進(jìn)行實(shí)驗(yàn)課設(shè)計(jì)中,應(yīng)遵循“由易到難、循序漸進(jìn)”的基本思想,并注意遵循下面的原則。
1)實(shí)際案例選取要遵循“易理解、能分析、可實(shí)現(xiàn)”的原則。
根據(jù)學(xué)生的理解能力和知識(shí)結(jié)構(gòu)選取合適的案例進(jìn)行實(shí)驗(yàn)設(shè)計(jì)是實(shí)驗(yàn)課安排的關(guān)鍵。案例背景遠(yuǎn)離生活,學(xué)生無(wú)法理解應(yīng)用背景,會(huì)對(duì)實(shí)驗(yàn)內(nèi)容失去興趣。實(shí)驗(yàn)課的目的并非進(jìn)行科學(xué)研究,案例解決方案涉及知識(shí)如果嚴(yán)重超出學(xué)生現(xiàn)有知識(shí)體系,學(xué)生將無(wú)法提出合理的解決方案,會(huì)增加學(xué)生實(shí)驗(yàn)課教學(xué)中的挫折感,極大地影響了實(shí)驗(yàn)教學(xué)效果。因此,選取的案例項(xiàng)目最好符合“易理解、能分析、可實(shí)現(xiàn)”這3 個(gè)原則。
2)實(shí)驗(yàn)項(xiàng)目難度要遵循“源于課本、高于課本”的原則。
實(shí)驗(yàn)教學(xué)的根本目的是促進(jìn)學(xué)生對(duì)理論教學(xué)內(nèi)容的掌握。一般案例中的內(nèi)容難度要高于課本,但是要注意不能過(guò)高或過(guò)偏。偏離課本太多會(huì)對(duì)正常的教學(xué)環(huán)節(jié)產(chǎn)生沖擊,對(duì)學(xué)生學(xué)習(xí)造成誤導(dǎo),因此應(yīng)把“源于課本”作為一個(gè)基本的原則。
3)實(shí)驗(yàn)過(guò)程要鍛煉“分析問(wèn)題、解決問(wèn)題”的能力。
Python 語(yǔ)言是解決問(wèn)題的工具。在問(wèn)題驅(qū)動(dòng)的實(shí)驗(yàn)課設(shè)計(jì)中,要注意要求學(xué)生深入了解問(wèn)題背景,鼓勵(lì)學(xué)生自己設(shè)計(jì)問(wèn)題解決方案,通過(guò)實(shí)驗(yàn)課能提高自己理解問(wèn)題、分析問(wèn)題的能力,而不是將實(shí)驗(yàn)課教學(xué)內(nèi)容簡(jiǎn)單定義為代碼的撰寫。
在傳統(tǒng)的Python 實(shí)驗(yàn)教學(xué)中,每個(gè)實(shí)驗(yàn)任務(wù)是獨(dú)立的,各個(gè)實(shí)驗(yàn)之間缺乏有機(jī)的聯(lián)系。在基于案例的實(shí)驗(yàn)教學(xué)中,由于案例本身的整體性,使得每個(gè)實(shí)驗(yàn)任務(wù)既有獨(dú)立性,實(shí)驗(yàn)任務(wù)之間也有一定的聯(lián)系。因此,可以將一個(gè)實(shí)際問(wèn)題的解決方案定義為一個(gè)大作業(yè),同時(shí)將問(wèn)題解決所需的每個(gè)模塊進(jìn)行分解,得到若干模塊,將每個(gè)具體模塊的實(shí)現(xiàn)安排在每次實(shí)驗(yàn)課上進(jìn)行,形成一個(gè)“小實(shí)驗(yàn)+大作業(yè)”的任務(wù)體系。
小實(shí)驗(yàn)任務(wù)的合理設(shè)計(jì)是實(shí)驗(yàn)課實(shí)施質(zhì)量的保證。在設(shè)計(jì)過(guò)程中,需要注意以下3 個(gè)原則。
1)合理性原則。
將問(wèn)題解決方案分解為模塊的方案要合理。一個(gè)案例項(xiàng)目中包含若干環(huán)節(jié),可以按照軟件工程的思想,將項(xiàng)目合理分解為邊界清晰、內(nèi)容具體、功能獨(dú)立的模塊。
2)覆蓋性原則。
各個(gè)模塊的解決方案要與課堂教學(xué)內(nèi)容具有一定的重合度。課堂教學(xué)內(nèi)容涉及學(xué)科的各個(gè)方面,具有一定的廣度和深度。項(xiàng)目解決方案不可能覆蓋所有的知識(shí)點(diǎn),但需要覆蓋一定數(shù)量的知識(shí)點(diǎn)。每個(gè)模塊的解決方案要與對(duì)應(yīng)的課堂教學(xué)內(nèi)容具有較強(qiáng)的關(guān)聯(lián)度。
3)可擴(kuò)展原則。
實(shí)驗(yàn)課的教學(xué)任務(wù)要具有一定的擴(kuò)展性。實(shí)驗(yàn)課學(xué)時(shí)有限,一個(gè)問(wèn)題的解決方案即使經(jīng)過(guò)分解,任務(wù)量仍然較為巨大。因此在實(shí)施過(guò)程中,需要在實(shí)驗(yàn)課中安排核心且具體的任務(wù)。學(xué)生在實(shí)驗(yàn)課上完成基本任務(wù)后,可以較好地進(jìn)行推廣或者利用發(fā)散思維處理同類問(wèn)題,激發(fā)學(xué)生的自主創(chuàng)新能力。
在傳統(tǒng)的實(shí)驗(yàn)課中,由于實(shí)驗(yàn)內(nèi)容較為單一且無(wú)需過(guò)多的背景,因此實(shí)驗(yàn)準(zhǔn)備過(guò)程較為簡(jiǎn)單。但在基于項(xiàng)目的Python 實(shí)驗(yàn)安排中,在實(shí)驗(yàn)準(zhǔn)備中需要考慮每個(gè)模塊的目的以及模塊之間的聯(lián)系。具體來(lái)說(shuō),需要在以下3 個(gè)方面做好實(shí)驗(yàn)準(zhǔn)備。
1)實(shí)驗(yàn)背景說(shuō)明。
項(xiàng)目每個(gè)模塊都有其明確的背景,在實(shí)驗(yàn)課前應(yīng)向?qū)W生介紹實(shí)驗(yàn)背景、解釋實(shí)驗(yàn)?zāi)康?,以幫助學(xué)生明確實(shí)驗(yàn)要求,在對(duì)背景的理解中促使學(xué)生進(jìn)行思考,并結(jié)合課堂教學(xué)內(nèi)容設(shè)計(jì)合適的算法對(duì)問(wèn)題進(jìn)行求解,逐漸提高設(shè)計(jì)方案、解決問(wèn)題的能力。
2)實(shí)驗(yàn)數(shù)據(jù)準(zhǔn)備。
傳統(tǒng)的實(shí)驗(yàn)任務(wù)單一、數(shù)據(jù)簡(jiǎn)單,常使用虛擬數(shù)據(jù)或者小樣本數(shù)據(jù)。為了增強(qiáng)實(shí)際問(wèn)題的真實(shí)性,最好在實(shí)驗(yàn)課中使用真實(shí)的大規(guī)模數(shù)據(jù)。但基于項(xiàng)目的實(shí)驗(yàn)安排中,由于每個(gè)模塊與前后流程緊密相關(guān),因此每次實(shí)驗(yàn)的數(shù)據(jù)也相對(duì)固定的內(nèi)容和格式要求,需要在實(shí)驗(yàn)課前準(zhǔn)備好實(shí)驗(yàn)的輸入數(shù)據(jù)并分發(fā)給學(xué)生。
3)輸出結(jié)果要求。
在真實(shí)項(xiàng)目實(shí)施中,對(duì)每個(gè)模塊的輸入輸出有較為具體而詳細(xì)的要求。而一般實(shí)驗(yàn)課的實(shí)驗(yàn)結(jié)果輸出較為隨意。為更加真實(shí)的模擬項(xiàng)目實(shí)施情況,需要對(duì)實(shí)驗(yàn)的輸出結(jié)果給出強(qiáng)制要求,以保證上下模塊之間的數(shù)據(jù)交換。
本科專業(yè)綜合評(píng)價(jià)又叫專業(yè)評(píng)估,是我國(guó)“五位一體”高校本科教學(xué)評(píng)估制度的重要組成部分。自2016 年國(guó)務(wù)院教育督導(dǎo)委員會(huì)辦公室下發(fā)《關(guān)于組織開展普通高等學(xué)校本科專業(yè)評(píng)估試點(diǎn)工作的通知》后,全國(guó)20 個(gè)多省、自治區(qū)和直轄市進(jìn)行了本科專業(yè)評(píng)估。在河南省計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)評(píng)估中,有41 所高校的43 個(gè)專業(yè)參加了評(píng)估。對(duì)河南省計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)評(píng)估數(shù)據(jù)進(jìn)行分析,有助于提升河南省高校專業(yè)建設(shè)質(zhì)量,提高專業(yè)建設(shè)水平,具有很強(qiáng)的實(shí)際意義。
專業(yè)評(píng)估產(chǎn)生的數(shù)據(jù)在網(wǎng)上進(jìn)行公示,公示數(shù)據(jù)包括客觀的數(shù)字?jǐn)?shù)據(jù)和描述性的文檔數(shù)據(jù)。數(shù)字?jǐn)?shù)據(jù)包括學(xué)生人數(shù)、師資人數(shù)、教學(xué)成果、學(xué)生成果等可以直接量化的數(shù)字信息,文檔數(shù)據(jù)包括專業(yè)特色、教學(xué)管理規(guī)章制度等文字性素材。
公示網(wǎng)站結(jié)構(gòu)清晰、數(shù)據(jù)翔實(shí)、冗余數(shù)據(jù)少,便于進(jìn)行數(shù)據(jù)獲取和分析。評(píng)估數(shù)據(jù)與學(xué)生校園學(xué)習(xí)和生活結(jié)合較為緊密,學(xué)生對(duì)此項(xiàng)目背景非常熟悉,易于理解項(xiàng)目的目的、意義和結(jié)果,是一個(gè)比較好的實(shí)驗(yàn)課教學(xué)案例。
根據(jù)評(píng)估數(shù)據(jù)分析流程,以及所用教材的具體情況,將評(píng)估數(shù)據(jù)分析分為若干流程,并與課程中的相關(guān)實(shí)例進(jìn)行對(duì)應(yīng)。圖1 給出了河南省計(jì)算機(jī)科學(xué)與技術(shù)本科專業(yè)評(píng)估數(shù)據(jù)分析的流程及對(duì)應(yīng)的實(shí)驗(yàn)課內(nèi)容。
圖1 模塊分解與實(shí)驗(yàn)項(xiàng)目安排
從圖1 可知,評(píng)估數(shù)據(jù)獲取、評(píng)估數(shù)據(jù)存儲(chǔ)、評(píng)估數(shù)據(jù)分析、評(píng)估結(jié)果展示4 個(gè)流程模塊對(duì)應(yīng)了6 個(gè)實(shí)驗(yàn)項(xiàng)目。每個(gè)實(shí)驗(yàn)項(xiàng)目均為課堂教學(xué)內(nèi)容,但在問(wèn)題背景和實(shí)驗(yàn)內(nèi)容上有所創(chuàng)新。實(shí)驗(yàn)內(nèi)容可以實(shí)現(xiàn)各個(gè)模塊的基本要求。筆者在教學(xué)中使用的是嵩天等人編寫的《Python 語(yǔ)言程序設(shè)計(jì)》,書中安排了21 個(gè)實(shí)例,6 個(gè)實(shí)驗(yàn)項(xiàng)目覆蓋了所有實(shí)例的28%,具有較好的覆蓋度。
評(píng)估指標(biāo)體系包含了7 個(gè)一級(jí)指標(biāo)、14 個(gè)二級(jí)指標(biāo)和36 個(gè)觀測(cè)點(diǎn)。評(píng)估體系龐大、指標(biāo)點(diǎn)多,每個(gè)指標(biāo)點(diǎn)中的觀測(cè)點(diǎn)會(huì)產(chǎn)生多種數(shù)據(jù)。如在教學(xué)效果指標(biāo)點(diǎn)中,即包含學(xué)生參加大學(xué)生創(chuàng)新創(chuàng)業(yè)訓(xùn)練計(jì)劃、學(xué)生參與科研項(xiàng)目情況、學(xué)生獲省級(jí)以上各類競(jìng)賽獎(jiǎng)勵(lì)情況、學(xué)生發(fā)表學(xué)術(shù)論文情況等多個(gè)觀測(cè)點(diǎn)。多樣而豐富的數(shù)據(jù)為構(gòu)建差異化的實(shí)驗(yàn)提供了可能。在具體實(shí)施中,要求每個(gè)學(xué)生處理不同觀測(cè)點(diǎn)的數(shù)據(jù),進(jìn)行數(shù)值統(tǒng)計(jì)和可視化分析,并對(duì)分析結(jié)果進(jìn)行描述。這樣的做法避免了所有學(xué)生都處理相同數(shù)據(jù)的問(wèn)題,減少了抄襲的可能性,也促進(jìn)學(xué)生之間進(jìn)行討論,提高了學(xué)習(xí)熱情。
在實(shí)施過(guò)程中,對(duì)學(xué)生進(jìn)行分組編排,每組人數(shù)視授課班級(jí)大小情況而定,在小組內(nèi)指定1~2 名學(xué)生負(fù)責(zé)技術(shù)方面問(wèn)題,為組內(nèi)學(xué)生提供技術(shù)方面的咨詢。在實(shí)驗(yàn)課結(jié)束之后,不僅要求學(xué)生提交每次實(shí)驗(yàn)的實(shí)驗(yàn)報(bào)告,還要求學(xué)生提交一個(gè)大作業(yè)的報(bào)告,匯報(bào)一個(gè)濃縮版項(xiàng)目的實(shí)施方案和數(shù)據(jù)分析效果。基于項(xiàng)目前期實(shí)施的積累和案例教學(xué)的相關(guān)結(jié)果,筆者對(duì)河南省計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)評(píng)估情況進(jìn)行了分析和總結(jié),分析師資隊(duì)伍、教學(xué)資源、學(xué)生成果等方面的數(shù)據(jù),梳理出24 個(gè)客觀指標(biāo)并統(tǒng)計(jì)出這些指標(biāo)的均值、標(biāo)準(zhǔn)差等統(tǒng)計(jì)結(jié)果[7]。此外,還對(duì)全省專業(yè)特色文檔進(jìn)行了基本的詞頻分析,高頻詞匯對(duì)應(yīng)的詞云如圖2 所示。
圖2 專業(yè)特色高頻詞匯對(duì)應(yīng)的詞云
案例式Python 實(shí)驗(yàn)教學(xué)方法,可以將案例的各個(gè)模塊與課堂教學(xué)內(nèi)容進(jìn)行有機(jī)結(jié)合,提高了學(xué)生的學(xué)習(xí)興趣。在今后的教學(xué)實(shí)踐中,一方面充分利用Python 豐富的計(jì)算生態(tài),不斷補(bǔ)充適用于Python 實(shí)驗(yàn)教學(xué)的項(xiàng)目與案例,另一方面將繼續(xù)利用軟件工程的基本思想和分析方法,繼續(xù)探索模塊分解的規(guī)律,將案例式教學(xué)推廣到其他課程的教學(xué)中。