国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

面向計算思維能力培養(yǎng)的程序設(shè)計課程

2014-04-25 22:19李文生吳舜歆
計算機(jī)教育 2014年3期
關(guān)鍵詞:計算思維程序設(shè)計教學(xué)改革

李文生 吳舜歆

摘要:針對傳統(tǒng)程序設(shè)計課程教學(xué)存在的問題,提出將計算思維能力培養(yǎng)引入到程序設(shè)計課程中來,并從教學(xué)內(nèi)容、教學(xué)方法、上機(jī)實(shí)踐和考核方式等方面討論程序設(shè)計課程的改革思路,培養(yǎng)學(xué)生計算思維能力和程序設(shè)計實(shí)踐動手能力。

關(guān)鍵詞:計算思維;程序設(shè)計;教學(xué)改革

0 引言

程序設(shè)計作為計算機(jī)類專業(yè)基礎(chǔ)課,是很多后續(xù)專業(yè)課程學(xué)習(xí)的重要基礎(chǔ)和鋪墊,在計算機(jī)類專業(yè)培養(yǎng)方案中占據(jù)重要位置。

程序設(shè)計是將分析和解決問題的思維活動轉(zhuǎn)化成計算機(jī)程序的過程。從這個角度講,程序設(shè)計最能夠體現(xiàn)語言級的問題求解思想方法,學(xué)生在學(xué)習(xí)程序設(shè)計課程中,可以通過問題分析、算法設(shè)計、程序?qū)崿F(xiàn)來體驗(yàn)問題求解的思維訓(xùn)練過程。所以,對于計算機(jī)專業(yè)學(xué)生來說,學(xué)習(xí)程序設(shè)計課程的目的不應(yīng)是單純掌握某門程序設(shè)計語言的語法規(guī)范,甚至不是單純學(xué)習(xí)一門程序設(shè)計技術(shù),而是學(xué)習(xí)利用計算機(jī)分析和解決問題的基本過程和思維方法。

1 傳統(tǒng)程序設(shè)計課程教學(xué)存在的問題

程序設(shè)計課程主要涵蓋兩大部分內(nèi)容:一是程序設(shè)計語言知識,主要包括某種程序設(shè)計語言的語法機(jī)制、形式、功能和意義;二是程序設(shè)計思想和方法,主要包括數(shù)據(jù)和數(shù)據(jù)抽象,流程和流程控制,思考、設(shè)計、組織程序的過程、方法和技術(shù)等。

傳統(tǒng)的程序設(shè)計課程將教學(xué)的重心主要放在第一部分,因而很容易陷入以程序設(shè)計語言為中心的誤區(qū),具體表現(xiàn)在以下幾個方面:(1)教學(xué)內(nèi)容過分關(guān)注程序設(shè)計語言的語法和語義細(xì)節(jié),整個課程是以程序設(shè)計語言為綱來組織教學(xué)內(nèi)容。由于程序設(shè)計語言具有大量繁雜語法知識點(diǎn),教師只能采用灌輸式教學(xué)模式,花費(fèi)大量課時用于講授瑣碎的語法知識上,而不是花在程序設(shè)計思想和方法的傳授上。(2)教學(xué)方法采用程序設(shè)計語言工具書的闡述方式,一般是先介紹一種語法結(jié)構(gòu)的形式和意義,然后給出簡單示例或示例程序,這些示例和示例程序的主要作用只是用于對語法結(jié)構(gòu)使用方法的說明,學(xué)生并不能通過這些示例體會到問題分析、程序思維和構(gòu)造的方法。整個課程也很少引入綜合性的教學(xué)案例,讓學(xué)生體會到針對要解決的問題,如何進(jìn)行分析并逐漸將其精確化;如何針對問題的計算需求,設(shè)計解決問題的過程;如何將問題解決過程精確化,選擇適當(dāng)?shù)某绦蚪Y(jié)構(gòu)實(shí)現(xiàn)它。(3)課程考核類似于某些計算機(jī)等級考試,偏重于考核程序設(shè)計語言的語法知識,有時甚至用一些生僻的語法知識折騰學(xué)生,而忽略對學(xué)生分析問題、程序設(shè)計和調(diào)試能力的考核。這直接導(dǎo)致學(xué)生只注重知識點(diǎn)記憶,而忽視程序設(shè)計能力培養(yǎng)。

