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