強小利 藍雯飛
摘 要: Java程序設(shè)計是計算機相關(guān)專業(yè)程序設(shè)計的重要課程。針對其教學現(xiàn)狀,以計算思維為切入點,給出了Java程序設(shè)計教學改革思路,在教學體系的構(gòu)建、教學方法的運用、教學實例的選用等方面,做了詳細的討論,并提出了解決方案。
關(guān)鍵詞: 計算思維; Java程序設(shè)計; 教學改革; 教學方法
中圖分類號:G642 文獻標志碼:A 文章編號:1006-8228(2015)11-87-03
Abstract: Java programming is an important course in computer related specialties,aiming at the present situation of the teaching, taking the computational thinking as the breakthrough point, the Java programming teaching reform idea is given in this paper. The construction of the teaching system, the application of the teaching method, the selection of teaching examples, etc., are discussed in detail, and the solutions are proposed.
Key words: computational thinking; Java programming; teaching reform; teaching method
0 引言
在Java面世短短的十來年間,Java以其簡單易學、安全可靠、面向?qū)ο蟆⒍嗑€程及平臺獨立性等許多特點[1-2],被越來越多地推廣和使用,它已成為Internet上最受歡迎的開發(fā)語言之一[3]。
目前,許多高校將Java程序設(shè)計列為程序設(shè)計的核心課程之一,肯定了它在培養(yǎng)計算機開發(fā)類人才中的地位和作用[4]。
然而,傳統(tǒng)的教學模式以層次遞進式講授理論知識、語法細節(jié),然后通過課后習題和驗證型的實驗進行鞏固。實踐證明,這樣的教學效果大多不理想,很多學生在學完該課后,僅停留在通過期末考試對理論知識的掌握上,普遍缺乏對知識的運用能力;再則,對程序設(shè)計有著濃厚興趣的學生而言,不利于激發(fā)他們的學習熱情,不能做到因材施教,不利于培養(yǎng)創(chuàng)新型計算機人才[5-6]。改革傳統(tǒng)教學模式迫在眉捷。
計算思維是指運用計算機科學的基本概念去求解問題、設(shè)計系統(tǒng)和理解人類的行為,并用最有效的辦法實現(xiàn)問題求解[7]。學會計算思維,是在信息社會中創(chuàng)新的需要。要培養(yǎng)出創(chuàng)造性人才,教育在思想和方法上必須擺脫傳統(tǒng)教學的偏見,培養(yǎng)學生的知識運用能力,讓學生學會用高效的思維去思考。計算思維能力的培養(yǎng)是提高學生知識應(yīng)用能力和創(chuàng)新能力的重要內(nèi)容。
本文針對Java程序設(shè)計課程,探討實施計算思維的教學過程和改革教學內(nèi)容,以期與同仁形成交流。
1 教學實施的過程和內(nèi)容
1.1 分析社會需求,明確課程定位,提出課程改革的目標
在很長一段時期內(nèi),Java程序設(shè)計課程教學普遍注重理論知識的傳授和編程技能的培養(yǎng),學生學到的是有關(guān)計算機的一些概念及通用計算手段的應(yīng)用。但是當今社會處于急需各種創(chuàng)新人才的高科技時代,學生僅僅具備這些能力是不夠的。高速發(fā)展的信息社會要求計算機專業(yè)學生未來應(yīng)具備的計算能力是掌握支持各學科研究創(chuàng)新的新型計算手段并應(yīng)用計算手段進行各學科的研究與創(chuàng)新,因此,大學Java程序設(shè)計課程應(yīng)定位于以計算思維為核心,以編程知識為背景,使學生理解典型的計算思維,掌握基于計算技術(shù)/計算機的問題求解思路與方法,提高學生的計算機應(yīng)用能力,培養(yǎng)學生應(yīng)用計算思維和計算工具分析和處理專業(yè)領(lǐng)域?qū)嶋H問題的能力,為今后的創(chuàng)新活動奠定堅實基礎(chǔ)。
1.2 構(gòu)建將計算思維靈活地融入Java程序設(shè)計系列課程的新知識體系
以計算思維能力培養(yǎng)為核心的Java程序設(shè)計系列課程教學改革并不意味著一定要將現(xiàn)有的課程教學內(nèi)容“推倒重來”,而是在原有教學內(nèi)容的基礎(chǔ)上,以計算思維為主線,重新組織教學內(nèi)容,適當增加新的能體現(xiàn)計算思維的知識點,刪除一些陳舊的知識或技術(shù)細節(jié),大幅度調(diào)整課程內(nèi)容的結(jié)構(gòu),最終構(gòu)建一個與計算思維相融合的新的課程知識體系。
⑴ 分析研究計算思維的內(nèi)涵和特征
在明確課程定位后,我們應(yīng)首先仔細分析計算思維的內(nèi)涵,研究計算思維的基本組成部分,這些基本組成部分的特征和表現(xiàn)是什么,確定在課程知識體系中涉及計算思維的哪些概念;然后將知識體系分解為知識單元和知識點,研究這些知識點如何與計算思維的典型特征有機融合。
對計算思維內(nèi)涵的解讀有很多。2010年,Peter J. Denning在ACM關(guān)于“什么是計算”的研討會上指出:計算思維是一種解決問題的思維方法,這種方法將問題表示為關(guān)于某個計算模型(該模型必須被發(fā)明或發(fā)現(xiàn))的信息處理過程,并尋求一種算法上的解決方案。2012年,李廉教授指出:“計算思維是人類科學思維中,以抽象化和自動化,或者說以形式化、程序化和機械化為特征的思維形式。計算思維的標志是有限性、確定性和機械性。計算思維的結(jié)論應(yīng)該是構(gòu)造性的、可操作的、能行的”。
戰(zhàn)德臣教授提出的“計算之樹”很好地描繪出融入計算思維后的計算機所面對的知識空間,即“核心”的計算思維,主要有“計算之樹”的樹根—計算技術(shù)與計算系統(tǒng)的奠基性思維:0和1、程序、遞歸;“計算之樹”的樹干—通用計算環(huán)境的進化思維:馮· 諾依曼機、個人計算機、并行與分布計算環(huán)境、云計算環(huán)境;“計算之樹”的樹枝—計算與(社會/ 自然)環(huán)境的融合思維;“計算之樹”的雙色枝杈—交替促進與共同進化的問題求解思維:算法與系統(tǒng)。
計算思維是一種形式規(guī)整的、問題求解的和人機共存的思維。典型的計算思維包括一系列廣泛的計算機科學的思維方法:遞歸、抽象和分解、保護、冗余、容錯、糾錯和恢復(fù)等,是利用啟發(fā)式推理來尋求解答,即在不確定情況下的規(guī)劃、學習和調(diào)度。
⑵ 選取典型的計算思維,構(gòu)建新的課程內(nèi)容體系
選取學生需要掌握的典型計算思維,對現(xiàn)有的教學內(nèi)容進行重新審視和定位,適當裁剪和增刪;圍繞問題的分析解決思路組織相關(guān)知識,設(shè)計課程教學內(nèi)容,最終構(gòu)建一個與計算思維有機融合的新的課程知識體系。
我們在2013年和2014年,對Java程序設(shè)計進行了教學改革,初步構(gòu)建了課程知識體系,在實施過程取得了一些教學效果。接下來,我們還將要對C++面向?qū)ο蟪绦蛟O(shè)計、C#程序設(shè)計實施教學改革。
以“計算思維”為主線,我們將Java程序設(shè)計課程分為11個教學單元:計算思維概述、函數(shù)思維和抽象思維—方法和類、計算機系統(tǒng)思維—程序結(jié)構(gòu)、分解思維—復(fù)雜對象及對象之間的聯(lián)系、抽象思維—對類的進一步討論、復(fù)用思維—繼承、執(zhí)行思維—多態(tài)、抽象思維—泛型、重用思維—異常和類庫、并發(fā)思維—線程、對象思維—高級知識。要求在每個教學單元的教學內(nèi)容中,描述清楚理論知識背后蘊含的計算思維是什么。受限于篇幅,表1僅給出第8單元(抽象思維——泛型)的知識點及其蘊含的計算思維。
⑶ 改革教學方法,促進學生計算思維能力的養(yǎng)成
恰當?shù)慕虒W方法才能展現(xiàn)計算思維的魅力和基本思想方法。過去以講授知識點為主線的教學方法必須改變,轉(zhuǎn)為以講授認識和應(yīng)用計算機的思維過程為主線,使知識隨著思維的展開而介紹,思維隨著知識的貫通而形成,能力隨著思維的理解而提高,這樣循序漸進地促進學生計算思維能力的養(yǎng)成。
一方面,在課堂教學中采取基于計算思維的探究教學模式。探究教學是將科學問題作為探究過程來講授,讓學生像科學家一樣在探究過程中發(fā)現(xiàn)科學概念和規(guī)律,掌握科學方法,培養(yǎng)學生的探究能力和科學精神。在課堂教學中,教師提出基于計算思維的探究性問題,引導學生運用計算思維的一系列方法探索和發(fā)現(xiàn)問題的本質(zhì),通過簡化、轉(zhuǎn)換、遞歸、抽象、分解、建模等計算思維的基本方法,將一個復(fù)雜問題轉(zhuǎn)換成許多簡單的子問題并構(gòu)建求解模型,進而充分利用計算機的運算能力實現(xiàn)問題求解。當學生掌握這種思維方法以后,教師再啟發(fā)學生運用所學方法自主探究并解決更深層次的問題,從而達到知識鞏固、遷移和內(nèi)化為能力的目的。
另一方面,在實驗教學中采取任務(wù)驅(qū)動的實驗教學模式。教師只給出實驗任務(wù),要求學生自主完成一個系統(tǒng)或一個解決方案從設(shè)計到實現(xiàn)的全過程。學生主動思考,自主梳理知識,構(gòu)建學習模式,規(guī)劃解決方案,運用計算思維的方法自主設(shè)計和獨立完成實驗任務(wù)?;谟嬎闼季S的任務(wù)驅(qū)動實驗教學模式將有利于培養(yǎng)學生自我建構(gòu)知識、計算思維和創(chuàng)新的能力。
⑷ 設(shè)計能夠體現(xiàn)計算思維顯著特征的教學案例
教學案例是教學內(nèi)容的重要載體,如果采用抽象枯燥的理論講解方式,學生將難以理解計算思維的抽象概念,更談不上通過學習培養(yǎng)計算思維能力,因此我們需要設(shè)計能夠體現(xiàn)計算思維顯著特征的教學案例。
比如,在講授多態(tài)概念及其應(yīng)用時,為了簡單、生動的說明執(zhí)行期間綁定的思維,設(shè)計一個既容易理解又能刻畫計算思維的例子。讓我們來看一個具體例子,門Door和計算機Computer都有打開和關(guān)閉的操作,但這兩個對象沒有相似之點,這時我們可以使用接口Action抽象出它們的公共操作,以便程序能夠在執(zhí)行期間顯現(xiàn)動態(tài)多態(tài)的行為,代碼如下:
當需要為一組不相關(guān)的類建立公共類型時,我們選用接口Action作為這一組類(Computer和Door)的父接口。在程序執(zhí)行期間,根據(jù)引用r指向的對象,系統(tǒng)動態(tài)選擇對象的close()方法,從而實現(xiàn)了執(zhí)行期間的多態(tài)。我們在設(shè)計以上代碼時,告訴學生應(yīng)用了抽象思維和執(zhí)行思維,并闡述清楚何時需要用這兩個思維,不難發(fā)現(xiàn),這兩個思維是并存的思維,兩者在應(yīng)用上缺一不可。
⑸ 打破課程間的邊界,突出“計算思維”主線
通過分析和研究不難發(fā)現(xiàn),不同的“面向?qū)ο缶幊陶Z言”有著一些相同的特征和機制?!懊嫦?qū)ο缶幊陶Z言”基本的核心內(nèi)容也就是面向?qū)ο蟮娜齻€特征:封裝、繼承和多態(tài),這三個教學內(nèi)容分別對應(yīng)著抽象思維、重用思維和執(zhí)行思維,因此在教學設(shè)計上可以適當復(fù)用教學內(nèi)容和教學用例。
比如我們講述繼承用例,選用了由三個類(形狀類Shape、圓類Circle和矩形類Rectangle)構(gòu)成的繼承結(jié)構(gòu),如圖1所示。
不難發(fā)現(xiàn),不論講授什么語言,都可以復(fù)用上面給出的既簡單又能說明如何應(yīng)用抽象思維、重用思維的例子。我們需要告訴學生,選擇什么語言并不重要,重要的是如何應(yīng)用計算思維。在使用繼承的時候,同樣可以找出這樣的規(guī)律,抽象思維、重用思維也是共并存的思維,兩者在應(yīng)用上缺一不可。原因很簡單,繼承是以抽象為基礎(chǔ)的設(shè)計思維。在應(yīng)用繼承的時候,能進一步找出這樣的規(guī)律,一般地,抽象思維(封裝)、重用思維(繼承)和執(zhí)行思維(多態(tài))是同時使用的。
2 結(jié)束語
程序設(shè)計課程中的計算思維訓練對于計算機學科培養(yǎng)高素質(zhì)技術(shù)人才是十分重要的,因為計算思維可以幫助學生理解計算的實現(xiàn)機制,還有利于他們進行實踐和創(chuàng)新。計算思維的本質(zhì)就是信息思維,也就是用計算機的方式思考問題和表達行為,這也是計算機人才必備的能力。我們不僅要在程序設(shè)計課程中強化計算思維,還要努力把它推廣到更多的課程中去,真正把強化計算思維做到實處。
教學改革是一個長期的過程,我們期望通過廣大計算機教育工作者的研究、探索和改革實踐,訓練學生計算思維的養(yǎng)成,培養(yǎng)學生運用計算思維方法解決專業(yè)領(lǐng)域問題的能力,提高學生創(chuàng)新能力,從而為國家培養(yǎng)大量創(chuàng)新型人才。
本文比較詳細地討論了我們近幾年在Java程序設(shè)計課程中實施計算思維教學改革的一些做法和經(jīng)驗,在一定程度上提高了教學質(zhì)量,對推動Java程序設(shè)計課程教學改革具有一定的借鑒意義,希望能與同仁分享與交流。接下來我們將會把計算思維引入到后續(xù)課程(數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)庫原理等)的改革中去。
參考文獻(References):
[1] 秦學禮,汪迎,鄭淑紅.Java程序設(shè)計實用教程[M].清華大學
出版社,2012.
[2] 藍雯飛,李子茂.“Java程序設(shè)計”課程教學思考[J].計算機時
代,2013.1:37-39
[3] 印旻.Java語言與面向?qū)ο蟪绦蛟O(shè)計(第2版)[M].清華大學出
版社,2007.
[4] 藍雯飛,鄭波盡.高級語言程序設(shè)計課程建設(shè)思路[J].計算機
教育,2012.6:30-32
[5] 吳文虎.我怎么講好“程序設(shè)計基礎(chǔ)”這門課[J].中國大學教
學,2011.12:10-12
[6] 李英梅,夏偉寧,丁金鳳.Java程序設(shè)計語言課程群建設(shè)[J].計
算機教育,2012.7:86-89
[7] 劉曉路.基于計算思維的程序設(shè)計教學改革[J].廣東技術(shù)師
范學院學報(自然科學),2013.3:108-110