胡金成
(上海立信會計金融學(xué)院信息管理學(xué)院,上海 201209)
Python是一種廣泛使用的解釋型、高級和通用的編程語言,支持多種編程范型,包括函數(shù)式、指令式、結(jié)構(gòu)化、面向?qū)ο蠛头瓷涫骄幊獭K恼Z言結(jié)構(gòu)以及面向?qū)ο蟮姆椒梢詭椭绦騿T為小型的和大型的項目編寫清晰的、合乎邏輯的代碼。2021年10月,TIOBE排行榜中Python成功地超越了霸榜已久的C和Java語言,奪得編程語言排行榜首的位置。TIOBE CEO Paul Jansen評價稱:“20多年來,我們第一次有了一個新的領(lǐng)導(dǎo)者:Python編程語言。Java和C的長期霸權(quán)地位已經(jīng)結(jié)束。Python,起初是一種簡單的腳本語言,作為Perl的替代品,現(xiàn)在已經(jīng)變得成熟。它的易學(xué)性、大量的庫以及在各種領(lǐng)域的廣泛使用,使它成為當(dāng)今最流行的編程語言。”而Python成為新時代編程使用率最高的原因并不是偶然的,而是其迎合了時代的特征。在大數(shù)據(jù)時代,Python依賴大量宿主語言以外部腳本形式運行,綜合了各行各業(yè)的人,把經(jīng)驗價值代碼以模塊的方式可以隨意組裝編譯運行,擴展了Python第三方包,大大增加了Python編碼的高效性和易用性。目前Python在金融數(shù)據(jù)處理、人工智能等領(lǐng)域廣泛使用,具備獨特優(yōu)勢。
在高等財經(jīng)類院校開設(shè)對所有專業(yè)開設(shè)Python課程,有助于財經(jīng)類人才編程能力的培養(yǎng)。對于非工科類院校,學(xué)生的計算機思維和實踐能力相對薄弱,他們的基礎(chǔ)計算機理論知識相對匱乏,如何制定合適的Python課程教學(xué)目標,設(shè)計合理的教學(xué)內(nèi)容,選擇恰當(dāng)?shù)慕虒W(xué)方法,提高學(xué)生的學(xué)習(xí)興趣,凸顯財經(jīng)類院校辦學(xué)特色,成學(xué)校計算機類基礎(chǔ)課程教學(xué)研究中需要解決的主要問題。
Python課程內(nèi)容一般包括:Python環(huán)境配置、基本語法、程序流控制、列表、字典、元組、集合、類與對象、文件處理、異常處理、第三方庫等知識。
這些知識的講解需要大量的時間,但學(xué)校通識類課程只有32課時。現(xiàn)實授課過程中,既要對理論知識進行講解又要讓學(xué)生上機實踐,難以系統(tǒng)地覆蓋這么多內(nèi)容。
大一學(xué)生的計算機水平差異較大,主要原因有兩方面。首先由于不同地區(qū)在計算機教育資源和教育水平上的差異導(dǎo)致的,這是比較常見的原因,比如一些地區(qū)教育資源比較豐富,很多同學(xué)在初、高中,甚至是小學(xué)階段就會接觸到一些計算機知識,還有很多同學(xué)會參加一些計算機專業(yè)比賽,這部分同學(xué)進入大學(xué)之后,由于前期積累了部分相關(guān)知識,會有比較明顯的優(yōu)勢。其次是一部分同學(xué)在高考結(jié)束之后,會通過網(wǎng)絡(luò)或線下培訓(xùn)等方式重點學(xué)習(xí)一下計算機專業(yè)知識,比如學(xué)習(xí)一下計算機操作系統(tǒng)或者編程知識,這些同學(xué)進入到大學(xué)之后,相對于沒有任何計算機基礎(chǔ)知識的同學(xué)來說,也會有比較明顯的優(yōu)勢。按照歷史經(jīng)驗來看,在高考結(jié)束之后學(xué)習(xí)計算機知識是比較常見的,尤其是選擇計算機相關(guān)專業(yè)的同學(xué),還是應(yīng)該提前了解一些專業(yè)知識。
財經(jīng)類院校學(xué)生相對理工科院校對計算機課程相對多一些畏懼,而Python課程由于涉及許多理論、計算機內(nèi)部工作原理等,大一新生沒有任何編程基礎(chǔ),剛開始的學(xué)習(xí)曲線有一些陡峭。所以很多學(xué)生在學(xué)習(xí)時往往表現(xiàn)為信心不足,興趣不大,再加上一些畏懼心理,導(dǎo)致學(xué)習(xí)效果下降,上課難度加大。
Python程序設(shè)計作為一種語言類工具,是一種描述和解決現(xiàn)實問題的一種新的方式。類似于語言、繪畫、數(shù)學(xué)等描述世界的方式一樣,學(xué)習(xí)編程也需要培養(yǎng)一種新的程序思維表達方式。而這種思維方式的獲得需要大量的時間進行編碼、思考解決實際問題。
如今,大多學(xué)生的學(xué)習(xí)方式大多跟著老師把書上的很多簡單案例重復(fù)敲代碼,然后運行成功就認為掌握了相關(guān)知識點,便迅速開始下一個知識點的學(xué)習(xí)。學(xué)生在這個過程中,一般只是機械性的敲代碼,并沒有加入多少自己思考過程。這會導(dǎo)致學(xué)生真正自己解決具體任務(wù)時,拋開書本,卻發(fā)現(xiàn)無法下手、錯誤頻出。所以要真正掌握這門語言,僅僅通過重復(fù)性、機械性得跟著老師抄寫代碼的學(xué)習(xí)方式是不可取的。要真正掌握Python語言編程的精髓,除了掌握基本語法結(jié)構(gòu)之外,更多的是需要結(jié)合具體項目案例進行綜合訓(xùn)練,加入自己對實際問題思考的過程,進而才能夠培養(yǎng)出編程思維方式。所以,傳統(tǒng)的課程的實踐環(huán)節(jié)并不能有效培養(yǎng)和提高學(xué)生抽象思維和編寫完成程序的能力。
課程的考核是教學(xué)的最終環(huán)節(jié),也是授課過程的指揮棒,合理的考核方式能夠指導(dǎo)整個教學(xué)環(huán)節(jié)的設(shè)計。目前關(guān)于Python程序設(shè)計課程的考核多數(shù)是通過平時成績(一般占比30%)和期末考試成績(一般70%)兩部分來衡量。平時成績主要以平時的考勤和課堂表現(xiàn)以及作業(yè)為考核方法。期末考試一般以閉卷方式考試,題目涉及選擇、填空、判斷、程序設(shè)計題,主要考查學(xué)生對基本概念語法和結(jié)構(gòu)的記憶和理解。但對于Python程序設(shè)計這類偏實踐類的課程用閉卷考試的方法難以考查學(xué)生運用編程語言解決實際問題的能力,并且這種考核也難以調(diào)動學(xué)生學(xué)習(xí)的積極性。
美國周以真教授曾提及過計算機科學(xué)的基本目標,他說:“運用計算機科學(xué)的基礎(chǔ)概念進行問題求解和系統(tǒng)設(shè)計,即主要通過抽象、轉(zhuǎn)化、仿真和迭代等方法,把一個復(fù)雜的現(xiàn)實問題轉(zhuǎn)化為可以利用計算機自動解決的問題。它與傳統(tǒng)的閱讀、寫作和計算能力一樣,是信息時代的每個人應(yīng)該擁有的基本思維能力。”喬布斯說,“每個人都應(yīng)該學(xué)習(xí)編程,因為它教會你思考的方式。”所以能夠通過學(xué)習(xí)使用Python解決實際應(yīng)用問題,培養(yǎng)學(xué)生計算思維能力、創(chuàng)新能力和發(fā)現(xiàn)問題、分析問題和解決問題的能力,是課程的基本目的。
考慮到學(xué)生學(xué)習(xí)能力不同,在具體實施環(huán)節(jié),對于本課程設(shè)置了一個基本目標以及進階目標。基本目標為:掌握腳本語言程序設(shè)計的基本知識,掌握程序設(shè)計的基本方法,掌握程序設(shè)計的基本理論、方法和應(yīng)用。進階目標為:能夠較正確而熟練地使用Python進行程序的設(shè)計,能夠識讀和編寫較復(fù)雜程度的程序。
由于本課程只有32課時,內(nèi)容多,課時少成了關(guān)鍵難題。所以需要確定教學(xué)核心知識點,合理分配教學(xué)內(nèi)容和課時來解決課程內(nèi)容多、學(xué)時少的問題。本課程在具體內(nèi)容方面,對教學(xué)內(nèi)容和課時進行適當(dāng)調(diào)整,以減輕學(xué)生的學(xué)習(xí)負擔(dān),學(xué)有重點。在實施過程中,重點講解Python基本語法、列表字典元組集合作為課后講解。對于類與對象、綜合案例、文件異常處理部分,作為擴展內(nèi)容讓學(xué)生根據(jù)需求觀看視頻資源。
集體備課有利于發(fā)揮集體智慧,彌補單個教師備課過程不足,將集體智慧與個人特長有效結(jié)合起來取長補短,提高教學(xué)整體水平。Python教學(xué)組有十幾位老師,定期開設(shè)教學(xué)研討會,討論包括教學(xué)方案、教學(xué)計劃、教學(xué)案例等修訂,以及教學(xué)實施過程中遇到的問題以及解決方案。團隊反復(fù)打磨知識點,聚焦考點,并建設(shè)了Python在線題庫。
建設(shè)線上課程,課程組在超星課堂上建設(shè)了一套完整的教學(xué)視頻、并配合配套習(xí)題以及習(xí)題的視頻講解。同學(xué)們可以根據(jù)線下課程的掌握情況進行合理選擇相關(guān)視頻進行觀看。教師可以對學(xué)生在超星平臺上的觀看、討論、測驗等對學(xué)生的知識點掌握情況能夠更深入的了解。如果,某一些知識點視頻觀看比較多,說明學(xué)生掌握得不太透徹,那么可以根據(jù)這種情況,對這一內(nèi)容進行補充。
每部分知識點都進行了細化,對于基礎(chǔ)較薄弱的同學(xué),課后可以通過觀看視頻的方式加深對知識的理解,對知識點進行查漏補缺。
采用高等學(xué)校計算機等級考試《Python程序設(shè)計基礎(chǔ)》作為參考教材,本教材以初學(xué)者為起點,由淺入深、循序漸進地講述了Python程序設(shè)計的基本概念和基本方法。學(xué)生配合教材,通過一學(xué)期Python課程的學(xué)習(xí),掌握了基本的語法后,能上機調(diào)試運行程序,解決了簡單地實際問題,并可以沖刺計算機二級等級考試。
傳統(tǒng)的程序設(shè)計類考試需要人工完成出題、印刷以及判分等工作,需要花費大量時間和精力。而通過Python在線考試系統(tǒng)達到了簡化考試流程的目的,實現(xiàn)了出題、自動批閱、統(tǒng)計成績等的自動化,減輕了教師和管理人員的工作量。
考試系統(tǒng)相比于傳統(tǒng)試卷考試,能夠更好地模擬上機編程環(huán)境,學(xué)生在平時練習(xí)過程中,可以在系統(tǒng)上反復(fù)練習(xí),系統(tǒng)可以自動判分,并提示錯誤信息,學(xué)生在練習(xí)過程中可以有針對地根據(jù)錯誤信息糾正,降低了學(xué)習(xí)難度,提高了復(fù)習(xí)效率。而系統(tǒng)中的題庫由Python教學(xué)團隊精心設(shè)計,緊扣課程知識點,案例豐富,能較好地考查學(xué)生知識掌握情況。教師可以“智能組卷”模塊進行隨機組卷和發(fā)放題目,學(xué)生可以反復(fù)練習(xí)配套試卷。
通過Python在線考試系統(tǒng)進行在線考試、自動判分、隨機出題、成績統(tǒng)計等功能,給學(xué)生提供了真實上機編程的環(huán)境,減少了教師的工作量,提高工作效率,并保證了考試的公平性。
采用科學(xué)的評價方法對于學(xué)生的學(xué)習(xí)效果進行客觀公正的評價至關(guān)重要。因此,結(jié)合Python程序設(shè)計課程輕理論重應(yīng)用的特點,選擇多元化的考核方式。考核方案由平時成績(50%)、期末成績(50%)組成,其中平時成績由課程視頻學(xué)習(xí)、課堂考勤、課外作業(yè)、階段性測驗、期中測驗組成。課程視頻部分根據(jù)學(xué)生在課程平臺上觀看視頻學(xué)習(xí)的情況;課外作業(yè)部分指是學(xué)生在在線考試平臺上的實驗環(huán)節(jié)完成作業(yè)的情況;階段性測驗是在教學(xué)過程中設(shè)置若干次在線測驗,測驗的題目主要緊扣課外作業(yè)中的題目,能夠檢查學(xué)生相關(guān)知識掌握情況和效果;而期中測驗是學(xué)期中期對學(xué)生知識點進行的綜合考察。由于課外作業(yè)、階段性測驗、期中測驗統(tǒng)一采用線上實驗和考試的方式,統(tǒng)一題庫,環(huán)環(huán)相扣。最后是期末考試,同樣采用線上考試的方法,在規(guī)定時間內(nèi)從題庫中生成試卷進行作答,為了保證公平性隨機試卷中所涉及的知識點、分值以及題型均保持一致,力爭通過多元化考核方法實現(xiàn)科學(xué)評價。
計算機編程具有抽象性,很多學(xué)生剛開始接觸時難以理解,致使學(xué)生認為計算機知識非常枯燥,逐漸對課程感覺厭煩。為了增強學(xué)生計算機學(xué)科的興趣,應(yīng)做到與時俱進,將可視化的方法運用到教學(xué)過程中來。在實施過程中,比如講到列表那一塊,我們會畫出一個大的容器,在容器里面來存儲多個元素,并通過箭頭的方式來表現(xiàn)對象和空間的分布情況。通過這類方法能夠讓學(xué)生在學(xué)習(xí)過程中大腦里構(gòu)建知識點,能夠快速理解、掌握直觀化的課程內(nèi)容,提升了學(xué)生學(xué)習(xí)效率,還構(gòu)建了高效課堂,有效提高計算機教學(xué)的有效性和趣味性。
Python課程初學(xué)者時需要對程序設(shè)計的一些基本概念建立一定的理解。一個新的領(lǐng)域總會面臨著新概念的講解,比如說變量、地址、結(jié)構(gòu)、面向過程、面向?qū)ο蟆⒑瘮?shù)等知識,這些概念對初學(xué)者較較抽象,接受起來難度比較大。因此,在課堂中涉及新理論的部分,可采取類比教學(xué)方法,讓同學(xué)們腦海里能夠?qū)Ω拍钣休^形象的理解。比如對變量的理解,可以通過打比方,變量就是一個“帶標簽的盒子”,你需要把數(shù)據(jù)放進去。然后通過圖形化的界面,把變量的名稱,賦值運算符以及具體數(shù)值放進去。
通過合理設(shè)計的案例可以加深學(xué)生對各類語句以及使用場景的設(shè)計。如在ifelse語句里面,我們以描述人的活動作為案例,如果是晴天那么去公園玩,如果下雨在家里看書,如果多云那么就去跑步。這些典型契合實際的案例會加深學(xué)生對知識的理解。
為平衡學(xué)生之間的學(xué)習(xí)差距,讓同學(xué)們互幫互助,教學(xué)采用學(xué)習(xí)小組形式。具體實施方式,在實驗室里實操知識講解部分,只廣播每小組固定電腦,小組成員跟著老師一起編寫代碼,在練習(xí)過程中,老師會進行提問搶答環(huán)節(jié),小組同學(xué)共同合作完成課堂練習(xí)部分。這樣子形成一個共同學(xué)習(xí)的場景,小組式學(xué)習(xí)激發(fā)了學(xué)生的參與度,提高了學(xué)生的積極性、主動性。
根據(jù)Python課程教學(xué)實踐,結(jié)合學(xué)校課程體系與學(xué)生個性特征,在教學(xué)過程中,不斷分析和總結(jié),對該課程教學(xué)進行了一系列改革,獲得了較顯著的教學(xué)效果。在今后的教學(xué)中,探索建設(shè)財經(jīng)類相結(jié)合的教學(xué)Python配套案例,并在教學(xué)模式和手段探索兩個方面繼續(xù)深入研究,不斷提高教學(xué)質(zhì)量,加強財經(jīng)類學(xué)生的信息素養(yǎng),培養(yǎng)學(xué)生計算思維能力、創(chuàng)新能力和發(fā)現(xiàn)問題、分析問題和解決問題的能力。