顧建軍
摘? 要:針對信息與計算科學(xué)專業(yè),該文論述了開設(shè)Python課程的必要性;分析了該專業(yè)的課程設(shè)置,以及Python與后續(xù)課程之間的關(guān)系,給出了具有專業(yè)特色的教學(xué)內(nèi)容設(shè)計,并且指出教學(xué)內(nèi)容中適當介紹第三方庫能夠引導(dǎo)學(xué)生編程解決數(shù)學(xué)計算問題;最后提出利用將Python在線網(wǎng)絡(luò)教學(xué)和傳統(tǒng)課堂教學(xué)相結(jié)合的方法可以有效地解決有限的課時和疫情引起的教學(xué)困難。
關(guān)鍵詞:Python? 信息與計算科學(xué)專業(yè)? 教學(xué)內(nèi)容? 在線網(wǎng)絡(luò)教學(xué)
中圖分類號:G642? ? ? ? ? ? ? ? ? ? ? ? ? ? 文獻標識碼:A? ? ? ? ? ? ? ? ? ?文章編號:1672-3791(2020)12(b)-0035-04
Abstract: The necessity of Python course teaching is first discussed for the major of information and computer science; Then the paper analyzes the major curriculum settings, including the relationship between Python and follow-up courses, designs the teaching content with professional features, and points out that the suitable introduction of the third-party libraries in teaching content can help students solve the mathematical issues through programming; The difficulties caused by the limited teaching hours and epidemic situation may be effectively overcome by combining online network and traditional classroom teaching of Python, and the corresponding method is finally proposed.
Key Words: Python; The major of information and computer science; Teaching content; Online network teaching
Python語言為面向?qū)ο蟮慕忉屝陀嬎銠C程序設(shè)計語言,其語法清晰簡潔,具有簡單、可移植性等優(yōu)勢,同時強大的第三方庫和豐富的應(yīng)用程序接口,可以使其應(yīng)用擴展到圖像處理、科學(xué)計算、數(shù)據(jù)挖掘等工業(yè)生產(chǎn)中[1]。另一方面,Python也受到了教育界的重視,并成為國內(nèi)外眾多知名高校的程序設(shè)計語言的教學(xué)對象。國內(nèi)最初僅南京大學(xué)、北京理工大學(xué)、哈爾濱工程大學(xué)等重點高校主要針對計算機專業(yè)開設(shè)了Python 課程,而面向其他專業(yè)開設(shè)Python課程的教學(xué)實踐還相當有限。近年來,信息技術(shù)日新月異給大學(xué)計算機基礎(chǔ)教學(xué)工作帶來了新的挑戰(zhàn)和發(fā)展機遇,迫切地需要補充適應(yīng)信息時代的高效靈活的編程語言。為此,教育部高教司在2016年發(fā)布了《大學(xué)計算機基礎(chǔ)課程教學(xué)基本要求》[2],建議將Python作為程序設(shè)計基礎(chǔ)課程之一,地方高校、應(yīng)用型本科高校陸續(xù)地將Python 作為理工專業(yè)學(xué)生的程序設(shè)計課程。
目前國內(nèi)高校數(shù)學(xué)專業(yè)的程序設(shè)計語言主要有C語言、Python、Matlab等,C語言雖然語法靈活,但語法需要掌握的細節(jié)過多,對于非計算機專業(yè)的學(xué)生來說,這些限制了對語法的掌握和應(yīng)用,不利于編程學(xué)習(xí)興趣的培養(yǎng)。Matlab主要是面向科學(xué)計算的集成計算環(huán)境,可以用于數(shù)學(xué)建模等專業(yè)課各種算法的學(xué)習(xí)和使用,允許用類似于數(shù)學(xué)公式的指令表達式編寫程序,但由于Matlab中所有的變量均為向量形式,這導(dǎo)致處理變量時運算效率低。Python不存在類似C語言中指針或地址等設(shè)計計算機系統(tǒng)結(jié)構(gòu)的元素,不必關(guān)心底層實現(xiàn),簡單和簡潔對非計算機專業(yè)的學(xué)生意味著入門容易。特別的是,Python語言還有豐富的第三方庫,可用于數(shù)據(jù)計算、統(tǒng)計分析、圖像處理、深度學(xué)習(xí)等,學(xué)生在編程時可以調(diào)用Python的第三方庫來解決專業(yè)領(lǐng)域的問題。在這些背景下,常熟理工學(xué)院數(shù)學(xué)與統(tǒng)計學(xué)院制訂了信息與計算科學(xué)專業(yè)培養(yǎng)方案,其選擇Python作為信息與計算科學(xué) (信科)專業(yè)的專業(yè)選修課。
1? 教學(xué)內(nèi)容分析和設(shè)計
就筆者學(xué)校信科專業(yè)培養(yǎng)方案而言,C語言程序設(shè)計開設(shè)在第二學(xué)期,數(shù)學(xué)建模開設(shè)在第四學(xué)期,在這些基礎(chǔ)上,第五學(xué)期才開設(shè)Python開發(fā)選講。因此,針對有編程基礎(chǔ)的信科專業(yè)或數(shù)學(xué)其他專業(yè)的學(xué)生,除了適當簡潔地介紹講解變量、表達式、數(shù)據(jù)類型、函數(shù)、列表等基本知識以外,還應(yīng)當考慮此課程和相關(guān)其他課程的銜接,并適宜將重點放在Python第三方函數(shù)庫的應(yīng)用,如Numpy、Matplotlib、jit等,甚至適當?shù)匾龑?dǎo)學(xué)生了解下第三方庫TensorFlow,為人工智能課程做一個鋪墊。針對以上分析設(shè)計Python教學(xué)內(nèi)容框圖,針對教學(xué)內(nèi)容設(shè)計框圖見圖1,在教學(xué)中應(yīng)強調(diào)以下幾點。
1.1 Python、編程環(huán)境、第三方庫之間的關(guān)系
為了運行Python程序,需要有一個解釋器來填補Python源程序和計算機之間的鴻溝,同時也需要一個命令行交互環(huán)境或窗口式的集成開發(fā)環(huán)境。Python 軟件基金會主導(dǎo)開發(fā)的CPython系統(tǒng)提供了一個程序開發(fā)環(huán)境IDLE[3],使程序員可以方便地編輯程序并隨時運行,但IDLE上不方便開發(fā)復(fù)雜的應(yīng)用系統(tǒng)。由 JetBrains公司開發(fā)的PyCharm是目前比較流行的一個專業(yè)集成開發(fā)環(huán)境,可在其上方便地搭建機器學(xué)習(xí)的開發(fā)環(huán)境,大大提高了開發(fā)效率。Python語言在性能方面不如低級編程語言,但Python只是作為前端描述語言,實際計算則是通過底層的擴展實現(xiàn),即擴充第三方庫來完成更復(fù)雜的運算,從而實現(xiàn)功能和性能上的擴展,讓開發(fā)者更關(guān)注數(shù)據(jù)和算法本身,這是Python 語言被廣泛應(yīng)用到工業(yè)生產(chǎn)和實踐中的重要原因。
1.2 第三方庫的安裝演示和相關(guān)庫的功能介紹
Python第三方庫的安裝可以通過cmd命令進行,即以管理員身份通過命令pip install進行安裝,安裝成功會顯示“Successfully installed reguests”。另一方面,與信科專業(yè)或數(shù)學(xué)計算密切相關(guān)的第三方庫主要有:(1)Numpy用于使用Python進行科學(xué)計算的最基本軟件包,它包含一個強大的N維數(shù)組對象和實用的線性代數(shù)功能等;(2)Matplotlib是二維繪制庫,會生成達到發(fā)布標準的高品質(zhì)圖片;(3)SciPy為數(shù)學(xué)、科學(xué)、工程計算功能庫,提供了一批數(shù)學(xué)算法及工程數(shù)據(jù)運算功能;(4)Sympy科學(xué)計算庫,用一套強大的符號計算體系完成諸如求極限、積分、微分方程、矩陣運算等計算問題;(5)TensorFlow是人工智能中的深度學(xué)習(xí)框架,可基于數(shù)據(jù)流圖在CPU或GPU上進行高性能的分布數(shù)值計算。
1.3 數(shù)學(xué)建模上的應(yīng)用
近年來,Python語言在數(shù)學(xué)建模和各類算法大賽中的應(yīng)用備受關(guān)注。對比傳統(tǒng)的數(shù)學(xué)軟件Matlab,其大部分常用功能都可以在Python中找到相應(yīng)的第三方庫,所以在教學(xué)中應(yīng)注重Python解決高等數(shù)學(xué)的計算問題。以下為Python在微積分和微分方程求解方面的簡單應(yīng)用。
(1)求函數(shù)的積分:可以使用Sympy庫中的命令integrate來實現(xiàn),基本語法是integrate(f,x),或 integrate(f,(x,a,b)),其中f表示待求積分的函數(shù),x表示函數(shù)的自變量,a,b分別為積分的上下限。以下面定積分為例:
## Python代碼如下
from sympy import *
x = symbols("x")
f =exp(sqrt(x))
integrate(exp(sqrt(x)), (x,0,1))
##輸出結(jié)果為
2*(sqrt(x))* exp(sqrt(x))-2* exp(sqrt(x))
即。
(2)求解微分方程:可以使用Sympy庫中的命令dsolve來實現(xiàn),其基本語法dsolve(eq,f(x),hint),其中eq是可支持的任何常微分方程。假設(shè)它等于0,f(x)是微分方程的未知函數(shù)。hint讓dsolve使用的求解方法。以下面二階齊次常系數(shù)微分方程為例:
## Python代碼如下
import sympy as sy
def differential_equation(x,f):
return sy.diff(f(x),x,2)+f(x)#f(x)''+f(x)=0
x=sy.symbols('x')
f=sy.Function('f')
sy.pprint(sy.dsolve(differential_equation(x,f),f(x)))
##輸出結(jié)果為
Eq(f(x), C1*sin(x) + C2*cos(x))
即。
2? 在線網(wǎng)絡(luò)教學(xué)
計算機程序設(shè)計課程的教學(xué)重點是培養(yǎng)學(xué)生解決問題的能力,使學(xué)生能對簡單的實際問題,編寫出有效且可讀性好的程序。但實際教學(xué)中,疫情影響和主要以下兩個原因會影響到教學(xué)效果:(1)課時的限制(一般情況下信科專業(yè)總課時48,其中理論課時僅32) 不能使學(xué)生在建模、算法設(shè)計、代碼編寫和編譯調(diào)試這4個程序設(shè)計過程得到充分的訓(xùn)練;(2)面對信科專業(yè)學(xué)生的編程語言教學(xué)主要放在Python編程語言的基礎(chǔ)語法上,但長期的靜態(tài)教學(xué)會影響學(xué)生的學(xué)習(xí)興趣。因此,在整個教學(xué)過程中應(yīng)當盡可能讓學(xué)生處于分析和思考問題的狀態(tài),提升學(xué)生獨立解決問題的能力。在此情況下,利用在線網(wǎng)絡(luò)教學(xué)對傳統(tǒng)的課堂教學(xué)進行補充的教學(xué)方法可以用來克服以上的困難。目前主流網(wǎng)絡(luò)教學(xué)平臺是MOOC和云班課。
MOOC(慕課)自2013年開始,經(jīng)過6年的快速發(fā)展,數(shù)量和應(yīng)用規(guī)模已位居世界第一。MOOC具有類似于線下課程的作業(yè)評估體系和考核方式,每門課程定期開課,整個學(xué)習(xí)過程包括多個環(huán)節(jié):觀看視頻、參與討論、提交作業(yè),穿插課程的提問和終極考試[4]。因此,在課時極為有限的情況下,利用MOOC的開放式在線教學(xué)模式,通過課前慕課指導(dǎo)、課后慕課復(fù)習(xí)、慕課平臺上的交流等方式來學(xué)習(xí)Python。但是MOOC上不同高校不同專業(yè)的Python課程,講解的側(cè)重點和難度可能會不一樣,如果沒有合適的MOOC,則需要自己來建立此項目。而一個團隊完成MOOC課程的制作一般要經(jīng)過選題、設(shè)計、拍攝、剪輯等環(huán)節(jié),且制作費用較高,因此在這種情況下,云班課可以作為一個很好的代替[5]。
云班課是一款課堂互動教學(xué)軟件,可以實現(xiàn)教師與學(xué)生的即時互動(輕直播)、資源分享、課堂管理、在線測試和作業(yè)布置批閱等功能,具有完善的激勵與評價體系,可以保存學(xué)習(xí)記錄,有利于過程性評價和教學(xué)情況的跟蹤與分析。在平時的課堂上,使用云班課可以及時記錄課堂互動情況,提高課堂的活躍度和學(xué)生的參與情況。作為任課教師可以課外通過錄屏軟件自行拍攝Python的教學(xué)視頻,上傳到云班課的資源里,以便學(xué)生在課前預(yù)習(xí),課后復(fù)習(xí)[6]。
3? 結(jié)語
“友好的”Python很適合作為信科專業(yè)的編程語言,隨著信息技術(shù)的發(fā)展,有超越C語言和Matlab的趨勢。在Python教學(xué)中,針對信科的專業(yè)特點和需求,根據(jù)教學(xué)內(nèi)容,設(shè)計合適的方法,充分發(fā)揮該語言的優(yōu)勢,可以培養(yǎng)學(xué)生的分析能力,提高解決實際問題的能力。
參考文獻
[1] 翟永革.計算機專業(yè)Python教學(xué)的有效方法分析[J]. 科技資訊,2019(17):89-90.
[2] 教育部高等學(xué)校大學(xué)計算機課程教學(xué)指導(dǎo)委員會. 大學(xué)計算機基礎(chǔ)課程教學(xué)基本要求[M].北京:高等教育出版社,2016:2-5.
[3] Y. Daniel Liang.Python語言程序設(shè)計[M].北京:機械工業(yè)出版社,2013:12-13.
[4] 姜賽達.基于層次聚類的數(shù)據(jù)分析方法在MOOCs中的應(yīng)用[J].三門峽職業(yè)技術(shù)學(xué)院學(xué)報,2019(3):144-148.
[5] 柴玥.高等教育中的慕課知識傳播模式研究[D].大連理工大學(xué),2019.
[6] 張爽.基于自帶設(shè)備理念的高校課堂互動教學(xué)平臺的設(shè)計與研發(fā)[D].云南師范大學(xué),2018.