劉衛(wèi)國+奎曉燕
摘 要:分析Python語言的特點,提出Python語言程序設計課程教學的兩個層次,針對不同層次提出相應的教學目標;針對計算機公共課程的教學要求,結合本科人才培養(yǎng)方案,從教學內容、實踐環(huán)節(jié)、學時安排等方面闡述Python語言程序設計課程的教學實施。
關鍵詞: Python語言;程序設計;教學體系
0 引 言
計算機程序設計基礎是高等學校計算機基礎教學的核心課程[1],它以一種高級語言作為程序實現(xiàn)工具,介紹程序設計的基本思想和方法,既可為后續(xù)相關計算機課程學習奠定基礎,也有助于學生更加深刻地理解計算機求解問題的方式,因而計算機程序設計課程也是計算思維能力培養(yǎng)的重要載體,是對學生進行計算思維能力培養(yǎng)最直接、最具操作性的課程。
傳統(tǒng)的高級語言(如C語言)往往為了兼顧性能而采用較為復雜靈活的語法規(guī)則,所以需要掌握的細節(jié)多,即使實現(xiàn)最簡單的功能,也要涉及很多概念,其他許多高級語言亦是如此,這就制約了計算機作為一種普適工具在各學科專業(yè)中的深入應用。Python語言是一種功能強大的程序設計語言,以優(yōu)雅、清晰、簡潔的語法特點,能將初學者從語法細節(jié)中擺脫出來,而專注于解決問題的方法、分析程序本身的邏輯和算法[2]。Python語言還具有大量優(yōu)秀的第三方函數(shù)模塊,對學科交叉應用很有幫助。經過20多年的發(fā)展,Python語言已經成為一門重要的程序設計語言。目前,基于Python語言的相關技術正在飛速發(fā)展,國內外許多高校也陸續(xù)開設了Python語言程序設計課程[3]。
1 Python語言程序設計教學總體思路
1.1 Python語言的優(yōu)勢
人們學習程序設計往往是從學習一種高級語言開始的,因為語言是描述程序的工具,熟悉一種高級語言是程序設計的基礎。關于高級語言有很多,任何一種語言有其自身誕生的背景,從而決定了其特點和擅長的應用領域。例如,F(xiàn)ORTRAN語言誕生于計算發(fā)展應用的早期,適合做科學計算;C語言是為描述和實現(xiàn)UNIX操作系統(tǒng)而設計,廣泛應用于系統(tǒng)軟件、嵌入式軟件的開發(fā)。Python作為一種通用的程序設計語言,具有和其他語言相同的基本特征,也有其自身的特點,給人印象較深的有3點。
(1)開放性。其開放特性使得很多開放語言社區(qū)對用戶提供快速的技術支持,學習和使用Python技術不再是孤軍奮戰(zhàn)。如今,各種社區(qū)提供了成千上萬個不同功能的開源函數(shù)模塊(截至本文投稿時接近11萬個),而且還在不斷地發(fā)展,這為基于Python語言的快速開發(fā)提供了強大支持,由此形成了良好的計算生態(tài)[4],構成了Python語言的強大優(yōu)勢。
(2)優(yōu)雅的語法。Python語言吸收了現(xiàn)代程序設計語言的很多特點,采取了優(yōu)雅、細致的語言設計。例如,Python程序沒有太多的細節(jié)規(guī)則要求,“信手拈來”就可以組成一個程序;使用語句“a,b=b,a”可以實現(xiàn)無需中間變量交換兩個變量的值;列表可以很方便地實現(xiàn)批量數(shù)據(jù)的處理,如列表的sort方法或sorted()內置函數(shù)可以實現(xiàn)數(shù)據(jù)排序等。
(3)可讀性強。Python語言通過程序縮進來確定語句塊的起止范圍(C語言用一對大括號構成復合語句,其他語言采用控制結構配套的結束語句),既是語法要求,又保證了程序的可讀性,有利于培養(yǎng)學生良好的程序設計習慣。
1.2 Python語言程序設計的教學層次及其教學目標
通過前面對Python語言特點的分析,可以把Python語言程序設計的內容體系歸結為兩部分,即Python基礎和Python生態(tài)圈,如圖1所示。其中Python基礎就是一般意義上講的程序設計,這時Python程序設計面臨的問題和其他語言一樣,即要突出程序設計方法,講清從問題到算法再到程序的思維過程,幫助學生構建問題求解的方法。Python生態(tài)圈是指Python第三函數(shù)庫的應用,這是突顯Python優(yōu)勢的地方。如果沒有Python生態(tài)圈的支撐, Python程序設計和其他語言程序設計沒有本質區(qū)別。
Python的內容體系衍生出Python語言程序設計教學的兩種不同層次,一是計算機公共課,即計算機程序設計基礎,一般是在大學計算機課程之后開設,作為非信息類專業(yè)的入門程序設計課程;二是專業(yè)應用課程,一般是在學習了某種程序設計語言之后開設,可以針對任何專業(yè)開設。
這兩種層次教學的教學目標是不同的,作為計算機公共課,Python包括基本語言知識和基本算法的教學(Python基礎)以及第三方函數(shù)庫的應用(Python生態(tài)圈),這時Python基礎是重點,Python生態(tài)圈的應用是方向性、示范性的,如圖2所示。圖中Python基礎和Python生態(tài)圈的內容有交叉,但前者是重點(影印部分)。課程內容應適當突出基礎算法(程序設計課程教學目標使然),以排序問題為例,除介紹列表的sort方法或sorted()內置函數(shù)外,還要介紹基本的排序算法:選擇排序、冒泡排序、插入排序等。而Python生態(tài)圈的應用除一些公共性模塊外(如繪圖模塊),還應結合專業(yè)特點進行教學,如工程類專業(yè)介紹科學計算模塊庫,語言類專業(yè)介紹自然語言處理模塊庫。
Python作為專業(yè)應用課程時,不需要從基本的算法邏輯開始,重在第三方庫的應用,介紹利用Python解決學科領域問題的途徑和方法,如圖3所示。圖中Python基礎和Python生態(tài)圈的內容有交叉,但后者是重點(影印部分)。即便學生沒有用過Python語言,也能通過自學、微視頻、MOOC等方式很快地熟悉,因為他們已學過一門程序設計語言,應該有這種能力(教學實踐看,大部分學生的學習能力是不可低估的)。
2 Python語言程序設計教學實施方案
Python語言程序設計教學包括計算機程序設計基礎(Python)、計算機程序設計實踐(Python)兩門課程,前者48學時(理論學時32、實驗學時16)、3學分,后者16學時、1學分,開課時間是一年二期。
2.1 計算機程序設計基礎(Python)課程教學內容組織
課程以Python語言作為程序實現(xiàn)工具,以實際問題的求解過程為向導,突出“問題—算法—程序”的一種思維過程,強調計算機求解問題的思路引導與程序設計思維方式的訓練,重點放在程序設計的思想與方法上。
2.1.1 課程理論教學內容
該課程理論教學的主要內容如圖4所示。
各部分的具體內容如下:
(1)基本數(shù)據(jù)類型。涉及Python各種數(shù)據(jù)對象的表示方法、常用模塊函數(shù)、基本運算與表達式等內容。
(2)程序流程控制。涉及順序、選擇、循環(huán)3種控制結構。順序結構包括賦值語句、數(shù)據(jù)輸入輸出等內容,選擇結構包括條件的描述、選擇結構的實現(xiàn)、條件運算等內容,循環(huán)結構包括while循環(huán)結構、for循環(huán)結構、循環(huán)控制語句、循環(huán)的嵌套等內容。
(3)復合數(shù)據(jù)類型。涉及字符串處理、列表與元組的應用、字典與集合的應用。字符串處理包括字符串編碼、字符串的索引與分片、字符串的操作等內容。列表與元組包括序列的通用操作、列表的專有操作、元組與列表的區(qū)別及轉換等內容。字典與集合包括字典、集合的操作等內容。
(4)函數(shù)與模塊。涉及函數(shù)的定義與調用、函數(shù)的參數(shù)傳遞、函數(shù)的嵌套調用與遞歸調用、變量的作用域、匿名函數(shù)、Python模塊等內容。
(5)文件操作。涉及文件的打開與關閉、文本文件的操作、二進制文件的操作、文件處理等內容。
(6)圖形繪制。涉及Tkinter圖形庫、畫布、圖形的繪制、圖形的事件處理、圖形處理應用等內容。
(7)圖形用戶界面。涉及常見控件的用法、對象的布局方式、對話框、圖形用戶界面應用等內容。
(8)第三方函數(shù)庫的應用。涉及Python在專業(yè)領域的學科應用,結合專業(yè)特點介紹不同的第三方函數(shù)庫。
2.1.2 課程實驗設置
本課程實驗含3 種實驗類型:驗證性實驗、綜合性實驗和設計性實驗。共安排8個實驗,每個實驗安排2 小時課內機時和適當?shù)恼n外機時。通過實驗教學,學生能夠加深對理論知識的理解,掌握常用算法及其實現(xiàn)方法,得到程序設計方法的基本訓練。課程的實驗內容如下:
(1)順序結構實驗。Python程序的運行環(huán)境、Python的基本數(shù)據(jù)類型、Python的算術運算規(guī)則及表達式的書寫方法、賦值語句的基本格式及執(zhí)行規(guī)則、輸入輸出語句的基本格式及執(zhí)行規(guī)則、順序結構程序的設計方法。
(2)選擇結構實驗。Python中表示條件的方法、if語句的格式及執(zhí)行規(guī)則、選擇結構程序設計的方法。
(3)循環(huán)結構實驗。while語句的基本格式及執(zhí)行規(guī)則、for語句的基本格式及執(zhí)行規(guī)則、多重循環(huán)的使用方法、循環(huán)結構程序設計的方法。
(4)字符串處理實驗。字符串的索引與分片、字符串的操作方法。
(5)列表、元組、字典和集合實驗。概念及操作方法。
(6)函數(shù)實驗。函數(shù)定義與調用、匿名函數(shù)的定義與使用方法。
(7)文件操作實驗。文件的基本概念及操作方法。
(8)圖形處理操作實驗。畫布繪圖的方法、turtle繪圖方法。
2.2 計算機程序設計實踐(Python)課程教學內容組織
課程是在學生修完計算機程序設計基礎(Python)之后的一門實踐性課程,要求學生完成一個具有一定規(guī)模的程序設計任務。通過本課程的學習,學生具備利用程序設計技術綜合解決實際問題的能力。通過分析問題、設計算法、編寫和調試程序,學生得到利用計算機進行問題求解的基本訓練,提高綜合應用能力。該課程的基本要求是,學生能獨立完成問題分析、程序設計、編寫和調試任務,能根據(jù)設計任務的需要進行有關知識的學習和資料查找,撰寫實踐報告。
典型的設計任務包括繪制各種分形曲線、特殊圖形、游戲程序、圖形用戶界面設計、科學計算問題(如求線性方程組)、自然語言處理等。具體要求是:根據(jù)問題建立數(shù)學模型,設計算法,進行程序設計、調試,并對結果進行分析評價。在問題求解方式上,有基本的算法、Python標準庫求解、第三方庫代碼復用等,其中重點應該是第三方庫的使用。例如,矩陣運算的NumPy模塊,科學計算的SciPy模塊,數(shù)據(jù)可視化的Matplotlib模塊等。
由于是一年二期開課,受學生先前知識的影響,有些應用還難以開展,如網絡爬蟲、數(shù)據(jù)挖掘等。
3 推介課程,將Python列入本科人才培養(yǎng)方案
計算機基礎教學具有工具性、應用性、普適性等特征。我們認為,針對非信息類專業(yè)的程序設計課程,選擇Python作為描述語言更能體現(xiàn)計算機基礎教學的特征?;谶@些認識, 我們將Python程序設計課程列入了中南大學2016版本科人才培養(yǎng)方案。2016年,學校對公共基礎課程和學科基礎課進行了改革,由本科生院與二級教學單位聯(lián)合確定課程種類、學時及適用學科專業(yè)類型,供二級學院制定人才培養(yǎng)方案時使用,最后確定了“1+2+x”信息技術類系列課程,如圖5所示。
在計算機程序設計基礎課程中,我們將Python語言列入其中,由各辦學專業(yè)根據(jù)專業(yè)需要自行決定語言類型。剛開始時沒有一個專業(yè)選擇該語言,究其原因應該是專業(yè)老師不了解。后來通過學校組織研討會、審定培養(yǎng)方案(各專業(yè)制定培養(yǎng)方案后需要各個系列課程團隊審核)、走訪專業(yè)責任教授等方式,我們介紹課程特點,強調Python在學科應用中的優(yōu)勢,最終有物流工程、工程管理、英語等專業(yè)將Python程序設計列入了培養(yǎng)方案。
和以前制定培養(yǎng)方案相比,這次是由本科生院組織提出系列課程菜單,再由各專業(yè)自行決定課程,這也體現(xiàn)了計算機基礎教育為專業(yè)人才培養(yǎng)目標服務的“服務性”特征。我們的體會是,基礎課教學團隊一定要提出自己的思路和構想,實現(xiàn)主動服務,只要真正能在專業(yè)人才培養(yǎng)中發(fā)揮作用,對提高學生的計算機應用能力有幫助,專業(yè)老師還是歡迎的,但得到認可可能需要一點時間。
4 結 語
Python語言程序設計教學體系的建設既有一般高級語言程序設計教學體系的共性,又有其自身的特點。如何遵循共性,發(fā)揮特點,還需要結合人才培養(yǎng)的目標要求和教學對象的特點不斷進行教學實踐。不管采用教學體系方案如何,培養(yǎng)學生的計算機應用能力的目標是共同的。比較理想的境界是,Python基礎和Python生態(tài)圈融合應用,使學生既能掌握基本的程序設計方法和技能,又能合理選擇問題求解的方式,提高解決問題的效率和水平。
參考文獻:
[1] 教育部高等學校計算機基礎課程教學指導委員會. 高等學校計算機基礎核心課程教學實施方案[M]. 北京: 高等教育出版社, 2011.
[2] 劉衛(wèi)國. Python語言程序設計[M]. 北京: 電子工業(yè)出版社, 2016.
[3] 嵩天, 黃天羽, 禮欣. Python語言: 程序設計課程教學改革的理想選擇[J]. 中國大學教學, 2016(2): 42-47.
[4] 嵩天, 禮欣, 黃天羽. Python語言程序設計基礎[M]. 2版. 北京: 高等教育出版社, 2017.
(編輯:彭遠紅)