嵩 天,黃天羽
(1.北京理工大學計算機學院,北京100081;2.北京理工大學軟件學院,北京100081)
2016年,教育部高等學校大學計算機課程教學指導委員會發布了《大學計算機基礎課程教學基本要求》(簡稱《基本要求》)[1]。《基本要求》首次建議將Python語言作為首門程序設計課程的教學語言,在其推動下,國內高校逐步開設了Python語言,成為教學改革熱點。與此同時,構建Python語言教學案例就成為教學進程中必不可少的環節。我們認為,Python語言并非其他編程語言的簡單替代,而是伴隨計算機技術發展時代變化的必然選擇[2]。因此,在構建教學案例時,要充分結合Python語言特點,采用新思維進行設計,而不應將其他編程語言已有案例進行簡單移植。因為只有采用新思維設計的案例才能讓學生認識到Python語言的價值,并體會到程序設計過程的快樂。
相比其他語言,Python具有3個明顯的優勢:簡潔、高效和生態。
(1)簡潔:Python語法簡潔,卻具有完整的語法邏輯,可以進行語句級、面向過程和面向對象的程序開發,變量類型使用無需定義,強制縮進能顯著提高可讀性;相比其他語言,Python能更加純粹地表達算法和程序邏輯意圖。
(2)高效:Python代碼編寫高效。同樣功能的計算任務,Python語言實現的代碼行數約是C語言的10%左右;程序越復雜,Python越具有優勢,而更少的代碼行數意味著更高的編程效率、更少的調試代價和更短的實現時間。
(3)生態:Python具有全球最大的單一程序語言計算生態,是一門計算生態語言。截至2017年11月,Python語言提供超過12萬個第三方庫,幾乎覆蓋計算的各個領域,已有功能簡潔實用,避免“重復造輪子”,進一步提高了編程效率。
針對Python語言上述特點,北京理工大學提出“理解和運用計算生態”的教學理念和實施方案[3-4],得到全國眾多高校的積極響應,許多高校以此為基礎開展了大量的教學設計和教學實踐,并取得一批優秀的教學成果。本文將進一步探討Python語言程序設計教學案例設計的新思維及實施效果。