2 程序設(shè)計教學(xué)改革中的計算思維能力培養(yǎng)

2.1 計算機(jī)思維的背景

計算思維是運(yùn)用計算機(jī)科學(xué)的基礎(chǔ)概念去求解問題、設(shè)計系統(tǒng)和理解人類的行為,它的本質(zhì)是抽象和自動化。計算思維的核心是基于計算環(huán)境和約束的問題求解,即通過約簡、嵌入、轉(zhuǎn)化和仿真等方法,把一個看似困難的問題轉(zhuǎn)化成一個我們知道怎樣解決的問題的思維方法。

計算機(jī)學(xué)科的共同特征是基于特定計算環(huán)境和約束條件的問題求解,比如:計算機(jī)科學(xué)基礎(chǔ)理論研究實(shí)際上是基于抽象機(jī)(如圖靈機(jī))的問題求解,計算機(jī)硬件體系的設(shè)計與研究則是一種指令級的問題求解,程序設(shè)計可以看成是基于語言級的問題求解活動。因此,可以認(rèn)為,計算思維的本質(zhì)特征是基于不同層次計算環(huán)境的問題求解。問題求解涉及3個部分內(nèi)容:一是問題表示,即對象構(gòu)造,建立計算環(huán)境所能理解的基本計算對象,進(jìn)而為基于計算環(huán)境的問題求解提供可能;二是問題求解過程,即過程構(gòu)造,通過約簡、嵌入、轉(zhuǎn)化、仿真、遞歸、并行、啟發(fā)式推理、平衡與折中等計算思維方法設(shè)計問題的求解方法和過程;三是計算過程正確性與效率的驗(yàn)證,即驗(yàn)證構(gòu)造,典型方法有預(yù)防、保護(hù)、冗余、容錯、糾錯等,其中還需要多維度(時間、空間、簡潔、成本等)考量計算的效率。

既然程序設(shè)計是基于語言級的問題求解活動,那么程序設(shè)計課程也應(yīng)當(dāng)作為培養(yǎng)學(xué)生計算思維能力的重要手段,應(yīng)當(dāng)從教學(xué)內(nèi)容、教學(xué)方法、上機(jī)實(shí)踐和考核模式等諸多環(huán)節(jié)改革著手,培養(yǎng)學(xué)生的程序設(shè)計能力和計算思維能力。

2.2 程序設(shè)計教學(xué)內(nèi)容改革

程序設(shè)計課程的目標(biāo)是培養(yǎng)學(xué)生的程序設(shè)計能力和計算思維能力,而不是單純地讓學(xué)生掌握某種程序設(shè)計語言的語法規(guī)范,所以程序設(shè)計課程教學(xué)內(nèi)容的組織應(yīng)當(dāng)以培養(yǎng)學(xué)生解決實(shí)際問題能力和計算思維能力為主線,而不是以語言語法知識點(diǎn)為主線,從而學(xué)生不會在一開始就接觸到過多、過雜的語言語法規(guī)范細(xì)節(jié),從而將主要精力集中到解決實(shí)際問題中來。下面以c語言程序設(shè)計為例給出一個可行的教學(xué)內(nèi)容組織方式。

(1)C語言簡介。簡單介紹c語言的歷史和c語言程序的基本概念,通過簡單示例介紹c語言程序設(shè)計的基本流程。

(2)c語言程序設(shè)計的基本語法要素和程序流程控制。介紹數(shù)據(jù)和數(shù)據(jù)類型、運(yùn)算和表達(dá)式、基本輸入輸出、典型的分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)等,討論良好的程序設(shè)計風(fēng)格和結(jié)構(gòu)化程序設(shè)計基本方法。

