羅曉玲
【摘要】對已經(jīng)學(xué)習(xí)過python語言程序設(shè)計(jì)課程的學(xué)生進(jìn)行了調(diào)查,得出了學(xué)生學(xué)習(xí)python的主要困難。針對這些困難和python語言自身的特點(diǎn),提出了幾點(diǎn)解決方案,為后續(xù)的python課程教學(xué)提供參考。
【關(guān)鍵詞】python?程序設(shè)計(jì)?課程建設(shè)
一、引言
計(jì)算機(jī)程序設(shè)計(jì)類課程是大學(xué)計(jì)算機(jī)基礎(chǔ)教學(xué)的核心課程,通過對編程語言的學(xué)習(xí),理解計(jì)算機(jī)解決問題的思維方式,是培養(yǎng)計(jì)算思維最重要的課程。
近年來,Python語言程序設(shè)計(jì)課程在國內(nèi)各大高校相繼開設(shè),作為程序設(shè)計(jì)入門語言。相比與傳統(tǒng)的C語言程序設(shè)計(jì),python語言更加的簡潔、清晰,易于理解。此外,python還具有大量開源的第三方庫,對于學(xué)生后續(xù)在各領(lǐng)域的應(yīng)用提供了有力的支持。
二、python語言程序設(shè)計(jì)課程學(xué)習(xí)的困難
python語言程序設(shè)計(jì)課程開設(shè)時(shí)間善短,依然存在很多的問題。本文針對python語言程序設(shè)計(jì)課程教學(xué)中存在的問題和遇到的困難,對一個(gè)年級六百多名學(xué)生進(jìn)行問卷調(diào)查,被調(diào)查的學(xué)生均學(xué)習(xí)過python語言程序設(shè)計(jì)這門課程。學(xué)生學(xué)習(xí)python語言程序設(shè)計(jì)主要的困難如下:
(一)算法設(shè)計(jì)
課程總是鼓勵學(xué)生首先理解問題的定義,然后采用計(jì)算機(jī)能夠理解的方式設(shè)計(jì)一個(gè)解決問題的算法。但是,30%的學(xué)生經(jīng)過一個(gè)學(xué)期的學(xué)習(xí),拿到程序設(shè)計(jì)題還是不知道該從哪入手,完全沒有思路。還有一部分學(xué)生只會去背題,看似學(xué)會了,但是遇到一個(gè)新問題,仍然無從下手。
(二)將算法用python語言描述
將算法轉(zhuǎn)換為python語言,比算法的設(shè)計(jì)更加的因難。學(xué)生必須清楚的記住python語言所有的語法規(guī)則,這點(diǎn)大部份學(xué)生無法做到。他們經(jīng)常困擾于一些編程的語法細(xì)節(jié)問題,而無法實(shí)現(xiàn)自己設(shè)計(jì)的算法。
(三)語言庫的使用
python語言具有大量的第三方庫,但是對于初次學(xué)習(xí)編程語言的學(xué)生來說,在庫函數(shù)中搜索,找到合適的函數(shù)并正確地使用它,是非常困難的。因?yàn)閷W(xué)生還沒有充分理解函數(shù)的調(diào)用和參數(shù)的使用。
(四)調(diào)試程序
調(diào)試程序是編程中最困難的問題之一。調(diào)查結(jié)果顯示,理解編譯錯(cuò)誤信息(主要指語法錯(cuò)誤)對于發(fā)現(xiàn)和修改錯(cuò)誤的學(xué)生來說同樣困難。一方面,可能是學(xué)生的英語水平有限。另一方面,學(xué)生往往會對提示信息視而不見,在程序中隨機(jī)地進(jìn)行修改。
綜上所述,是學(xué)生在學(xué)習(xí)python語言程序設(shè)計(jì)中遇到的比較重要的困難。此外,還有復(fù)雜算法的學(xué)習(xí)和面向?qū)ο蟪绦蛟O(shè)計(jì)思路都是學(xué)生非常困擾的地方,這些屬于程序設(shè)計(jì)學(xué)習(xí)的提高部份,不作詳細(xì)表述。
三、解決方案
(一)采用偽代碼來講解
計(jì)算機(jī)基礎(chǔ)課程的側(cè)重點(diǎn)還是要培養(yǎng)學(xué)生的計(jì)算思維,對于程序設(shè)計(jì)課程來說,就是提高學(xué)生用計(jì)算機(jī)解決問題的能力而不是語法細(xì)節(jié)。如何提高學(xué)生的邏輯推演能力、算法設(shè)計(jì)和分析能力更為重要。偽代碼相對于編程語言來說要求不那么嚴(yán)格,讓學(xué)生可以不用關(guān)注語法細(xì)節(jié),幫助學(xué)生把精力集中在算法設(shè)計(jì)上。
(二)增加實(shí)踐課時(shí)間
程序設(shè)計(jì)課程是一門實(shí)踐性非常強(qiáng)的課程,講授的內(nèi)容通過語言和文字很難表述清楚。但是通過實(shí)踐,卻很容易讓學(xué)生理解。每次理論課輔以兩次的上機(jī)實(shí)踐時(shí)間,學(xué)生們可以以自己的速度學(xué)習(xí),輔以老師的幫助。通過更多的上機(jī)實(shí)踐,調(diào)試解決問題,自然解決學(xué)生對于調(diào)試程序所述的困難。
(三)將知識融入到具體的應(yīng)用場景
教師應(yīng)多了解和學(xué)習(xí)python在各行業(yè)領(lǐng)域中的應(yīng)用,選擇與學(xué)生專業(yè)相關(guān)的教學(xué)案例,提高學(xué)生對于第三方庫的使用的興趣。例如,對于計(jì)算機(jī)專業(yè)的學(xué)生來說,可以將語音識別技術(shù)、人臉識別技術(shù)等應(yīng)用基本成熟、可視化效果好的技術(shù)作為課程教學(xué)案例;對于偵察情報(bào)專業(yè)的學(xué)生來說,可以將雷達(dá)圖像目標(biāo)識別等作為教學(xué)案例。這樣不僅能夠讓學(xué)生體會到python第三方庫的強(qiáng)大,對學(xué)生將來專業(yè)上的學(xué)習(xí)也大有益處。
在課程結(jié)束之前,每個(gè)人完成一個(gè)python的應(yīng)用實(shí)例,作為本課程的大作業(yè)。學(xué)生可以圍繞python語言在自己專業(yè)領(lǐng)域的相關(guān)應(yīng)用自主選題,設(shè)計(jì)實(shí)現(xiàn)特定的功能程序。最后采用提交程序說明書、團(tuán)隊(duì)答辯等形式進(jìn)行考評。這樣,一方面,可以讓學(xué)生將python與自己的專業(yè)緊密聯(lián)系起來,另一方面,也可以讓學(xué)生對軟件開發(fā)和軟件工程有一些簡單的理解,并對今后的畢業(yè)論文答辯有初步的了解。
(四)引入在線考核平臺
學(xué)生在學(xué)習(xí)過程中,一旦落后,就會越來越難跟上后面的課程的內(nèi)容。然而,如果掌握了基本概念,學(xué)生們就會發(fā)現(xiàn)新的、更難的知識點(diǎn)學(xué)起來變得越來越容易。
在教學(xué)過程中引入在線考核平臺,學(xué)生只有在限定的時(shí)間內(nèi)通過了前面的考核才能進(jìn)入后期的學(xué)習(xí),否則會有相應(yīng)的懲罰措施。多次的考核,可以讓學(xué)生時(shí)刻保持警惕,讓教師能夠及時(shí)掌握學(xué)生的水平,及時(shí)地對他們所存在的困難提供幫助。在線考核平臺需按知識點(diǎn)建立試題庫,并劃分難易程度。學(xué)生在統(tǒng)一時(shí)間地點(diǎn)抽題考試,系統(tǒng)自動評分。每一次的考核成績記入平時(shí)成績一部份。未通過考核人員,作為重點(diǎn)對象,給予補(bǔ)考機(jī)會。
(五)融入學(xué)科競賽
近年來,“藍(lán)橋杯”全國軟件和信息技術(shù)專業(yè)人才大賽、ACM大賽、各種物聯(lián)網(wǎng)大賽、機(jī)器人大賽等計(jì)算機(jī)類競賽日趨增多。學(xué)科競賽是對學(xué)生綜合能力的考核,不僅考查學(xué)生基礎(chǔ)知識是否掌握扎實(shí),更為重要的是考查學(xué)生應(yīng)用知識解決問題的能力、創(chuàng)新能力以及團(tuán)隊(duì)協(xié)作能力。可以將歷年的一些競賽的題目作為小案例,融入到教學(xué)過程當(dāng)中去,設(shè)計(jì)一些小競賽,把程序設(shè)計(jì)學(xué)習(xí)變?yōu)閷W(xué)生快樂的、有競爭意識的經(jīng)歷。同時(shí)也為后期學(xué)生參加相關(guān)競賽打下基礎(chǔ)。
(六)引入機(jī)器人程序控制
機(jī)器人近年來越來越熱,學(xué)習(xí)機(jī)器人控制的門坎也越來越低,有很多控制芯片都支持python語言進(jìn)行編程。在python課程的教學(xué)中,引入機(jī)器人控制編程,可以極大的提高學(xué)生的學(xué)習(xí)興趣。可以將學(xué)生分組,一級一套學(xué)習(xí)套件,學(xué)生通過編寫程序來控制機(jī)器人的動作,可以直觀的看到自己所編寫的程序所產(chǎn)生的效果。這樣,原來枯燥無味的編程課程變成了生動、直觀的形式。學(xué)生通過機(jī)器人的實(shí)際動作,可以很容易理解程序控制過程,掌握程序控制的思想。學(xué)生在具備了這些直觀認(rèn)識的基礎(chǔ)上,再進(jìn)行理論的學(xué)習(xí),會更有方向和激情。
四、結(jié)語
Python語言程序設(shè)計(jì)課程雖然相對于傳統(tǒng)的語言教學(xué)降低了學(xué)習(xí)的難度,但是對于初次接觸程序設(shè)計(jì)的學(xué)生來說,還是存在很多困難。本文就該課程目前教學(xué)過程中存在的問題,提出了采用偽代碼來講解算法更方便學(xué)員理解和轉(zhuǎn)化成編程語言實(shí)現(xiàn),針對python語言的特點(diǎn)讓學(xué)生將程序設(shè)計(jì)與自己的學(xué)科專業(yè)緊密結(jié)合,引入在線測評平臺讓落后的學(xué)生及時(shí)跟上,融入機(jī)器人和學(xué)科競賽激發(fā)學(xué)生的學(xué)習(xí)興趣。在后續(xù)的教學(xué)過程中,將逐步引入上述方法,優(yōu)化教學(xué)設(shè)計(jì),提高教學(xué)質(zhì)量。
參考文獻(xiàn):
[1]Hetland M L.Python基礎(chǔ)教程[M].第二版.北京:人發(fā)郵電出版社,2010.
[2]?Georgantaki,S.,& Retalis,S.Using Educational Tools for Teaching Object Oriented Design and Programming. Journal of Information Technology Impact,2007,(2) :111.
[3]Xinogalos,S.Difficulties with Collection Classes in Java-The Case of the ArrayList Collection.Proceedings of the 2nd International Conference on Computer Supported Education (CSEDU),7-10April,Valencia,Spain,2010.120.