前言:想要寫出一篇引人入勝的文章?我們特意為您整理了探析五導(dǎo)法的程序設(shè)計(jì)課程群教學(xué)研究范文,希望能給你帶來靈感和參考,敬請(qǐng)閱讀。
摘要:針對(duì)程序設(shè)計(jì)課程群的教學(xué),以人才培養(yǎng)目標(biāo)的定位為基礎(chǔ),提出基于五導(dǎo)法的教學(xué)模式,分別闡釋“導(dǎo)教、導(dǎo)學(xué)、導(dǎo)思、導(dǎo)用、導(dǎo)創(chuàng)”的含義和具體實(shí)施辦法,說明如何圍繞教學(xué)內(nèi)容建立三維的教學(xué)資源,實(shí)施混合式教學(xué),采用多樣化的考核方式,以提高程序設(shè)計(jì)課程群的教學(xué)質(zhì)量。
關(guān)鍵詞:程序設(shè)計(jì);課程群;教學(xué)模式;混合式教學(xué)
1背景
程序設(shè)計(jì)課程群包含的課程主要有程序設(shè)計(jì)基礎(chǔ)(C語言)、數(shù)據(jù)結(jié)構(gòu)、面向?qū)ο蟪绦蛟O(shè)計(jì)(Java語言)、程序設(shè)計(jì)課程設(shè)計(jì)等,是計(jì)算機(jī)專業(yè)的基石。這些課程之間存在緊密的依存、遞進(jìn)關(guān)系。對(duì)于廣大的地方高校來說,開展程序設(shè)計(jì)課程群的教學(xué)研究,就是研究這些課程知識(shí)的“教法、學(xué)法、用法、創(chuàng)法”。文章將從教與學(xué)著手,探討在教學(xué)中的所用、所感、所思、所改。
2五導(dǎo)法
所謂“五導(dǎo)法”就是在教學(xué)過程中進(jìn)行的導(dǎo)教、導(dǎo)學(xué)、導(dǎo)思、導(dǎo)用、導(dǎo)創(chuàng)。
2.1導(dǎo)教
2.1.1知識(shí)點(diǎn)化繁為簡(jiǎn)
對(duì)于地方院校來說,計(jì)算機(jī)類專業(yè)人才培養(yǎng)計(jì)劃中通常會(huì)先講授程序設(shè)計(jì)基礎(chǔ)(C語言)、再講授數(shù)據(jù)結(jié)構(gòu)、最后講授最流行的面向?qū)ο笳Z言——Java。在這些課程中存在大量的基本語法、原理和技巧,譬如:C語言的輸入輸出格式控制、運(yùn)算符、表達(dá)式、運(yùn)算規(guī)則、賦值語句等,靈活多樣;數(shù)據(jù)結(jié)構(gòu)中指針的使用無處不在;Java語言中包含權(quán)限的交叉融合、對(duì)象與引用的多態(tài)性等。對(duì)于初學(xué)者來說,教師必須采取有效的策略,比如選擇性講授,即先講授最常使用的知識(shí)、應(yīng)用方式,且大量運(yùn)用演示法、案例法,讓學(xué)生在實(shí)例中逐步理解、掌握、熟悉;再逐步延伸,增加深度和廣度;最后還需要有畫龍點(diǎn)睛的總結(jié)。在C語言教學(xué)中,若只顧及語法知識(shí)的全面性、完整性,將會(huì)導(dǎo)致顧此失彼、欲速而不達(dá)的結(jié)果;若只注重算法,而輕視、忽視基本語法,將導(dǎo)致程序代碼的編寫寸步難行、錯(cuò)誤百出。所以,要秉持語法夠用的原則。在數(shù)據(jù)結(jié)構(gòu)課程中,大量的教材在講述順序線性表時(shí),都是直接采用動(dòng)態(tài)申請(qǐng)連續(xù)空間的方式來存儲(chǔ)線性表中的元素[1]。這種方式顯著地增加了學(xué)生學(xué)習(xí)的難度。為什么不先講述使用靜態(tài)的數(shù)組來存儲(chǔ)元素,再過渡到動(dòng)態(tài)的存儲(chǔ)方式呢?所以,教師講授時(shí)要化繁為簡(jiǎn)、由易及難、逐步深入,遵循循序漸進(jìn)的認(rèn)知規(guī)律。
2.1.2思維的轉(zhuǎn)化
雖然程序設(shè)計(jì)的算法來源于數(shù)學(xué),但不能照搬數(shù)學(xué)思維。譬如:三個(gè)數(shù)如何求最大值。數(shù)學(xué)思維使用的是三個(gè)單分支的if語句,且每個(gè)if語句中的表達(dá)式都是由兩個(gè)與運(yùn)算符連接三個(gè)關(guān)系表達(dá)式構(gòu)成的;而程序設(shè)計(jì)思維使用的是一個(gè)賦值語句、兩個(gè)單分支的if語句,且每個(gè)if語句中的表達(dá)式只是一個(gè)簡(jiǎn)單的關(guān)系運(yùn)算。顯然,后者不僅效率高,而且運(yùn)用了程序設(shè)計(jì)中經(jīng)常使用的一種技巧和思維,即“假設(shè)第一個(gè)數(shù)就是最大值”[2]。數(shù)學(xué)思維向程序設(shè)計(jì)思維的轉(zhuǎn)變,需要一個(gè)過程、一段時(shí)間,需要培養(yǎng)。在程序設(shè)計(jì)教學(xué)的推進(jìn)過程中,還存在著一個(gè)程序的main函數(shù)向多個(gè)子函數(shù)的轉(zhuǎn)變(即程序模塊化)、過程化程序設(shè)計(jì)向?qū)ο蠡绦蛟O(shè)計(jì)的轉(zhuǎn)變等,這是思維的轉(zhuǎn)變,也是教學(xué)的難點(diǎn)。
2.2導(dǎo)學(xué)
2.2.1量變到質(zhì)變
學(xué)習(xí)沒有捷徑,只有經(jīng)歷大量的代碼練習(xí),才能保證編程水平質(zhì)的提高。對(duì)于常用算法必須爛熟于心,日積月累,才能熟練生巧,才能應(yīng)用,才可能有創(chuàng)新。
2.2.2課堂內(nèi)外“三步曲”
每一門課程,教師必然對(duì)其有著深入的研究;每一節(jié)課,課堂上的教學(xué)內(nèi)容必然是豐富的,重點(diǎn)和難點(diǎn)必然是清晰的。因此,需要學(xué)生課前預(yù)習(xí)、課上專心、課后復(fù)習(xí)。只有做到了課前預(yù)習(xí),課堂上的學(xué)習(xí)才會(huì)是有的放矢;只有做到了課后復(fù)習(xí),才能鞏固課堂知識(shí)。所以,只有真正做到了“課前預(yù)習(xí)、課上專心、課后復(fù)習(xí)”的課堂內(nèi)外三步曲,才能實(shí)現(xiàn)高效課堂。
2.2.3“三動(dòng)”學(xué)習(xí)法
在實(shí)際教學(xué)中,教師發(fā)現(xiàn),程序設(shè)計(jì)的初學(xué)者,在閱讀自己或他人編寫的程序代碼時(shí),采取的方式只是“動(dòng)眼”,即用眼睛死死地盯著程序代碼行中的各個(gè)符號(hào)。這樣僅僅了解單個(gè)表達(dá)式、單條語句的表面意思,而不可能清楚變量值的變化、哪些語句被選擇或被循環(huán)執(zhí)行了,也就搞不清變量、表達(dá)式、語句的真正作用和含義,當(dāng)然不能歸納出程序的功能,也得不出程序的正確結(jié)果。正確的做法是:拿出筆、攤開紙,依照程序語句的次序,認(rèn)真地手工執(zhí)行程序代碼,把每個(gè)變量當(dāng)前的值記錄下來,如果存在循環(huán),則把循環(huán)體重復(fù)執(zhí)行3~5次,這樣才能清晰掌握每個(gè)變量值的變化情況、每條語句的執(zhí)行情況,進(jìn)而推導(dǎo)、得出程序的功能或結(jié)果。也就是說,對(duì)于一段程序、一個(gè)算法,只有手工執(zhí)行,才能理清其執(zhí)行過程、功能。因此,在學(xué)習(xí)程序設(shè)計(jì)時(shí),務(wù)必堅(jiān)信不勞而獲是天方夜譚,務(wù)必時(shí)刻執(zhí)行勤能補(bǔ)拙,務(wù)必每題實(shí)踐著“三動(dòng)”學(xué)習(xí)法,即“動(dòng)手、動(dòng)腦、動(dòng)眼”[3]。
2.3導(dǎo)思
2.3.1思考的廣度
自頂向下、逐步求精,是程序設(shè)計(jì)的原則之一。任何復(fù)雜的問題都可以找到簡(jiǎn)單的原理或者雛形。譬如:3個(gè)整數(shù)求最值、10個(gè)整數(shù)求最值、數(shù)組求最值、選擇排序等。這些問題的求解包括從順序結(jié)構(gòu)到選擇結(jié)構(gòu)、到一重循環(huán)、到二重循環(huán);從單一的main函數(shù)實(shí)現(xiàn)到使用子函數(shù)實(shí)現(xiàn)。從這個(gè)例子可以看出,只有深刻理解求最值的雛形,才能順利向廣度推進(jìn)。再譬如:使用線性表實(shí)現(xiàn)各種集合運(yùn)算,對(duì)順序存儲(chǔ)來說基本操作就是元素的移動(dòng)(即選擇性賦值),對(duì)鏈?zhǔn)酱鎯?chǔ)來說基本操作就是鏈的連接(即指針賦值)。
2.3.2思考的深度
在求最值的例子中,包含著這樣一個(gè)拓展的問題:如何求解一個(gè)數(shù)組中的最大值和次大值。一種算法是這樣的:max1=max2=a[0];for(i=1;i<n;i++){if(max1<a[i]){max2=max1;max1=a[i];}elseif(max2<a[i])max2=a[i];}但這個(gè)算法存在Bug,即如果第一個(gè)數(shù)就是最大值,則求出的次大值是錯(cuò)誤的。修正Bug的方式有多種。從此例可以得出:要保證算法的正確性,必須多方測(cè)試,特別是邊界、極限、特例等問題。對(duì)于求最值的問題,如何使用面向?qū)ο蟮乃季S來求解呢?如果是在main主方法中直接對(duì)數(shù)組求最大值,而沒有定義任何其他成員變量和成員方法。這樣的話,就完全沒有運(yùn)用面向?qū)ο蟮乃季S。正確的思維是:類中包含相應(yīng)的成員變量、成員方法,盡量通過成員方法去操作成員變量。問題的關(guān)鍵是類中包含幾個(gè)成員變量最合適呢?需要幾個(gè)重載的構(gòu)造方法呢?解答了這些問題,設(shè)計(jì)出的類才具有普適性、重用性,才是真正面向?qū)ο蟮乃季S。
2.3.3思考的維度
隨著學(xué)習(xí)的不斷深入、知識(shí)的不斷積累,隨之而來的是思考的深度、廣度以及維度。解答一個(gè)問題可能有多種算法,通過多維度的思考、比較、分析,才能挑選出最清晰、最高效的算法。譬如:1-2+3-4+...…-100解答這個(gè)問題有多種方法,如每次把符號(hào)位乘以-1、判斷當(dāng)前項(xiàng)的奇偶性、把奇偶項(xiàng)分開計(jì)算、使用模運(yùn)算來確定符號(hào)位、使用位與運(yùn)算來確定符號(hào)位等,關(guān)鍵點(diǎn)在于實(shí)現(xiàn)各項(xiàng)的正負(fù)相間。這些方法中最后一種方法無疑是最“高大上”的。思考是建立在對(duì)相關(guān)知識(shí)熟練掌握基礎(chǔ)之上的,否則就是緣木求魚、胡思亂想。
2.4導(dǎo)用
學(xué)習(xí)的目的不是為了考試,是為了應(yīng)用。譬如:在C語言中,模運(yùn)算(即%)的意思是兩個(gè)整數(shù)相除,(商是整數(shù))取余數(shù)?;緫?yīng)用有奇偶數(shù)的判別、素?cái)?shù)的判別、整數(shù)各位數(shù)字的分離等,進(jìn)一步的應(yīng)用有求最大公約數(shù)、數(shù)學(xué)黑洞等,高級(jí)應(yīng)用有模冪運(yùn)算、孫子問題(中國(guó)剩余定理)、凱撒密碼等[4],這些都是模運(yùn)算的經(jīng)典應(yīng)用。在近年廣受關(guān)注的大眾化競(jìng)賽“藍(lán)橋杯全國(guó)軟件和信息技術(shù)專業(yè)人才大賽”中,也不乏模運(yùn)算應(yīng)用的試題。在模運(yùn)算的應(yīng)用從低級(jí)到中級(jí)、再到高級(jí)的過程中,往往是混合多方面知識(shí)的綜合應(yīng)用,應(yīng)用絕對(duì)不是生搬硬套,而是建立在模仿、思考基礎(chǔ)之上的。
2.5導(dǎo)創(chuàng)
應(yīng)用的升華就是創(chuàng)新,或者說應(yīng)用的最高境界就是創(chuàng)新。教、學(xué)、思、用都是為創(chuàng)新服務(wù)的。在“大眾創(chuàng)新、萬眾創(chuàng)業(yè)”的時(shí)代背景下,讓學(xué)生廣泛參與到各級(jí)各類競(jìng)賽、創(chuàng)業(yè)、創(chuàng)新活動(dòng)中,以賽代練,在活動(dòng)中學(xué)習(xí)、思考、應(yīng)用、創(chuàng)新。
3教學(xué)資源和平臺(tái)
為保證“五導(dǎo)法”教學(xué)方式的順利實(shí)施,構(gòu)建了三維的教學(xué)資源和平臺(tái)。借助精品課程教學(xué)資源、網(wǎng)絡(luò)資源,進(jìn)行教學(xué)資源的二次開發(fā),形成特色鮮明的校本教學(xué)資源,建設(shè)成理論教學(xué)“點(diǎn)資源”、實(shí)踐教學(xué)“線資源”、網(wǎng)絡(luò)共享課程“面資源”的教學(xué)資源體系。在教學(xué)中推行分類教學(xué)平臺(tái),實(shí)現(xiàn)資源聚集;在實(shí)驗(yàn)教學(xué)中實(shí)現(xiàn)理論學(xué)習(xí)與實(shí)踐的對(duì)接;利用幕課平臺(tái)和資源,實(shí)現(xiàn)學(xué)分認(rèn)證;利用共享課程資源開展翻轉(zhuǎn)課堂學(xué)習(xí)。多維的教學(xué)資源和教學(xué)方式,滿足和豐富了學(xué)生多元化學(xué)習(xí)的需求和發(fā)展。
4結(jié)語
在實(shí)際教學(xué)中,因地制宜,將“案例式、演示式、漸進(jìn)式、啟發(fā)式”等教學(xué)方法融合在一起,變“授人以魚”為“授人以漁”,開展“翻轉(zhuǎn)課堂”的教學(xué)模式,使學(xué)生的學(xué)習(xí)模式發(fā)生了革命性變化,變被動(dòng)學(xué)習(xí)為主動(dòng)學(xué)習(xí)。學(xué)生在自主學(xué)習(xí)、獨(dú)立探索、協(xié)作學(xué)習(xí)與實(shí)踐、交流互動(dòng)、成果報(bào)告和評(píng)價(jià)反饋中,達(dá)到知識(shí)的傳授和內(nèi)化,達(dá)到能力的提升和拓展,充分體現(xiàn)以學(xué)生為主體、能力培養(yǎng)為核心的教育思想。
參考文獻(xiàn):
[1]嚴(yán)蔚敏,吳偉明.數(shù)據(jù)結(jié)構(gòu)(C語言版)[M].北京:清華大學(xué)出版社,2002:24,27.
[2]楊路明.C語言程序設(shè)計(jì)教程[M].北京:北京郵電大學(xué)出版社.2005:48.
[3]熊啟軍.基于漸進(jìn)啟發(fā)式的數(shù)據(jù)結(jié)構(gòu)線性表的教學(xué)[J].現(xiàn)代計(jì)算機(jī),2011(6):34.
[4]ld326的專欄.模運(yùn)算[EB/OL].(2012-08-18)[2016-10-13].blog.csdn.net/ld326/article/details/7880429.
作者:熊啟軍 程格平 屈俊峰 谷瓊 單位:湖北文理學(xué)院數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院