姜 洋,李俊生,王 紅,劉才華
(中國民航大學 計算機科學與技術學院,天津 300300)
大學計算機是本科非計算機專業的一門核心基礎課程,目的是使學生了解計算機的基本概念、原理,認識計算機在各種領域中應用,建立較強的計算機意識,掌握基本的程序設計方法,培養學生具有熟練操作計算機的技能和計算思維能力的通識性課程[1]。隨著時代的不斷發展和技術的不斷進步,社會對大學計算機的人才培養目標提出了更高的要求,更加強調綜合素質的提高和計算思維能力的培養[2]。然而以往的大學計算機課程由于缺乏程序設計的內容,計算思維培養的深度不夠[3],但如果增加程序設計,學習程序語言本身又需要增加大量的學時。如何在學時有限的情況下,使學生既了解計算機的基礎知識、掌握計算機的基本操作,又能夠通過程序設計提高計算思維水平是一個具有挑戰性的問題。
挑戰的關鍵除了精簡教學內容,改革教學方法,更重要的是選擇一門合適的程序設計語言,該語言需要具備簡潔、高效、生態3個特點,否則對于大部分沒有深入接觸過程序設計語言的非計算機專業學生來說,過多的語法細節和低效的開發效率,不僅不能激發學生的學習興趣,還容易使學生陷入偏重語言本身而忽略領悟計算機問題求解的基本方法和思維模式[4]。相對于傳統的程序設計語言,當前流行的Python恰好具備這3個特點[5-6]。Python的語法簡潔且更接近自然語言,Python還是一門解釋型、交互式、可移植的面向對象編程語言,可以高效地實現各種程序模塊,并且能夠整合其他語言實現的程序模塊,編程效率很高。不僅如此,Python良好的計算生態特性,使其在大數據分析與處理、深度學習、科學計算可視化及科學研究等領域得到越來越廣泛的應用。學生通過學習Python語言,不僅能夠快速入門,而且能夠在更高層次上去分析和解決復雜問題,是提高大學生計算思維能力培養質量和水平的最好選擇。
為了進一步提高大學生計算思維能力培養水平,探索在大學計算機課程中重點引入Python,利用Python豐富的計算生態系統,提高大學生分析和解決復雜問題的能力[7]。為了達到這樣一個目標,需要讓學生對計算機的知識體系有一個系統完整的認識,但作為一門本科非計算機專業的公共基礎課程,課程本身具有內容多、學時少、實踐性強、學生多且程度不一的情況[8],因此筆者將計算機系統型知識分成3個層面進行介紹,分別是系統型認知層、系統型應用層、系統型設計層。在系統型認知層,主要使學生熟悉計算機的基本原理、特點和發展歷史,了解計算機硬件系統、軟件系統、網絡系統等相關重要概念。在系統型應用層,學生掌握操作系統的基本功能,文字處理軟件、電子表格軟件與演示文稿軟件等基本操作,并能夠綜合運用這些軟件的功能解決一些實際問題,如文檔排版、成績表數據的統計和分析、畢業論文答辯等。在系統型設計層,掌握Python基礎知識及程序設計的一般方法,了解從問題分析到程序維護整套程序設計流程,初步具備利用Python解決各類實際計算問題的開發能力,培養學生計算思維。這3個層次的內容不僅相互聯系構成一個整體,而且相互之間是層層遞進、相互促進的關系。
大學計算機是一門實踐性很強的課程,主要包括計算機基本操作及程序設計,因此實踐教學十分重要。作為計算機公共基礎課,該課程的實踐教學一方面要開展計算機的基本操作及辦公軟件的應用;另一方面開展Python程序設計實踐,特別需要挖掘學生生活學習中亟待解決的計算問題,從而增強學生興趣,提高學生解決問題的能力。
近年來,在新工科和教學生態建設背景下,中國民航大學(以下簡稱“中航大”)在大學計算機改革方面積極探索,不斷實踐,從最初的案例驅動式教學,到MOOC+SPOC+翻轉課堂式教學,再到在大學計算機中引入Python程序設計的系統型混合式教學。在不斷豐富大學計算機教學內容的同時,也在適應新時代教育背景,不斷改進教學模式。此次在大學計算機課程中重點引入Python程序設計,并且將大學計算機知識體系分成系統型認知層、系統型應用層、系統型設計層3個層次,針對不同層次的知識特點,分別采用內涵式混合教學、案例驅動式混合教學、演化式混合教學的教學方法。
從2016年開始,在大學計算機基礎課程中,中航大就嘗試采用“MOOC+SPOC+翻轉課堂”的教學模式,學生首先通過MOOC自學計算機文化基礎知識,如果有問題話可以通過SPOC和老師同學進行在線交流,然后通過翻轉課堂的形式進行分組匯報,展示學習效果。實踐結果表明,此種教學模式教學效果很好,學生普遍認為不僅收獲很大,而且鍛煉了綜合能力。中航大因此獲得全國高校計算機教育MOOC聯盟優秀案例二等獎。基于以往的教學經驗,這次在大學計算機改革中,對于計算機文化基礎部分,筆者安排了4個理論學時,因為大部分的計算機文化基礎知識,學生可以通過MOOC自學,課堂教學重點講解計算機的本質和內涵,因為這不僅能夠幫助學生更加深刻理解MOOC的學習內容,而且有助于對計算機應用層,尤其是設計層方面知識的理解和掌握,下面將舉例說明,課堂內涵式教學的內容和方法。
第一個重要內涵是關于計算機的本質。隨著硬件技術和網絡技術的不斷發展,計算機的外形發生了很大的變化,而且逐漸向著微型化和巨型化的兩個極端發展。從圖靈最初提出的計算機理論模型圖靈機、馮諾依曼設計的計算機物理模型和存儲程序,到世界第一臺通用電子計算機ENIAC、第一臺個人PC的誕生,再到智能手機得到普及和應用、智能穿戴設備的流行,雖然這些設備的外形發生了很大的變化,但理論模型和物理模型并沒有發生變化,仍然是馮氏計算機,了解計算機的本質和發展是培養計算思維的重要基礎,因此需要在課堂教學中重點強調。
另外一個在課堂上需要重點強調的內涵是數據在計算機中的表示。這對于理解程序設計語言中數據類型的概念非常重要。數據類型是程序設計語言的核心基礎,也是程序設計的基礎,由于程序等于數據加算法,程序的運行過程就是對數據的處理過程,對數據類型概念的深入理解能夠有助于對設計層程序設計語言的深刻理解和掌握。在程序設計語言中,不同類型數據的表示方式不同、取值范圍不同、支持的運算不同,但他們最根本的區別還是存儲方式不同,例如整型數據采用二進制補碼存儲,實數采用浮點數結構存儲,字符串采用Unicode等編碼的方式存儲,如圖1所示。因為存儲方式不同,才決定了他們的取值范圍不同、運算方式不同,所以當不同類型數據進行運算的時候,需要進行一致性轉換。課堂教學由于時間相對充裕,而且有黑板便于演算,所以這部分知識可以通過詳細舉例來進行分析。這種混合式教學方式使學生在深度和廣度上對計算機文化都能夠有較為系統的認識,為后面的深入學習打好基礎。

