鄭世秀 劉曉潔
摘要:大學通識教育中程序設計課程的設置要適應計算機技術的發展的不同階段。隨著計算機技術發展,青島大學目前的通識教育程序設計課程設置已經不能完全適應新工科背景下的應用需求。本文從培養計算思維的視角,提出Python語言是通識教育中最合適的計算機入門以及進階編程語言的觀點,并提出了將Python語言作為入門級課程的可行的教學方案。
關鍵詞:計算思維;教學改革;程序設計;計算機語言
中圖分類號:G642.0 文獻標志碼:A 文章編號:1674-9324(2019)03-0265-03
一、程序設計與計算思維
在教育部提出建設新工科[1]的背景之下,培養具有工程實踐能力、創新能力的高素質、復合型人才成為本科教育的重要目標。計算思維[2]從思維層面闡述了運用計算機科學的基礎概念求解問題、設計系統和理解人類行為的過程。理論思維、實驗思維再加上計算思維構成科學思維的三種方式。其中理論思維以數學學科為代表,以推理和演繹為特征;實驗思維又稱實證思維,以物理學科為代表,以觀察和總結自然規律我特征;計算思維以計算機學科為代表,以設計和構造為特征。思維決定了一個人解決問題的方式,計算思維與計算機技術的普及和發展密切相關,運用計算思維進行問題求解是每個專業的大學生都應當具備的基本技能。
程序設計課程是訓練計算思維能力的最直接、最有效的工具。非計算機專業學生學習程序設計大多不是為了學習一技之長用來就業或謀生,而是在程序設計的訓練過程中,學會將問題抽象、模塊化、分層次等方法,形成邏輯、理性思考問題的習慣,從而提高自己的信息素養和計算思維的能力。在把問題抽象過程中學會問題與數據的定義,并學會將復雜的問題轉化分解為若干簡單的子問題的分解方法。程序設計教學將計算思維融入教學過程,將極大地提高學生解決實際問題的能力。在2016年,教育部高等學校大學計算機課程教學指導委員會發布了《大學計算機基礎課程教學基本要求》[3],按照基本要求國內各高校可結合本校的教學情況開設包括Python語言在內的程序設計課程教學語言,目前國內已有幾百所高校開始開設了Python語言。
二、程序設計語言比較
筆者對所在高校青島大學和多所其他高校進行了程序設計課程教學情況的系統調研。目前各高校為非計算機專業開設的程序設計語言多為以下幾種之一:
(一)C/C++
《C語言程序設計》是我國大多數高校普遍為本科生開設的課程,但同時也是期末考試中不及格率較高的一門課程,學生普遍反映即使通過了考試,仍然不知道如何去解決實際問題。而C++以對象、類、封裝、繼承、多態等為教學內容,適合編寫較大規模的程序,對非計算機專業的學生來說,學習難度更大。因此,C語言和C++更適合計算機相關專業以及部分信息類專業學生,非計算機專業在運用所學知識解決解決某些問題方面難度較大。
(二)數據庫開發工具Visual Foxpro
《Visual FoxPro程序設計》這門課也有很多高校開設。Visual Foxpro由Microsoft公司從Fox公司的FoxBase數據庫軟件經過數次改良,并且移植到Windows平臺之上,主要用于開發數據管理與運算等方面,是目前快捷、實用的數據庫管理系統軟件之一。使用VFP可以有效管理數據,但其應用有很大局限性,不能更好的分析數據,無法處理數據管理之外的計算等應用問題。尤其無法滿足網絡環境下的數據庫應用問題。
(三)Visual Basic語言
VB語言用于開發Windows系統中的視窗應用,由早期的Basic語言發展而來。VB開發的程序簡單、直觀,在辦公自動化軟件中的VBA與其一脈相承,最適合需要編寫視窗應用的群體,但這種語言應用范圍比較小,僅限于Windows系統。目前在程序設計語言中幾乎僅用于教學,在開發應用領域幾乎處于可有可無的狀態。
(四)Java語言
Java語言是面向對象的語言,具有簡單性、面向對象、分布式、健壯性、安全性、平臺獨立與可移植性、多線程、動態性等特點,可以編寫桌面應用程序、Web應用程序、分布式系統和嵌入式系統應用程序。和C語言一樣,由于非計算機專業的學生的目標是面向應用而不是成為專業的程序員,因此并不需要關注代碼復用性和可移植性等復雜問題,Java主要適合計算機專業學生進行軟件開發。
(五)MATLAB
MATLAB嚴格來講是一個工具包軟件而不是編程語言,以矩陣運算見長,大量的工具箱簡化了數據處理的難度,MATLAB主要專注于工程和科學計算是工程領域的重要計算軟件,并不適合作為入門級的編程語言。
(六)Python語言[4]
Python是純粹的自由軟件,源代碼和解釋器遵循GPL(GNU General Public License)協議。Python語法簡潔清晰,強制縮進,可讀性好,能夠把用其他語言制作的各種模塊(尤其是C/C++)很輕松地聯結在一起,眾多開源的科學計算庫都提供了Python語言的調用接口。用戶可以在多種操作系統上免費安裝Python語言及其絕大多數擴展庫。相對于其他編程語言,Python更易學、更嚴謹,它能讓用戶編寫出更易讀、易維護的代碼,且Python有著豐富的擴展庫,是一門學的懂、用的上的語言。
計算機從1946年誕生到今天,硬件的發展過程經歷了電子管、晶體管、集成電路、大規模及超大規模集成電路四個階段,計算機技術的發展則經歷了四個時代[5],每一個時代幾乎都有一種稱雄于這個時代的硬件、軟件環境的編程語言。Python語言則是計算機技術發展到“復雜信息系統時代”的“后起之秀”。在計算機系統結構時代,C語言可以很好地對計算機體系結構進行抽象和自動化。在計算機網絡時代,Java可以體現網絡對跨平臺的支持。在計算機視窗時代,VB體現了基于視窗的語法設計體系,VFP體現了數據管理的有效性。但每一種語言都有它產生、發展的生存期,隨著社會需求的變化與互聯網+時代的來臨,有一些語言會呈現出它的局限性。在復雜的信息系統時代,這些語言已經不能適應當前的應用需求,而Python語言有著良好的計算生態[5],其開源、開放的理念是推動計算機技術發展的動力。幾種語言的比較見表1。
三、兩個層次的Python語言程序設計教學方案
Python語言的教學內容大致可以歸結為兩部分:Python語言基礎和Python語言生態圈。針對這兩部分內容,可以設計兩個層次的教學方案。Python語言基礎部分突出程序設計方法,需要講清楚基本語言知識和基本算法,重視從問題描述到問題抽象再到算法程序的思維過程,幫助學生構建問題求解的方法。Python語言生態圈指的是第三方函數庫的應用,為各個不同專業提供支持,提供解決本領域問題的工具和方法。
(一)作為第一門程序設計語言
Python的基礎知識為重點內容,適合所有非計算機專業。適當根據具體專業特點介紹相關模塊庫,如語言類專業介紹自然語言處理模塊庫,工程類專業介紹科學計算模塊庫。共32學時(理論16學時+實踐16學時)。教學內容如表2所示。
(二)作為專業應用課
各專業都需要有一個得力的工具滿足計算需求,專業應用課程建立在一層次教學內容基礎之上,重在第三方庫的應用,學會利用Python解決本學科領域中的計算問題。表3中列出了Python能夠為個專業提供支持的第三方庫。
1.網絡數據獲取。網絡數據獲取主要有三種方式:一是利用Requests庫抓取網頁,然后再利用BeautifulSoup庫進行解析;二是利用Web API或基于Web API的第三方模塊直接獲取數據;三是根據HTTP協議直接從網頁下載數據或利用已有的語料庫。
2.文本分析。通過分詞jieba庫和自然語言處理NLTK庫處理中文、英文等文本并進行分析。如詞頻統計等應用。
3.數據處理和可視化。數據處理和可視化主要使用Python開源生態系統SciPy。利用SciPy中包含三個核心模塊:Numpy、Matplotlib、pandas來表示數據、繪制數據展示圖、開展深入數據運算。
4.機器學習。利用數據處理pandas庫和機器學習算法集scikit-learn庫,清洗數據并進行機器學習分類、聚類和回歸分析。
5.圖形繪制。利用圖形繪制的Turtle庫和GUI設計中的qt5庫,實現基本的GUI和圖形創意設計。
青島大學從2017開始對全校所有專業開設了Python選修課程,學生來自不同專業。采用第一層次教學方案,同時利用中國大學MOOC平臺[6]上北京理工大學的“Python語言程序設計”作為源課程,實施了MOOC+SPOC+翻轉課堂的混合教學,取得了較好的教學體驗,在后續學期會繼續開設Python程序設計選修課并增加課程容量,實現兩個層次的教學實踐,讓Python真正成為學得會、用的上的編程語言。
四、結語
通過教學探索與實踐效果來看,Python語言可以滿足不同專業的教學需求,是一門能夠實現“專業定制”的語言,可以很容易實現多樣化教學,在共同的課程核心模塊上加上與專業需要結合緊密的第三方庫和案例就可以形成個性化的教學體系。且由于Python簡單易入門,有很多公開的案例和代碼可以使用學習,學生對這門語言保持較高的學習興趣和熱情,這是過去的程序設計課程難以達到的效果。相信在未來的計算機教學領域,Python會有更大的發展應用空間。
參考文獻:
[1]中國工程教育專業認證標準(2015版)[S].北京:中國工程教育專業認證協會,2015.
[2]Wing J M.Computational thinking[J].Communications of the ACM,2006,49(3):33-35.
[3]教育部高等學校大學計算機課程教學指導委員會.大學計算機基礎課程教學基本要求[J].北京:高等教育出版社,2017.
[4]嵩天,黃天羽,禮欣.Python程序設計基礎(第2版)[M].北京:高等教育出版社,2017.
[5]嵩天,黃天羽,禮欣.Python語言:程序設計課程教學改革的理想選擇[J].中國大學教學,2016,(2).
[6]中國大學MOOC[EB/OL].
http://www.icourses.cn.