馬竹根
摘 要: 探討了數(shù)據(jù)庫原理與應用課程教學中培養(yǎng)學生計算思維的問題,分析了數(shù)據(jù)庫原理與應用課程中所體現(xiàn)的計算思維。在課程教學過程中,將計算思維培養(yǎng)滲透到教學內(nèi)容中,通過使用CDIO工程教學方法進行課程實踐教學,強化對學生的計算思維能力的培養(yǎng)。
關(guān)鍵詞: 計算思維; CDIO; 數(shù)據(jù)庫原理; 教學方法
中圖分類號:G642 文獻標志碼:A 文章編號:1006-8228(2016)01-91-03
Teaching of database principle and application course based on
CDIO and computational thinking
Ma Zhugen
(School of computer science and engineering, Huaihua University, Huaihua, Hunan 418008, China)
Abstract: Cultivation of computational thinking ability in teaching of database principle and application course is discussed; the computational thinking embodied in the course is analyzed in this paper. In the process of teaching, the training of computational thinking is seeped into the teaching content, and the cultivation of student's computational thinking ability is strengthened by using the CDIO engineering teaching method.
Key words: computational thinking; CDIO; database principle; teaching method
0 引言
在計算機科學中,數(shù)據(jù)庫技術(shù)是十分重要且發(fā)展迅速的一個分支,在應用上遍及各個行業(yè)?!皵?shù)據(jù)庫原理與應用”課程的重要性也日益顯現(xiàn),課程要求學生掌握數(shù)據(jù)庫的基本原理和數(shù)據(jù)庫應用系統(tǒng)的設計、開發(fā)與維護。計算思維是學生應該具備的一種核心能力,作為控制、管理、認知活動的基礎,能夠幫助學生提高在各個學科領(lǐng)域解決問題的能力[1]。陳國良院士指出:“在大學中,計算思維不僅能振興大學計算教育,而且會令科學與工程領(lǐng)域創(chuàng)造出革命性的研究成果”[2]。計算思維是培養(yǎng)學生創(chuàng)新能力的一個重要方面,有助于正確理解計算和計算機。在數(shù)據(jù)庫原理與應用課程教學中引入計算思維的理念,探索培養(yǎng)計算思維能力的教學模式,對提高教學質(zhì)量,培養(yǎng)出時代發(fā)展所需要的創(chuàng)新性人才具有重要的意義。
1 計算思維與CDIO工程教育模式
計算思維的概念是美國卡內(nèi)基·梅隆大學計算機系主任周以真教授于2006年首次提出的,計算思維定義為:運用計算機科學的基礎概念進行問題求解、系統(tǒng)設計和人類行為理解等廣泛涵蓋計算機科學的一系列思維活動,其本質(zhì)是抽象和自動化;如同所有人都具備“讀、寫、算”能力一樣,計算思維也是所有人都必須具備的一種思維能力[3]。周以真教授指出,計算思維的核心概念可用外延的形式給出,如約簡、嵌入、轉(zhuǎn)化、仿真、遞歸、并行、抽象、分解、建模、預防、保護、恢復、冗余、容錯、糾錯、啟發(fā)式推理、規(guī)劃、學習、調(diào)度等[4]。
為了在數(shù)據(jù)庫教學中融入計算思維教學,我們主要從課堂教學和實踐教學兩個方面探討。在教學過程中,貫穿抽象和自動化的思想,從計算思維層面對課程內(nèi)容中蘊含的計算思維方法進行分析和梳理,根據(jù)講授的具體知識點適時引入計算思維中的抽象、自動化、分解、規(guī)約、冗余、約簡、關(guān)注點分離、折中、嵌入、 轉(zhuǎn)化、 保護、容錯、糾錯和恢復等基本概念和思維方法,引導學生領(lǐng)會計算思維的方法。計算思維是以設計和構(gòu)造為特征,因此在實踐環(huán)節(jié)中,應結(jié)合CDIO工程教學方法,即構(gòu)思(Conceive)、設計(Design)、實現(xiàn)(Implement)和運行(Operate)[5],讓學生開發(fā)一個小型的數(shù)據(jù)庫應用系統(tǒng)。實踐環(huán)節(jié)中,學生通過獨立或者小組協(xié)作的方式運用計算思維的系列方法解決實際問題,從中探索解決問題的方法,發(fā)現(xiàn)問題的本質(zhì),提高其獨立思考問題和解決問題的能力,最終培養(yǎng)學生的計算思維能力和創(chuàng)新思維能力。
2 課堂教學中引入計算思維
“數(shù)據(jù)庫原理與應用”是一門討論如何設計和構(gòu)造數(shù)據(jù)庫系統(tǒng)的課程,課程教學內(nèi)容主要包括關(guān)系數(shù)據(jù)庫、SQL基礎、數(shù)據(jù)庫的安全性和完整性、關(guān)系數(shù)據(jù)理論、數(shù)據(jù)庫編程、數(shù)據(jù)庫設計、數(shù)據(jù)庫恢復技術(shù)和并發(fā)控制等[6],其中很多知識點都蘊含計算思維方法。課堂教學中要將有關(guān)計算思維的思維特征和方法分解到一個個具體的知識點中,在教學中表述出各知識點對應的計算思維核心概念,讓學生在學習知識的同時,逐步理解和掌握計算思維,通過滲透和強化這些核心概念,讓學生將這些核心概念內(nèi)化成自己的知識。下面主要從抽象、自動化、遞歸、分解、規(guī)約、冗余、約簡、關(guān)注點分離、折中、預防、保護、容錯、糾錯和恢復等方面分析數(shù)據(jù)庫原理課程中蘊含的計算思維。
2.1 抽象和自動化
計算思維的本質(zhì)是抽象和自動化[7]。建立關(guān)系數(shù)據(jù)模型是一個抽象的過程,而將關(guān)系模式實現(xiàn)為基本表并運用SQL語言實現(xiàn)數(shù)據(jù)查詢、修改、刪除和數(shù)據(jù)完整性控制的過程就是一個自動化的過程,因此在數(shù)據(jù)庫設計過程中貫穿了計算思維。另外,數(shù)據(jù)庫管理系統(tǒng)提供的一些管理工具,如表設計器、視圖設計器等,使得用戶不用編寫復雜的程序語句就能創(chuàng)建表和視圖,也體現(xiàn)了計算思維中自動化的思想。
數(shù)據(jù)庫系統(tǒng)開發(fā)過程分為需求分析、概念結(jié)構(gòu)設計、邏輯結(jié)構(gòu)設計、物理結(jié)構(gòu)設計、實現(xiàn)、運行與維護等幾個階段,不同階段包含了不同層次的抽象。需求分析階段收集用戶的需求信息,用數(shù)據(jù)流圖和數(shù)據(jù)字典描述用戶需求,就是對現(xiàn)實世界的抽象。概念模型設計階段,在需求分析的基礎上對數(shù)據(jù)進行“分類”、“聚集”和“概括”等抽象處理,用實體聯(lián)系圖描述概念模型。邏輯設計階段,用關(guān)系模式表示實體,用關(guān)系模型表示數(shù)據(jù)庫的數(shù)據(jù)模型。實現(xiàn)階段,在定義表時,表中字段數(shù)據(jù)類型是對實際數(shù)據(jù)的抽象,字段的有效規(guī)則是對現(xiàn)實世界數(shù)據(jù)約束的抽象。
在教學過程中不僅要講述數(shù)據(jù)庫設計相關(guān)知識,還要引導學生領(lǐng)悟計算思維中抽象的思想和方法,體會抽象的方法在數(shù)據(jù)庫設計過程中的作用。
2.2 分解、遞歸、規(guī)約、冗余和約簡
在設計數(shù)據(jù)庫時,將整個設計任務按步驟分為:分析、設計、實施和維護等幾個不同階段,每個階段完成相關(guān)任務,將復雜的設計任務分解成容易實現(xiàn)的子任務,這就是計算思維中“分解”思想的應用。關(guān)系規(guī)范化理論中通過分解關(guān)系模式由低級范式向高級范式進行轉(zhuǎn)換,也體現(xiàn)了計算思維中“分解”的思想。當一個復雜問題的每一個局部與全局高度相似時,就容易設計出遞歸算法,從而實現(xiàn)求解方法的自動化,這是計算思維中的“遞歸”邏輯。例如關(guān)系數(shù)據(jù)理論中把一個關(guān)系模式分解為BC范式集合的問題就是一個遞歸問題。
數(shù)據(jù)庫系統(tǒng)開發(fā)的過程中需求分析有兩種策略:自上而下和自下而上的方法。其中,自上而下的方法從整體出發(fā),先定義全局結(jié)構(gòu),然后逐步細化。由于系統(tǒng)是由相互聯(lián)系的部分組成的,可根據(jù)用戶需求,采用“抽象”、“分解”、“規(guī)約”和“冗余”等思維方法對其進行構(gòu)造。自下而上的方法,先定義各局部結(jié)構(gòu),然后將它們集成起來,得到全局的概念結(jié)構(gòu),采用的是“聚類”、“約簡”、“冗余”等思維方法。
2.3 關(guān)注點分離和折中
數(shù)據(jù)庫管理系統(tǒng)中三級模式和二級映像保證數(shù)據(jù)的邏輯獨立性和物理獨立性,使得應用程序與數(shù)據(jù)相互獨立,體現(xiàn)了計算思維“關(guān)注點分離”的思想。
設計關(guān)系模型時,考慮數(shù)據(jù)的存儲和訪問效率,為避免因訪問多個表而使效率降低,允許表中部分數(shù)據(jù)冗余,體現(xiàn)了一種折中的思想。對數(shù)據(jù)表創(chuàng)建索引,有助于快速查找和排序記錄,但是過多的索引又會降低速度,而且創(chuàng)建索引會占用一定的物理存儲空間。因此,創(chuàng)建索引時就需要權(quán)衡時間效率和存儲空間占用問題,這就體現(xiàn)了計算思維中的“折中”思想。
2.4 預防、保護、容錯、糾錯和恢復
在數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)庫管理系統(tǒng)提供了良好的安全措施、備份和恢復技術(shù)。數(shù)據(jù)庫管理系統(tǒng)能夠?qū)κ聞铡⑾到y(tǒng)故障和介質(zhì)故障進行恢復。通過身份認證和授權(quán)保護數(shù)據(jù)不被非法使用;提供實體完整性、參照完整性和用戶自定義完整性三類完整性約束來保證數(shù)據(jù)的完整性和一致性,在用戶更新、刪除和添加數(shù)據(jù)時,防止不合法的數(shù)據(jù)進入數(shù)據(jù)庫。
通過這些知識點的教學,結(jié)合一些日常生活中的實例,引導學生認識這些計算思維方法的重要性,在掌握數(shù)據(jù)庫知識的同時,掌握基本的計算思維方法,能夠自覺地運用計算思維方法解決實際問題。
3 實踐教學中引入CDIO工程教育方法
計算思維是以設計和構(gòu)造為特征,在實踐教學環(huán)節(jié)中,結(jié)合CDIO工程方法,以計算思維為核心,以項目為主線組織實踐教學,引導學生學習運用“計算機系統(tǒng)的思維方法”設計和構(gòu)造一個數(shù)據(jù)庫應用系統(tǒng),運用計算思維方法獨立或協(xié)作的分析問題和解決問題,發(fā)現(xiàn)問題的本質(zhì),促使學生深刻理解計算思維的基本方法,達到鞏固知識和內(nèi)化知識的目的。
在實驗教學過程中將數(shù)據(jù)庫項目的構(gòu)思、設計、實施和運用貫穿于實踐教學,讓學生從解決問題出發(fā),培養(yǎng)和訓練計算思維,掌握解決問題的途徑。實驗教學以開發(fā)一個數(shù)據(jù)庫應用系統(tǒng)為目標,以數(shù)據(jù)庫項目分析→設計數(shù)據(jù)庫→建立數(shù)據(jù)庫→管理數(shù)據(jù)庫→項目編程為主線,將一個完整的系統(tǒng)開發(fā)任務分解成幾個前后銜接的實驗任務,這本身也是計算思維“分解”思想的應用。按照CDIO模式將數(shù)據(jù)庫實驗分為七個實驗,將這七個實驗融合在一個具體的項目中,按照時間的先后順序?qū)嵤嶒烅椖吭O計如圖1所示。
基于項目的構(gòu)思、設計、實施與操作的各個階段實施內(nèi)容如下。
⑴ 構(gòu)思階段。在構(gòu)思階段教師引導學生在分配的項目中發(fā)現(xiàn)問題、解決問題,提供相似的數(shù)據(jù)庫應用系統(tǒng)教學案例幫助學生建立分析問題的思路,并且培養(yǎng)學生的團隊合作及溝通能力。
⑵ 設計階段?;陧椖康臉?gòu)思結(jié)果,進行數(shù)據(jù)庫系統(tǒng)的概念模型設計,利用數(shù)據(jù)庫建模工具完成E-R模型和數(shù)據(jù)庫邏輯設計,引入規(guī)范化理論去除不良函數(shù)依賴,同時進行數(shù)據(jù)庫完整性設計及物理設計。
⑶ 實施階段?;陧椖康脑O計結(jié)果,將數(shù)據(jù)庫物理設計的成果轉(zhuǎn)換成SQL數(shù)據(jù)定義語言,如創(chuàng)建表、視圖、索引等對象。在基表上運行插入、刪除、更改等SQL命令,并進行各種查詢功能測試。此外,對需要統(tǒng)計或復雜計算的數(shù)據(jù)處理,設計存儲過程和函數(shù);采用觸發(fā)器維護自定義規(guī)則、完整性控制等功能;掌握權(quán)限、角色、用戶管理以及數(shù)據(jù)庫備份與恢復的技術(shù)。
⑷ 操作階段?;谇傲螌嶒灥某晒Y(jié)合程序設計語言(java、C#),設計數(shù)據(jù)庫應用界面,編寫相應的程序項目進行驗證與測試,記錄下出現(xiàn)問題并分析原因,進行小組討論、改進、反饋和交流。
在基于CDIO的實踐環(huán)節(jié)中,學生在設計和構(gòu)造系統(tǒng)的過程中了解計算機能做什么,不能做什么,學會選取合適的模型反映求解的問題,掌握如何將一個復雜的問題分解成簡單問題的思維方法,并從中體會到計算思維的功用。
4 結(jié)束語
本文探討了將計算思維與CDIO工程教育模式相結(jié)合,在課堂教學中引入計算思維,實踐教學中采用CDIO工程教育模式,訓練和培養(yǎng)學生的計算思維能力,提高學生分析問題、解決問題的能力和創(chuàng)新能力。實踐教學表明,在數(shù)據(jù)庫課程中引入計算思維和工程教育模式,教學效果明顯提高。從所培養(yǎng)的畢業(yè)生來看,計算機專業(yè)的畢業(yè)生受到用人單位好評, 普遍反映學生基礎扎實、能力強、專業(yè)素質(zhì)高,社會對我們培養(yǎng)的畢業(yè)生非常認可。隨著計算思維和工程教育模式的深入研究,以此為改革方向的數(shù)據(jù)庫原理課程教學,將在培養(yǎng)計算機專業(yè)創(chuàng)新人才進程中取得更大的成效。
參考文獻(References):
[1] Wing J M. Computational thinking[J]. Communications of
the ACM,2006.49(3):33-35
[2] 陳國良,董榮勝.計算思維與大學計算機基礎教育[J].中國大
學教學,2011.1:7-11,32
[3] 周煒.計算思維與“數(shù)據(jù)庫原理及應用”課程[J].計算機工程
與科學,2014.36(A1):110-113
[4] 周以真.計算思維[J].中國計算機學會通訊,2007.3(11):
83-85
[5] 顧佩華,沈民奮,陸小華.重新認識工程教育:國際CDIO培養(yǎng)
模式與方法[M].高等教育出版社,2010.
[6] 王珊,薩師煊.數(shù)據(jù)庫系統(tǒng)概論[M].高等教育出版社,2006.
[7] 董榮勝.計算思維與計算機導論[J].計算機科學,2009.36(4):
50-52