郝靜,平夢婷,陳建文,王仲梅
摘? 要: 科學(xué)計算是一門理論與實踐結(jié)合的專業(yè)課程,該課程對學(xué)生的綜合能力培養(yǎng)有著至關(guān)重要的作用。針對課程對傳統(tǒng)軟件依賴性強,學(xué)生缺乏實踐與學(xué)習(xí)動力等問題,提出將Python程序設(shè)計語言及Jupyter大數(shù)據(jù)分析平臺融入科學(xué)計算課程的教學(xué)改革方法,并在教學(xué)內(nèi)容和教學(xué)方式上給出了具體的措施。以數(shù)據(jù)科學(xué)與大數(shù)據(jù)技術(shù)專業(yè)課程教學(xué)改革為例,這些方法和措施的采用顯著地提高了學(xué)生的應(yīng)用和創(chuàng)新能力,證明了教學(xué)改革的有效性。
關(guān)鍵詞: 科學(xué)計算; 教學(xué)改革; Python編程; 大數(shù)據(jù)
中圖分類號:G642? ? ? ? ? 文獻標(biāo)識碼:A? ? ?文章編號:1006-8228(2022)01-90-03
Research on teaching reform of scientific computing course with Python language
Hao Jing, Ping Mengting, Chen Jianwen, Wang Zhongmei
(College of Science, Hunan University of Technology and Business, Changsha, Hunan 410205, China)
Abstract: Scientific computing is a professional course which combines theory and practice, it plays an important role in the cultivation of students' comprehensive ability. In view of its strong dependence on traditional software and the lack of practice and learning motivation of students, this paper puts forward the teaching reform of integrating Python programming language and Jupyter big data analysis platform into the scientific computing course, and gives specific measures on teaching content and teaching methods. Taking the teaching reform of the data science and big data technology specialties as an example, the adoption of these methods and measures has significantly improved the application and innovation ability of students, which proves the effectiveness of the teaching reform.
Key words: scientific computing; teaching reform; Python programming; big data
0 引言
科學(xué)計算是數(shù)據(jù)科學(xué)與大數(shù)據(jù)技術(shù)專業(yè)的一門重要課程。目前,智能計算和仿真模擬是計算機科學(xué)和計算數(shù)學(xué)領(lǐng)域熱門研究課題,相關(guān)研究成果能應(yīng)用于工程、氣象、飛行器等許多重要領(lǐng)域。
當(dāng)前國內(nèi)開設(shè)的課程均依托于Matlab等編程軟件,然而Matlab軟件受到國外開發(fā)商的使用限制,因此須尋找一種開源的編程軟件實現(xiàn)科學(xué)計算和仿真模擬。
Python是一款開源軟件,具有簡單、可拓展性強等特點,其中利用機器學(xué)習(xí)和深度學(xué)習(xí)求解偏微分系統(tǒng)的研究工作受到學(xué)術(shù)界特別的關(guān)注。在“新工科”理念下,國內(nèi)外許多高校陸續(xù)開設(shè)了Python語言程序設(shè)計相關(guān)課程[1],利用該軟件的通用性和豐富生態(tài)系統(tǒng)來實現(xiàn)混合式教學(xué)??茖W(xué)計算與Python編程語言是數(shù)據(jù)科學(xué)與大數(shù)據(jù)技術(shù)專業(yè)的兩門核心課程,在解決數(shù)據(jù)科學(xué)任務(wù)與挑戰(zhàn)方面具有獨特優(yōu)勢地位。兩者相結(jié)合,不僅能提高教學(xué)質(zhì)量,還能突破以往傳統(tǒng)的Matlab計算生態(tài)系統(tǒng)限制,改變傳統(tǒng)的教學(xué)思維,幫助學(xué)生更好的掌握科學(xué)計算知識,對于專業(yè)人才培養(yǎng)具有重要意義。本文教學(xué)改革框架如圖1所示。
1 改革的必要性
1.1 不過度依賴Matlab等商業(yè)軟件
傳統(tǒng)上,微分系統(tǒng)的數(shù)值求解和仿真模擬一般由Matlab等軟件實現(xiàn)。Matlab等計算軟件功能強大,但其作為一款國外商業(yè)軟件,購買須花費大量資金;而且開發(fā)商對軟件的功能使用上有所限制。為了不被“卡脖子”,我們必須盡快依托開源軟件實現(xiàn)算法的開發(fā)與突破,尤其是在工程測量中一直占據(jù)重要技術(shù)地位的偏微分方程計算領(lǐng)域。Python是一款開源軟件且第三方庫十分豐富,具有通用性的特點,隨著越來越多開發(fā)者的介入,Matlab大多數(shù)應(yīng)用均可被Python取代。
1.2 課程教學(xué)需加強
對于數(shù)據(jù)科學(xué)與大數(shù)據(jù)技術(shù)專業(yè)的學(xué)生來說,對程序設(shè)計和數(shù)值求解的能力要求較高。目前,國內(nèi)大多數(shù)高??茖W(xué)計算課程的程序由Matlab軟件來完成,而Matlab語言與Python具有差異性,容易混淆編程規(guī)則,因此給學(xué)生在編程語言的實操上帶來困難。相比之下Python語言具有簡單易學(xué)、可拓展性強的特點,同時大數(shù)據(jù)專業(yè)的學(xué)生精通Python語言,因此利用Python進行科學(xué)計算難度較小,專業(yè)適配性更強。
1.3 實踐教學(xué)與課堂教學(xué)需緊密結(jié)合
科學(xué)計算是一門理論與實踐密切結(jié)合的課程,應(yīng)用能力的培養(yǎng)應(yīng)該占據(jù)教學(xué)的中心地位。傳統(tǒng)上,課堂教學(xué)與實踐教學(xué)環(huán)節(jié)往往脫節(jié),教學(xué)效果不理想。大數(shù)據(jù)分析平臺Jupyter可以解決這一問題,該軟件集教案設(shè)計、PPT制作、Python程序運行、可視化、網(wǎng)頁制作、Latex文檔編譯等多功能于一身,實現(xiàn)課堂教學(xué)與實踐操作同步進行。改革科學(xué)計算課程的教學(xué)方式方法,有利于錘煉學(xué)生應(yīng)用計算機軟件的能力,提升獲得感和創(chuàng)新活力。
1.4 課程考核方法有待改革
科學(xué)計算這門課程,目前大部分高校采用單一的期末筆試來考查學(xué)生的學(xué)習(xí)情況,這樣的考核方法已經(jīng)不適應(yīng)專業(yè)發(fā)展形勢,學(xué)科間的交叉融合需建立在課程考核改革的基礎(chǔ)之上。該課程需重視算法設(shè)計、程序?qū)崿F(xiàn)、上機操作等過程的考核。具體可通過以下方式實現(xiàn):引入動畫、實例庫、計算機輔助教學(xué)和課件等資源,促進數(shù)值計算方法課程的軟件建設(shè);利用計算機教學(xué)科研網(wǎng)絡(luò)平臺和數(shù)據(jù)科學(xué)與大數(shù)據(jù)技術(shù)實踐教學(xué)平臺來提高數(shù)值計算方法課程的硬件設(shè)施水平等[2]。
2 科學(xué)計算課程教學(xué)改革思路
科學(xué)計算技術(shù)是數(shù)據(jù)科學(xué)與大數(shù)據(jù)技術(shù)專業(yè)學(xué)生必備技能,是實現(xiàn)專業(yè)創(chuàng)新發(fā)展的重要法寶。改革主要目標(biāo)是:將Python語言應(yīng)用到科學(xué)計算中,實現(xiàn)對于幾類偏微分系統(tǒng)以及復(fù)雜流體系統(tǒng)的數(shù)值求解和仿真模擬,突破以往傳統(tǒng)的Matlab計算生態(tài)系統(tǒng),解決智能計算與仿真模擬的軟件依賴問題以達到教與學(xué)的統(tǒng)一。具體有四個方面內(nèi)容。
2.1 利用機器學(xué)習(xí)算法求解偏微分方程
機器學(xué)習(xí)和深度學(xué)習(xí)主要包括線性回歸、決策樹、邏輯斯蒂回歸、支持向量機、隱馬爾可夫模型、神經(jīng)網(wǎng)絡(luò)等。不同于傳統(tǒng)差分方法,利用機器學(xué)習(xí)算法求解偏微分方程可以通過構(gòu)建無網(wǎng)格算法進行設(shè)計,避免網(wǎng)格剖分,解決維度爆炸的問題。在課程教學(xué)過程的初級階段,學(xué)生可以通過Python進行調(diào)包,實現(xiàn)簡單的偏微分方程的求解;進階階段,可以向?qū)W生們展示一些利用Python語言的第三方庫和深度學(xué)習(xí)算法求解偏微分方程的程序,幫助學(xué)生掌握算法設(shè)計思路,進而解決來源于物理、工業(yè)工程、流體的數(shù)值模擬仿真等困難問題。
2.2 利用Jupter實現(xiàn)教學(xué)環(huán)節(jié)一體化
Jupyter notebook是一個交互式自動筆記本,支持多種自動編程應(yīng)用語言,它是以網(wǎng)頁的形式打開,在網(wǎng)頁上實現(xiàn)即時代碼開發(fā)、文檔編寫、可視化、Markdown、Python程序運行等。教師在科學(xué)計算課程的教學(xué)中可以引入Jupyter大數(shù)據(jù)分析平臺,結(jié)合代碼進行講解,實時編譯運行,做好充分的講解與演示,以生動的形式展現(xiàn)課程的教育教學(xué)全過程。課后的實驗報告、終期考核可以結(jié)合Jupyter完成,提交生成PDF文檔,方便瀏覽且自動識別程序結(jié)果。Jupyter實質(zhì)上是一個Web應(yīng)用程序,它便于創(chuàng)建和共享文字化的程序文檔,可以將解題思路和代碼共存于一個程序文檔,既便于老師查看,也便于日后回顧。通過Jupyter打造具有鮮明特色的個性化課程教學(xué)體系,促使教學(xué)進程向縱深發(fā)展。
2.3 實現(xiàn)專業(yè)課程的層級推進與無縫銜接
科學(xué)計算屬于一門承上啟下的課程,實際是介于基礎(chǔ)理論和實踐教學(xué)課程間的一門核心課程,主要講授數(shù)值算法、微分方程數(shù)值解法。課程內(nèi)容包括:差分方法;常微分方程數(shù)值解法;偏微分方程數(shù)值解法;有限元方法等[3]。后續(xù)將安排深度學(xué)習(xí)、數(shù)學(xué)模型、大數(shù)據(jù)技術(shù)與應(yīng)用等高級課程,實現(xiàn)專業(yè)課程之間的無縫銜接,持續(xù)優(yōu)化數(shù)據(jù)科學(xué)與大數(shù)據(jù)技術(shù)等專業(yè)人才培養(yǎng)方案。在科學(xué)計算課程教學(xué)環(huán)節(jié)中,教師除了注重學(xué)生的程序設(shè)計思想的培養(yǎng),還應(yīng)該先開設(shè)機器學(xué)習(xí)、數(shù)據(jù)挖掘等課程,在算法的實現(xiàn)過程中引導(dǎo)學(xué)生自主學(xué)習(xí)TensorFlow、Scipy等第三方庫,有效訓(xùn)練學(xué)生的基本技能。
2.4 考核改革的專業(yè)針對性
相比于其他的課程,科學(xué)計算更注重考核學(xué)生的實踐能力,考核形式應(yīng)多元化,考核方式主要為隨堂測試、上機實踐、期中實驗報告、期末考試等。上機操作和實驗報告有助于提高學(xué)生的操作能力,通過完成Python語言編程設(shè)計,實現(xiàn)對算法設(shè)計的深刻理解[4],同時教師可將優(yōu)秀的實驗報告編撰成《科學(xué)計算論文集》,積累教學(xué)素材。期中多頻次實驗報告以具有實際背景的微分方程為求解對象,構(gòu)造數(shù)值算法,利用Python編程實現(xiàn)。期末考試既考察學(xué)生數(shù)值計算理論、Python應(yīng)用能力,也考核學(xué)生算法設(shè)計思想,考核分數(shù)由平時表現(xiàn)(30%)+ 分組報告與綜合項目(30%)+ 期末綜合測試(40%)綜合打分。數(shù)據(jù)科學(xué)與大數(shù)據(jù)技術(shù)專業(yè)主要培養(yǎng)學(xué)生數(shù)據(jù)采集處理、特征工程、模型訓(xùn)練與優(yōu)化能力,而科學(xué)計算技能在其中扮演這關(guān)鍵的角色,因此有針對性的對專業(yè)技能課程的考核進行改革,有利于以學(xué)生為中心的科學(xué)理念形成和學(xué)科建設(shè)的健康發(fā)展。
2.5 開展學(xué)科競賽和項目研究
問題驅(qū)動式教學(xué)在高等教育中的重要性和科學(xué)性已經(jīng)被廣大師生認可。在科學(xué)計算課程的教學(xué)進程中,教師利用學(xué)科競賽和課題研究引導(dǎo)學(xué)生開展知識探索和原始創(chuàng)新,有利于提高學(xué)生參與度、發(fā)揮創(chuàng)造力和想象力,有利于挖掘年輕人的潛能。當(dāng)然,在問題驅(qū)動式教學(xué)中,教師的個人綜合能力直接決定了改革的實施效果。高水平的學(xué)術(shù)指導(dǎo)就像音樂指揮家,非演奏本體卻主導(dǎo)整個表演過程。以湖南工商大學(xué)大數(shù)據(jù)專業(yè)教學(xué)改革為例,在實踐教學(xué)改革后,學(xué)生參與實踐競賽的興趣有了明顯提高,該專業(yè)學(xué)生數(shù)學(xué)競賽的參與度提高了30%,同時全國大學(xué)生數(shù)學(xué)建模競賽的參與度達到了80%。
3 結(jié)束語
科學(xué)計算是數(shù)據(jù)科學(xué)與大數(shù)據(jù)技術(shù)專業(yè)學(xué)生需要掌握的一項重要技能。課程的開設(shè)不僅可以通過簡化假設(shè)建立數(shù)學(xué)模型向?qū)W生完整的展示完整的解題過程,還可以借助數(shù)值方法和數(shù)學(xué)軟件幫助學(xué)生進行理解[5]。對于科學(xué)計算課程教學(xué)改革的成效,在諸如全國大學(xué)生數(shù)學(xué)建模、統(tǒng)計建模、大數(shù)據(jù)分析等大賽中得以顯現(xiàn),學(xué)生取得優(yōu)異成績的同時,還播下了創(chuàng)新創(chuàng)業(yè)的種子。這些成績的取得與教學(xué)方法的不斷探索和改革是密不可分的,實踐證明,利用Python軟件對數(shù)據(jù)科學(xué)與大數(shù)據(jù)技術(shù)專業(yè)學(xué)生的科學(xué)計算課程進行改革,能催生最大潛能,提升學(xué)生獲得感和創(chuàng)新精神。在實踐教學(xué)和實訓(xùn)方面,基于Python語言的科學(xué)計算課程教學(xué)改革還有進一步提升的空間。
參考文獻(References):
[1] 劉衛(wèi)國,奎曉燕.Python語言程序設(shè)計教學(xué)體系建設(shè)[J].計算機教育,2017,(8):13-17
[2] 王海軍,曹德欣,陳興同,胡建華,楊然.基于科學(xué)計算和實踐創(chuàng)新能力培養(yǎng)的數(shù)值計算方法課程改革與實踐研究[J].大學(xué)教育,2016(8):135-136,150
[3] 李丹丹.淺析Python在大數(shù)據(jù)課程教學(xué)改革中的作用[J].教育現(xiàn)代化,2019,6(82):115-116
[4] 魏冬梅,王秀華,王影,陳一夫,汪思德.基于Python的程序設(shè)計通識課程建設(shè)與教學(xué)實踐[J].計算機教育,2019,2:69-73
[5] 趙國忠.科學(xué)計算核心課程教學(xué)的幾點思考[J].陰山學(xué)刊(自然科學(xué)版),2018,32(3):106-108