趙美林
(三峽大學計算機與信息學院,湖北 宜昌 443002)
隨著科技的進步,社會的發展,世界高等教育也在發生革命性變化。 2006 年, 美國 CMU 大學的周以真( Jeannette M.Wing)教授提出了“計算思維”的概念,倡導高等教育要培養學生利用計算機科學去求解問題的能力。 2016 年提出的“新工科”概念,更是受到教育部的密切關注和大力支持, 在不到一年的時間里,就組織各大高校進行深入探討, 先后形成了 “復旦共識”、“天大行動”和“北京指南”,并發布了《關于開展新工科研究與實踐的通知》、《關于推進新工科研究與實踐項目的通知》,奠定了其在新科技革命、新產業革命、新經濟背景下工程教育改革的戰略地位。2018 年4月教育部印發《高等學校人工智能創新行動計劃》,要求推動“新工科”建設,新工科專業主要包括大數據、云技術、人工智能、區塊鏈、虛擬現實、智能科學與技術等相關工科專業。
人類日益普及的網絡行為、全世界企業系統、工業設備、 各類傳感器等產生了海量的數據信息, 各政府部門和企業等都看到了大數據的價值, 這也使得 “新工科”中的“大數據”備受關注,成為應用研究的熱點。在2018 年3 月教育部公布的2017 年度新增備案本科專業中,“數據科學與大數據技術”最為熱門。據統計,共有200 余所高校新增 “數據科學與大數據技術”專業。 未來社會將會是以數據為驅動的社會, 企業的各項決策都要以數據為依據, 這就要求高校培養的學生對大數據的認知要有所提升, 應該具備一定的數據素養,即:
第一,對數據的敏感度,既能了解數據的價值,又能認識到數據的局限性;第二,對數據的收集能力;第三,對數據的分析、處理能力,能夠讀懂各種數據表達的含義;第四,利用數據進行決策的能力。 在大數據時代, 數據素養應該成為我們適應潮流、 應對挑戰的基礎素養之一。
程序設計作為計算機基礎課程教學的核心課程,承載著培養學生“計算思維”、“數據素養”的責任。 但是長期以來,我國高校的程序設計課程主要開設C 語言程序設計課程和VB 程序設計課程, 學習完畢之后就被束之高閣, 幾乎不會再用, 無法滿足非計算機專業學生在后續專業學習中繼續使用該語言解決問題的需求。
Pyt hon 語言是一種既支持面向過程、 又支持面向對象的編程語言,而且,語法簡潔、易讀。 另外,Python是開源的編程語言, 擁有豐富而強大的擴展庫、 優良的可擴展性和可移植性, 它還是一種靈活的粘合語言,可以把用其他語言編寫的模塊聯接在一起。
我國高校的基礎程序設計課程主要開設C 語言和VB 語言程序設計課程,雖然這類語言應用廣泛,但是存在著學習難度大, 入門困難的問題, 幾乎一大半的教學時間都要用于語言本身的講授, 尤其是對于非計算機專業的學生而言,入門學習更是困難。 因此,在基礎程序設計課程的教學中, 需要兼顧不同專業學生的接受能力,選擇一種語法簡單、入門容易、應用廣泛的程序設計語言。
Python 是一種代碼簡潔、語法簡單、上手容易的高級程序設計語言,實現相同功能的代碼量只有C 語言的五分之一到十分之一, 而且應用范圍廣泛, 不管對于剛剛接觸程序設計語言的學生, 還是已經有了一定編程基礎的學生,Python 都能夠滿足他們不同的學習需求。 目前,全國已有多所高校,如北京理工大學、南京大學、 國防科技大學等都開設了Python 程序設計課程。
Python 作為一種開源的程序語言,具有非常豐富的擴展庫,而且應用非常廣泛。 目前,Python 語言擁有的各類擴展庫已經超過10 多萬個。[1]這也大大方便了我們在教學過程中, 根據教學內容和不同專業的學生需求來選擇不同深度的擴展庫來開展實際教學。 對于Python 基本語法和基本程序結構、 函數等內容的講解可以借助于相對比較簡單的、 內置的turtle 繪圖庫,或者是Matplotlib 二維繪圖庫, 通過圖形的繪制讓學生對Python 運行結果有一個直觀的認識; 科學計算可以使用NumPy 庫; 機器學習可以使用Scikit-learn 庫, 深度學習可以使用TensorFlow 框架; 網絡爬蟲既有學習容易、 適合于小規模爬蟲的requests 庫, 也有更加專業、速度更快、 適合于中等規模爬蟲的Scrapy 爬蟲框架;Python 對中文的支持也比較友好, 有專門用于中文分詞的jieba 庫; 還有可以制作云標簽的wordcloud 庫。Python 語言構成了一個功能強大的計算生態圈。
Python 語言是一種輕語法、 入門容易的編程語言,學生可以減少在學習編程語言本身所花費的時間,能夠將更多的精力投入到分析問題、 解決問題的深入思考上, 有利于培養學生利用計算機語言解決實際問題的能力。 我們正在進入一個以數據為驅動的大數據時代,而Python 豐富的擴展庫中,既有可以獲取大量信息的多個爬蟲擴展庫, 又有可以用于數據分析、 數據挖掘的擴展庫,可以充分滿足學生學習的需求。Python 語言良好的計算生態圈非常有利于學生計算思維和數據素養的培養。
Python 語言的易學易用和豐富的開源庫將會給學生帶來一個全新的程序設計認識, 它既可以開發網站、爬取數據,又可以做數據處理與分析、數據挖掘、可視化展示,還可以處理圖像、制作影視特效、進行游戲設計等,用武之地非常之廣泛。Python 是一門讓學生會終身受用的編程語言, 可以幫助他們更好地利用計算機解決學習、工作中所面臨的各類計算問題。
在傳統程序設計課程的教學過程中, 非常注重程序語言本身語法的講解。 在課程講授之初, 就會花費大量的課時講解程序語言的語句構成元素、 數據類型、 三大基本結構等語法內容, 使剛剛接觸程序設計語言的大一新生直接面對枯燥、 乏味的語法知識,令其心生畏懼, 甚至認為程序設計語言就是 “枯燥、乏味”的代名詞,從而產生畏難心理,失去學習的興趣。因此, 程序設計語言課程講授之初, 應該淡化語法知識的內容,重在激發學生的學習興趣。
美國當代著名的教育心理學家奧蘇伯爾提出了有關興趣教學的理論。 他認為, 機械教學是一種死記硬背的記憶性的學習, 而帶有興趣的教學是一種以思維為核心的理解性學習。[2]興趣是最好的老師,只有學生對教學內容感興趣時, 才能學得最好。 課堂教學僅靠教師一個的努力是遠遠不夠的, 需要師生的共同努力, 只有充分調動學生的積極性、 激發學生的學習興趣,才能更好地完成課堂教學。
2.2.1 漸進式實例教學
要在教學過程中激發、并保持學生的學習興趣,就不能采用平鋪直敘的方式來講解Python 語言的各語法和知識點, 必須根據教學內容和學生的興趣點來設計教學案例,以“漸進式實例”來引導學生從基本問題到復雜問題的逐步深入學習。 充分利用Python 語言的優勢和豐富的擴展庫,讓學生感受到Python 語言的魅力,培養學生的編程興趣, 讓學生掌握利用計算機解決問題的方法,提升利用計算機解決實際問題的能力。
教學案例應該以圖形化案例為主, 圖形化的案例既可以給學生視覺上的沖擊, 又可以激發學生的學習興趣。 更重要的是, 選取的教學案例既要有一定的趣味性,又不能過于復雜,要由淺及深,能夠較好地融會貫通各相關知識點,實現教學目標。
Python 語言的Turtle 庫是一個簡單、 易用的繪圖庫,可以將其作為Python 語言學習的入門庫。在講解程序設計的三大基本結構時, 利用Turtle 庫繪制不同的多邊形來逐步展開。 首先, 通過引導學生思考如何手動繪制一個等邊三角形, 進而引出如何利用Turtle 庫繪制及順序結構的概念; 其次, 利用繪制三角形時的轉角問題,引出分支結構的概念,從而,讓學生體驗到如何在一段代碼中繪制兩個不同方向的三角形;最后, 引導學生思考, 如果要繪制邊數較多的復雜多邊形時, 該如何處理, 進一步引出利用循環結構來簡化繪制代碼。 這樣,由繪制一個簡單的等邊三角形,讓學生由淺入深地逐步理解了程序設計的三大基本結構。之后, 讓學生思考代碼重用的問題, 從而引出對函數概念的講解及函數的調用。
為了能夠繼續探索學生的學習興趣, 應再選取一些漸進型案例。 例如, 讓學生自定義繪制五角星的函數,并繪制一面五星紅旗;接著,通過介紹random 庫,讓學生了解隨機函數的使用, 并讓學生自己編寫一段繪制隨機五角星的代碼, 以強化學生對函數以及隨機函數的使用。 要真正成就學生的編程興趣, 還應該選取一些開放性案例, 在這類案例中, 不必設定具體的實驗目標,如,介紹簡單的小蟒蛇的繪制方法后,讓學生理解并修改代碼,繪制出自己喜愛的“花樣”小蟒蛇來, 這更有利于調動學生主動性, 甚至可以讓學生根據自己的喜好,繪制各種有趣的圖形,相互品鑒,激發學生創造力和成就感。
另外,還要選取一些趣味性較強的案例,以保持學生激發出來的濃厚學習興趣。 例如,案例中可以融合一些有趣的歷史文化故事,讓學生進行情景編程,或是列舉一些與現實結合比較緊密的案例、 應用比較熱的案例,例如,可以利用jieba 擴展庫對自己感興趣的文學著作進行詞頻統計,發現著作中的主要人物,通過對英語四、六級考試中的閱讀材料的詞頻統計可以找到出現的高頻詞匯, 以此來幫助英語復習, 并且還可以結合wordcloud 擴展庫進行可視化的詞云展示。讓學生深刻體驗到編程是一件有趣的、而且很有用處的事情。
2.2.2 翻轉課堂
在傳統教學過程中, 往往都是以老師為主進行課堂講授,學生被動接受,致使學生學習積極性不高。 在Python 程序設計教學過程中,可以選取部分內容,采用“翻轉課堂”教學方式,讓學生變被動為主動,教師進行課堂輔導。例如,在講解利用python 編寫網絡爬蟲的內容時, 可以先讓學生查閱相關資料, 并結合中國大學MOOC 網上由北京理工大學嵩天教授講授的“Python網絡爬蟲與信息爬取” 課程, 進行課前學習。 在課堂上, 讓學生互相交流學習體會, 探討學習中遇到的問題, 教師進行引導講授, 并以項目的形式給出一個實踐案例,讓學生實際動手來編寫爬蟲代碼。
“翻轉課堂”可以增加學生和教師間的互動和個性化溝通, 提升學生學習的積極性和主動性, 教師化主為輔,為學生營造一個自主學習的環境。
在以興趣為導向的教學過程中,改變了以往課堂教學方式,以學生的興趣為起點,通過漸進式趣味性案例的講解,使學生對程序設計產生濃厚的興趣,并結合“翻轉課堂”的教學理念,進一步激發其學習的主動性和創造性。 在后續的教學研究中,將根據不同專業特點和需求,深入探索如何將Python 程序設計課程與專業需求緊密結合,提高學生利用Python 解決實際問題的能力。