表1 教學案例設計思維比較
計算機程序設計已經成為當代信息社會的基礎技術方法之一,基于計算機的計算思維也成為與邏輯思維和實證思維并列的第三種思維范式。隨著云計算、物聯網、移動互聯網、大數據、人工智能等重大技術和科技需求的不斷發展,人們對計算問題及程序設計的認識發生了根本的轉變,從以知識驗證為主的問題求解轉變為面向實際問題解決為主的計算求解。這種根本轉變反映了信息技術對人類生活和工作的影響程度,在未來的10~20年中,這種影響程度將更加深入,甚至將引發一批非信息類工作的消亡。
對于高校程序設計類課程,這種認識轉變所帶來的直接影響是學生的學習期待將不斷增長。現階段,學生對網絡爬蟲、數據處理、機器學習、人工智能等計算問題十分關注,希望通過程序設計課程掌握相關技能。然而,以C語言為例,傳統的教學案例以字符打印輸出、數列計算、基本文件讀寫等作為主要內容,學習期待與實際問題相差較大,客觀上影響了教學質量的提升。
程序設計教學案例新思維產生于計算時代發展新階段的背景下,以符合時代發展的應用需求為對象,主張設計既能滿足學生期待又符合學生認知水平以及程序設計教學規律的教學案例,兼顧興趣和創新,培養學生通過程序設計解決問題的能力。
為了更好地闡述程序設計教學案例新思維,表1給出不同視角下傳統思維和新思維的對比。
程序設計教學案例新思維是一整套視角,從案例設計目的、形式、來源、開放性、規模和意義多角度進行綜合詮釋,核心理念在于設計教學案例需要符合時代對問題求解和創新的要求,滿足學生對程序設計課程的學習預期。
傳統思維下,程序設計教學案例用于服務知識點講解,案例需要有確定的輸入輸出,便于自動評閱,且案例完全由教師設計,可重點講解。這是傳統課堂教學思路在程序設計課程中的具體反映。新思維則希望程序設計教學案例用于服務問題解決,案例對應大類知識體系,但不限于個別知識點;案例可以激發學生的創造力,而不是統一的固定輸出形式;案例要有一定的運用空間,不限制規模,從有趣和有用兩個方面引導學生學習。
程序設計教學案例新思維要“面向問題、引發興趣、培養能力、引導創新”。其中,問題、興趣、能力和創新4個要素兼具,面向問題是原則,引發興趣和培養能力是手段,引導創新是目的。結合實際教學,我們發現,興趣、能力和創新是相輔相成的關系,當采用創新型教學案例時,學生的興趣和能力會快速提高,而興趣和能力的提高又為進一步創新引導提供堅實基礎。
針對程序設計課程教學,案例教學新思維具有普遍的適用性,即適用于各種編程語言教學案例的實踐,然而,從各編程語言生態性考慮,Python語言具有最佳適用性,主要有以下3個原因。
第一,Python語言符合計算機技術發展階段。Python語言是一門通用語言,尤其適合在云計算、物聯網、移動互聯網、大數據、人工智能等重大技術和應用需求下完成功能開發,更符合學生對編程應用的預期。Python語言不僅符合計算機技術發展方向,也是面向未來的教學內容,最適合教學案例新思維設計。
第二,Python語言具有龐大的計算生態,高級計算功能采用搭積木方式組織,新思維案例更容易設計。Python語言具有12萬個第三方庫,覆蓋幾乎所有計算領域,因此構造教學案例可以利用第三方庫提供的功能作為基礎模塊,培養學生集成創新能力,極大擴展學生對程序設計功能的視野,適合構造符合時代發展的新思維案例。
第三,Python語言高效高產,實現周期短。學生對創新的熱情不僅在于創新想法本身,更在于對創新的實現。由于Python語言高效高產,創新想法可以得到快速實現,因此,相關教學案例能夠較好地激發學生的興趣。
我們建議將Python語言作為我國高校各專業程序設計入門語言,并采用程序設計教學案例新思維設計教學案例,不僅便于學生掌握程序設計入門知識,還能夠引導學生進行創新,加深對程序設計的理解。

圖2 利用蒙特卡洛方法求解π
“有趣”的案例可以激發學生的學習興趣,所見即所得,起到興趣引領的作用。對于Python語言來說,建議使用turtle庫(繪圖庫)開展入門案例設計,部分案例如圖1所示。

