郝靜,平夢婷,陳建文,王仲梅

摘? 要: 科學計算是一門理論與實踐結合的專業課程,該課程對學生的綜合能力培養有著至關重要的作用。針對課程對傳統軟件依賴性強,學生缺乏實踐與學習動力等問題,提出將Python程序設計語言及Jupyter大數據分析平臺融入科學計算課程的教學改革方法,并在教學內容和教學方式上給出了具體的措施。以數據科學與大數據技術專業課程教學改革為例,這些方法和措施的采用顯著地提高了學生的應用和創新能力,證明了教學改革的有效性。
關鍵詞: 科學計算; 教學改革; Python編程; 大數據
中圖分類號:G642? ? ? ? ? 文獻標識碼: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 引言
科學計算是數據科學與大數據技術專業的一門重要課程。目前,智能計算和仿真模擬是計算機科學和計算數學領域熱門研究課題,相關研究成果能應用于工程、氣象、飛行器等許多重要領域。
當前國內開設的課程均依托于Matlab等編程軟件,然而Matlab軟件受到國外開發商的使用限制,因此須尋找一種開源的編程軟件實現科學計算和仿真模擬。
Python是一款開源軟件,具有簡單、可拓展性強等特點,其中利用機器學習和深度學習求解偏微分系統的研究工作受到學術界特別的關注。在“新工科”理念下,國內外許多高校陸續開設了Python語言程序設計相關課程[1],利用該軟件的通用性和豐富生態系統來實現混合式教學。科學計算與Python編程語言是數據科學與大數據技術專業的兩門核心課程,在解決數據科學任務與挑戰方面具有獨特優勢地位。兩者相結合,不僅能提高教學質量,還能突破以往傳統的Matlab計算生態系統限制,改變傳統的教學思維,幫助學生更好的掌握科學計算知識,對于專業人才培養具有重要意義。本文教學改革框架如圖1所示。
1 改革的必要性
1.1 不過度依賴Matlab等商業軟件
傳統上,微分系統的數值求解和仿真模擬一般由Matlab等軟件實現。Matlab等計算軟件功能強大,但其作為一款國外商業軟件,購買須花費大量資金;而且開發商對軟件的功能使用上有所限制。為了不被“卡脖子”,我們必須盡快依托開源軟件實現算法的開發與突破,尤其是在工程測量中一直占據重要技術地位的偏微分方程計算領域。Python是一款開源軟件且第三方庫十分豐富,具有通用性的特點,隨著越來越多開發者的介入,Matlab大多數應用均可被Python取代。
1.2 課程教學需加強
對于數據科學與大數據技術專業的學生來說,對程序設計和數值求解的能力要求較高。目前,國內大多數高校科學計算課程的程序由Matlab軟件來完成,而Matlab語言與Python具有差異性,容易混淆編程規則,因此給學生在編程語言的實操上帶來困難。相比之下Python語言具有簡單易學、可拓展性強的特點,同時大數據專業的學生精通Python語言,因此利用Python進行科學計算難度較小,專業適配性更強。
1.3 實踐教學與課堂教學需緊密結合
科學計算是一門理論與實踐密切結合的課程,應用能力的培養應該占據教學的中心地位。傳統上,課堂教學與實踐教學環節往往脫節,教學效果不理想。大數據分析平臺Jupyter可以解決這一問題,該軟件集教案設計、PPT制作、Python程序運行、可視化、網頁制作、Latex文檔編譯等多功能于一身,實現課堂教學與實踐操作同步進行。改革科學計算課程的教學方式方法,有利于錘煉學生應用計算機軟件的能力,提升獲得感和創新活力。
1.4 課程考核方法有待改革
科學計算這門課程,目前大部分高校采用單一的期末筆試來考查學生的學習情況,這樣的考核方法已經不適應專業發展形勢,學科間的交叉融合需建立在課程考核改革的基礎之上。該課程需重視算法設計、程序實現、上機操作等過程的考核。具體可通過以下方式實現:引入動畫、實例庫、計算機輔助教學和課件等資源,促進數值計算方法課程的軟件建設;利用計算機教學科研網絡平臺和數據科學與大數據技術實踐教學平臺來提高數值計算方法課程的硬件設施水平等[2]。
2 科學計算課程教學改革思路
科學計算技術是數據科學與大數據技術專業學生必備技能,是實現專業創新發展的重要法寶。改革主要目標是:將Python語言應用到科學計算中,實現對于幾類偏微分系統以及復雜流體系統的數值求解和仿真模擬,突破以往傳統的Matlab計算生態系統,解決智能計算與仿真模擬的軟件依賴問題以達到教與學的統一。具體有四個方面內容。
2.1 利用機器學習算法求解偏微分方程
機器學習和深度學習主要包括線性回歸、決策樹、邏輯斯蒂回歸、支持向量機、隱馬爾可夫模型、神經網絡等。不同于傳統差分方法,利用機器學習算法求解偏微分方程可以通過構建無網格算法進行設計,避免網格剖分,解決維度爆炸的問題。在課程教學過程的初級階段,學生可以通過Python進行調包,實現簡單的偏微分方程的求解;進階階段,可以向學生們展示一些利用Python語言的第三方庫和深度學習算法求解偏微分方程的程序,幫助學生掌握算法設計思路,進而解決來源于物理、工業工程、流體的數值模擬仿真等困難問題。
2.2 利用Jupter實現教學環節一體化
Jupyter notebook是一個交互式自動筆記本,支持多種自動編程應用語言,它是以網頁的形式打開,在網頁上實現即時代碼開發、文檔編寫、可視化、Markdown、Python程序運行等。教師在科學計算課程的教學中可以引入Jupyter大數據分析平臺,結合代碼進行講解,實時編譯運行,做好充分的講解與演示,以生動的形式展現課程的教育教學全過程。課后的實驗報告、終期考核可以結合Jupyter完成,提交生成PDF文檔,方便瀏覽且自動識別程序結果。Jupyter實質上是一個Web應用程序,它便于創建和共享文字化的程序文檔,可以將解題思路和代碼共存于一個程序文檔,既便于老師查看,也便于日后回顧。通過Jupyter打造具有鮮明特色的個性化課程教學體系,促使教學進程向縱深發展。
2.3 實現專業課程的層級推進與無縫銜接
科學計算屬于一門承上啟下的課程,實際是介于基礎理論和實踐教學課程間的一門核心課程,主要講授數值算法、微分方程數值解法。課程內容包括:差分方法;常微分方程數值解法;偏微分方程數值解法;有限元方法等[3]。后續將安排深度學習、數學模型、大數據技術與應用等高級課程,實現專業課程之間的無縫銜接,持續優化數據科學與大數據技術等專業人才培養方案。在科學計算課程教學環節中,教師除了注重學生的程序設計思想的培養,還應該先開設機器學習、數據挖掘等課程,在算法的實現過程中引導學生自主學習TensorFlow、Scipy等第三方庫,有效訓練學生的基本技能。
2.4 考核改革的專業針對性
相比于其他的課程,科學計算更注重考核學生的實踐能力,考核形式應多元化,考核方式主要為隨堂測試、上機實踐、期中實驗報告、期末考試等。上機操作和實驗報告有助于提高學生的操作能力,通過完成Python語言編程設計,實現對算法設計的深刻理解[4],同時教師可將優秀的實驗報告編撰成《科學計算論文集》,積累教學素材。期中多頻次實驗報告以具有實際背景的微分方程為求解對象,構造數值算法,利用Python編程實現。期末考試既考察學生數值計算理論、Python應用能力,也考核學生算法設計思想,考核分數由平時表現(30%)+ 分組報告與綜合項目(30%)+ 期末綜合測試(40%)綜合打分。數據科學與大數據技術專業主要培養學生數據采集處理、特征工程、模型訓練與優化能力,而科學計算技能在其中扮演這關鍵的角色,因此有針對性的對專業技能課程的考核進行改革,有利于以學生為中心的科學理念形成和學科建設的健康發展。
2.5 開展學科競賽和項目研究
問題驅動式教學在高等教育中的重要性和科學性已經被廣大師生認可。在科學計算課程的教學進程中,教師利用學科競賽和課題研究引導學生開展知識探索和原始創新,有利于提高學生參與度、發揮創造力和想象力,有利于挖掘年輕人的潛能。當然,在問題驅動式教學中,教師的個人綜合能力直接決定了改革的實施效果。高水平的學術指導就像音樂指揮家,非演奏本體卻主導整個表演過程。以湖南工商大學大數據專業教學改革為例,在實踐教學改革后,學生參與實踐競賽的興趣有了明顯提高,該專業學生數學競賽的參與度提高了30%,同時全國大學生數學建模競賽的參與度達到了80%。
3 結束語
科學計算是數據科學與大數據技術專業學生需要掌握的一項重要技能。課程的開設不僅可以通過簡化假設建立數學模型向學生完整的展示完整的解題過程,還可以借助數值方法和數學軟件幫助學生進行理解[5]。對于科學計算課程教學改革的成效,在諸如全國大學生數學建模、統計建模、大數據分析等大賽中得以顯現,學生取得優異成績的同時,還播下了創新創業的種子。這些成績的取得與教學方法的不斷探索和改革是密不可分的,實踐證明,利用Python軟件對數據科學與大數據技術專業學生的科學計算課程進行改革,能催生最大潛能,提升學生獲得感和創新精神。在實踐教學和實訓方面,基于Python語言的科學計算課程教學改革還有進一步提升的空間。
參考文獻(References):
[1] 劉衛國,奎曉燕.Python語言程序設計教學體系建設[J].計算機教育,2017,(8):13-17
[2] 王海軍,曹德欣,陳興同,胡建華,楊然.基于科學計算和實踐創新能力培養的數值計算方法課程改革與實踐研究[J].大學教育,2016(8):135-136,150
[3] 李丹丹.淺析Python在大數據課程教學改革中的作用[J].教育現代化,2019,6(82):115-116
[4] 魏冬梅,王秀華,王影,陳一夫,汪思德.基于Python的程序設計通識課程建設與教學實踐[J].計算機教育,2019,2:69-73
[5] 趙國忠.科學計算核心課程教學的幾點思考[J].陰山學刊(自然科學版),2018,32(3):106-108