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