圖1 turtle庫入門案例
“有用”的案例可以培養學生在某方面的程序設計基本能力,但是案例不一定有趣。對于Python語言來說,建議圍繞random庫(隨機函數)、jieba庫(中文分詞)等有特定用途的功能庫來設計入門案例,使學生掌握使用相應的程序設計能力。如利用random庫中的隨機數函數可以設計蒙特卡洛方法求解π(圓周率)實例,使學生掌握蒙特卡洛工程方法,如圖2所示。
我們建議交叉組織“有趣”的案例和“有用”的案例,先依靠興趣引導學生掌握基本的編程方法,進一步使用有用的案例培養學生的能力。
turtle庫也叫海龜繪圖庫,它是Python語言最基礎的圖形繪制函數庫,基本原理是用程序控制一只小海龜爬行,并將其軌跡動態生成圖形進行輸出。turtle圖形繪制的概念誕生于1969年,最初成功應用于LOGO編程語言。由于turtle圖形繪制概念十分直觀且非常流行,Python接受了這個概念,并形成了Python的turtle庫,圖1的3個例子都是turtle庫繪制的圖形。
turtle庫設計的案例是典型的“有趣”類型教學案例,除了掌握基本的圖形繪制,學生還可以進一步實踐Python語法運用和程序設計結構能力。有趣案例可以很好地激發學生的學習興趣,十分適合在程序設計入門課程中講授。因此,我們引入“海龜繪制作品”這個實踐案例,這個案例并非只是簡單繪制一個海龜圖形,而是一個創意類型題目,該案例有如下3個要求:
第一:利用turtle庫繪制一個圖形,內容不限,以創新性作為主要評分依據;
第二:相同代碼盡量使用函數,總代碼數量不少于100行;
第三:所繪制圖形要有個人特點,成為“作品”。
這3個要求可以基本保證學生實現的答案具有一定規模。實踐中,需要引導學生以“作品”心態實現案例,代表學生turtle繪圖的最高水平。大部分學生能夠利用Python語言完成有趣案例繪制,對程序設計有全新、良好的認識,達到一定的Python編程水平。
用經典文學作品中的人物出場次數可以間接表明作品中人物的重要程度,我們以此形成一個通用實踐案例框架。圍繞這個功能構建的具體案例能夠幫助學生掌握文本讀取、中文分詞、字符清洗、關鍵詞排序、排序輸出等整套文本處理能力,屬于典型的“有用”案例。
人物出場統計能夠衍生出一系列案例,如《紅樓夢》《三國演義》等中文名著人物出場次數統計,《哈姆雷特》《尤里斯西》等英文名著人物出場次數統計等。對于中文實例,還需要介紹Python用于中文分詞的jieba庫;對于英文實例,依靠空格和標點符號即可進行單詞分隔。講解這兩種衍生實例,有助于學生理解中英文文本處理的差異。此外,對于人物出現多個名稱的情況,如曹操、孟德、丞相等指代同一個人,也需要學生進行有效處理,使學生的關注點從程序語法逐步過渡到問題求解。
人物出場統計案例可以再進一步衍生成為關鍵詞統計,這將有助于概要分析重點文件的寫作特點或內容重點。如統計政府工作報告的關鍵詞,有助于刻畫不同時期政府工作重心的轉變。這類實例延伸不僅貼近生活,也為學生未來使用編程解決學習和工作中的實際問題指明了方向。
截至2017年10月,本文作者在北京理工大學開展了11輪Python語言課程教學,其中多次采用案例1——海龜繪圖作品和案例2——人物出場統計,構造新思維實踐題目,學生反應十分熱烈。以案例1為例,其中3份學生作業如圖3所示。

圖3案例1實踐案例的學生作品展示(部分)
圖3 中展示的作業是從眾多作業中隨機選取的部分作品。值得說明的是,這些作業是學生在Python語言程序設計入門課程講授第10~12個學時內容后完成的,即初學編程的同學可以在5次課堂教學后完成案例1——海龜繪圖作品,顯著提升了學生對程序設計的興趣,掃清了學生潛在的畏難心理。這個新思維案例的運用為同學們后續學習深入編程技術做了良好的興趣引導。
北京理工大學的教學實踐表明,程序設計教學案例新思維案例能從兩個方面顯著提高教學效果。
(1)新思維案例能夠激發學生對程序設計的興趣。有趣的案例能夠促進學生發揮想象力,調動學生的主觀能動性,如果這些案例不僅有趣且能夠貼近自身生活,可以讓同學們認識到編程不再是枯燥的事情。
(2)新思維案例能夠激發學生的創造性。非標準輸出的案例或具有一定靈活度的案例能夠激發學生的創造性,同時凸顯個性。例如,案例2——人物出場統計是一個框架性案例,不僅能夠啟發學生選取合適文本或問題進行統計,實踐中部分同學還能夠采用turtle庫或其他第三方庫制作出可視化效果。
教學實踐體系對于學生掌握一門課程內容十分重要,我們建議在講授Python語言程序設計內容同時,能夠采用新思維設計一套培養學生興趣和創造力的實踐體系。多輪實踐效果證明了新思維的適用性和有效性,即選擇海龜繪圖作品和人物出場統計作為階段大作業內容,可以調動學生的學習熱情,顯著提高教學效果。
[1]教育部高等學校大學計算機課程教學指導委員會.大學計算機基礎課程教學基本要求[M].北京:高等教育出版社,2017.
[2]嵩天,黃天羽,禮欣.Python語言:程序設計課程教學改革的理想選擇[J].中國大學教學,2016(2):42-47.
[3]嵩天,禮欣,黃天羽.Python語言程序設計基礎[M].2版.北京:高等教育出版社,2017.
[4]嵩天,黃天羽,禮欣.面向計算生態的Python語言入門課程教學方案[J].計算機教育,2017(8):7-12.