(3)函數(shù)和算法。包括函數(shù)的聲明和定義、函數(shù)調(diào)用與調(diào)用規(guī)范、程序的結(jié)構(gòu)化與模塊化、算法概念與特征、算法描述方法、算法設(shè)計與實(shí)現(xiàn)、遞歸算法、程序的測試與排錯等。

(4)程序組織與軟件開發(fā)方法。主要討論函數(shù)庫與接口概念、作用域與生命周期、程序的組織方法和開發(fā)方法等。

(5)c語言符合數(shù)據(jù)類型。主要介紹數(shù)組、字符串、結(jié)構(gòu)體等,同時討論基于字符串的相關(guān)函數(shù)和算法。

(6)指針。討論指針和存儲地址的關(guān)系、指針相關(guān)運(yùn)算,同時討論指針與其他語法要件(數(shù)組、字符串、結(jié)構(gòu)體、函數(shù))之間的關(guān)系。

(7)文件與數(shù)據(jù)存儲。介紹文件的基本概念和基本操作,討論文件的讀寫方法以及實(shí)際編程時的數(shù)據(jù)存儲策略。

(8)程序抽象。通過學(xué)習(xí)數(shù)據(jù)抽象和算法抽象的基本方法與原則,掌握程序抽象的思考方法。

整個程序設(shè)計課程教學(xué)內(nèi)容的安排是介紹最基本的程序設(shè)計語言知識之后,以程序抽象機(jī)制為主線逐步介紹程序設(shè)計方法,與程序抽象有關(guān)的必要的語法元素逐漸展開,并將計算思維能力培養(yǎng)的諸多要素融入到這條主線中。endprint

特別需要注意的是,函數(shù)絕不應(yīng)該是學(xué)了各種基本編程機(jī)制之后的補(bǔ)充,而是培養(yǎng)學(xué)生抽象、分解等計算思維能力的重要載體和手段;合理的程序設(shè)計教學(xué)內(nèi)容安排應(yīng)當(dāng)盡可能把函數(shù)這一部分提前,在之后學(xué)習(xí)過程中反復(fù)強(qiáng)調(diào)和應(yīng)用,并與其他程序設(shè)計機(jī)制不斷碰撞融合。

2.3 程序設(shè)計教學(xué)方法改革

在確定了程序設(shè)計課程教學(xué)內(nèi)容后,接下來就是如何進(jìn)行教學(xué)方法的改革。改革的方向應(yīng)當(dāng)是幫助學(xué)生降低學(xué)習(xí)門檻,逐步展現(xiàn)計算思維方法和程序設(shè)計過程,從而幫助學(xué)生培養(yǎng)分析問題與通過程序設(shè)計解決問題的能力。具體做法如下:

(1)適當(dāng)?shù)Z法細(xì)節(jié),在“以程序抽象為主線”的思想指導(dǎo)下,對程序設(shè)計語言本身進(jìn)行適當(dāng)裁剪,去除較為復(fù)雜、較難理解、使用很少、不太規(guī)范的部分。事實(shí)上,在實(shí)際編程學(xué)習(xí)過程中,如果采用良好的編程風(fēng)格,學(xué)生只需要掌握最基本、最重要的語法機(jī)制和最常用、最不容易寫錯的編程范式(編程模式、習(xí)慣寫法),就可以編寫程序解決實(shí)際問題了。這樣可以降低程序設(shè)計的學(xué)習(xí)門檻,讓學(xué)生能盡早開始編程,從而以漸進(jìn)的方式在實(shí)際編程中學(xué)習(xí)程序設(shè)計,通過逐步深入的方式慢慢掌握思考、設(shè)計、組織程序的方法和技術(shù),降低學(xué)生學(xué)習(xí)過程中的枯燥感和挫折感,提高學(xué)生解決問題的愉悅感和成就感。

