顧鴻虹,楊娜,張虹
(北京科技大學天津?qū)W院信息工程學院,天津301830)
隨著互聯(lián)網(wǎng)和信息時代的迅猛發(fā)展,新工科產(chǎn)業(yè),如深度學習、人工智能、大數(shù)據(jù)等領(lǐng)域的研究熱潮的到來,這些領(lǐng)域的人才供給出現(xiàn)不足的現(xiàn)象,而傳統(tǒng)工科教育已不再適應(yīng)新興經(jīng)濟行業(yè)對人才能力培養(yǎng)的需求。為應(yīng)對這一問題,教育部多次提出全國高校應(yīng)加快建設(shè)和發(fā)展新工科,優(yōu)化學科專業(yè)結(jié)構(gòu),發(fā)展新興前沿學科專業(yè)。
程序設(shè)計基礎(chǔ)課程是培養(yǎng)大學生計算機應(yīng)用能力和計算思維能力的重要課程,是激發(fā)學生對新工科等技術(shù)興趣的第一課堂,探究面向新工科的程序設(shè)計基礎(chǔ)課程改革對深入新工科建設(shè)發(fā)展有重要意義。
程序設(shè)計基礎(chǔ)課程是高校以講述程序設(shè)計語言的基本知識和程序設(shè)計方法,介紹程序設(shè)計的思想和方法,使學生了解計算機求解問題的方式,即計算機思維的培養(yǎng)課程。在教學內(nèi)容上應(yīng)該更加注重思想方法的傳遞。
傳統(tǒng)工科中大多數(shù)高校一直采用C程序設(shè)計作為第一門程序設(shè)計課程,一般安排在第一學期或者第二
學期,學完C語言之后,再學其他程序設(shè)計課程,如數(shù)據(jù)結(jié)構(gòu)等。但通過調(diào)查發(fā)現(xiàn),將C語言作為工科大學生第一門程序設(shè)計課程的入門語言,并沒能較好地實現(xiàn)該課程的目標。
將C語言作為工科大學生第一門程序設(shè)計課程時,由于C語言本身的特點,使很多學生在學習的過程中把過多的精力用在調(diào)改語法錯誤上,并沒能建立計算思維,也沒能扎實掌握編程技能。
1.1.1 C語言本身既靈活又復雜
由于C語言語法的既靈活又復雜,一些教師在授課過程中往往過多地強調(diào)語言成分的語法和語義,而忽視了計算思維能力的培養(yǎng),使學生從開始就扎進程序設(shè)計語言的細枝末節(jié)中去,忽略了計算思維的培養(yǎng),更無法滲透工程性思想,到最后學生雖然掌握了一些語法,卻不能用程序解決問題。同時學生在開始學習C語言并進行編程實驗時,往往容易出現(xiàn)大量語法錯誤,大量錯誤的出現(xiàn)也大大打擊了學生學習的積極性。
1.1.2 多涉及底層
要學好C語言,需要學習者先有計算機工作原理等底層的一些知識,傳統(tǒng)將C語言作為程序設(shè)計第一門課程時,對于初學者來說并沒有相應(yīng)基礎(chǔ)實施,因此學習起來原理的知識并不好掌握,需要學習者用計算機的思考方式處理問題,變相增加了學生學習的難度。
1.1.3 編程和運行環(huán)境單調(diào)
傳統(tǒng)C語言課程教學通常是借助VC++6.0集成開發(fā)環(huán)境進行課程學習,然而這一集成開發(fā)環(huán)境,編程和運行程序的界面單調(diào),學生學習時更容易產(chǎn)生枯燥感,又一次降低了學習者學習的積極性。
1.1.4 課程案例與實際應(yīng)用脫節(jié)
傳統(tǒng)C語言課程案例多涉及數(shù)學計算和高級算法的實現(xiàn),與學生學習期待和實際應(yīng)用脫節(jié),社會招聘崗位需求中對C語言的需求也很少,很難激發(fā)學生學習興趣,變相阻礙了學生創(chuàng)新思維的啟發(fā)。
綜上可見,C語言不能滿足程序設(shè)計基礎(chǔ)入門課程的需求。為有效實現(xiàn)程序設(shè)計基礎(chǔ)課程教學目標,進一步提高教學質(zhì)量,適應(yīng)新工科產(chǎn)業(yè)需求,亟需對傳統(tǒng)程序設(shè)計基礎(chǔ)課程體系進行升級改造。
當前世界范圍內(nèi),新一輪科技革命和產(chǎn)業(yè)變革正加速進行,在互聯(lián)網(wǎng)+的時代背景下,大數(shù)據(jù)、物聯(lián)網(wǎng)、人工智能、網(wǎng)絡(luò)安全、大健康等新工科產(chǎn)業(yè)迅猛發(fā)展。新工科的發(fā)展對程序設(shè)計基礎(chǔ)課程提出了相應(yīng)的需求。
高校程序設(shè)計基礎(chǔ)課程應(yīng)以計算思維培養(yǎng)為核心,以利用計算機程序進行復雜專業(yè)問題求解能力培養(yǎng)為導向,適當融入最新技術(shù)及其應(yīng)用。教學手段上應(yīng)通過案例驅(qū)動、實踐體驗等方式讓學生更有獲得感。
1.2.1 計算思維的培養(yǎng)
針對學生計算思維的培養(yǎng)應(yīng)與當前社會技術(shù)發(fā)展相適應(yīng),在這個技術(shù)時代,更應(yīng)關(guān)注問題的求解,讓學生真正掌握利用計算機解決問題的通用方法。這就要求程序設(shè)計語言能盡可能接近人類的自然語言,這樣才能在教學活動中超越對程序語法和底層結(jié)構(gòu)的關(guān)注,更多傳授利用計算思維解決計算問題的方法,即計算思維的培養(yǎng)。
1.2.2 易與新技術(shù)融合
面向新工科的程序設(shè)計語言應(yīng)能快速通過程序體驗新技術(shù)。大數(shù)據(jù)、人工智能等新興工科產(chǎn)業(yè)領(lǐng)域的研究產(chǎn)生不少應(yīng)用案例,面向新工科的程序設(shè)計語言應(yīng)選擇實際應(yīng)用領(lǐng)域眾多案例中學生易于接受和體驗的。
在針對應(yīng)用型本科院校程序設(shè)計基礎(chǔ)課程的現(xiàn)狀、包括人才培養(yǎng)方案中程序設(shè)計課程的設(shè)置情況、課程定位及內(nèi)容設(shè)置情況進行調(diào)研的基礎(chǔ)上,發(fā)現(xiàn)Python語言更能適應(yīng)新工科的需求。
Python語言自1991年公開發(fā)行,是一種面向?qū)ο蟮慕忉屝陀嬎銠C程序設(shè)計語言,全部開源,作為適應(yīng)新技術(shù)時代的輕語法程序設(shè)計語言,具有簡潔性、易讀性和可擴展性的特點,可以讓我們把更多的精力投入到應(yīng)用與問題求解上,極大地降低學習難度、簡化開發(fā)復雜度,實現(xiàn)快速開發(fā)。
目前國際上排名前100的高校中80%以上都在開始Python程序設(shè)計課程,國內(nèi)眾多高校也正積極構(gòu)建基于Python的程序設(shè)計教學體系,Python成為學習程序設(shè)計的第一選擇。
2016年,教育部高等學校大學計算機課程教學指導委員會發(fā)布了《大學計算機基礎(chǔ)課程教學基本要求》,其中首次建議將Python語言作為首門程序設(shè)計課程的教學語言。教育部考試中心也于2017年10月11日發(fā)布了“關(guān)于全國計算機等級考試(NCRE)體系調(diào)整”的通知,決定自2018年3月起,在計算機二級考試加入了“Python語言程序設(shè)計”科目。
近年來,Python在大數(shù)據(jù)分析與挖掘、人工智能和機器學習等新工科領(lǐng)域中更是優(yōu)勢凸顯,使得Python成為新工科建設(shè)最適合的語言,Python程序設(shè)計語言也迅速躍居編程語言排行榜前列,成為當下最受歡迎的編程語言之一,截至2020年底,Python已經(jīng)連續(xù)四年在IEEE Spectrum編程語言排行榜中奪冠,同時,由于在過去的2020年實現(xiàn)了2.01%的正增長,被授予過去一年最受歡迎的編程語言,贏得了年度TIOBE編程語言獎,這也是史上Python第四次創(chuàng)下這個紀錄,如圖1所示。
圖1 2020年12月TIOBE編程語言排行榜
2.2.1 調(diào)整現(xiàn)有教學計劃和課程體系
結(jié)合社會需求和新工科發(fā)展的需要,在現(xiàn)有計算機專業(yè)教學計劃中加入Python課程,增加Python課程的同時,需要注意Python課程與原有其他課程之間的聯(lián)系,確保教學計劃的系統(tǒng)性。新的教學計劃一改以往大多數(shù)高校將C語言作為工科專業(yè)大學生第一門程序設(shè)計基礎(chǔ)課程的先例,而是在大一第一學期以Python做程序設(shè)計基礎(chǔ)先導課,利用Python更容易培養(yǎng)學生計算思維。在學習Python之后,在第二學期再學習需要專業(yè)理論知識的C語言,并在C語言課程學習完成后通過課程設(shè)計綜合應(yīng)用Python和C語言進行軟硬件結(jié)合的應(yīng)用開發(fā)。因為前期有了Python的基礎(chǔ),后續(xù)在教學計劃中增加了人工智能和大數(shù)據(jù)培養(yǎng)方向的專業(yè)選修課,可以讓學生在高年級時根據(jù)就業(yè)需求和個人興趣選擇基于Python的高級應(yīng)用、機器學習等課程的學習,形成了相對完整的基于Python的應(yīng)用開發(fā)課程體系,滿足新工科產(chǎn)業(yè)大數(shù)據(jù)和人工智能領(lǐng)域的人才需求。
2.2.2 統(tǒng)籌設(shè)計基于Python的程序設(shè)計基礎(chǔ)課程教學內(nèi)容
基于Python的程序設(shè)計基礎(chǔ)課程圍繞程序設(shè)計基礎(chǔ)知識:數(shù)據(jù)類型、程序控制、函數(shù)及模塊、文件、Tkinter GUI編程展開,重點培養(yǎng)學生的計算思維能力。課程內(nèi)容與學時分布如表1所示。
表1 Python教學內(nèi)容與學時分布安排
2.2.3 采用“教學項目化”的教學方法
課題結(jié)合課程知識點選擇教學項目案例驅(qū)動教學。案例需求學生易于結(jié)合生活實際進行分析,更容易將學生引入案例項目的實際應(yīng)用情境,發(fā)揮學生主體意識,引導學生積極思考,培養(yǎng)工程化思想,提高分析問題、解決問題的能力。案例由淺入深,隨著新的知識點的講解,逐步修改完善案例項目,最終實現(xiàn)符合實際應(yīng)用需求案例。同時引導學生發(fā)現(xiàn)身邊與案例類似的應(yīng)用需求,舉一反三,利用新知識解決實際生活中與案例項目相同或相似的問題,啟發(fā)創(chuàng)新思維。
2.2.4 建設(shè)適用于教學的教材
當今市場適用于應(yīng)用型本科教學的Python程序設(shè)計基礎(chǔ)類教程相對較少,多會偏向某一具體應(yīng)用領(lǐng)域,然而涉及具體應(yīng)用的知識的內(nèi)容往往都有一定難度,不適合基礎(chǔ)教程使用。因此需根據(jù)上述確定的課程教學內(nèi)容和教學目標編寫相應(yīng)的適用于應(yīng)用型本科教學的教材;此外,為進一步適應(yīng)新工科需求,對于計算機專業(yè)的程序設(shè)計基礎(chǔ)課程的教程內(nèi)容更需要從專業(yè)應(yīng)用出發(fā),如主流的數(shù)據(jù)爬蟲、數(shù)據(jù)可視化、Web應(yīng)用開發(fā)、手寫數(shù)字識別和圖像處理等方向。因此需要根據(jù)不同專業(yè)的需求建設(shè)不同的教材。
根據(jù)課程建設(shè)成果的應(yīng)用實踐結(jié)果看,基于Python的程序設(shè)計基礎(chǔ)課程相對于基于C語言的程序設(shè)計基礎(chǔ)課程更能激起大學新生學習程序設(shè)計基礎(chǔ)課程的興趣,特別是圖形用戶界面應(yīng)用程序部分,更能激起學生學習的積極主動性,部分學生更樂于嘗試利用所學解決一些現(xiàn)實遇到的問題,并嘗試學習數(shù)據(jù)分析、圖像處理等實用研究領(lǐng)域,為創(chuàng)新應(yīng)用打下了基礎(chǔ)。