油 曄
(遼寧軌道交通職業學院,遼寧 沈陽 110023)
目前,經調查統計(以2019年51job網站上發布的招聘信息為參考)社會用人單位對Python開發人員的需求量遠遠高于掌握其他語言的需求量。在Python的相關崗位中,開發工程師的需求量約占50%,數據分析工程師與網絡爬蟲工程師的需求量約各占10%,另外,還有部分游戲設計師、測試工程師等的需求。為了滿足用人單位的需求,同時擴大學生的學習知識面,從2018年起筆者在公共選修課程中開設了“零基礎學習Python語言”這門課程。
“零基礎學習Python語言”[1]這門選修課主要面向全校學生的公選課,課時為26~30學時。本課程針對編程零基礎同學進行講授,以任務為驅動,通過案例分析與引領幫助學生快速掌握Python語言,培養學生運用Python語言解決實際問題的編程能力。
本課程的教學目標是使學生在全面了解Python技術歷史、現狀與發展趨勢的基礎上,初步掌握Python基本概念、編程思想以及程序設計等方面的技術,并具備良好的Python編程技能和面向對象程序設計思想。通過本課程的學習,學生能夠綜合應用Python技術和面向對象的思維編寫程序,以解決現實生活中的問題,最終提高程序設計水平和計算機應用能力。
處于高職階段的學生相比較中學階段或高中階段的學生來說,他們的學習動機具有多樣化。由于學生來自不同的地域、不同的生活環境、不同的專業,所以每個人的學習動機也不盡相同。高職高專的學生他們在進入學校之初,有少部分學生已經基本了解自己將來的工作崗位(崗位群)的要求,并能夠圍繞這種職業定向進行基礎知識課、專業基礎課、以及專業核心課程的學習,而絕大多數的學生對于所選擇的專業多是聽從家長或親戚朋友的建議,或是因為分數不夠本科院校的錄取分數線,而進行的無奈選擇,所以這部分學生對于專業的認識并不清晰,學習的積極性也并不很高。
高職高專的學生在學習時,其學習的情緒化占據了主導作用[2]。他們對于自己感興趣的學習內容,會表現出很高的學習積極性及熱情,而對于一些比較枯燥的學習內容時,學習的積極性明顯偏低。同時,高職學生的文化課底子比較薄弱,學習的主動性、自覺性略顯不足,沒有形成一個良好的學習習慣,而且不能夠很好地利用課余時間進行自學與補充,學習比較被動,課前沒有預習的習慣,課后沒有復習的過程。
本課程從2018年至今已經開設了4個學期,通過每個學期結課的調查問卷統計、分析后,了解到學生的真實學習狀態及學習需求大概可以分為以下幾種狀況:
(1)對于有一定計算機編程基礎(主要是三校生中或多或少的學過其他計算機語言)或對計算機知識很感興趣的高職學生來說,他們覺得所學習的內容有些簡單,希望能夠后續繼續開設相關課程,并在以后的課程中加深難度。
(2)對于普通高職學生(即雖然之前沒有學過計算機編程語言方面的內容,但是學習比較努力,有學習意向的學生)來說,他們覺得通過一學期的學習有一定的收獲,培養了他們在計算機編程方面的學習興趣,希望多增加一些圖形繪制方面的內容,同時愿意在下學期繼續學習有關課程。
為此,根據以上對學生的學情分析及學生學習后的課程反饋情況,筆者認為在開設“零基礎學習Python語言”公共選修課時,應面向不同的需求群體開設兩個方向的公共選修班。一個是針對有一定計算機編程基礎的“Python語言”公共選修教學班,一個是以趣味圖形設計為主要內容的公共選修班,這樣能滿足具有不同需求的學生要求,使每名學生都會學有所獲[1]。
作為公共選修課程的“零基礎學習Python語言”這門課程,在建課之初,就本著以任務為驅動,以案例為基礎的教學目標進行課程內容安排。Python在圖像視頻處理、游戲開發、人工智能、自動控制等方面有著廣泛的應用。而筆者所授課的對象許多都是非計算機專業的學生,在學習本課程之前,他們并沒有計算機編程的基礎,但為了更好地培養他們的程序模塊化、結構化、流程化的思維,調動他們學習的積極性,進而編寫出高質量的Python程序,故在案例的選擇上,筆者從學生現有知識水平入手,圍繞數學幾何圖形或函數曲線等內容挑選,設計Python案例。通過案例的設計,使學生更好地掌握Python語言的特點,真正實現了在“做中學,學中做”的教學理念[2]。
例如在講解超炫三角形這節課時,先介紹turtle庫基本語法元素right()函數、left()函數和forward()函數,并讓學生利用這兩個函數繪制一個簡單的等邊三角形,使學生首先明白三角形的畫法。在學習過程中學生會運用不同的函數,繪制出不同方向的等邊三角形。

在此基礎上,進一步啟發學生利用所學知識,并結合問題分析下面圖形的制作原理,將循環編程的思想、列表的運用等相關知識引入進來,以此來激發學生的學習興趣。
【拓展練習】
請同學根據提示進行任務分析,如圖1所示。

圖1 (拓展練習)
(1)基礎圖形是什么形狀?
(2)如何實現三條邊用不同的顏色呈現?
(3)如何實現三條邊線條的長度的逐漸變化?
【程序代碼】


對于一些接受知識比較快的學生,在完成了上面案例的基礎上,筆者會在舉一反三的教學環節進一步提出制作要求。
【舉一反三】如果想實現顯示圖2的效果,應該如何更改程序?

圖2 (舉一反三)
【提示】可以試著修改旋轉角度語句
【程序代碼】

通過不同案例的學習,使學生能夠由淺入深的逐漸掌握編程思維,進而激發學生的學習興趣,使學生不再覺得編程很枯燥、很無聊,而是讓學生覺得編程也是這么有趣、這么好“玩”,只要試著進行一些小小的修改就能產生不同的圖案,從而更好地激發了他們的學習熱情[3]。
在教學過程中,筆者通過對教學內容的精心選擇、用心設計與細心講解,絕大多數學生都能夠認真地進行相應知識的學習,尤其是在最后的作品創作中,學生都能夠很好地從自身已有知識出發,結合自己的所學、所知、所想進行作品的創作。在創作過程遇到一些問題時,同學之間也能夠互相促進、積極討論、共同進步。看到學生的作品,同時作為教師的筆者也深深地感受到教學相長。