(2)將教學(xué)重心放在計算思維能力和程序設(shè)計能力的培養(yǎng)上,將分解、抽象、自動化、約簡、轉(zhuǎn)化、遞歸、迭代、啟發(fā)式、折中等計算思維的主要特征融入到程序設(shè)計教學(xué)過程中,如通過順序結(jié)構(gòu)把復(fù)雜工作分解為一系列較簡單的工作;通過分支結(jié)構(gòu),把整體處理分解為對一些互不相交、更為簡單的分支處理;通過循環(huán),把復(fù)雜問題的處理分解為一系列類似處理;通過函數(shù)機(jī)制實(shí)現(xiàn)功能模塊的分解和抽象;采用抽象、分解來解決相對比較復(fù)雜的問題,通過約簡、轉(zhuǎn)化、遞歸、迭代來實(shí)現(xiàn)復(fù)雜問題的分而治之等。

(3)開發(fā)相對綜合的教學(xué)案例,如萬年歷程序、ATM自動取款機(jī)程序等,這些案例由部分到整體,由簡單到復(fù)雜,貫穿整個課程,幫助學(xué)生體會:如何從分析問題開始,通過分解、抽象、約簡、迭代等計算思維方法,最終設(shè)計出一個問題的計算過程;如何用程序設(shè)計語言將所設(shè)計的計算過程轉(zhuǎn)化成為一個程序;如何采用結(jié)構(gòu)化程序設(shè)計思想方法,設(shè)計出具有良好的結(jié)構(gòu),使其易于修改和擴(kuò)充;如何保證程序能合理妥當(dāng)?shù)靥幚聿徽_的輸入,提高程序的容錯性;如何合理地組成程序,以方便將代碼作為更大程序的組成部分。

(4)引入基于問題的互動教學(xué),精選反映計算思維思想的問題案例或者相關(guān)知識模塊的引導(dǎo)性問題,通過課堂互動討論等方式,討論問題的分析、分解和精確化,找出問題解決的主要步驟,確定函數(shù)抽象,找出循環(huán)迭代、條件控制結(jié)構(gòu),最后進(jìn)行程序?qū)崿F(xiàn)。做完之后還應(yīng)該分析討論所設(shè)計程序的優(yōu)點(diǎn)和缺點(diǎn),考慮其他設(shè)計實(shí)現(xiàn)的可能性。

2.4 程序設(shè)計的上機(jī)實(shí)踐環(huán)節(jié)改革

程序設(shè)計課程本身就是一門實(shí)踐性很強(qiáng)的課程,程序設(shè)計能力和計算思維能力的培養(yǎng)不能僅靠課堂教學(xué),更多需要依靠上機(jī)實(shí)踐。上機(jī)除了強(qiáng)化學(xué)生的實(shí)踐動手能力外,更重要的是培養(yǎng)他們積極思維,自己發(fā)現(xiàn)問題、解決問題的計算思維能力?;谶@個原因,我們從以下幾個方面進(jìn)行程序設(shè)計上機(jī)實(shí)踐環(huán)節(jié)改革。

(1)以計算思維核心方法為指導(dǎo),建立分層次的實(shí)踐教學(xué)案例。

首先是基礎(chǔ)層,要求學(xué)生在掌握某種語法規(guī)范后,可以使用它們解決相關(guān)的簡單實(shí)際問題,這一層次主要幫助學(xué)生跨越程序設(shè)計的門檻;第二個層次是拓展層,要求學(xué)生掌握基本的計算思維方法(抽象、分解等),掌握解決問題的典型策略或算法(如窮舉、迭代、遞歸、分治、查找、排序等),然后加以變通并用它們解決類似的問題;第三是綜合提高層,通過給出一些綜合的上機(jī)實(shí)踐題目,要求學(xué)生學(xué)會如何進(jìn)行正確的思考,對一個相對復(fù)雜的問題進(jìn)行問題分解和抽象描述,從而得到解決問題的方法和途徑。

(2)搭建一個“程序設(shè)計在線訓(xùn)練和評測系統(tǒng)”,為程序設(shè)計課程上機(jī)教學(xué)服務(wù)。

