嵩 天,黃天羽
(1.北京理工大學(xué)計算機學(xué)院,北京100081;2.北京理工大學(xué)軟件學(xué)院,北京100081)
2016年,教育部高等學(xué)校大學(xué)計算機課程教學(xué)指導(dǎo)委員會發(fā)布了《大學(xué)計算機基礎(chǔ)課程教學(xué)基本要求》(簡稱《基本要求》)[1]?!痘疽蟆肥状谓ㄗh將Python語言作為首門程序設(shè)計課程的教學(xué)語言,在其推動下,國內(nèi)高校逐步開設(shè)了Python語言,成為教學(xué)改革熱點。與此同時,構(gòu)建Python語言教學(xué)案例就成為教學(xué)進程中必不可少的環(huán)節(jié)。我們認為,Python語言并非其他編程語言的簡單替代,而是伴隨計算機技術(shù)發(fā)展時代變化的必然選擇[2]。因此,在構(gòu)建教學(xué)案例時,要充分結(jié)合Python語言特點,采用新思維進行設(shè)計,而不應(yīng)將其他編程語言已有案例進行簡單移植。因為只有采用新思維設(shè)計的案例才能讓學(xué)生認識到Python語言的價值,并體會到程序設(shè)計過程的快樂。
相比其他語言,Python具有3個明顯的優(yōu)勢:簡潔、高效和生態(tài)。
(1)簡潔:Python語法簡潔,卻具有完整的語法邏輯,可以進行語句級、面向過程和面向?qū)ο蟮某绦蜷_發(fā),變量類型使用無需定義,強制縮進能顯著提高可讀性;相比其他語言,Python能更加純粹地表達算法和程序邏輯意圖。
(2)高效:Python代碼編寫高效。同樣功能的計算任務(wù),Python語言實現(xiàn)的代碼行數(shù)約是C語言的10%左右;程序越復(fù)雜,Python越具有優(yōu)勢,而更少的代碼行數(shù)意味著更高的編程效率、更少的調(diào)試代價和更短的實現(xiàn)時間。
(3)生態(tài):Python具有全球最大的單一程序語言計算生態(tài),是一門計算生態(tài)語言。截至2017年11月,Python語言提供超過12萬個第三方庫,幾乎覆蓋計算的各個領(lǐng)域,已有功能簡潔實用,避免“重復(fù)造輪子”,進一步提高了編程效率。
針對Python語言上述特點,北京理工大學(xué)提出“理解和運用計算生態(tài)”的教學(xué)理念和實施方案[3-4],得到全國眾多高校的積極響應(yīng),許多高校以此為基礎(chǔ)開展了大量的教學(xué)設(shè)計和教學(xué)實踐,并取得一批優(yōu)秀的教學(xué)成果。本文將進一步探討Python語言程序設(shè)計教學(xué)案例設(shè)計的新思維及實施效果。
表1 教學(xué)案例設(shè)計思維比較
計算機程序設(shè)計已經(jīng)成為當代信息社會的基礎(chǔ)技術(shù)方法之一,基于計算機的計算思維也成為與邏輯思維和實證思維并列的第三種思維范式。隨著云計算、物聯(lián)網(wǎng)、移動互聯(lián)網(wǎng)、大數(shù)據(jù)、人工智能等重大技術(shù)和科技需求的不斷發(fā)展,人們對計算問題及程序設(shè)計的認識發(fā)生了根本的轉(zhuǎn)變,從以知識驗證為主的問題求解轉(zhuǎn)變?yōu)槊嫦驅(qū)嶋H問題解決為主的計算求解。這種根本轉(zhuǎn)變反映了信息技術(shù)對人類生活和工作的影響程度,在未來的10~20年中,這種影響程度將更加深入,甚至將引發(fā)一批非信息類工作的消亡。
對于高校程序設(shè)計類課程,這種認識轉(zhuǎn)變所帶來的直接影響是學(xué)生的學(xué)習(xí)期待將不斷增長?,F(xiàn)階段,學(xué)生對網(wǎng)絡(luò)爬蟲、數(shù)據(jù)處理、機器學(xué)習(xí)、人工智能等計算問題十分關(guān)注,希望通過程序設(shè)計課程掌握相關(guān)技能。然而,以C語言為例,傳統(tǒng)的教學(xué)案例以字符打印輸出、數(shù)列計算、基本文件讀寫等作為主要內(nèi)容,學(xué)習(xí)期待與實際問題相差較大,客觀上影響了教學(xué)質(zhì)量的提升。
程序設(shè)計教學(xué)案例新思維產(chǎn)生于計算時代發(fā)展新階段的背景下,以符合時代發(fā)展的應(yīng)用需求為對象,主張設(shè)計既能滿足學(xué)生期待又符合學(xué)生認知水平以及程序設(shè)計教學(xué)規(guī)律的教學(xué)案例,兼顧興趣和創(chuàng)新,培養(yǎng)學(xué)生通過程序設(shè)計解決問題的能力。
為了更好地闡述程序設(shè)計教學(xué)案例新思維,表1給出不同視角下傳統(tǒng)思維和新思維的對比。
程序設(shè)計教學(xué)案例新思維是一整套視角,從案例設(shè)計目的、形式、來源、開放性、規(guī)模和意義多角度進行綜合詮釋,核心理念在于設(shè)計教學(xué)案例需要符合時代對問題求解和創(chuàng)新的要求,滿足學(xué)生對程序設(shè)計課程的學(xué)習(xí)預(yù)期。
傳統(tǒng)思維下,程序設(shè)計教學(xué)案例用于服務(wù)知識點講解,案例需要有確定的輸入輸出,便于自動評閱,且案例完全由教師設(shè)計,可重點講解。這是傳統(tǒng)課堂教學(xué)思路在程序設(shè)計課程中的具體反映。新思維則希望程序設(shè)計教學(xué)案例用于服務(wù)問題解決,案例對應(yīng)大類知識體系,但不限于個別知識點;案例可以激發(fā)學(xué)生的創(chuàng)造力,而不是統(tǒng)一的固定輸出形式;案例要有一定的運用空間,不限制規(guī)模,從有趣和有用兩個方面引導(dǎo)學(xué)生學(xué)習(xí)。
程序設(shè)計教學(xué)案例新思維要“面向問題、引發(fā)興趣、培養(yǎng)能力、引導(dǎo)創(chuàng)新”。其中,問題、興趣、能力和創(chuàng)新4個要素兼具,面向問題是原則,引發(fā)興趣和培養(yǎng)能力是手段,引導(dǎo)創(chuàng)新是目的。結(jié)合實際教學(xué),我們發(fā)現(xiàn),興趣、能力和創(chuàng)新是相輔相成的關(guān)系,當采用創(chuàng)新型教學(xué)案例時,學(xué)生的興趣和能力會快速提高,而興趣和能力的提高又為進一步創(chuàng)新引導(dǎo)提供堅實基礎(chǔ)。
針對程序設(shè)計課程教學(xué),案例教學(xué)新思維具有普遍的適用性,即適用于各種編程語言教學(xué)案例的實踐,然而,從各編程語言生態(tài)性考慮,Python語言具有最佳適用性,主要有以下3個原因。
第一,Python語言符合計算機技術(shù)發(fā)展階段。Python語言是一門通用語言,尤其適合在云計算、物聯(lián)網(wǎng)、移動互聯(lián)網(wǎng)、大數(shù)據(jù)、人工智能等重大技術(shù)和應(yīng)用需求下完成功能開發(fā),更符合學(xué)生對編程應(yīng)用的預(yù)期。Python語言不僅符合計算機技術(shù)發(fā)展方向,也是面向未來的教學(xué)內(nèi)容,最適合教學(xué)案例新思維設(shè)計。
第二,Python語言具有龐大的計算生態(tài),高級計算功能采用搭積木方式組織,新思維案例更容易設(shè)計。Python語言具有12萬個第三方庫,覆蓋幾乎所有計算領(lǐng)域,因此構(gòu)造教學(xué)案例可以利用第三方庫提供的功能作為基礎(chǔ)模塊,培養(yǎng)學(xué)生集成創(chuàng)新能力,極大擴展學(xué)生對程序設(shè)計功能的視野,適合構(gòu)造符合時代發(fā)展的新思維案例。
第三,Python語言高效高產(chǎn),實現(xiàn)周期短。學(xué)生對創(chuàng)新的熱情不僅在于創(chuàng)新想法本身,更在于對創(chuàng)新的實現(xiàn)。由于Python語言高效高產(chǎn),創(chuàng)新想法可以得到快速實現(xiàn),因此,相關(guān)教學(xué)案例能夠較好地激發(fā)學(xué)生的興趣。
我們建議將Python語言作為我國高校各專業(yè)程序設(shè)計入門語言,并采用程序設(shè)計教學(xué)案例新思維設(shè)計教學(xué)案例,不僅便于學(xué)生掌握程序設(shè)計入門知識,還能夠引導(dǎo)學(xué)生進行創(chuàng)新,加深對程序設(shè)計的理解。
圖2 利用蒙特卡洛方法求解π
“有趣”的案例可以激發(fā)學(xué)生的學(xué)習(xí)興趣,所見即所得,起到興趣引領(lǐng)的作用。對于Python語言來說,建議使用turtle庫(繪圖庫)開展入門案例設(shè)計,部分案例如圖1所示。
圖1 turtle庫入門案例
“有用”的案例可以培養(yǎng)學(xué)生在某方面的程序設(shè)計基本能力,但是案例不一定有趣。對于Python語言來說,建議圍繞random庫(隨機函數(shù))、jieba庫(中文分詞)等有特定用途的功能庫來設(shè)計入門案例,使學(xué)生掌握使用相應(yīng)的程序設(shè)計能力。如利用random庫中的隨機數(shù)函數(shù)可以設(shè)計蒙特卡洛方法求解π(圓周率)實例,使學(xué)生掌握蒙特卡洛工程方法,如圖2所示。
我們建議交叉組織“有趣”的案例和“有用”的案例,先依靠興趣引導(dǎo)學(xué)生掌握基本的編程方法,進一步使用有用的案例培養(yǎng)學(xué)生的能力。
turtle庫也叫海龜繪圖庫,它是Python語言最基礎(chǔ)的圖形繪制函數(shù)庫,基本原理是用程序控制一只小海龜爬行,并將其軌跡動態(tài)生成圖形進行輸出。turtle圖形繪制的概念誕生于1969年,最初成功應(yīng)用于LOGO編程語言。由于turtle圖形繪制概念十分直觀且非常流行,Python接受了這個概念,并形成了Python的turtle庫,圖1的3個例子都是turtle庫繪制的圖形。
turtle庫設(shè)計的案例是典型的“有趣”類型教學(xué)案例,除了掌握基本的圖形繪制,學(xué)生還可以進一步實踐Python語法運用和程序設(shè)計結(jié)構(gòu)能力。有趣案例可以很好地激發(fā)學(xué)生的學(xué)習(xí)興趣,十分適合在程序設(shè)計入門課程中講授。因此,我們引入“海龜繪制作品”這個實踐案例,這個案例并非只是簡單繪制一個海龜圖形,而是一個創(chuàng)意類型題目,該案例有如下3個要求:
第一:利用turtle庫繪制一個圖形,內(nèi)容不限,以創(chuàng)新性作為主要評分依據(jù);
第二:相同代碼盡量使用函數(shù),總代碼數(shù)量不少于100行;
第三:所繪制圖形要有個人特點,成為“作品”。
這3個要求可以基本保證學(xué)生實現(xiàn)的答案具有一定規(guī)模。實踐中,需要引導(dǎo)學(xué)生以“作品”心態(tài)實現(xiàn)案例,代表學(xué)生turtle繪圖的最高水平。大部分學(xué)生能夠利用Python語言完成有趣案例繪制,對程序設(shè)計有全新、良好的認識,達到一定的Python編程水平。
用經(jīng)典文學(xué)作品中的人物出場次數(shù)可以間接表明作品中人物的重要程度,我們以此形成一個通用實踐案例框架。圍繞這個功能構(gòu)建的具體案例能夠幫助學(xué)生掌握文本讀取、中文分詞、字符清洗、關(guān)鍵詞排序、排序輸出等整套文本處理能力,屬于典型的“有用”案例。
人物出場統(tǒng)計能夠衍生出一系列案例,如《紅樓夢》《三國演義》等中文名著人物出場次數(shù)統(tǒng)計,《哈姆雷特》《尤里斯西》等英文名著人物出場次數(shù)統(tǒng)計等。對于中文實例,還需要介紹Python用于中文分詞的jieba庫;對于英文實例,依靠空格和標點符號即可進行單詞分隔。講解這兩種衍生實例,有助于學(xué)生理解中英文文本處理的差異。此外,對于人物出現(xiàn)多個名稱的情況,如曹操、孟德、丞相等指代同一個人,也需要學(xué)生進行有效處理,使學(xué)生的關(guān)注點從程序語法逐步過渡到問題求解。
人物出場統(tǒng)計案例可以再進一步衍生成為關(guān)鍵詞統(tǒng)計,這將有助于概要分析重點文件的寫作特點或內(nèi)容重點。如統(tǒng)計政府工作報告的關(guān)鍵詞,有助于刻畫不同時期政府工作重心的轉(zhuǎn)變。這類實例延伸不僅貼近生活,也為學(xué)生未來使用編程解決學(xué)習(xí)和工作中的實際問題指明了方向。
截至2017年10月,本文作者在北京理工大學(xué)開展了11輪Python語言課程教學(xué),其中多次采用案例1——海龜繪圖作品和案例2——人物出場統(tǒng)計,構(gòu)造新思維實踐題目,學(xué)生反應(yīng)十分熱烈。以案例1為例,其中3份學(xué)生作業(yè)如圖3所示。
圖3案例1實踐案例的學(xué)生作品展示(部分)
圖3 中展示的作業(yè)是從眾多作業(yè)中隨機選取的部分作品。值得說明的是,這些作業(yè)是學(xué)生在Python語言程序設(shè)計入門課程講授第10~12個學(xué)時內(nèi)容后完成的,即初學(xué)編程的同學(xué)可以在5次課堂教學(xué)后完成案例1——海龜繪圖作品,顯著提升了學(xué)生對程序設(shè)計的興趣,掃清了學(xué)生潛在的畏難心理。這個新思維案例的運用為同學(xué)們后續(xù)學(xué)習(xí)深入編程技術(shù)做了良好的興趣引導(dǎo)。
北京理工大學(xué)的教學(xué)實踐表明,程序設(shè)計教學(xué)案例新思維案例能從兩個方面顯著提高教學(xué)效果。
(1)新思維案例能夠激發(fā)學(xué)生對程序設(shè)計的興趣。有趣的案例能夠促進學(xué)生發(fā)揮想象力,調(diào)動學(xué)生的主觀能動性,如果這些案例不僅有趣且能夠貼近自身生活,可以讓同學(xué)們認識到編程不再是枯燥的事情。
(2)新思維案例能夠激發(fā)學(xué)生的創(chuàng)造性。非標準輸出的案例或具有一定靈活度的案例能夠激發(fā)學(xué)生的創(chuàng)造性,同時凸顯個性。例如,案例2——人物出場統(tǒng)計是一個框架性案例,不僅能夠啟發(fā)學(xué)生選取合適文本或問題進行統(tǒng)計,實踐中部分同學(xué)還能夠采用turtle庫或其他第三方庫制作出可視化效果。
教學(xué)實踐體系對于學(xué)生掌握一門課程內(nèi)容十分重要,我們建議在講授Python語言程序設(shè)計內(nèi)容同時,能夠采用新思維設(shè)計一套培養(yǎng)學(xué)生興趣和創(chuàng)造力的實踐體系。多輪實踐效果證明了新思維的適用性和有效性,即選擇海龜繪圖作品和人物出場統(tǒng)計作為階段大作業(yè)內(nèi)容,可以調(diào)動學(xué)生的學(xué)習(xí)熱情,顯著提高教學(xué)效果。
[1]教育部高等學(xué)校大學(xué)計算機課程教學(xué)指導(dǎo)委員會.大學(xué)計算機基礎(chǔ)課程教學(xué)基本要求[M].北京:高等教育出版社,2017.
[2]嵩天,黃天羽,禮欣.Python語言:程序設(shè)計課程教學(xué)改革的理想選擇[J].中國大學(xué)教學(xué),2016(2):42-47.
[3]嵩天,禮欣,黃天羽.Python語言程序設(shè)計基礎(chǔ)[M].2版.北京:高等教育出版社,2017.
[4]嵩天,黃天羽,禮欣.面向計算生態(tài)的Python語言入門課程教學(xué)方案[J].計算機教育,2017(8):7-12.