陶維亮+劉艷+許賢澤+趙小紅
摘要:《程序設(shè)計(jì)基礎(chǔ)》是一門編程方面的基礎(chǔ)課,在各行各業(yè)都有廣泛的應(yīng)用,是一門非常實(shí)用的課程?,F(xiàn)有的教學(xué)方式往往關(guān)注編程語(yǔ)言的教學(xué),忽略了編程方法和思維的訓(xùn)練。在實(shí)踐方面也用常規(guī)的應(yīng)用題來(lái)考察學(xué)生對(duì)語(yǔ)言的掌握程度,脫離了實(shí)踐。造成學(xué)生即使掌握了課堂內(nèi)容,仍然不會(huì)解決實(shí)際問(wèn)題。針對(duì)這一問(wèn)題,作者提出課堂教學(xué)注重方法和思維訓(xùn)練,降低語(yǔ)言本身教學(xué)的比重,引入行業(yè)問(wèn)題或科研案例,引導(dǎo)學(xué)生分組協(xié)作,分解復(fù)雜問(wèn)題,在任務(wù)驅(qū)動(dòng)下解決問(wèn)題,激發(fā)學(xué)習(xí)興趣。
關(guān)鍵詞:程序設(shè)計(jì);科研實(shí)踐;任務(wù)驅(qū)動(dòng);教學(xué)案例
中圖分類號(hào):G642.3 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1674-9324(2017)51-0228-02
一、引言
《程序設(shè)計(jì)基礎(chǔ)》是教授程序設(shè)計(jì)理念與方法的一門實(shí)用課程,通常以C語(yǔ)言為主要編程語(yǔ)言來(lái)講授。在多數(shù)學(xué)校,課程教材和教授方式往往本末倒置,用大量課堂時(shí)間來(lái)傳授C語(yǔ)言的概念和語(yǔ)法,卻忽略了程序設(shè)計(jì)思維的培養(yǎng)。實(shí)際上對(duì)于課程目的而言,C語(yǔ)言只是一個(gè)輔助教學(xué)工具,學(xué)生通過(guò)該門課程的學(xué)習(xí),最終應(yīng)該能夠了解和掌握結(jié)構(gòu)化的編程思想,能夠設(shè)計(jì)小規(guī)模應(yīng)用程序,通過(guò)各種數(shù)據(jù)類型的常量、變量以及函數(shù)、結(jié)構(gòu)體等編程元素,將復(fù)雜問(wèn)題分解為若干較簡(jiǎn)單的子問(wèn)題??偠灾?,本課程最主要的目的是培養(yǎng)學(xué)生用程序解決實(shí)際問(wèn)題的能力。如何處理C語(yǔ)言語(yǔ)法學(xué)習(xí)和程序設(shè)計(jì)思維方法學(xué)習(xí)之間的矛盾,是一個(gè)急迫需要厘清和解決的問(wèn)題。
二、教學(xué)改革思路
在該教學(xué)目的的指導(dǎo)下,C語(yǔ)言的編程規(guī)則和語(yǔ)法作為基礎(chǔ)知識(shí)向?qū)W生講授,不求面面俱到,但要把應(yīng)用性強(qiáng)的內(nèi)容精心挑選出來(lái),進(jìn)行簡(jiǎn)單的介紹。課程內(nèi)容重心則應(yīng)盡早轉(zhuǎn)移到算法思想、設(shè)計(jì)理念的構(gòu)建上。授課方式也從精講細(xì)講的教授式轉(zhuǎn)變?yōu)榧ぐl(fā)興趣、啟發(fā)思路為主的引導(dǎo)式教學(xué)。當(dāng)然,C語(yǔ)言的語(yǔ)法和規(guī)則是比較枯燥的內(nèi)容,而算法思想、設(shè)計(jì)理念的講述也容易變成照本宣科或說(shuō)教式的教學(xué),勢(shì)必打擊學(xué)生的學(xué)習(xí)興趣和熱情。因此我們考慮引入工業(yè)或相關(guān)行業(yè)具體問(wèn)題來(lái)介紹和提供給學(xué)生練習(xí),讓他們能夠運(yùn)用學(xué)到的C語(yǔ)言的基礎(chǔ)知識(shí)來(lái)解決實(shí)際問(wèn)題。杜絕只教不學(xué),沒有具體目標(biāo),只學(xué)細(xì)節(jié),沒有總體觀和大局觀的現(xiàn)象。
三、教學(xué)案例的設(shè)計(jì)
由前面介紹可知,具體行業(yè)問(wèn)題引入《程序設(shè)計(jì)基礎(chǔ)》課程有很大的好處。但行業(yè)問(wèn)題或科研課題與實(shí)際教學(xué)結(jié)合的實(shí)施方案實(shí)現(xiàn)起來(lái)并不那么容易。整個(gè)過(guò)程可分為:語(yǔ)言知識(shí)結(jié)構(gòu)體系構(gòu)建;案例選題;介紹背景,設(shè)計(jì)實(shí)施框架;分解模塊,確定接口;分模塊解決問(wèn)題;聯(lián)合調(diào)試;總結(jié),撰寫報(bào)告。
1.語(yǔ)言知識(shí)結(jié)構(gòu)體系構(gòu)建,在進(jìn)行教學(xué)案例實(shí)施之前,用6個(gè)課時(shí)講述基本的C語(yǔ)言知識(shí),讓學(xué)生了解常用數(shù)據(jù)類型和變量,常量的基本使用方法,了解程序流程控制命令的使用方法,了解函數(shù)的基本使用方法,為后續(xù)的應(yīng)用實(shí)驗(yàn)打好基礎(chǔ)。基礎(chǔ)知識(shí)的介紹不要求面面俱到,只是讓學(xué)生了解或熟悉C語(yǔ)言的基本概念和基本語(yǔ)法,詳細(xì)的細(xì)節(jié)根據(jù)后續(xù)案例實(shí)現(xiàn)過(guò)程中的需要再逐漸補(bǔ)充。
2.案例選題,分析教學(xué)大綱,根據(jù)教學(xué)內(nèi)容選擇合適的科研課題或行業(yè)問(wèn)題。要注重案例的難度,由淺入深,并且能夠僅使用大綱范圍內(nèi)的知識(shí)即可解決??蒲姓n題或行業(yè)問(wèn)題要有一定的實(shí)用性,能夠讓學(xué)生完成后體會(huì)到所學(xué)知識(shí)在現(xiàn)實(shí)工作生活中的實(shí)際作用。
3.介紹背景,設(shè)計(jì)實(shí)施框架,介紹案例背景知識(shí),激發(fā)學(xué)生興趣和熱情。帶著任務(wù)去學(xué)習(xí),對(duì)學(xué)習(xí)的語(yǔ)法內(nèi)容就不覺得枯燥,也更容易理解和掌握。厘清案例的重難點(diǎn),引導(dǎo)學(xué)生分析和找到正確的解決思路。
圖1所示為課程中我們引入的河工模型地形流速同步測(cè)量系統(tǒng)案例的組成框圖。在框圖的基礎(chǔ)上展開介紹,幫助學(xué)生理解河工模型斷面垂線流速全自動(dòng)實(shí)時(shí)快速測(cè)量系統(tǒng)工作原理。
4.分解模塊,確定接口,采取小組討論的方式,根據(jù)程序總體框架和實(shí)現(xiàn)內(nèi)容,對(duì)整個(gè)系統(tǒng)進(jìn)行功能模塊分解,確定各模塊的具體實(shí)施人。逐漸推敲應(yīng)用細(xì)節(jié),改善程序框架,形成模塊之間相互關(guān)聯(lián)的通道,通過(guò)合適的接口相互協(xié)調(diào)和通信。同時(shí)還要注意模塊的獨(dú)立性,即可以通過(guò)局部運(yùn)行來(lái)調(diào)試和實(shí)現(xiàn)模塊的內(nèi)容。
某小組確定的程序各模塊如圖2所示。
5.分模塊解決問(wèn)題。小組每個(gè)成員對(duì)自己負(fù)責(zé)的模塊進(jìn)行內(nèi)容的進(jìn)一步細(xì)劃和擴(kuò)充,使每部分內(nèi)容都具有可操作性。在大的結(jié)構(gòu)、流程確定后,還要考慮調(diào)節(jié)策略及將來(lái)的擴(kuò)展性。各成員在確定模塊實(shí)施細(xì)節(jié)后,馬上進(jìn)行小組討論,對(duì)涉及到的接口變動(dòng)進(jìn)行及時(shí)的協(xié)調(diào)。
圖3為某小組成員對(duì)測(cè)橋行走控制系統(tǒng)的實(shí)現(xiàn)流程。
6.聯(lián)合調(diào)試,各成員獨(dú)立完成功能和調(diào)試,碰到問(wèn)題則小組討論或教師指導(dǎo)解決。定期形成進(jìn)程文檔并相互討論和修正方案,形成會(huì)議輯要。最后整體聯(lián)合調(diào)試,共同解決問(wèn)題。
7.總結(jié),撰寫報(bào)告。在整個(gè)過(guò)程中學(xué)習(xí)控制算法、自頂向下的設(shè)計(jì)方式、模塊化的程序結(jié)構(gòu),培養(yǎng)學(xué)生的協(xié)作能力。根據(jù)需要學(xué)習(xí)C語(yǔ)言中的結(jié)構(gòu)體、鏈表等內(nèi)容。最終合作撰寫完整的實(shí)驗(yàn)報(bào)告,對(duì)整個(gè)設(shè)計(jì)過(guò)程中的收獲、碰到的問(wèn)題和解決方法都進(jìn)行總結(jié)和反思。
結(jié)語(yǔ)
通過(guò)引入案例,在教授程序設(shè)計(jì)基礎(chǔ)課程時(shí)引導(dǎo)學(xué)生分組協(xié)作,建立模型,確定算法,利用自頂向下的設(shè)計(jì)理念分解復(fù)雜問(wèn)題,在任務(wù)驅(qū)動(dòng)下解決問(wèn)題,在設(shè)計(jì)和實(shí)現(xiàn)過(guò)程中發(fā)現(xiàn)故障,排除故障,最終熟悉和掌握程序設(shè)計(jì)方法,在實(shí)踐中鞏固C語(yǔ)言編程中的常量、變量、程序結(jié)構(gòu)、函數(shù)等知識(shí),激發(fā)學(xué)習(xí)興趣,了解程序設(shè)計(jì)在本專業(yè)領(lǐng)域中的應(yīng)用狀況。
Abstract:"Programming Foundation" Course is a basic course of programming,are widely used in all walks of life,is a very practical course. The existing teaching methods tend to focus on programming language teaching,ignoring the programming methods and thinking training. In practice also used to examine students' routine problem mastery of the language,out of practice. Students even mastered the content of the classroom is still not solve practical problems. To solve this problem,the author puts forward the teaching method and focus on the training of thinking,language teaching is reduced,the introduction of industry or scientific research case,guide students in groups,the decomposition of complex Miscellaneous problems,solve the problem under the task driven,stimulate interest in learning
Key words:programming;scientific research practice;task driven;teaching case