該系統(tǒng)在設(shè)計時需要考慮如下因素:一是將實(shí)驗(yàn)實(shí)踐教學(xué)案例轉(zhuǎn)化成程序在線訓(xùn)練和評測系統(tǒng)相關(guān)題庫的題目,這些題目涵蓋基礎(chǔ)層(基本的編程語言知識的理解和復(fù)現(xiàn))、提高層(基本計算思維方法和典型算法的編程驗(yàn)證)、提高層(計算思維能力和編程技巧的綜合運(yùn)用)不同層次,逐步培養(yǎng)學(xué)生的計算思維能力和程序設(shè)計能力;二是對于系統(tǒng)的題目通過設(shè)計比較全面的測試用例,培養(yǎng)學(xué)生更加全面思考問題求解方法的習(xí)慣,并加深學(xué)生對容錯、糾錯、冗余等計算思維的相關(guān)特征的了解;三是通過對測試用例設(shè)定時間和空間的要求,讓學(xué)生體會在設(shè)計正確程序的同時,還要考慮程序算法的優(yōu)劣,進(jìn)而設(shè)計高效的實(shí)現(xiàn)算法,不斷提高程序設(shè)計的技巧。

抽象和分解是計算思維的兩個最重要元素,也是程序設(shè)計的兩個重要手段,所以有必要強(qiáng)調(diào)學(xué)生在做題過程中通過問題分解和函數(shù)(或類)抽象建立清晰的程序結(jié)構(gòu),并引導(dǎo)學(xué)生關(guān)注程序的結(jié)構(gòu)、易讀性和易修改性。但是傳統(tǒng)的“程序設(shè)計在線訓(xùn)練和評測系統(tǒng)”采用黑盒測試,只是關(guān)心程序?qū)τ诮o定的測試用例能否得到預(yù)期的輸出,并不關(guān)心程序?qū)崿F(xiàn)的方法,這導(dǎo)致學(xué)生往往只寫一個主函數(shù),并沒有根據(jù)實(shí)際問題進(jìn)行問題分解并抽象為相關(guān)自定義函數(shù)(或類),無法鍛煉學(xué)生抽象和分解的計算思維能力以及良好的程序設(shè)計風(fēng)格。針對傳統(tǒng)“程序設(shè)計在線訓(xùn)練和評測系統(tǒng)”的缺陷,我們開發(fā)一個全新的系統(tǒng),能夠全面支持函數(shù)、面向?qū)ο蟮葍?nèi)容的程序設(shè)計和測試,并通過強(qiáng)制學(xué)生通過問題分解,定義相關(guān)函數(shù)(或類),達(dá)到培養(yǎng)學(xué)生分解和抽象等計算思維能力和良好的程序設(shè)計風(fēng)格的目標(biāo)。

2.5 程序設(shè)計課程考核改革

摒棄傳統(tǒng)課程考核方式,強(qiáng)調(diào)學(xué)習(xí)過程,強(qiáng)調(diào)實(shí)踐動手能力。盡管完全放棄筆試可能會帶來一些弊端,但可以大大降低筆試所占成績的比例(如40%以下),加大平時上機(jī)解題、階段性上機(jī)測試、大作業(yè)在課程考核評價的分量。

首先,學(xué)生可以通過“程序設(shè)計在線訓(xùn)練和評測系統(tǒng)”隨時隨地做題,然后提交自己的源代碼。系統(tǒng)會實(shí)時地對學(xué)生的代碼進(jìn)行評測,并給出相應(yīng)的評測結(jié)果:編譯錯、答案錯、格式錯、運(yùn)行時出錯、超時和接受。學(xué)生解題的數(shù)量可以比較好地反映其平時的學(xué)習(xí)過程和學(xué)習(xí)效果。盡管學(xué)生提交代碼不被系統(tǒng)接受時可以對代碼不斷進(jìn)行修改和重新提交,也可以查閱相關(guān)資料,但這恰恰是學(xué)生自主學(xué)習(xí)和通過錯誤學(xué)習(xí)的過程,值得鼓勵。

