【摘 要】本文討論了如何在程序設計基礎課程中實現交互式的課堂教學。通過使用 Jupyter Notebook 和 Python Tutor 等工具,提高課堂教學效率,激發(fā)學生的學習熱情。本文提出的教學設計,也適用于其它編程語言的教學。
【關鍵詞】Python;交互式教學;Jupyter Notebook;Python Tutor
計算思維是國內外各界重點關注的一種先進的教育理念,已經成為計算機程序設計課程教學的指導思想。在我國,C 語言是目前眾多高校所教授的第一門編程語言,對于剛接觸計算機編程的學生,具有一定的難度和挑戰(zhàn)性。C語言注重的是“計算機系統(tǒng)結構時代”的計算思維,教學內容圍繞數據類型、指針、內存、字符操作等展開,初學者很容易陷入 C語言語法的細枝末節(jié)中,并不能很好的激發(fā)程序設計的興趣。相比之下,Python 語言的受歡迎程度日益提升。Python 是目前最接近自然語言的計算機編程語言,近年來在美國高校中廣受歡迎,在眾多的知名高校中取代 C和 Java 成為計算機入門的編程語言。 Python 語言簡潔高效,能讓學生關注計算問題的求解,其輕量級的語法和高層次的語言表示充分表現了應用計算機解決問題的計算思維理念。Python 語言除了應用于教學,在工業(yè)界也有廣泛的應用。如Google 用于深度學習的開源平臺 TensorFlow支持 Python 語言進行神經網絡的搭建與計算。
要學好 Python 語言,除了學生的認真學習之外,教師的課堂教學方法也十分重要。以前那種用黑板或用 PPT 的靜態(tài)傳統(tǒng)教學模式,也應該適應時代的發(fā)展,與學生進行有效的互動,提高教學效果。
一、Jupyter Notebook的使用
在傳統(tǒng)的程序設計課堂上,通常都是采用“理論課”+“上機課”這兩種模式,并且這兩個環(huán)節(jié)通常是分開的。然而,這樣的教學效果并不好。在理論課上,教師的主要教學手段是對著 PPT 進行講解,學生在下面記筆記。由于剛入學的學生基礎各不相同,有的同學缺乏對計算機體系結構的理解,僅僅靠教師的靜態(tài)的講解,并不能很好地理解程序設計的要點。能跟得上老師講課節(jié)奏的學生,能“腦補”各種計算機程序的實現;對于跟不上的學生,容易注意力渙散。到了上機課,學生需要完成一定的練習題。然而,這時候老師不可能再重新講解程序設計的要點。對于理論課上沒有掌握好知識點的學生,就會出現“兩眼一抹黑”的情況,完全不知所措。因此,我們在實際的教學中,可以嘗試將“理論課”和“上機課”結合起來,實現交互式教學。
要實現程序設計課程的交互式教學,需要合適的教學軟件。教學軟件要能滿足以下的基本要求:
(1)包含文檔和圖片,將知識點完整表達。
(2)實時運行程序段,將程序運行的結果表示出來,并且可以方便修改,重新運行。
基于上述的要求,我們在課堂上使用Jupyter Notebook,取得良好的教學效果。Jupyter Notebook 是包含在Anaconda 的一個組件。圖1 為Jupyter Notebook 的運行環(huán)境截圖。
圖 1 Jupyter Notebook 的運行截圖
使用 Jupyter Notebook,有以下的明顯優(yōu)點:
(1)運行一次代碼,保存結果,可以多次閱讀,不需要為每一個程序段保存單獨的文件,程序段之間并不互相影響。
(2)交互式編程,通過Python 的內核運行程序段,并且可以隨時修改,重新運行,方便學生“試錯”,立馬得到結果。
(3)除了可以根據 Python 的語法在代碼段后面注釋外,還可以通過 Markdown 語法撰寫文檔。
(4)可以添加各種元素,比如圖片,視頻,鏈接。
這樣通過Jupyter Notebook,就可以很好的實現互動式教學。教師可以先講解一個知識點,馬上讓學生做練習題,然后再講解下一個知識點。在統(tǒng)一的環(huán)境下,學生對于不懂的知識點可以及時反饋,教師進行答疑。
二、Python Tutor 的使用
在使用計算思維解決問題的過程中,把復雜而龐大的問題按照比較合理的方式進行分解簡化,然后逐步求解,是基本的思想。對于剛開始接觸編程所面對的難以理解的概念,如:遞歸,通過可視化的運行環(huán)境將對學生的理解將十分有幫助。Python Tutor是由加利福尼亞大學圣迭戈分校 Philip Guo 教授所開發(fā)的一款免費的在線教育工具,可以幫助學生攻克在開始學習編程時所遇到的障礙,理解每一行源代碼代碼在計算機內部的執(zhí)行過程。通過這個工具,學生和教師可以在Web 瀏覽器中編寫Python 代碼,然后一步一步地可視化執(zhí)行。截止2017年,有來自超過180個國家和地區(qū)的超過350萬人使用過 Python Tutor,超過3000萬個代碼段被執(zhí)行。這個工具通常作為教材、講義和在線編程指南的補充。使用者不僅僅包括自學的編程者,如 edX、Coursera 和 Udacity 等在線課程的學生,還包括 MIT、加利福尼亞大學伯克利分校等國際著名高校的教師。
圖 2 是Python Tutor 運行遞歸程序時的截圖。圖的左邊是代碼段,可以通過“Back”和“Forward”兩個按鈕查看每一步程序的運行結果。圖的右邊是程序運行到某一步時的情況,包括定義的函數、全局和局部的變量、以及每一個變量所指向的對象及其值。通過單步執(zhí)行,學生可以形象化的理解“遞歸”這個程序設計的關鍵概念,這是傳統(tǒng)通過靜態(tài) PPT 教學所不能比擬的。
圖 2 Python Tutor 單步執(zhí)行時的截??圖
本文討論了針對基于 Python 語言的交互式課堂教學,有助于全面提升教學質量,激發(fā)師生的創(chuàng)新熱情,讓學生掌握一門終身受用的程序設計語言。要實現高效的交互式教學,必備的軟件運行環(huán)境不可或缺。作為教師,應該時刻關注最新的教學方法與工具,及時調整,才能激發(fā)學生的學習熱情。
參考文獻:
[1] TensorFlow [EB/OL] https://www.tensorflow.org/
[2] Anaconda [EB/OL] https://www.continuum.io/downloads
[3] Python Tutor [EB/OL] http://pythontutor.com/
[4] Philip Guo教授的主頁[EB/OL]. http://www.pgbovine.net/
作者簡介:
羅曉牧(1980.05~)男,廣東省廣州市,學歷:博士研究生,職稱:講師,研究方向:無線傳感器網絡。