楊劍 張敏輝
摘要:“C語言程序設(shè)計”、“數(shù)據(jù)結(jié)構(gòu)”、“面向?qū)ο蟪绦蛟O(shè)計”是工科院校計算機專業(yè)中開設(shè)的三門重要的專業(yè)基礎(chǔ)課,傳統(tǒng)的教學(xué)相對獨立、分開授課,因此導(dǎo)致內(nèi)容脫節(jié),教學(xué)效果差。這三門課程對于應(yīng)用計算機解決一個實際問題來說是缺一不可的,也是密不可分的,本文提出將三門程序設(shè)計類課程進行在教學(xué)大綱、教學(xué)方法、實踐內(nèi)容和考核方式進行融合,以C語言為主線,將各種類型的數(shù)據(jù)結(jié)構(gòu)糅合其中,并輔助以面向?qū)ο蟮乃季S解決問題,使C語言與數(shù)據(jù)結(jié)構(gòu)有機地結(jié)合在一起。這樣能夠很好地激發(fā)學(xué)生的學(xué)習(xí)興趣,有效地提高學(xué)生的學(xué)習(xí)效率。學(xué)生在掌握基本理論和知識的同時,C語言的程序設(shè)計能力、程序的閱讀能力、面向?qū)ο蟮乃季S和設(shè)計能力,數(shù)據(jù)結(jié)構(gòu)的應(yīng)用設(shè)計能力也得到了很好的培養(yǎng)。
關(guān)鍵詞:課程融合;CDIO;程序設(shè)計;工程應(yīng)用能力
中圖分類號:G642.0 文獻標(biāo)識碼:A 文章編號:2095-2163(2015)05-
Teaching and Research of Courses Integration in Program Design based on CDIO
YANG Jian
(Chengdu College of University of Electronic Science and Technology of China, Chengdu, Sichuan, 611731)
Abstract: "C language programming", "data structure" and "object oriented programming" are three important professional basic courses in Computer Science Specialty in engineering colleges. The traditional teaching is relatively independent and separate teaching, so the content is out of line and the teaching effect is poor. The three courses in computer application to solve a practical problem is indispensable, and also inseparable. This paper proposes three program design courses on the syllabus, teaching methods, practice content and assessment methods for fusion, using C language as the main line, various types of data structure of blend among them, and to assist with oriented object thinking to solve problems, therefore the C language data structure organically unifies in together. This research fruits can stimulate students' learning interest and improve their learning efficiency. While students master basic theory and knowledge, students also cultivate the ability in the C language program design, the program's reading, object-oriented thinking and design, data structure design.
Key words: Courses Integration; CDIO; Program Design; Engineering Application Ability
0 引言
“C語言程序設(shè)計”、“數(shù)據(jù)結(jié)構(gòu)”、“面向?qū)ο蟪绦蛟O(shè)計”是工科院校計算機專業(yè)中開設(shè)的三門重要的專業(yè)基礎(chǔ)課。從學(xué)科體系上說,《C 語言程序設(shè)計》著重講授C 語言的語法和程序設(shè)計方法,《數(shù)據(jù)結(jié)構(gòu)》主要講授線性和非線性結(jié)構(gòu)的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)及相關(guān)算法,《面向?qū)ο蟪绦蛟O(shè)計》則重在講解面向?qū)ο蟮乃枷胍约懊嫦驅(qū)ο笤诔绦蛟O(shè)計中的應(yīng)用,現(xiàn)代軟件設(shè)計的理論和實踐中,從抽象數(shù)據(jù)類型和面向?qū)ο笥^點來討論數(shù)據(jù)結(jié)構(gòu)已經(jīng)成為一種主流,使得“C語言程序設(shè)計”,“數(shù)據(jù)結(jié)構(gòu)”和“面向?qū)ο蟪绦蛟O(shè)計”三門課程構(gòu)成了緊密的內(nèi)在關(guān)聯(lián)。但是,傳統(tǒng)的教學(xué)模式通常是將這三門課程分開排定在三個學(xué)期,第一學(xué)期開設(shè)C 語言,第二學(xué)期開設(shè)數(shù)據(jù)結(jié)構(gòu),第三學(xué)期開設(shè)面向?qū)ο蟪绦蛟O(shè)計,在以往教學(xué)中,這三門課程是相對獨立、分開授課的,因此導(dǎo)致內(nèi)容脫節(jié),教學(xué)效果差[1]。
一般“C語言程序設(shè)計”課程只注重C語言的語法體系,因此學(xué)習(xí)過卻不能用C語言編寫程序的大有人在;“數(shù)據(jù)結(jié)構(gòu)”則注重講授抽象的數(shù)據(jù)關(guān)系和算法在計算機中的表示及實現(xiàn),學(xué)生在紙上能寫出抽象描述算法,上機實踐應(yīng)用時卻無從下手。在實踐教學(xué)中,教師規(guī)定的實驗課題多是結(jié)合某個現(xiàn)實問題,要求使用教材中介紹的算法,采用編程語言加以實現(xiàn),這樣使學(xué)生的注意力集中在算法的分析與理解上,而忽略了數(shù)據(jù)結(jié)構(gòu)的定義,尤其是剝離了所研究對象的數(shù)據(jù)與操作之間內(nèi)在的聯(lián)系。在“面向?qū)ο蟪绦蛟O(shè)計”的教學(xué)中,教師對課程的講解多是基于語法體系的,重語法輕實用。在實踐教學(xué)中,由于實驗內(nèi)容沒有針對性,驗證性實驗多而綜合性實驗少,學(xué)生上機通常只是照搬書本上的程序輸入到計算機,調(diào)試發(fā)現(xiàn)語法上的錯誤,最后得到輸出結(jié)果。這樣的方式只能讓學(xué)生機械地記住一些編程語言的語法知識,不能夠培養(yǎng)學(xué)生的自主學(xué)習(xí)能力,無法調(diào)動學(xué)生的積極性,編程能力實際上得不到充分有效提高[1]。
這種以學(xué)科知識體系為本位的教學(xué)模式違背了我校學(xué)生培養(yǎng)原則,已至于學(xué)生普遍認(rèn)為C語言難學(xué),數(shù)據(jù)結(jié)構(gòu)更難懂,面向?qū)ο箅y用。首先,解決問題的完整過程被拆分。用計算機解決一個實際問題通常需要兩個過程:解決問題的算法和用計算機實現(xiàn)算法。數(shù)據(jù)結(jié)構(gòu)描述了解決一個問題的算法思路,C語言和面向?qū)ο蟪绦蛟O(shè)計可以將算法在計算機上實現(xiàn),這兩個過程原本屬于共同的統(tǒng)一整體,卻分開在三個學(xué)期,使學(xué)生將完整的過程分開學(xué)習(xí),不符合學(xué)習(xí)的規(guī)律。然而這三門課程都以培養(yǎng)學(xué)生解決實際問題的程序設(shè)計能力為共同目標(biāo)。因此,如何將這三門課程有機地結(jié)合起來,構(gòu)建C語言、數(shù)據(jù)結(jié)構(gòu)面向?qū)ο蟪绦虻某绦蛟O(shè)計的新體系,改革教學(xué)方法,提高教學(xué)質(zhì)量,成了當(dāng)前教學(xué)改革中亟待解決的問題。
從完整地解決一個實際問題的角度看,數(shù)據(jù)結(jié)構(gòu)課程注重培養(yǎng)學(xué)生的邏輯思維能力和分析解決問題的能力,提供解決實際問題的算法思想,C語言作為一種語言工具,可以將算法用計算機付諸實現(xiàn),而面向?qū)ο笏枷雱t展示提供了程序設(shè)計的思維的建立和對實際問題的解決。這三門課程對于應(yīng)用計算機解決一個實際問題來說是缺一不可的,也是密不可分的。從課程內(nèi)部的知識結(jié)構(gòu)看,C語言和面向?qū)ο笾畜w現(xiàn)了數(shù)據(jù)結(jié)構(gòu)的思想,數(shù)據(jù)結(jié)構(gòu)中應(yīng)用了C語言和面向?qū)ο蟮闹R。
國內(nèi)外的經(jīng)驗證明CDIO的“做中學(xué)”適合大學(xué)工科教育教學(xué)過程的各個環(huán)節(jié),CDIO教學(xué)模式以產(chǎn)品的研發(fā)、運行生命周期——構(gòu)思(Conceive)、設(shè)計(Design)、實現(xiàn)(Implement)和運作(Operate)為載體,讓學(xué)生以實踐的、主動的、課程之間有機聯(lián)系的方式學(xué)習(xí)工程,以培養(yǎng)復(fù)合型創(chuàng)新人才為目標(biāo),在教學(xué)內(nèi)容、教學(xué)方式和考核方式等教學(xué)環(huán)節(jié)對C語言程序設(shè)計、面向?qū)ο蟪绦蛟O(shè)計和數(shù)據(jù)結(jié)構(gòu)等三門課程進行改革即已成為切實可行的研究思路和現(xiàn)實可用的方案探索[2-3]。
1 改革理念與思路
本課程的設(shè)計改變了以往“C語言程序設(shè)計”、“數(shù)據(jù)結(jié)構(gòu)”和“面向?qū)ο蟪绦蛟O(shè)計”分開的模式,而是以C語言為主線,將各種類型的數(shù)據(jù)結(jié)構(gòu)糅合其中,并輔助以面向?qū)ο蟮乃季S解決問題,使C語言與數(shù)據(jù)結(jié)構(gòu)有機地結(jié)合在一起。這不但解決了數(shù)據(jù)結(jié)構(gòu)中的算法描述問題,而且在算法的實現(xiàn)過程中用C語言為工具,以面向?qū)ο蟮乃枷脒M行程序設(shè)計,三者相輔相成,互相促進。學(xué)生更好地掌握最常用的數(shù)據(jù)結(jié)構(gòu),理解數(shù)據(jù)結(jié)構(gòu)內(nèi)在的邏輯關(guān)系,理解數(shù)據(jù)與關(guān)系在計算機中的存儲表示以及用C語言描述這些數(shù)據(jù)結(jié)構(gòu)的運算和實際的執(zhí)行算法,提高了解決實際問題的程序設(shè)計能力,適應(yīng)了學(xué)科迅速發(fā)展和知識更新的需要。
1.1整合后的課程目標(biāo)
根據(jù)以上對三門課程傳統(tǒng)教學(xué)的分析和課程間的內(nèi)在關(guān)聯(lián),本課程改革的目標(biāo)是:將C語言、數(shù)據(jù)結(jié)構(gòu)和面向?qū)ο蟮闹R內(nèi)容有機整合,設(shè)計一些生活中常用的案例和項目覆蓋教學(xué)知識點,在解決問題的同時學(xué)習(xí)知識,注重培養(yǎng)學(xué)生應(yīng)用數(shù)據(jù)結(jié)構(gòu)知識分析解決實際問題的能力和以C語言為工具應(yīng)用計算機解決問題的能力。
1.2 課程整合的原則
在課程整合時本著“興趣導(dǎo)向,應(yīng)用為本,理論夠用”的原則,拋棄按學(xué)科體系組織教學(xué)內(nèi)容的傳統(tǒng)模式,代之以“應(yīng)用能力培養(yǎng)”為目標(biāo)組織教學(xué)內(nèi)容的新模式,案例和項目的選擇既能激發(fā)學(xué)生的學(xué)習(xí)興趣,又具有實用性,將三門課程中相同或相通的知識點有機有序地結(jié)合,以完整的案例和應(yīng)用項目為依托將所有零散的知識難易適當(dāng)、循序漸進、設(shè)置合理地分配、貫穿在其中。讓學(xué)生在相同時間里掌握更多的知識,提高對編程語言和數(shù)據(jù)結(jié)構(gòu)課程的理解。形成具有CDIO特點的全新的教學(xué)知識體系。
1.3 課程整合后的教學(xué)方法與教學(xué)手段
CDIO教育模式概括起來可以理解為“基于項目教育和學(xué)習(xí)”和“做中學(xué)”。(Project based education and learning)。在日常教學(xué)中,通過對學(xué)生的引導(dǎo),讓其主動學(xué)習(xí),讓學(xué)生明確所開設(shè)課程在本專業(yè)的地位及作用;讓學(xué)生預(yù)先了解在學(xué)習(xí)該門課程時所需掌握的知識和能力。通過保障學(xué)生積極參與大量的設(shè)計性和綜合性實驗,來鍛煉學(xué)生的實際動手能力,進而培養(yǎng)學(xué)生的主動學(xué)習(xí)能力。與此同時,也必將培養(yǎng)學(xué)生分析問題和解決問題的行之有效的學(xué)習(xí)應(yīng)用能力。
本項目將基于CDIO,對融合后的課程進行教學(xué)改革,擬進行的課程改革整體架構(gòu)如圖1所示,在融合后的課程的教學(xué)中,應(yīng)用CDIO教育模式。以“做中學(xué)”為出發(fā)點,探索“知識講解案例化、課內(nèi)課外協(xié)作化、實戰(zhàn)演練一體化”的教學(xué)模式。
為實現(xiàn)CDIO模式所倡導(dǎo)的在“工程基礎(chǔ)知識”、“個人能力”、“人際團隊能力”和“工程系統(tǒng)能力”四個層面上進行綜合培養(yǎng)的教學(xué)模式,本課程教學(xué)將由傳統(tǒng)的教師引領(lǐng)課堂轉(zhuǎn)變?yōu)橐詫W(xué)生為主體,課本中的知識點轉(zhuǎn)變?yōu)椤绊椖俊敝鲗?dǎo),如此即將傳統(tǒng)的課堂模式轉(zhuǎn)變?yōu)橐詫嶋H經(jīng)驗為核心的情境建構(gòu)教學(xué)模式。
2 改革具體實踐方案
在培養(yǎng)方案中,研究仍將程序設(shè)計類課程放在前三個學(xué)期,把程序設(shè)計類課程分為三個部分,如圖2所示,程序設(shè)計1——C語言程序?qū)嵍ㄔ诘?學(xué)期開設(shè),64學(xué)時,講授C語言的語法和程序設(shè)計方法,并同期開設(shè)16個學(xué)時的程序設(shè)計實踐1,注重對給定問題的系統(tǒng)功能的實現(xiàn)。在第2個學(xué)期開設(shè)程序設(shè)計2——數(shù)據(jù)結(jié)構(gòu),64學(xué)時,講授數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)及相關(guān)算法,并同期開設(shè)16個學(xué)時的程序設(shè)計實踐2,注重在上學(xué)期實現(xiàn)的系統(tǒng)基礎(chǔ)上數(shù)據(jù)的組織和系統(tǒng)的重構(gòu)。在第3個學(xué)期開設(shè)程序設(shè)計3——面向?qū)ο蟪绦蛟O(shè)計,32學(xué)時,講授面向?qū)ο蟮乃枷胍约懊嫦驅(qū)ο笤诔绦蛟O(shè)計中的應(yīng)用,并同期開設(shè)32個學(xué)時的實踐課程:Java/C#/MFC應(yīng)用開發(fā)(學(xué)生根據(jù)以后的學(xué)習(xí)方向,三選一),注重以面向?qū)ο蟮脑O(shè)計思想重構(gòu)之前的系統(tǒng)并實現(xiàn)。
雖然程序類課程仍然分為三個學(xué)期,三門課程,但這三門課程采用了統(tǒng)一的教學(xué)大綱、統(tǒng)一的教學(xué)方法、統(tǒng)一的考核手段,有效避免了課程之間的脫節(jié),加強了課程之間的銜接,使三門課程形成一個整體,重點突出,相互補充,使學(xué)生能學(xué)以致用。
2.1教學(xué)大綱融合
應(yīng)用CDIO原則,針對學(xué)生的編程能力、項目開發(fā)能力實施重新規(guī)劃,進而重新撰寫教學(xué)大綱,在教學(xué)大綱中,需要明確指出該課程應(yīng)該培養(yǎng)學(xué)生哪種方面的能力,而該能力又需要哪些知識體系,把能力培養(yǎng)和課程教學(xué)有機結(jié)合起來。同時,更要重新梳理課堂教學(xué)的教學(xué)內(nèi)容。以能力培養(yǎng)為中心,分階段、分層次進行教學(xué)。具體解析如下。
(1)教學(xué)內(nèi)容分階段。對應(yīng)軟件工程開發(fā)周期模型,將融合后程序設(shè)計課程的內(nèi)容進行階段式分解,形成一套完善連貫的劇本式教案。
(2)知識難度分層次。按教學(xué)大綱中知識難易程度,將教學(xué)內(nèi)容難易分開,對不同層次的學(xué)生開展有針對性的教學(xué)。在各個階段,融入不同能力培養(yǎng)目標(biāo),形成基本理論、基本操作、綜合設(shè)計三大知識體系結(jié)構(gòu),基礎(chǔ)、提高、綜合運用三位一體的教學(xué)環(huán)節(jié)。
2.2教學(xué)方法融合
以CDIO中工程為載體的教學(xué)模式,引入項目機制,以案例驅(qū)動教學(xué),采用“教、學(xué)、做”相結(jié)合的引探教學(xué)法,注重培養(yǎng)學(xué)生的動手能力、表達能力、協(xié)作能力和自學(xué)能力。在實施過程中綜合運用了案例教學(xué)、分組教學(xué)、團隊教學(xué)等多樣化教學(xué)方法,教學(xué)手段上也同時采用階段式、層次式、討究式、互動式,使學(xué)生在學(xué)習(xí)過程中融會貫通。
在教學(xué)中,通過打破傳統(tǒng)的章節(jié)劃分,即以知識群為核心,并以完成一個具體案例為終期目標(biāo),重點講授完成一個案例所需知識點,讓學(xué)生在做中學(xué),培養(yǎng)學(xué)生對具體問題的分析和解決能力。圖3說明了融合課程的部分教學(xué)案例。
2.3實踐內(nèi)容的融合
在實踐方面,進一步采用了課內(nèi)驗證性實驗和單獨開設(shè)的綜合性實踐相結(jié)合的方式。具體地,驗證性實驗加強學(xué)生對知識的理解和掌握,一般是小型的以知識點為核心展開的題目,以便于學(xué)生掌握相關(guān)知識的運用為目標(biāo),綜合性實踐采用貫穿性案例,在三個學(xué)期的綜合性實踐多將采用同一案例,在不同的階段,提出不同的要求,程序設(shè)計實踐1注重對系統(tǒng)功能的實現(xiàn),程序設(shè)計實踐2注重系統(tǒng)中數(shù)據(jù)的組織和系統(tǒng)的重構(gòu),Java/C#/MFC應(yīng)用開發(fā)注重以面向?qū)ο蟮脑O(shè)計思想重構(gòu)系統(tǒng)并予以實現(xiàn),讓學(xué)生掌握相關(guān)知識在實際問題中的綜合運用。相應(yīng)地,圖4展示了一定制綜合性案例——“航空管理系統(tǒng)”在三個階段的實踐中的不同要求。
2.4考核方式融合
研究中,一改以往書面考查的簡單形式,以CDIO 倡導(dǎo)的“過程評價”為基礎(chǔ)研發(fā)展開,關(guān)注知識、技能的學(xué)習(xí)過程,關(guān)注實踐環(huán)節(jié)及工程應(yīng)用能力,關(guān)注學(xué)生、教師不同主題的評價。側(cè)重強調(diào)的是學(xué)生課程實踐能力和解決問題能力,以課程項目和課程作業(yè)為主要考核指標(biāo)。結(jié)合本院學(xué)生實際情況,采取將理論考試、上機測試與課程作業(yè)考核相結(jié)合的形式進行考核,如圖5所示,圖中實線矩形框表示理論考核,點劃性矩形框表示編程和綜合實踐能力考核。
由圖5可知,各類考核方式的含義內(nèi)容可描述如下:
(1)理論知識的考核。將理論考試作為階段性的測試,考核學(xué)生對核心知識能力的掌握程度。
(2)編程能力的考核。采用多階段的綜合測評編程考核。通過平時的上機測試,期末的編程能力上機測試,綜合測評學(xué)生的編程能力、程序設(shè)計的邏輯思維和分析能力。
(3)綜合實踐能力考核。對學(xué)習(xí)進行綜合實踐能力的培養(yǎng),實行分組教學(xué),推進團隊協(xié)作學(xué)習(xí)。以CDIO的思想進行綜合實踐能力的培養(yǎng),培養(yǎng)學(xué)生的團隊合作及工程項目研發(fā)能力,讓學(xué)生在團隊環(huán)境下獲得較真實的軟件開發(fā)經(jīng)驗,提高學(xué)生在項目規(guī)劃、工作分配、成員交流等多方面的能力,培養(yǎng)積極向上的合作精神。在培養(yǎng)實踐能力的同時,注重培養(yǎng)職業(yè)素養(yǎng);為學(xué)生創(chuàng)建與工作環(huán)境相似的場景,以期更好地適應(yīng)現(xiàn)代化開發(fā)團隊和開發(fā)環(huán)境,提高工程能力。對于綜合實踐能力考核,則采取多元化的評價方式,對包括團隊合作能力、問題的分析和解決能力、設(shè)計和編碼能力、測試和容錯能力、成果展示能力、設(shè)計文檔編程能力等多種能力進行考核。
這樣,過程考核變單一考核為復(fù)合考核,變靜態(tài)考核為動態(tài)考核,既提高了學(xué)生對平時學(xué)習(xí)的重視程度,激發(fā)了學(xué)生學(xué)習(xí)的進取性,又考核了學(xué)生掌握知識的實際情況,讓學(xué)期成績能真實地評估學(xué)生在學(xué)習(xí)過程中已具有的編程能力,從而長足、顯著地提升了學(xué)生綜合素質(zhì)。
3 結(jié)束語
將“C語言程序設(shè)計”、“數(shù)據(jù)結(jié)構(gòu)”和“面向?qū)ο蟪绦蛟O(shè)計”三門課程有機結(jié)合的教學(xué)改革,能夠深層激發(fā)學(xué)生的學(xué)習(xí)興趣,進而有效提高學(xué)生的學(xué)習(xí)效率。學(xué)生在掌握基本理論和知識的同時,C語言的程序設(shè)計能力、程序的閱讀能力、面向?qū)ο蟮乃季S和設(shè)計能力,數(shù)據(jù)結(jié)構(gòu)的應(yīng)用設(shè)計能力得到了首要、且主導(dǎo)性的培養(yǎng)。
教師在教學(xué)中將貫穿“C語言”、“數(shù)據(jù)結(jié)構(gòu)”和“面向?qū)ο蟆比龡l主線,并將三門課程整合在一起,以任務(wù)驅(qū)動進行整體設(shè)計;采用“情境教學(xué)法”和“重建任務(wù)驅(qū)動法”進行單元設(shè)計?;贑DIO,采用做中學(xué)一體的形式開展課堂教學(xué)。這樣提高了教學(xué)效率,使學(xué)生的技術(shù)應(yīng)用能力、職業(yè)實踐能力和創(chuàng)新能力得到了符合現(xiàn)實的理想培養(yǎng),因而取得了良好的教學(xué)效果。
參考文獻
[1]胡文龍. 基于CDIO的工科探究式教學(xué)改革研究[J]. 高等工程教育研究,2014,01:163-168.
[2]張士輝,祁蕓,嚴(yán)瑋. 基于CDIO的卓越工程師訂單班課程改革實踐[J]. 高等工程教育研究,2014,05:187-190.
[3]馮瑩瑩,周紅志. 程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)課程的融合教學(xué)模式研究[J]. 重慶科技學(xué)院學(xué)報(自然科學(xué)版),2013,03:147-149.
[4]張培穎,鄭秋梅,宮法明,朱連章. CDIO工程教育模式在軟件工程核心課程教學(xué)中的應(yīng)用[J]. 教育探索,2014,12:21-22.
[5]呂慶文,曹蕾,李遠念,陳武凡. 基于CDIO模式培養(yǎng)復(fù)合型卓越軟件工程師的探索[J]. 高教探索,2013,01:71-76.