其次,教師可以根據(jù)實(shí)際教學(xué)需要進(jìn)行階段性測試,通過在“程序設(shè)計在線訓(xùn)練和評測系統(tǒng)”里面布置測試題目,設(shè)定測試的截止提交時間。系統(tǒng)會對學(xué)生提交的代碼進(jìn)行實(shí)時評判,并對學(xué)生的測試情況進(jìn)行統(tǒng)計分析,不需要人工干預(yù)。

最后,教師可以布置一個大作業(yè),然后3—4人組成一個小組,利用程序設(shè)計課程學(xué)知識和技能,合作設(shè)計和開發(fā)一個具有用戶界面、功能相對完整的應(yīng)用程序,如萬年歷、ATM取款機(jī)程'序、簡易字典程序等。大作業(yè)采用開放形式,允許以任何方式查找資料,甚至在網(wǎng)上和其他人討論,但強(qiáng)調(diào)學(xué)生在大作業(yè)完成過程中的參與和投入。最后,小組成員需要參加最后的大作業(yè)答辯,在答辯中展示自己程序的設(shè)計思路和系統(tǒng)功能,并通過答辯防止學(xué)生簡單抄襲。

3 結(jié)語

面向計算思維能力培養(yǎng)的程序設(shè)計課程教學(xué)改革對該門課程的教學(xué)內(nèi)容、教學(xué)方法、上機(jī)實(shí)踐和考核模式進(jìn)行重新審視和定位,整個課程以培養(yǎng)學(xué)生的計算思維能力和解決實(shí)際問題能力為目標(biāo),同時在教學(xué)主線和實(shí)踐環(huán)節(jié)中融入計算思維的相關(guān)要素。電子科技大學(xué)中山學(xué)院計算機(jī)學(xué)院近年來一直在探索面向計算思維能力培養(yǎng)的程序設(shè)計課程教學(xué)改革,取得了一定的成績,學(xué)生的分析問題的能力和程序設(shè)計得到一定程度的提高,學(xué)生在ACM、軟件設(shè)計大賽、嵌入式設(shè)計大賽、飛思卡爾智能車大賽等大賽中屢獲佳績,在后續(xù)專業(yè)課程的課程設(shè)計以及畢業(yè)設(shè)計環(huán)節(jié)涌現(xiàn)出的越來越多的優(yōu)秀作品。

(編輯:郭田珍)endprint

猜你喜歡
計算思維程序設(shè)計教學(xué)改革
基于OBE的Java程序設(shè)計個性化教學(xué)研究
項(xiàng)目化教學(xué)在Python程序設(shè)計課程中的應(yīng)用
C++程序設(shè)計課程教學(xué)改革研究
醫(yī)學(xué)專業(yè)“Python程序設(shè)計”課程教學(xué)改革總結(jié)與思考
程序設(shè)計課程中計算思維和應(yīng)用能力培養(yǎng)問題研究
民族高校C語言程序設(shè)計課程教學(xué)改革的研究
算法的案例教學(xué)探析
淺談藝術(shù)專業(yè)學(xué)生計算思維能力的培養(yǎng)
基于人才培養(yǎng)的技工學(xué)校德育實(shí)效性研究
現(xiàn)代信息技術(shù)在高職數(shù)學(xué)教學(xué)改革中的應(yīng)用研究
耿马| 东至县| 莱阳市| 郑州市| 乳源| 淳安县| 沾益县| 新野县| 克拉玛依市| 平利县| 嘉定区| 沭阳县| 金华市| 安阳县| 舞阳县| 醴陵市| 临高县| 荆州市| 太仆寺旗| 吉林市| 象山县| 秦皇岛市| 景东| 鹤峰县| 双江| 福安市| 谢通门县| 临颍县| 芮城县| 九龙县| 桓仁| 当阳市| 大方县| 乌鲁木齐县| 泰顺县| 卫辉市| 武穴市| 闻喜县| 伊宁县| 佛冈县| 乌拉特前旗|