王 磊,葉 軍,陳素芬
(南昌工程學院 信息工程學院,江西 南昌 330099)
大學計算機基礎是普通高校本科人才培養計劃中的一門公共通識必修課程。隨著個人計算機的日益普及以及計算機在各行業中的廣泛應用,一些曾經為計算機專業學生所掌握的計算機專業知識已逐漸成為當代大學生的通識。為了適應這一變化形勢,九校聯盟率先提出關于加強非計算機類專業大學生計算思維能力的培養的倡議[1-3]。教育部高等學校大學計算機課程教學指導委員會2015年下發的《大學計算機基礎課程教學基本要求》,以及2017年7月第六屆“計算思維與大學計算機課程教學改革研討會”提出的高校設置計算機基礎課程教學實施方案中都體現并細化了以計算思維為導向改革教學內容。同時全國各高校大學計算機基礎課程的教學改革也都在逐步、穩妥地推進,當前國內大多數高校該課程教學的內容均發生了較大的變化,由過去的以計算機基礎知識傳授,以Windows操作系統、Office辦公軟件等軟件操作技能培養為主的教學轉向以培養計算思維和理解計算機中信息處理的基本原理和方式為主,因而課程的培養目標也隨之發生了根本性的變化,培養目標轉向以培養計算思維以及對計算機基本工作原理的理解為導向,旨在提高非計算機專業本科生運用計算機解決專業領域實際問題的能力,為專業領域的創新型設計和研究打好基礎。
目前,尚未有一個統一和權威的計算思維定義,一個普遍認同的、較為系統的計算思維定義是由卡內基·梅隆大學計算機科學與技術系周以真教授給出的[4],她認為計算思維是運用計算機科學的基礎概念去求解問題、設計系統和理解人類行為,其本質是抽象和自動化;計算思維能力是地球上每個人都必須具備的基本技能,而不只是計算機科學家才具備,這正如人們都具備“閱讀、寫作、算術”能力一樣。作為人類認識世界和改造世界的3種思維(邏輯思維、實證思維和計算思維)方式之一的計算思維,是以設計和構造為特征的,是以計算機科學為代表的。周以真教授認為計算思維無處不在,人人皆有之[5]。
對于剛入學的大學新生而言,其邏輯思維能力和實驗思維能力在中學階段已得到了較為系統和全面的培養和訓練,但由于中學對信息技術課的重視程度不夠致使計算思維能力沒能得到應有的培養和訓練。為了提高應用型本科院校大學生運用計算機解決其專業領域生產實際問題的能力,進行系統的設計和創新,大學生計算思維能力的培養刻不容緩,亟待加強。首當其沖,需要明確計算思維培養的內容。在文獻[6]的基礎上,筆者結合個人理解,認為計算思維的培養由3部分構成。
計算思維是伴隨人類計算工具的出現自然而然形成的,是自古有之的一種思維方法,也是每一個人都具有的一種技能[5]。然而,人們的計算思維活動通常是朦朧的、無意識的和自發的,在培養大學生計算思維意識的過程中應消除學生對計算思維的神秘感,注重因勢利導,將大學生的計算思維由無意識的形態激活為有意識的形態,由自發的意識轉變為自覺的意識。對于應用型本科院校,主要是培養學生運用計算技術和計算機去解決各專業領域生產實際中問題的能力的思維意識。
計算思維方法是計算思維培養的核心內容。人類使用的計算工具不同,相應的計算思維方法就會有所不同和側重。這正如著名的計算機科學家、圖靈獎得主Edsger Wybe Dijkstra所說,“我們所使用的工具影響著我們的思維方式和思維習慣,從而也將深刻地影響著我們的思維能力。”為了學生能較好地理解和運用這些方法,在實際的教學中可采用程序流程圖并結合案例來講解,如可以借助計算機強大的運算能力,用窮舉法破解位數較少且組成單一的密碼。
計算思維的根本目的是解決問題,即問題求解、系統設計以及人類行為理解[4]。對于應用型本科學生而言,能運用計算機技術解決將來所面臨的專業實際問題就是計算思維能力培養的目標所在。計算思維涉及特定的思想、方法、理論和技術[7],計算思維能力的培養絕非大學計算機基礎一門課程所能承擔的,所以計算思維的培養應當貫穿在大學所有的計算機基礎類課程之中,需要計算機基礎類課程群的支撐。
在大學計算機基礎課程中,幾乎每一個概念都對應一種計算思維方法[8],如Cache 是預置和緩存方法、多核處理器是并行處理方法。計算思維方法分布在大學計算機基礎課程各章之中,厘清計算思維在大學計算機基礎課程各章的分布以及各章的教學重點內容,有助于大學計算機基礎課程任課教師有的放矢地組織以計算思維為導向的教學。在此以馮祥勝、朱華生老師編寫的應用型本科院校《大學計算機基礎》[6]為例進行說明。
(1)緒論。本章的內容是計算機的初識,主要介紹計算工具的發展簡史,計算機的特點、應用領域以及計算機應用新技術和計算思維的基本概念。人類計算工具的發展歷史就是一部人類運用計算工具解決問題的歷史,也是一部計算思維的發展史。重點內容是人類計算工具的發展簡史,計算機的特點、應用領域以及計算思維的基本概念。
(2)計算機中信息的表示。介紹計算機中信息表示的方式。數值、圖形、圖像和聲音等信息采用二進制表示是便于信息在計算機中的存儲、傳輸和處理。該部分內容是計算思維能力培養的基礎。教學重點內容是各類信息在計算機中的表示和存儲。
(3)計算機基本工作原理。熟悉馮·諾依曼體系結構計算機的存儲程序工作原理有助于理解用計算機進行信息處理的基本原理和過程,從而能更好地運用計算機解決問題。計算機硬件結構是實現計算思維本質之一自動化(程序自動執行)的硬件基礎。本章是計算思維能力培養的一個基本方面。教學重點內容是計算機系統組成和信息處理的基本原理。
(4)程序設計基礎。本章介紹程序設計語言的基礎知識以及程序的3種基本控制結構,程序設計的基本方法、結構和原則。程序是對系統的抽象,控制結構是對問題求解步驟的抽象。編程是運用計算機解決問題的根本,因而編程能力是計算思維培養的重要環節。教學重點內容是結構化程序設計和面向對象程序設計的基本概念和算法的流程圖表示。
(5)算法與數據結構。算法是計算機的靈魂,是描述問題求解的有限的、確定的步驟,它可以看作是對特定計算思維方法的描述。數據結構是解決數據在計算機中的表示和存儲問題,是運用計算機實施信息處理的基礎。數據結構可以視為在系統建模過程中對系統特征的抽象,它體現了計算思維本質之一的抽象。本章是計算思維教學的核心內容,教學重點是算法的基本概念、表示和設計方法,數據的邏輯結構和物理結構以及排序和查找等計算思維方法。
(6)操作系統。操作系統是合理組織計算機工作流程,管理其軟硬件資源,提高其效率,提供人機交互的界面的系統軟件。操作系統是實現計算思維本質之一的自動化(程序自動執行)的軟件基礎,是計算機賴以實施信息處理的最基本的系統軟件,本章教學重點是操作系統的概念、功能以及進程的概念和狀態轉換。
(7)數據庫系統。本章中的數據模型以及數據庫系統結構中的三級模式和二級映像就體現出計算思維本質之一的抽象。教學重點是數據庫的基本概念、數據模型基本概念、SQL語句。
(8)軟件工程。軟件工程是采用工程化的思想和方法去指導大型、復雜軟件的設計、開發和維護,是開發大型軟件系統的一整套工程化的方法。本章介紹了工程化的計算思維方法,其教學重點是軟件工程的概念、結構化分析和設計方法、程序的測試和調試。
(9)計算機網絡。計算機網絡的三大特點是資源共享、數據傳輸和分布式處理。聯網的計算機會增強數據的存儲的能力和復雜問題的求解能力。一些新技術如網格計算、物聯網、云計算就是基于網絡的。本章教學重點是計算機網絡的基本概念、局域網的基本概念和基本技術。
運用程序設計解決問題是培養計算思維的一種有效和直接的方法。鑒于目前大部分大一新生都未曾學習過程序設計語言,需要開設針對大一學生計算思維技能培養的先修程序設計課程,如可選擇Scratch完全在線開發的Android編程環境,Google App Inventor等可視化、模塊化、易于入門學習的程序設計語言。此外,還可通過建模與仿真、游戲軟件等方式培養學生的計算思維技能,不過此法不宜在課堂使用。程序流程圖是一種能有效地表達問題解決方法的圖形化工具,具有直觀、簡明、易用的特點,適宜在大學計算機基礎課程中的計算思維教學中使用。
通過程序流程圖的設計促進學生學習計算思維的兩個教學案例如下。
3.2.1 “百錢百雞”問題
“百錢百雞”是我國古代數學家張丘建在《算經》一書中提出的一個著名問題,該問題敘述如下:雞翁一,值錢五;雞母一,值錢三;雞雛三,值錢一;百錢買百雞,則翁、母、雛各幾何?
這個問題屬于典型的不定方程求解問題,由于不定方程存在多個解,一般是采用窮舉法來窮盡每一種可能性,從而得出所有的可行解。“百錢百雞”問題采用窮舉法來求解,需要714(21×34)次的試湊,如果不借助于特定的技巧,單靠用窮舉法進行試湊,如此龐大數量的重復試湊對人而言必定是枯燥乏味的,且在使用窮舉法求解的過程中還很容易出錯,由此還會遺漏一部分解。人們可憑借計算機的強大計算能力來窮盡每一種可能性,因而運用計算機解決此類問題是可行的和高效的,既不會出錯也不會有遺漏。表達“百錢百雞”問題求解算法的程序流程圖如圖1所示,變量cock、hen、chicken分別表示公雞、母雞和小雞的只數,“=”表示賦值運算符。

