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

?

論程序設(shè)計(jì)教學(xué)之實(shí)質(zhì)

2014-08-15 00:45張鳴華
關(guān)鍵詞:文虎程序設(shè)計(jì)代碼

張鳴華

要從事計(jì)算機(jī)專業(yè),程序設(shè)計(jì)是必不可少的一門課程。程序是計(jì)算機(jī)可以懂的一系列指令,是計(jì)算機(jī)的靈魂。程序設(shè)計(jì)就是設(shè)計(jì)出能在計(jì)算機(jī)上運(yùn)行的、符合人們意志的代碼。程序設(shè)計(jì)教學(xué)就是教會(huì)學(xué)生編出能解決問題的、使計(jì)算機(jī)運(yùn)行的代碼。然而,我們的教學(xué)結(jié)果有太多的失敗和困惑。計(jì)算機(jī)專家們?cè)诤粲酰何覈?guó)的程序設(shè)計(jì)不如人,一些碩士生導(dǎo)師及博士生導(dǎo)師們?cè)诤艉埃壕谷挥醒芯可荒苷{(diào)試代碼!尷尬現(xiàn)狀讓我們思考,程序設(shè)計(jì)的實(shí)質(zhì)究竟是什么?程序設(shè)計(jì)的教學(xué)之路在何方?筆者通過向清華大學(xué)的吳文虎老師、上海交通大學(xué)的俞勇老師、北京工業(yè)大學(xué)的蔣宗禮老師等賢人的學(xué)習(xí),以及與同行計(jì)算機(jī)老師的交流與探討,對(duì)程序設(shè)計(jì)的實(shí)質(zhì)有了更深的理解,程序設(shè)計(jì)的教學(xué)應(yīng)該從本學(xué)科的特點(diǎn)出發(fā),讓學(xué)生遵循認(rèn)知規(guī)律學(xué)習(xí)。

一、程序有完整體系,動(dòng)手踐行是關(guān)鍵

在C語言中,最簡(jiǎn)單的一個(gè)程序的結(jié)構(gòu)要有頭文件(由編譯預(yù)處理指令#include把頭文件信息調(diào)入)和主函數(shù)(main)部分,要使用一個(gè)變量,必須先定義這個(gè)變量再使用,要使用一個(gè)函數(shù),聲明后還要定義才可以使用。程序運(yùn)行時(shí)要先把代碼編譯成.obj文件,再把.obj文件連接成可執(zhí)行的目標(biāo)程序.exe。程序是可運(yùn)行的、完整的代碼,任何一個(gè)語句,一條規(guī)則都只是其中的一部分。當(dāng)我們離開開發(fā)環(huán)境,用PPT肢解出一條條規(guī)則時(shí),學(xué)生就不能完整地寫出一段能解決問題的代碼。

一個(gè)眾所周知的公式是:程序=數(shù)據(jù)結(jié)構(gòu)+算法+代碼。不知道用什么算法讓計(jì)算機(jī)進(jìn)行運(yùn)算,設(shè)計(jì)程序無從下手;不知道如何用變量表達(dá)問題中的參數(shù),就不能把問題轉(zhuǎn)化成代碼的模型;不會(huì)用語句表達(dá)算法,就寫不出完整的代碼。因此,學(xué)習(xí)程序語言就應(yīng)該結(jié)合問題,先分析用什么算法、然后確定用什么數(shù)據(jù)結(jié)構(gòu)表達(dá)問題中的量、再用代碼把思路表達(dá)出來。

我國(guó)成功的程序設(shè)計(jì)教師都得出同樣的結(jié)論:編程不是教會(huì)的,而是練會(huì)的[1]。即使把語法背得滾瓜爛熟也不能寫出完整的代碼,要把教學(xué)重點(diǎn)放在解題的思路上。北京工業(yè)大學(xué)蔣宗禮老師統(tǒng)計(jì)得出:一個(gè)成功的軟件方向的大學(xué)生在校的編程量要有4萬行代碼,最低也不能少于2萬行代碼[2]。學(xué)有成就的學(xué)生也得出這樣的結(jié)論:眼過千行不如手敲一行??慈思业拇a不如自己寫代碼;看人家的算法不如自己想算法。

程序設(shè)計(jì)的教學(xué)就是讓學(xué)生從動(dòng)手敲代碼開始。比如第一課就讓學(xué)生編程輸出“Hello”,讓學(xué)生感知程序設(shè)計(jì)的完整過程,認(rèn)知開發(fā)環(huán)境,學(xué)習(xí)實(shí)踐的方法。程序設(shè)計(jì)入門的重點(diǎn)是培養(yǎng)學(xué)生的興趣和建立編程思維,要由簡(jiǎn)到繁、由淺入深。開始用簡(jiǎn)單的公式、計(jì)算、簡(jiǎn)單判斷等單一的問題引導(dǎo)學(xué)生,然后再不斷綜合練習(xí)要解決的問題。教學(xué)是不斷示范、指導(dǎo)、糾錯(cuò)的過程,開始的算法是求和、求最值(比較)、求公式的值、系統(tǒng)函數(shù)、求數(shù)列的和等。開始的數(shù)據(jù)類型先用int、float、double,以各個(gè)知識(shí)點(diǎn)引導(dǎo)學(xué)生看書。帶學(xué)生處理好數(shù)據(jù)結(jié)構(gòu),教會(huì)他們?nèi)绾芜x擇數(shù)據(jù)類型和設(shè)計(jì)數(shù)據(jù)的個(gè)數(shù)及處理方法,有限個(gè)(若干個(gè))怎么處理;不定的怎么處理;有T種案例,每一種案例又有若干個(gè)數(shù)據(jù)的怎么處理。開始要鼓勵(lì)學(xué)生多做題,培養(yǎng)學(xué)生解決問題的勇氣。入門成功就相當(dāng)于培養(yǎng)了學(xué)生良好的學(xué)習(xí)習(xí)慣,營(yíng)造了良好的學(xué)習(xí)風(fēng)氣,接下來分析、引導(dǎo),讓學(xué)生舉一反三;最后引導(dǎo)他們獨(dú)立思考,實(shí)現(xiàn)自主學(xué)習(xí)。

二、程序是工具,解決問題是學(xué)習(xí)目標(biāo)

程序是人們駕馭計(jì)算機(jī)的通用智力工具[5]。工具的價(jià)值在于使用,不只是學(xué)習(xí)。使用就是不斷從問題出發(fā),用這個(gè)工具去解決問題,而把需要解決的問題轉(zhuǎn)化或抽象成數(shù)學(xué)模型是解決問題的途徑,如解決數(shù)學(xué)問題,無論多簡(jiǎn)單或多復(fù)雜的問題都要形式化為數(shù)學(xué)式子或相應(yīng)的操作步驟。因而,學(xué)生要順利使用程序這一工具去解決問題,必須具備較強(qiáng)的數(shù)學(xué)基礎(chǔ)、訓(xùn)練獨(dú)特的編程思維方式,以及學(xué)習(xí)計(jì)算機(jī)能夠“懂”的語言。

學(xué)生要提高應(yīng)用程序工具解決問題的水平,是在不斷使用的過程中實(shí)現(xiàn)的。因此程序設(shè)計(jì)的學(xué)習(xí),就從寫代碼解決問題開始,而不是從背變量類型等開始。寫代碼從簡(jiǎn)單問題開始,循序漸進(jìn),讓思維螺旋式上升。如循環(huán)語句,先簡(jiǎn)單使用,讓學(xué)生認(rèn)識(shí);再解剖應(yīng)用,讓學(xué)生會(huì)用;再三種循環(huán)對(duì)比,讓學(xué)生靈活應(yīng)用;再嵌套使用,讓學(xué)生能綜合應(yīng)用。程序這個(gè)工具中極其重要的部分是調(diào)試,不會(huì)調(diào)試就是不會(huì)編程。不經(jīng)歷數(shù)十次甚至數(shù)百次的調(diào)試挫折,便不能完成一個(gè)項(xiàng)目的調(diào)試工作。程序有很多不同功能,更有很多創(chuàng)造性的使用方法,教學(xué)不可能窮盡所有的細(xì)節(jié),因此,必須教學(xué)生科學(xué)的學(xué)法,讓學(xué)生自己去學(xué),而不是讓學(xué)生背標(biāo)準(zhǔn)答案,即教師授之以魚不如授之以漁。

可見,程序設(shè)計(jì)是運(yùn)用綜合能力和知識(shí)去解決問題的過程,解決問題是根本的和最終的目標(biāo)。要以問題驅(qū)動(dòng)的模式進(jìn)行教學(xué),讓程序這個(gè)工具的使用越來越靈活,讓學(xué)生不斷提升解決問題的能力。

三、程序設(shè)計(jì)是高級(jí)思維活動(dòng),興趣是學(xué)習(xí)動(dòng)力

思維活動(dòng)是人們自覺的、獨(dú)立的行為,是對(duì)問題進(jìn)行內(nèi)化的過程。程序設(shè)計(jì)的思維包含計(jì)算思維、邏輯思維、抽象思維等,是一個(gè)高級(jí)思維活動(dòng)[4]。

計(jì)算思維是人類借助通用智力工具求解問題的一條途徑,涉及理解和運(yùn)用計(jì)算機(jī)科學(xué)的基本概念、遞歸思想、抽象化、形式化、枚舉、搜索、啟發(fā)推理等。邏輯思維是將問題轉(zhuǎn)化為邏輯表達(dá)式,而把問題轉(zhuǎn)化成數(shù)學(xué)模型是抽象思維。程序設(shè)計(jì)要綜合應(yīng)用這些思維方式,比如算法中的遞歸、枚舉、搜索、動(dòng)態(tài)規(guī)劃等就是這些思維方式的應(yīng)用。

思維具有廣闊性、敏銳性、靈活性、深刻性和創(chuàng)造性。要提高學(xué)生程序設(shè)計(jì)能力,必須在課堂教學(xué)中有計(jì)劃地進(jìn)行思維訓(xùn)練,如:聯(lián)想、推理、對(duì)比、歸納、反思等。如果一堂課只是羅列知識(shí)、內(nèi)容簡(jiǎn)介,學(xué)生就會(huì)開小差或離開課堂。思維是擁有自主能力、有完美人格人的腦力勞動(dòng)過程,一個(gè)沉迷于網(wǎng)絡(luò)游戲不能自控的人無法進(jìn)行這樣的思維活動(dòng)。提高學(xué)生的思維水平先要培養(yǎng)學(xué)生的人格品質(zhì),培養(yǎng)自主性、自覺性。興趣是思維的動(dòng)力,要深化思維的訓(xùn)練就要先培養(yǎng)學(xué)生對(duì)要思考問題的興趣,枯燥、死板、無邏輯性的方式無法激發(fā)學(xué)生的思維。我們程序設(shè)計(jì)教學(xué)要充分利用程序設(shè)計(jì)在線測(cè)試平臺(tái)來提升學(xué)生的編程興趣,學(xué)生一旦提交解決問題的代碼可以馬上知道是否正確,可以與其他同學(xué)進(jìn)行比較和交流,可以一次次嘗試解決問題帶來的挑戰(zhàn)和挫折,學(xué)習(xí)的過程是充滿興趣的、有深層思考的、自覺的過程。

四、明確認(rèn)知程序設(shè)計(jì)課程的作用、地位與目標(biāo),讓課堂充滿活力

科學(xué)院院士李未說:“在不遠(yuǎn)的將來,程序設(shè)計(jì)和數(shù)學(xué)建模與微積分、高等代數(shù)、大學(xué)物理一樣,成為所有大學(xué)的核心基礎(chǔ)課程。”吳文虎老師指出程序設(shè)計(jì)課程目標(biāo)[5]是:第一,借助程序設(shè)計(jì)的知識(shí)載體,學(xué)習(xí)和掌握基本問題的求解過程和基本思路;第二,建立算法意識(shí),培養(yǎng)良好的思維習(xí)慣;第三,從學(xué)科方法論上打基礎(chǔ),培養(yǎng)計(jì)算思維能力和分析問題解決問題的能力。程序設(shè)計(jì)課程承擔(dān)著知識(shí)的傳承、能力的培養(yǎng)和良好習(xí)慣的養(yǎng)成的任務(wù)。一些有識(shí)之士指出,目前中國(guó)的教育是隱含著功利的教育,失敗的教育。俞勇老師在介紹ACM隊(duì)優(yōu)異成績(jī)時(shí)特別指出:要反思中國(guó)的教育、轉(zhuǎn)變教學(xué)理念、改變教學(xué)方法。培養(yǎng)一個(gè)優(yōu)秀的ACM選手,不僅是要培養(yǎng)技能,還要考慮非技術(shù)的實(shí)力:動(dòng)力、習(xí)慣、能力和心理。上海交大ACM班的理念是先做人,后做學(xué)問,在做學(xué)問中學(xué)會(huì)做人[3]。

吳文虎老師說:“課堂教學(xué)重要的是要喚醒學(xué)生的力量,培養(yǎng)其自我性、主動(dòng)性、抽象的歸納力和理解力”。學(xué)生學(xué)會(huì)的東西不是我們教會(huì)的,而是通過他們自己內(nèi)化的。我們的教學(xué)是用微笑呼喚學(xué)生、用情感去感染學(xué)生、用認(rèn)真與執(zhí)著去規(guī)范學(xué)生、用知識(shí)的魅力去啟迪學(xué)生、用思維去帶動(dòng)學(xué)生、用示范去引領(lǐng)學(xué)生。程序設(shè)計(jì)的教學(xué)本質(zhì)是人的教育。我們的課堂就是要從細(xì)節(jié)處,引導(dǎo)學(xué)生面對(duì)問題,學(xué)會(huì)思考并解決問題。

五、程序設(shè)計(jì)教學(xué)路在何方,考試是指揮棒

考試是教學(xué)的指揮棒,怎樣考,教師就怎樣教,學(xué)生就怎樣學(xué),離開了開發(fā)環(huán)境去考學(xué)生的填空、選擇,必然會(huì)產(chǎn)生死記硬背及投機(jī)取巧的學(xué)習(xí)方式。清華大學(xué)博士生導(dǎo)師吳文虎說:“傳統(tǒng)的教學(xué)方式是:好教、好學(xué)、好背、好考,但不好用;不能激發(fā)興趣;編不出程序,影響到后續(xù)課,影響研究生的水平;學(xué)了許多語言,學(xué)得快,忘得更快;考核方式不對(duì)”。他還指出:訓(xùn)練與考核方式要一致,動(dòng)手編程才是正確的學(xué)習(xí)方法[5]。程序設(shè)計(jì)的考試應(yīng)該在真正的開發(fā)平臺(tái)進(jìn)行,給出問題,由學(xué)生完成代碼,機(jī)器過了才算,如果不過,多練幾次就過;如果學(xué)生基礎(chǔ)差,可以適當(dāng)簡(jiǎn)化問題、降低要求。只要有正確的考試方法引導(dǎo),學(xué)生就會(huì)學(xué)到真本事,做到可持續(xù)學(xué)習(xí)。ACM隊(duì)的一位選手、小老師說:“不能用選擇、填空題來衡量一次程序設(shè)計(jì)考試,程序設(shè)計(jì)考試離開開發(fā)平臺(tái)將變得乏味,例如:一個(gè)題考有符號(hào)int的最大值(VC+環(huán)境下),如果用手計(jì)算你得求:2^0+2^1+2^2+…+2^30的值,這是一個(gè)痛苦的計(jì)算,為了得分考生只能選擇死記硬背,然而在開發(fā)平臺(tái),你只要輸出0x7fffffff的值即可得到答案?!?/p>

考題不僅體現(xiàn)內(nèi)容的特征,還是教學(xué)的體現(xiàn)。教學(xué)中的重要細(xì)節(jié),知識(shí)脈絡(luò)中的重要節(jié)點(diǎn)都要以有意義的方式出現(xiàn),不要去出偏的、做作的問題,特別不要把知識(shí)點(diǎn)打散了讓學(xué)生背,這樣不僅不能培養(yǎng)學(xué)生的創(chuàng)新能力、解決問題的能力等,還會(huì)泯滅了學(xué)生的學(xué)習(xí)熱情。

嚴(yán)明的考風(fēng)是教學(xué)的保證。如果考試中有投機(jī)的成分,就會(huì)有學(xué)生平時(shí)敷衍對(duì)付,影響自覺學(xué)習(xí)。我們要不斷改進(jìn)考試的控制方式,讓學(xué)生獨(dú)立完成,如:采用IP限定等手段,還可讓不同層次的學(xué)生選擇不同分值的問題,讓考試能反映學(xué)生真實(shí)的水平。

考試是平時(shí)教學(xué)的縮影。只有一次期末考試,便會(huì)出現(xiàn)隨機(jī)性,有些學(xué)生會(huì)出現(xiàn)平時(shí)不學(xué),臨考試再來加班的現(xiàn)象。我們實(shí)行分階段考試,各階段的測(cè)試都占有一定比例,期末占%40。平時(shí)有不同方式對(duì)應(yīng)著成績(jī)的一部分,督促學(xué)生認(rèn)真學(xué)習(xí)。

總之,程序設(shè)計(jì)的教學(xué)是理論與實(shí)踐一體化的過程。吳文虎老師五十年的教學(xué)生涯,十余年的教改之路總結(jié)出一個(gè)成功的教學(xué)模式與思路:?jiǎn)栴}驅(qū)動(dòng)(引發(fā)興趣)-->理出思路(抽象思維、邏輯思維形式化)-->建立模型(歸納模型化)-->構(gòu)思算法(算法設(shè)計(jì))-->程序?qū)崿F(xiàn)(程序、結(jié)構(gòu)、編碼、調(diào)試)。這也是我們程序設(shè)計(jì)教改的成功之路。

