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