圖1 “百錢百雞”問題的程序流程圖
“百錢百雞”問題的程序流程圖中蘊含了迭代、窮舉算法等常見的計算思維技能。通過該問題的講解可傳授給學生這樣的認知:運用計算思維和計算機可以把人類從枯燥乏味的重復勞動中解脫出來,前提是要學會特定的計算思維技能,并且會通過編程實現自己的想法,由此也在一定程度上激發學生學習計算思維的興趣。
3.2.2 定積分的計算問題

定積分的數學計算方法是借助于不定積分公式求出初等函數形式的原函數,并通過積分的上、下限來解決定積分的計算問題,但求解特定形式的不定積分是需要一定技巧的,對上述原函數不是初等函數的定積分計算問題則具有較大的難度。
計算機科學中的方法是先通過對積分區間進行若干等份的劃分,然后使用迭代法累加各個小區間的梯形面積來實現定積分計算的,這與定積分的數學定義一致,是一種直觀、簡明且有效的方法,在使用該方法時避免了求原函數,因而適用面廣,也易于編程實現。
這個例子說明運用計算思維中的迭代法并結合數學定義能直觀、簡明和有效地解決原函數不是初等函數的定積分計算問題,是工程化計算思維的體現,其中蘊含了迭代、分解、抽象等計算思維技能。

