摘要:計算思維作為人類科學思維的基本方式之一,受到了國內外計算機界的廣泛關注。培養計算思維能力是當前國內外大學計算機教育的重要組成部分,對計算機專業各門課程的教學提出了新的要求。文章在數據庫系統課程的教學活動中引入計算思維的理念,從課堂教學和實踐環節探討了培養學生計算思維的結合點和教學方法。計算思維的本質貫穿于整個教學過程,并根據講授的具體知識點適時引入計算思維方法,為培養學生的計算思維能力和創新能力提供了新的思路。
關鍵詞:計算思維;數據庫;教學模式;創新能力
作者簡介:程春玲(1972-),女,陜西西安人,南京郵電大學計算機學院,副教授;張少嫻(1972-),女,廣西南寧人,南京郵電大學計算機學院,講師。(江蘇南京210003)
基金項目:本文系南京郵電大學通達學院教改項目(項目編號:JG00411J76)的研究成果。
中圖分類號:G642.0 文獻標識碼:A 文章編號:1007-0079(2012)08-0081-02
數據庫技術是計算機科學的重要分支,也是信息領域的核心技術與重要支撐。近年來,隨著Internet的發展與普及,基于網絡和數據庫技術的信息管理系統、應用系統得到了飛速的發展與深入廣泛的應用,作為其后臺與基礎的數據庫技術也在不斷的發展中被賦予了新的能力,成為發展最快、應用最廣的技術之一。作為傳授數據庫技術的重要課程,“數據庫系統”也已成為國內外高校計算機及相關專業必修的核心專業基礎課程。在該課程的教學中,不僅應教會學生數據庫的知識本身,使學生能夠正確理解數據庫的基本原理,熟練掌握數據庫的設計方法和應用技術,更應激發學生對數據庫及相關知識的興趣,培養學生獨立探求新技術、新方法的能力和創新精神,使其成為適應能力強、富有創造才能的專門人才。
計算思維具有強大的創新能力,[1]其概念一經提出就引起了國內外科學界和教育界的廣泛關注。對學生計算思維能力的培養是目前教育界研究的重要課題,ACM和IEEE-CS在修訂后的計算機科學教程2008(Computer Science Curriculum 2008)中明確指出應該將計算思維作為計算機科學教學的重要組成部分。[2]中國科學院院士、中國科學技術大學陳國良教授指出:[3]在大學中,計算思維不僅能振興大學計算教育,而且會令科學與工程領域創造出革命性的研究成果。筆者在數據庫課程的本科教學過程中,引入計算思維的理念,探索以培養計算思維能力為核心的新教學模式,在教學過程中以數據庫知識為載體,貫通知識、能力和素質,強調創造能力和適應能力的培養,為數據庫課程的教學提供新的思路。
一、計算思維
計算思維的概念是美國卡內基·梅隆大學計算機系主任周以真教授于2006年首次提出的,定義計算思維為:運用計算機科學的基礎概念去求解問題、設計系統和理解人類行為。[4]如同所有人都具備“讀、寫、算”能力一樣,計算思維是必須具備思維能力。計算思維的本質是抽象和自動化,它們恰好反映了計算的根本問題,即什么能被有效地自動進行。
具體地,計算思維包括一系列廣泛的計算機科學的思維方法:計算思維是通過約簡、嵌入、轉化和仿真等方法,把一個困難的問題闡釋成如何求解的思維方法;是一種采用抽象和分解的方法來控制龐雜的任務或進行巨型復雜系統的設計,是基于關注點分離的方法;是一種選擇合適的方式陳述一個問題,或對一個問題的相關方面建模使其易于處理的思維方法;是按照預防、保護及通過冗余、容錯、糾錯的方式,并從最壞情況進行系統恢復的一種思維方法;是一種遞歸思維,能把代碼譯成數據又能把數據譯成代碼,是一種多維分析推廣的類型檢查方法;是利用啟發式推理尋求解答,即在不確定情況下的規劃、學習和調度的思維方法;是利用海量數據來加快計算,在時間和空間之間、在處理能力和存儲容量之間進行折衷的思維方法。[4]
數據庫系統課程中引入計算思維的理念,主要從課堂教學和實踐環節兩個方面展開。在整個課堂教學過程中,始終貫穿計算思維的本質,即抽象和自動化的思想,并根據講授的具體知識點適時地引入計算思維中的關注點分離、約簡、嵌入、轉化、保護、冗余、容錯、糾錯和恢復、啟發式、折衷等基本概念和思維方法,引導學生學習領會計算思維的方法。在實踐環節,老師給出實驗任務、提出問題,學生通過獨立自主和小組協作的方式運用計算思維的一系列方法去解決實際問題,探索解決問題的方法和方法的應用,發現問題的本質所在,達到更好地吸收和鞏固知識和計算思維方法的目的,最終培養學生的計算思維能力、提高獨立思考解決問題的能力和創新思維能力。
二、以培養計算思維為核心的數據庫課堂教學
數據庫課程的知識體系完整,既有經典理論成果奠定的堅實基礎,又有在實踐中發揮巨大作用的先進技術,其中很多知識點都為計算思維提供了很好的詮釋和生動的案例。下面就從抽象、自動化、關注點分離、保護、容錯、恢復和權衡折衷等典型的計算思維方法出發,探討在數據庫教學中融入計算思維理念的途徑。
1.抽象和自動化
抽象是精確表達問題和建模的方法,也是計算思維的一個重要本質。數據庫中的很多概念和方法都體現了抽象的思想,例如:數據模型、規范化理論、事務管理等。數據模型是數據庫中的最基本的概念之一,其本身就表達了對現實世界的抽象,并且這種抽象是分層次、逐步抽象的過程。當利用數據模型去抽象、表達現實世界時,先從人的認識出發,形成信息世界,建立概念模型;再逐步進入計算機系統,形成數據世界。在數據世界中,又進一步分層,先從程序員、從用戶的角度抽象,建立數據的邏輯模型;再從計算機實現的角度抽象,建立數據的物理模型。目前作為數據庫課程講授主要內容的關系數據庫就是采用關系抽象表達了現實世界中的事物以及事物之間的各種聯系。關系可以進一步抽象為集合論中的集合,形式化描述為屬性域笛卡爾乘積的子集。再如:在數據庫設計階段,概念設計首先就是進行數據抽象,經常采用的是聚集和概括的數據抽象方法。在教學過程中,啟發學生體會抽象的思想和方法,學習運用抽象去表達需求并建模,發現問題的本質和其中蘊含的規律,并逐漸掌握抽象這個工具。
以上抽象思維的結果需要在計算機上實現,這體現了自動化這個本質,也是將理論成果應用于技術實踐的過程。自動化隱含著需要某類計算機(可以是機器或人,或兩者的組合)去解釋抽象。[5]數據庫標準語言SQL可解決各種數據庫數據操作在計算機上的實現問題;在用SQL去實現用戶要求時,結合計算思維的約簡、嵌入、轉化等方法,把復雜的問題轉換為易于解決的問題加以實現。如:在講解帶有全稱量詞的查詢中,重點說明將全稱量詞轉化為對存在量詞的否定之否定,用多層嵌套查詢來實現的思路和方法。此外,對抽象的關系模型的自動化,采用了簡單的表結構去表達同一類事物,用對表中數據上定義的增刪改查操作實現對數據的訪問。由于現實世界中事物客觀存在并滿足一定的條件,為了保證自動化的正確性,通過完整性約束限制數據的取值,并進一步把表的建立和完整性約束,以及對數據的操作通過SQL語言建立程序由計算機執行,從而建立真實的物理數據庫。在講解數據模型這個概念時,從現實世界出發,闡述分層次的抽象方法形成各級數據模型,再到采用關系模型,并通過SQL語言自動化實現這一完整的剖析過程,既清楚地說明了數據模型的概念及其作用,又逐步引導學生學習體會了抽象和自動化的方法,從而領會計算思維的本質。
2.關注點分離
關注點分離是控制和解決復雜問題的一種思維方法,即先將復雜問題進行合理的分解,再分別研究問題的不同側面(關注點),最后綜合得到整體的解決方案,在計算機科學中的典型表現即是分而治之。[6]在數據庫設計、龐雜的數據管理和數據庫應用開發中,采用的就是分而治之的思想。數據庫設計采用軟件工程的思想,自頂向下將設計任務劃分為多個階段,每個階段有各自相對獨立的任務,相鄰階段又互相聯系互相承接,共同完成整個設計任務;面對復雜的數據管理和維護任務,也進一步分解為數據恢復、并發控制、數據完整性和安全性的保護、數據庫的運行維護等多個子任務,由不同的子系統負責,并相互協作保護數據在運行過程中的正確性和有效性;在進行基于數據庫的應用開發中,模塊化是最常用的最有代表性的一個分解方法。這些數據庫的知識點都充分體現了計算思維的方法。
3.保護、冗余、容錯、糾錯和恢復
按照預防、保護及通過冗余、容錯、糾錯的方式,并從最壞情況進行系統恢復是計算思維的一個重要方法,這在數據庫中有最直接的體現。數據庫管理系統就是通過預防、保護、冗余、容錯、糾錯等方式實現對海量數據的管理和保護。為了預防各種可能的故障造成數據丟失,數據庫引入了恢復機制,通過冗余技術建立后備副本和日志或采用遠程備份;為了預防泄露和破壞數據,數據庫引入安全機制,通過用戶身份鑒別、存取控制、審計等一系列機制保護數據安全性;為了糾正數據庫中死鎖帶來的問題,數據庫引入死鎖的檢測機制及時發現,并加以處理;為了提高數據的訪問速度,允許用戶按需存儲必要的冗余數據。數據庫管理系統對數據的保護全面體現了計算思維的保護、冗余、容錯、糾錯和恢復的思想。
4.利用啟發式尋求解答
數據查詢是數據庫及其應用中最常見的操作,也是其他數據操作的基礎,其速度直接影響了應用的效率。對于一個查詢可以有多種執行計劃,執行效率差別很大,有時甚至相差幾個數量級。因此,數據庫管理系統需要對操作進行優化。優化則基于啟發式規則形成各種優化算法。在數據庫的物理設計中也常使用啟發式的規則來指導存取方式和存取路徑的選擇。在這些內容的教學中引入啟發式方法,可啟發學生學習利用啟發式規則和推理來尋求更好的解答,理解計算思維的思想。
5.折衷
數據庫在對海量數據進行管理的技術中處處體現了時間和空間之間、處理能力和存儲容量之間施行折衷的思維方法。如:為了滿足應用的實時性要求,對數據查詢時可以通過建立索引來提高數據訪問速度;但建立索引需要存儲實際數據,占用一定的存儲空間,并且索引需要維護。為了解決應用的數據冗余和操作異常問題,常需對數據關系進行規范化,規范化級別越高,數據冗余越小,占用的存儲空間越??;但規范化后的表被分解為多個小表,查詢時需要多個表之間的連接,會增加數據的查詢時間。對數據施加封鎖時,封鎖的粒度越小,并發性越高,事務的處理速度越快,但系統代價越高;而封鎖的粒度越大,系統處理代價越小,但事務之間的并發程度降低,事務的等待時間延長。這些都是典型的折衷思想,體現了計算思維的理念。
三、面向計算思維的數據庫課程實踐教學
要牢固地掌握一種思維方法,緊靠課堂教學容易陷入似懂非懂、紙上談兵的境地。實戰是提高實踐能力、積累經驗、學懂計算思維方式的必需之策。在實踐環節,重點鍛煉學生對計算思維方法的運用、探索解決實際問題的過程,這是對課堂教學的補充,也是對計算思維方法能更好地吸收和鞏固。筆者將實踐環節分為課堂練習、小組討論和上機實驗等多種形式,使學生在課程的整個教學過程中不斷地參與和練習。在課堂講授完相關的知識點和計算思維方法后,即利用事先精心設計好的由淺入深的練習題讓學生各自獨立運用計算思維方法完成;對于較復雜的練習,在學生完成練習后,劃分小組進行討論,各自闡述自己對知識點的理解和對問題的分析、解決思路和方法,并互相評析;然后,帶著各自的理解和疑問上機練習,讓計算機給出的正確的答案;最后,教師再加以分析、歸納和總結,進一步深化學生對計算思維思想的理解。例如:數據庫中的封鎖機制以及封鎖帶來的問題對學生來說較難理解,在SQL編程和應用開發中也不能直觀感受到。筆者設計了多個事務和多種調度方法的實驗,先由學生在課堂練習中思考運行結果和運行過程中可能出現的現象;然后在小組討論中各抒己見;再帶著各自的問題上機觀察事務的并發執行、封鎖帶來的等待現象和死鎖造成的“死機”。通過這一系列過程,從理論剖析到現實操作將抽象的概念轉化為直觀的結果,給學生留下了深刻印象。
在上機實驗的設計中,也采用循序漸進、由淺入深的方法,將實驗分為驗證型、綜合型和研究型三種類型的實驗。驗證型實驗要求學生模擬教師解決問題的方法完成實驗內容,是計算思維方法的模仿;設計型實驗綜合運用多種計算思維方法分析問題和解決問題,是計算思維方法的綜合運用;研究型實驗則結合科研項目和數據庫新的應用領域,由學生自組小組分工合作,不僅鍛煉了學生綜合運用所學知識的能力和團隊協作精神,更進一步地培養學生發現問題的能力和探索、創新精神,是計算思維方法的拓展和升華。通過多層次的實踐和貫穿教學始終的實戰,筆者所帶的學生無論在考試還是應用開發方面都取得了明顯的成效。
四、結束語
計算思維作為三大科學思維方式之一,正在改變著大學計算機教育的教學模式,成為大學計算機教育振興的一個新途徑,同時也對計算機專業的人才培養提出了新的要求。數據庫課程是計算機專業的核心基礎課程,其中的許多知識點都為計算思維提供了很好的詮釋和生動的案例。本文在數據庫系統課程教學中引入計算思維的理念,在什么樣的教學更有助于計算思維能力的培養方面進行了深入的思考和實踐,從課堂教學和實踐環節探討了在數據庫教學中培養計算思維思路的方法,使學生能夠深入地領會計算思維,并應用計算思維理念來解決問題,為培養具有專業素質和創新能力的、訓練有素的科技人才起到積極的探索作用。
參考文獻:
[1]牟琴,譚良.計算思維的研究及其進展[J].計算機科學,2011,(3):10-15.
[2]常亮,徐周波,古天龍,等.離散數學教學中的計算思維培養[J].計算機教育,2011,(14):90-94.
[3]陳國良,董榮勝.計算思維與大學計算機基礎教育[J].中國大學教學,2011,(1):7-11,32.
[4]Wing J M.Computational Thinking[J].Communications of ACM,2006,(3):33-35.
[5]董榮勝,古天龍.計算思維與計算機方法論[J].計算機科學,2009,(1):1-4,42.
[6]何明昕.關注點分離在計算思維和軟件工程中的方法論意義[J].計算機科學,2009,(4):60-63.
(責任編輯:宋秀麗)