喬亞男 李波 謝濤
摘 要 為了培養(yǎng)非計算機專業(yè)大學生的計算思維能力,在“大學計算機基礎”課程教學中引入程序設計內容已成各大高校的共識,但選擇何種程序設計語言仍然觀點不一。本文針對大一新生的實際情況,提出使用Python作為本課程的教學語言,并設計了具體的教學過程。實踐表明,和C++等傳統(tǒng)語言相比,Python語言可以更好地滿足不同程度學生的學習需求。
關鍵詞 計算機基礎教學 大學計算機基礎 Python 教學設計
中圖分類號:G424 文獻標識碼:A DOI:10.16400/j.cnki.kjdkz.2016.11.058
1 “大學計算機基礎”課程中的程序設計教學
“大學計算機基礎”(Fundamentals of Computers)是根據教育部計算機基礎教學指導委員會“1+X”培養(yǎng)要求開設的公共基礎課程,是大學各專業(yè)一年級新生的第一門計算機課程,也是本科各學科專業(yè)學生必修的公共基礎課程。早期的大學計算機基礎課程主要講授一些有關計算機的軟硬件基礎知識,以基本應用為主,并沒有過于涉及程序設計的內容;但在2010年九校聯盟(C9)發(fā)布“計算機基礎教學發(fā)展戰(zhàn)略聯合聲明”之后,為了能在課程中向學生傳遞計算思維的理念,必須在大學計算機基礎課堂上適當增加基礎的程序設計內容已經是各大高校的共識,以便使用簡單的程序設計語言來描述抽象、自動化等計算思維理念。但在大學計算機基礎課程中具體選擇哪一種教學語言,各大高校產生了分歧。
有的高校根據后續(xù)程序設計課程的需求,選擇了C語言、C++語言或Java語言作為教學語言,這幾種語言雖然在工程界應用很廣泛,但都存在著門檻高、學習曲線陡峭、上手難的問題,如果要想讓學生基本能讀懂使用上述語言描述的算法,需要的教學時間很長,一般要大概兩個月,也就是說幾乎50%的大學計算機基礎教學時間都要用于語言教學,顯然有些喧賓奪主。同時,由于大學計算機基礎課程面向全校各專業(yè)學生,這些學生來自全國不同的省份,不同地區(qū)的教學模式和教學水平不同,學生在高中階段接觸計算機的時間早晚、深入與否有很大差異,造成大一入學時學生的程序設計基礎參差不齊,給教學帶來了一定困難。因此在大學計算機基礎教學過程中,需要兼顧不同學生的接受程度,選擇一種語法簡單、又具有深度的程序設計語言就變得非常重要。Python是一種類似腳本語言的高級程序設計語言,入門語法簡單,上手容易,并且廣泛應用于科研和工程領域,無論對于初次接觸程序設計的新生,還是具有一定基礎的學生,Python都能夠滿足他們的不同的學習需求,目前已成為了我校“大學計算機基礎”課程常用的教學語言之一。
2 Python語言的優(yōu)勢
Python是動態(tài)數據類型的、面向對象的、解釋類型的高級程序設計語言,經過二十多年的發(fā)展已經非常成熟和穩(wěn)定。它的語法簡潔并且清晰,與其他大多數編程設計語言不一樣,采用縮進來定義語句的層次。Python語言支持命令式編程、面向對象編程、函數式編程、泛型編程等多種編程方式。與Ruby、Perl等動態(tài)語言一樣,Python語言具備垃圾回收功能,能夠自動管理內存。Python經常作為腳本語言處理系統(tǒng)管理任務,而且比系統(tǒng)自帶的腳本語言語法更簡單、清晰。它擁有功能強大的第三方庫,因此適合執(zhí)行各種高級任務,比如完成GUI編程、游戲編程、網絡編程等。Python交互式的命令行可以幫助用戶立即體驗其編碼方式并得到反饋結果,不需要了解語言全貌,使用者可以獨立地學習單個命令而不必編寫完整程序??傊?,Python語言繼承了傳統(tǒng)編譯語言的強大性和通用性,同時也借鑒了簡單腳本和解釋語言的易用性。它在設計上的以下幾個特點有利于大學計算機基礎課程教學:
(1)Python在設計上堅持了清晰劃一的風格,代碼易讀、易學習、易維護??s進格式要求嚴格,違反縮進規(guī)則的程序不能通過編譯,以此來強制學生養(yǎng)成良好的編程習慣。
(2)Python是面向對象語言,提供了豐富的數據類型,函數、模板、數字、字符串都是對象,完全支持繼承、重載、派生、多繼承等特性,同時隱藏了底層內存管理、垃圾回收等細節(jié),在教學上不僅內容完全滿足課程教學需要,可以讓學生在學習語言本身上節(jié)省很多時間和精力。
(3)Python語言是基于虛擬機機制的,可以在各個平臺上安裝使用。Python開發(fā)環(huán)境開源且數量眾多,主流的操作系統(tǒng)如Linux、Windows都能很好地支持Python環(huán)境。在常用的Windows平臺下,只需一個很小的開源安裝包就可以構建Python的基礎開發(fā)環(huán)境,降低了環(huán)境配置的難度,使得學生能夠很快上手。
(4)Python允許以交互模式運行。在主流操作系統(tǒng)中可以在命令模式下直接運行Python交互環(huán)境,輸入指令可以立刻獲得運行的結果。交互模式易于被沒有程序設計經驗的學習者理解,適合在課堂授課中實時演示各種命令和語句的功能。
(5)Python具有良好的可擴展性,可以把其他語言開發(fā)的程序和Python代碼集成,發(fā)揮不同語言各自的優(yōu)勢;而且有大量高質量的第三方擴展庫,在不同的應用領域都有用武之地;同時,Python語言仍在不斷更新,具有良好的發(fā)展前景,便于調動學生學習的主動性。
Python在設計上的特點決定了它簡單、易學、速度快。初學者不需要過度關注語言本身的知識,可把重點放在理解計算思維這一根本任務上來,通過Python語言來學習大學計算機基礎課程具有很大的優(yōu)勢。
3 基于Python的“大學計算機基礎”課程教學設計
“大學計算機基礎”課程包括分為理論教學和實踐教學兩部分內容。理論教學部分主要教授學生計算機軟硬件基礎知識、計算思維、算法思想等。由于“大學計算機基礎”是一門大一的課程,學生的學習基礎和高中時所受的計算機教育息息相關。水平高的學生在高中可能都已經參加過信息學奧林匹克競賽,而來自較偏遠、家庭情況較困難的學生則可能從來沒有接觸過,對基礎不同的學生同時教授相同的內容是不合理的。針對這種情況,一種策略是類似英語教學的分級制,在入學摸底考試中增加計算機基礎測試,同時適當考慮學生的自主選擇,依據評估結果將學生劃分到不同的班級,采用不同的教學進度對學生因材施教。但這種方案對高校目前的班級管理制度影響較大,難以推行。另一種策略就是使用基礎靈活的教學語言,C++等傳統(tǒng)語言門檻太高,不適合程度低的學生;而VB等語言雖然簡單,但功能較弱,且在業(yè)界較少應用;綜合考慮,Python語言兼有兩類語言的優(yōu)點,入門容易且功能強大,有利于教師針對不同程度的學生制定不同的教學策略,達到最優(yōu)的教學效果。
實踐教學部分主要是實踐學生所學習的理論知識,把課堂上學習到的各類計算機軟硬件問題使用計算機語言來進行計算或仿真。在實踐教學中,對于C++等學習曲線陡峭的語言,教師往往需要在入門階段對學生進行一一輔導,費時費力,教學效率低下。使用Python語言作為教學語言之后,教師為主,輔之以一定數量的研究生助教,完全可以保證為每個學生提供足夠的指導,使得他們能夠及時解決遇到的問題。同時,我們在實踐教學過程中采用積分制,布置較多的實驗題目,不要求學生必須全部完成,對不同難度的實驗內容設置不同的實驗分數,每個學生的總分只要達到一個適當的值,平時成績就可以得滿分。同時為了防止學生只挑難度低的實驗題目提交,需要對難度較大的實驗設置一個最小數量閾值,每個學生必須完成給定數量的較難題目。
我們統(tǒng)計了學生分別使用C++和Python語言完成“大學計算機基礎”實驗的完成率,除了語言要求不一樣之外,題目的內容基本一致,統(tǒng)計結果如圖1所示,其中實驗難度是從第1次到第9次逐步遞增。從圖中可見,基于C++的實驗完成率要明顯低于基于Python的實驗完成率,且隨著實驗難度的增加,基于C++的實驗完成率下降速度要明顯快于基于Python的實驗完成率??梢钥闯觯赑ython的“大學計算機基礎”教學可以取得更加良好的效果。
4 結語
隨著各行各業(yè)越來越依賴于信息技術,無論在大學中學習什么專業(yè),未來從事什么工作,掌握基本的計算機軟硬件技術,乃至具備基本的高級程序設計能力愈來愈成為社會對每一個人的要求??紤]到非計算機專業(yè)學生的實際需求,基于Python的“大學計算機基礎”課程不僅能幫助學生掌握信息技術的基本脈絡,培養(yǎng)基礎計算思維能力,最終是要訓練他們使用計算思維和程序設計技術來解決他們本專業(yè)中遇到的種種實際問題。使用Python作為“大學計算機基礎”課程的教學語言,大大降低了學習編程語言本身的難度,使基礎較差的學生也能夠迅速上手;同時Python強大的擴展功能更能激發(fā)他們持續(xù)的學習興趣。我們在未來的教學改革過程中,要繼續(xù)利用好Python語言強大的第三方開發(fā)庫,逐步開發(fā)出適合不同專業(yè)的、定制的教學計劃,激發(fā)學生發(fā)現問題和解決問題的興趣,使學生能夠更好地理解信息技術在本專業(yè)的應用,提升計算思維能力,努力培養(yǎng)信息化社會亟需的計算機和各專業(yè)的交叉人才。
參考文獻
[1] 九校聯盟(C9)計算機基礎教學發(fā)展戰(zhàn)略聯合聲明[J].中國大學教學,2010(9):4-9.
[2] 張茗芳.動態(tài)語言Python探討與比較[J]. 企業(yè)科技與發(fā)展,2012(13):57-60.
[3] 沈殊璇,薄亞明.適合于科學計算的腳本語言Python[J].微計算機應用,2002(5):289-291.
[4] 狄博,王曉丹.基于Python語言的面向對象程序設計課程教學[J].計算機工程與科學,2014(A1):122-125.
[5] 黃宏博.以Python語言作為高校程序設計課程主語言的探討[J].教育藝術,2015:283.