回顧這幾年的教改,實(shí)施的是讓學(xué)生動(dòng)手實(shí)踐、用問題驅(qū)動(dòng)的方式?,F(xiàn)在我們的學(xué)生能夠在省ACM編程競(jìng)賽中獲得名次、搭建程序設(shè)計(jì)在線測(cè)試平臺(tái)、完成三鋼生產(chǎn)線上的鋼包跟蹤項(xiàng)目。數(shù)學(xué)與信息工程學(xué)院以C語言硬過的方式全面進(jìn)行教改,大批學(xué)生會(huì)編程、愛編程,學(xué)生的專業(yè)學(xué)習(xí)有了基礎(chǔ),學(xué)院有了好的學(xué)風(fēng)。

參考資料:

[1]吳文虎.信息科技教育與培養(yǎng)創(chuàng)新型人才[R].湖南長(zhǎng)沙:清華大學(xué),2011.

[2]蔣宗禮.明確定位,構(gòu)建科學(xué)有效的課程體系;瞄準(zhǔn)目標(biāo),提高課程建設(shè)與教學(xué)水平[R].湖南長(zhǎng)沙:北京工業(yè)大學(xué),2011.

[3]俞勇.競(jìng)賽與人才培養(yǎng)[R].湖南長(zhǎng)沙:上海交通大學(xué),2011.

