王亮
摘要:Python語言簡潔高效,應用廣泛,特別是在人工智能領域,能夠讓學生有更多精力關注問題的建模與求解,進而有效地提升學生的計算思維能力。如何在計算機網絡課程教學過程中利用有限的課時開展基于Python的網絡編程教學和實驗,以提升學生的計算思維能力,是一個教學難題。對此,本文借鑒翻轉課堂模式,提出了“課前自學+課堂討論+論壇反饋+上機實驗”的授課模式,能使學生有效地理解網絡通信的概念和原理,掌握Python編程并實現分布式網絡應用。
關鍵詞:計算機網絡;計算思維;網絡編程;Python
中圖分類號:G642.41 文獻標志碼:A 文章編號:1674-9324(2019)26-0123-02
一、在計算機網絡課程中培養學生計算思維能力的意義
計算機網絡作為計算機及其相關專業大學生的一門專業核心課,其目標在于幫助學生掌握計算機網絡的分層體系結構和常見網絡協議,如TCP/IP協議的基本原理,使得學生面對飛速發展的計算機網絡特別是移動互聯網絡,不僅能夠理解基本的運行原理,而且能夠保持一定的判斷力和創新能力。為了培養新時代大學生的創新能力,對大學生進行計算思維能力的培養已經成為一種十分有效且必定要走的道路。
二、Python特點及其在計算機網絡課程中的優勢
首先,Python是一門靈活的高級編程語言,應用領域極其廣泛,特別是在人工智能領域有著十分廣闊的應用,如TensorFlow、Keras等。Python程序簡潔,語法更為接近自然語言,如采用縮進來標識代碼段等;Python方便運行,其提供了多種運行機制,如可本機運行的PyCharm編輯器,也可以在線運行,如Jupyter Notebook等。另一方面,Python提供各種應用庫,如數值計算庫numpy、與畫圖相關的matplotlib、機器學習的scikit-learn等,而且通過anaconda軟件可以很方便地來安裝、管理和更新Python的各種庫。這些庫實現了相關領域的很多操作,功能強大且方便調用,極大地減少了學生實現相關領域的基本功能所需的編程時間,而且其運行效率高。因此,對學生而言特別是計算機相關專業的學生,Python編程簡單易學,方便上手,特別關注問題本身的建模與求解。它能夠使學生從較為復雜的編程語言的語法中解脫出來,全身心地關注與所要求解問題的建模與對應的解法優化。
其次,本人所在學院的計算機網絡專業課程采用的教材是《計算機網絡-自頂向下法(原書第六版)》,該教材中在第二章的socket編程中采用Python語言取代了之前版本中的Java語言。一方面采用Python語言對于編程新手來說,能夠方便地理解TCP和UDP協議的核心概念;另一方面,Python語言能夠提供訪問原始socket的接口,從而使學生能夠在此基礎上自主創建一系列更為廣泛的網絡應用。
三、如何開展Python教學以提升學生計算思維能力
(一)課前自學
考慮到本學院的開課學生是計算機和軟件相關專業的大二學生,授課學生已經學過一些相關的編程語言,如C++,對計算機體系結構和計算機編程都有較好的基礎。授課時,應該充分考慮學生的這些基礎,同時重視不同學生對于這些課程的掌握程度會有一定的差異性。此時,如果采用集中授課或者唯一的教材進行Python編程的授課,有可能一些學生已經很了解相關內容,而另一些基礎薄弱的學生可能覺得進度有些快。因而,采用推薦相關的教材和公開課視頻等資料,讓學生根據自身已有基礎和時間安排,有目的地重點學習相關內容。
(二)課堂討論
根據學生自學的反饋,在課堂上,通過與學生討論的方式,啟發學生回答課前編程作業的相關問題,隨后通過設計幾個簡單的程序示例,引導學生思考相應的輸出結果,進而讓學生自查通過課前自學對Python編程的掌握程度。最后,和學生們一起總結Python編程的重要知識點和相關編程原則。然而,課堂的重點應該放在通過課堂討論,讓學生理解Python語言對TCP和UDP協議運行機制的編程實現,讓學生理解實現網絡通信的核心思想,同時基本熟悉如何通過Python語言來實現網絡通信這一功能。
(三)論壇反饋
由于課時有限,教師不可能一一解決所有學生們的問題。因而,可以鼓勵學生根據課前自學和課堂討論的結果,利用課余時間在相關的論壇上進行討論,例如,使用本學院教學所采用的Blackboard平臺,針對Python編程以及上課所講授的TCP和UDP協議的相關內容進行提問和討論。授課教師可以瀏覽學生們的提問和相關討論,回答學生共同疑惑的地方。關于Python編程中遇到的相關問題,引導學生們在Python語言編程的公共論壇進行提問和討論,如GitHub、Reddit等。
(四)上機實驗
為了鞏固課堂教學效果,并提高學生的動手能力,設計了上機實驗,分為基礎實驗和進階實驗。上機實驗時,將學生們以兩人為一組分成多個實驗小組,每個小組的兩名學生分別來實現TCP編程的server和client程序,進而進行網絡通信測試,而UDP實驗的任務分配則對調過來。每個學生既能夠分別實現server和client端的編程,又能通過兩人一組進行相互討論。
為了進一步培養學生開發更為有趣和面向用戶的網絡應用的能力,設計進階實驗,比如,讓學生的client程序將指定內容發給server,而server必須對該內容進行一些必要的處理,如大小寫轉換、字符數統計、加密等。該部分內容并沒有現成可以參考的算法或者編程實現,學生們需要自己分析如何來實現該部分功能,同時將功能分解到對應的client和server端,進而采用高效的編程語言來實現。學生需要對編寫的程序進行調試和相關測試,以保證正確、高效地實現相關功能。
最后,教師通過當面運行相關程序,檢查學生們所編寫程序的正確性和有效性。同時,將實驗的完成時間作為本次實驗的一個考核指標,激勵實驗用時較少的學生,以激發學生們做實驗的熱情和積極性。課堂結束前,總結并糾正學生在實驗中遇到的典型錯誤,提醒學生在以后學習和編程中注意這些問題。隨后,全班展示最簡潔高效的代碼,讓學生們相互比較和學習,進一步體會高效編程的一些原則,并逐步嘗試將這些規則應用到自己的學習實踐中去。此外,鼓勵學生比較之前做過的單機編程實驗和本次網絡通信實驗的區別,使學生進一步理解網絡通信的特點,理解server和client的分工與協作,加深學生對網絡通信的相關概念和運行機制的理解與掌握。
四、結語
本文以Python語言在網絡編程實驗中的應用為例,探索了如何在計算機網絡專業課程中逐步培養并提升學生的計算思維能力,借鑒翻轉課堂思想,提出了“課前自學+課堂討論+論壇反饋+上機實驗”的授課模式,以逐步培養學生的創新能力。如何結合其他相關課程特點以持續提升大學生的計算思維能力,進而在學生的學習過程中設計完整的計算思維能力培養體系是未來教學工作中需要進一步探索和改革的新方向。
參考文獻:
[1]James F.Kurose,Keith W.Ross.著,陳鳴譯.計算機網絡:自頂向下方法[M].原書第6版.機械工業出版社,2014.
[2]張金磊,王穎,張寶輝.翻轉課堂教學模式研究[J].遠程教育雜志,2012,30(4):46-51.