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