[4]吳文虎.論拼搏精神與良好心態(tài)[R].湖南長(zhǎng)沙:清華大學(xué),2011.

[5]吳文虎.程序設(shè)計(jì)基礎(chǔ)的改革思路[R].湖南長(zhǎng)沙:清華大學(xué),2011.

[6]常子楠.基于ACM模式的程序類課程實(shí)踐教學(xué)探索[J].計(jì)算機(jī)教育,2010(16):144-146.

[7]邱欽倫.CDIO與軟件人才培養(yǎng)[J].計(jì)算機(jī)教育,2010(11):14-17.

[8]劉志宏,劉舟荷,張?chǎng)?段需勤,孔麗.項(xiàng)目教學(xué)法在C語言教學(xué)中的實(shí)踐與研究[J].中國(guó)成人教育,2010(4):139-140.

[9]夏承遺,李文杰,孫世溫.問題驅(qū)動(dòng)的“C++程序設(shè)計(jì)”教學(xué)方法研究[J].計(jì)算機(jī)教育,2010(1):122-125.

[10]盧昌荊,王紅雨,林克明等.新建本科院校IT類應(yīng)用型人才培養(yǎng)新模式的探索與實(shí)踐[J].計(jì)算機(jī)教育,2009(4).

猜你喜歡
文虎程序設(shè)計(jì)代碼
基于Visual Studio Code的C語言程序設(shè)計(jì)實(shí)踐教學(xué)探索
從細(xì)節(jié)入手,談PLC程序設(shè)計(jì)技巧
創(chuàng)世代碼
創(chuàng)世代碼
創(chuàng)世代碼
創(chuàng)世代碼
敢拍蔣介石肩膀的華僑領(lǐng)袖
油菜花開的時(shí)候
高職高專院校C語言程序設(shè)計(jì)教學(xué)改革探索
遭遇“魔鬼城”(下)
扬州市| 濮阳县| 陇西县| 新巴尔虎右旗| 四川省| 鹰潭市| 崇文区| 八宿县| 桐城市| 普格县| 苗栗市| 五莲县| 灌南县| 合川市| 奇台县| 闽清县| 洛宁县| 改则县| 南漳县| 利辛县| 萝北县| 彭泽县| 沈阳市| 西和县| 奉节县| 全椒县| 格尔木市| 北流市| 泰和县| 永寿县| 含山县| 左贡县| 亳州市| 东乡族自治县| 射洪县| 靖江市| 灵宝市| 凌云县| 临澧县| 南康市| 阜平县|