圖2 定積分計算方法的程序流程圖
程序流程圖是人們描述解決問題的方法、思路的一種圖形表示,其特點是直觀形象、邏輯性強和易于理解。將程序流程圖運用于大學計算機基礎課程中計算思維的教學,即用程序流程圖中統一規定的標準符號描述解決問題的具體步驟。一方面,可將計算思維涉及的問題解決思路和步驟清晰地標識出來,使抽象的計算思維變得直觀形象,易于為學生所接受,由此激發學生學習計算思維的興趣,喚起學生學習計算思維的熱情。因此,借助于程序流程圖可促進學生理解和掌握迭代、分解(功能模塊化)、組合等計算思維技能以及解決問題的算法思想,從而有利于學生計算思維意識、方法和能力的培養。另一方面,程序流程圖還能增進學生對計算機解決實際問題過程的認知和了解。這些均可以提高應用型本科學校非計算機專業學生運用計算機解決專業領域實際問題的能力,達到大學計算機基礎課程的教學目標。
綜上,結合具體案例設計程序流程圖進行大學計算機課程中計算思維教學的方法,是一種能促進學生計算思維技能提高的教學方法。
為了響應九校聯盟提出的關于加強非計算機類專業大學生計算思維能力的培養的倡議以及符合教育部高等學校大學計算機課程教學指導委員會提出的有關大學計算機基礎課程教學的基本要求,在2010年,南昌工程學院計算機基礎教研室就結合應用型本科院校的實際著手改革計算機基礎類課程的教學內容和方法并取得了初步的成果[9],其中大學計算機基礎教學改革的指導思想是由以前對常用軟件的操作技能為主的教學轉變為以計算思維的培養和計算機信息處理模式的理解為中心的教學內容。這一改革既給計算機基礎課程的教學帶來了挑戰,也帶來了機遇。
以計算思維為導向的大學計算機基礎課程教學改革是一項在新形勢下適合非計算機專業大學計算機基礎教學需要的教學改革活動。在搞清楚計算思維培養的內涵的基礎上,尚需厘清大學計算機基礎課程各章中所蘊含的計算思維思想、方法、理論和技術以有利于組織教學,通過在教學中采用設計程序流程圖的方式來幫助學生理解計算思維進而培養學生的計算思維能力。筆者下一步教學研究工作的重點是探討如何有效地測試和評價大學生在大學計算機基礎課程中習得的計算思維技能。