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