圖1 相似不同類型數據的存儲方式實例對比
對于Office高級應用,近年來主要采用案例驅動的方式教學,設計了一些與生活息息相關的教學案例,例如基于Word的畢業論文排版、基于Word的個人簡歷、基于Excel的大學生就業數據分析、基于Excel期末成績統計與分析、基于PowerPoint的演示文稿等,這些案例不僅包含Office軟件常用的基本操作,而且與實際生活緊密結合。筆者將這些案例的操作過程做成短視頻,分享在學校的在線教學平臺上,學生可以將案例視頻下載到手機或電腦上,遇到操作上的問題可以隨時參考視頻,這樣學生不僅可以反復觀看,熟練掌握基本操作,而且也節省了課堂教學時間,提高了課堂教學的質量和效率。
由于包括office在內的各種軟件總是在不斷升級更新的,僅僅熟練掌握某一個版本的操作是不夠的,也無法提高學生思維的深度和廣度,因此在學生通過在線視頻掌握基本操作方法之后,在課堂教學上需要重點講解操作背后的一些核心概念,這些概念是隱含在操作背后最本質最核心的內容,不會隨著軟件版本的變化而變化。例如在講解word案例的時候重點介紹樣式、域、節這些文檔排版和編輯的概念;在講解Excel案例的時候,重點介紹相對引用、絕對引用、函數、數據清單、分類匯總、排序和篩選等數據統計和分析的概念;在講解PowerPoint案例的時候,重點介紹占位符、幻燈片版式、主題和母版這些文檔展示方面的概念。深刻理解這些概念不僅有助于學生快速適應新版本的變化,而且有助于對計算機系統型認知層和系統型設計層的理解和掌握。課堂教學主要通過案例深入講解相關概念,線上案例視頻幫助學生熟練掌握辦公軟件的操作過程,兩者相互補充。熟練掌握案例的相關操作,有助于對概念的深入理解,又有助于對操作更加靈活的應用。這種線上線下的混合式教學,不僅提高了課堂教學的效率,而且通過課堂由表及里的案例分析,培養了學生深入思考、探索研究和廣泛聯系的思維習慣,從而極大提高了課堂教學的質量。
Python作為一種面向對象的解釋型編程語言,其簡潔優美的語法和功能強大的計算生態系統,使其成為當下最受歡迎的編程語言,而且在人工智能、大數據的時代背景下,Python應用越來越廣泛。為了提高大學生學習計算機的積極性和主動性,并能夠在更高層次上提高分析問題解決問題的能力,中航大在大學計算機課程中重點引入了Python語言程序設計,安排了包括上機學時和授課學時在內的48學時,在總共64學時的課程總學時中占主要比例,因此也是教學的重點。為了提高課堂教學質量,并充分利用中國大學MOOC上豐富的在線教學資源,筆者采用演化式混合教學方法,學生通過和教材同步的MOOC進行自學,MOOC課程內容豐富、形式活潑、時間安排非常緊湊、學生學習效率很高。此外,還有面向零基礎的網絡先修課CAP,這樣非常有助于文科類的非計算機專業學生提前預習。對于基礎較好的理工科非計算機專業學生來說,可以根據自己的興趣學習一些更加高級的內容,例如“Python爬蟲與信息抽取”“Python機器學習應用”“Python科學計算三維可視化”“Python游戲開發入門”“Python云端系統開發入門”“Python數據分析與展示”等配套課程,這些配套課程不僅極大豐富了課堂教學的內容,而且為基礎好、對Python語言有更高追求的學生提供了更加廣闊的學習平臺。
在課堂教學方面,為了讓學生能夠快速地掌握基本概念和程序設計的思想,筆者采用演化式的教學方法,從基本案例出發,然后不斷增加案例的復雜度,把python語言的基礎知識點融入案例中,讓每個知識點都能找到一個真實的應用場景。這樣既激活了枯燥的知識講解,又積累了編程經驗,并通過層層深入的講解,鍛煉了學生分析問題、解決問題的能力,培養了學生獨立和深入思考的思維習慣。以計算天天向上年能力增長值案例演化為例[9],從最開始利用Python的內置數值函數計算、便于批量修改每天增長值引入變量,然后為了區分工作日和休息日引入分支結構和循環結構,最后為計算根據設定的年增長目標、計算工作日需要達到的努力程度引入了函數,利用函數將計算年能力增長值的問題封裝成一個獨立的模塊。此案例要想實現最后的計算目標,還需要引入一些程序設計思想,比如試湊的思想,因為無法根據年增長的目標直接計算出工作日要達到的努力程度,需要利用計算機計算快的特性,通過不斷的累加嘗試,達到目標輸出結果。通過此案例的不斷演化,學生不僅理解了語法概念的產生背景,而且隨著問題的不斷深入,掌握了利用計算機分析問題解決問題的思路和方法。
為了反映此次教學改革的教學效果,我們對所有學習大學計算機課程的學生進行了問卷調查,調查的主要目的是此教學模式和方法對學生學習方式和學習收獲的影響,結果如圖2和圖3所示。調查結果表明此模式不僅有助于提高學生的綜合能力和計算素養,更能夠引導學生培養混合式學習習慣,此學習習慣的養成不僅有利于學生對計算機課程的學習,而且有利于對其他課程的學習。

圖2 系統型混合式教學對其他課程學習習慣影響

圖3 學生通過系統型混合式學習的學習收獲
系統型混合式教學方法是新工科背景下結合在線開放課程及Python語言的一次綜合性探索和實踐。教學實踐結果表明,此方法不僅使非計算機專業學生更加系統性的掌握計算機的基本概念、基本原理及解決問題的基本方法,提高了計算思維培養的質量和水平,更能夠引導學生培養混合學習習慣,從而提高自主學習能力。筆者下一步將通過與其他專業的深度融合,逐步開發出適合不同專業的、定制的教學計劃和教學案例,努力培養信息化社會亟需的計算機和各專業的交叉人才。