尚寶欣 宮以赫
摘要 :C語言與數(shù)據(jù)庫是信息與計算科學(xué)專業(yè)兩門重要的專業(yè)課,旨在提升學(xué)生利用編程解決實際問題的能力。本文從“以學(xué)生為中心”和可持續(xù)性兩個角度出發(fā),將兩門課程的課程設(shè)計聯(lián)系起來,將數(shù)據(jù)庫課程設(shè)計作為C語言課程設(shè)計的一個延續(xù)與強(qiáng)化,以期提升實踐教學(xué)效果。
關(guān)鍵詞:以學(xué)生為中心? 可持續(xù)性? 課程設(shè)計研究
1 引言
隨著計算機(jī)技術(shù)的快速發(fā)展,計算機(jī)在社會生產(chǎn)、生活各個方面得到了越來越廣泛的應(yīng)用。公司、社會的發(fā)展對編程人才的需求迅速增加,這在一定程度上促使了社會對各行各業(yè)人才的計算機(jī)技能提出了更高的要求。
我院信息與計算科學(xué)專業(yè)的目標(biāo)之一是使學(xué)生通過4年的本科學(xué)習(xí)能夠具有使用計算機(jī)技能初步解決一些實際問題的能力。為此,學(xué)院開設(shè)了C語言、數(shù)據(jù)結(jié)構(gòu)、面向?qū)ο蟪绦蛟O(shè)計、數(shù)據(jù)庫等計算機(jī)特性明顯的課程。我們期望學(xué)生通過對這一系列計算機(jī)相關(guān)課程的學(xué)習(xí),能夠提升對計算機(jī)的認(rèn)識,能夠掌握基礎(chǔ)的編程語言及相關(guān)的編程技巧,能夠掌握算法設(shè)計與分析的基礎(chǔ)理論知識,進(jìn)而能夠設(shè)計一些數(shù)值算法和/或非數(shù)值算法來解決小規(guī)模問題。
為了切實提升學(xué)生在計算機(jī)方面的實踐操作能力和利用計算機(jī)解決實際問題的能力,學(xué)院為上述每門課程配套了課程設(shè)計。課程設(shè)計一般是指在大學(xué)課程中,在課程臨近結(jié)束時,布置給學(xué)生的一個綜合性實踐教學(xué)環(huán)節(jié),一般會單獨計算成績,作為學(xué)生相應(yīng)課程實踐能力的一個評價。我們也是把課程設(shè)計作為一個獨立的課程來進(jìn)行的,會給學(xué)生單獨的課程設(shè)計成績,以此來引導(dǎo)和激勵學(xué)生在實踐環(huán)節(jié)付出應(yīng)有的時間與精力。
《C語言》課程作為理學(xué)院大一學(xué)生的專業(yè)必修課,其宗旨在于傳授學(xué)生基本的編程知識,培養(yǎng)學(xué)生基本的編程素養(yǎng),為學(xué)生將來利用編程相關(guān)知識完成工作打下良好的基礎(chǔ),為后續(xù)計算機(jī)相關(guān)課程的講授提供輔助。
《數(shù)據(jù)庫》是介紹數(shù)據(jù)管理和處理的一門綜合性較強(qiáng)的計算機(jī)類課程,其目的是幫助學(xué)生了解基本的數(shù)據(jù)庫相關(guān)知識,掌握基本的數(shù)據(jù)庫編程原理與方法,為學(xué)生更好地理解和處理數(shù)據(jù)提供幫助。
本文考慮將《C語言》與《數(shù)據(jù)庫》的課程設(shè)計過程聯(lián)系起來,使后者的課程設(shè)計不僅能夠訓(xùn)練、鍛煉學(xué)生運用數(shù)據(jù)庫相關(guān)知識解決小規(guī)模問題,而且能夠強(qiáng)化學(xué)生對C語言知識的理解與運用,最后使學(xué)生能夠較為牢固地掌握相關(guān)知識,較為深刻地理解使用數(shù)據(jù)庫統(tǒng)一管理數(shù)據(jù)的好處。
2 “以學(xué)生為中心”課程設(shè)計的研究
為了讓學(xué)生能夠愿意、順利地進(jìn)行課程設(shè)計,能夠從課程設(shè)計中切實收獲知識與能力,我們從學(xué)生現(xiàn)有知識基礎(chǔ)、編程能力、文檔編寫能力等方面進(jìn)行考量,在選題方面和課程設(shè)計成品方面進(jìn)行了思考,以期學(xué)生可以更好地完成課程設(shè)計。
2.1選題方面的思考
從學(xué)生愿意主動去完成課程設(shè)計的角度來考量,我們的選題內(nèi)容盡量貼近生活,盡量具有趣味性、實用性,盡量讓每位同學(xué)都能對所選題目有一定程度的理解,能夠切實地地融入課程設(shè)計的過程。從而達(dá)到用興趣和功用去引導(dǎo)學(xué)生進(jìn)行學(xué)習(xí)、激發(fā)學(xué)生完成課程設(shè)計的主觀能動性的目的。
從學(xué)生現(xiàn)有能力的角度來考量,選題規(guī)模與功能具有短期可實現(xiàn)性。我們課程設(shè)計是課下分散進(jìn)行,從學(xué)生確定題目到最后上交文檔進(jìn)行答辯,一個周期一般是一個月的時間。若問題的規(guī)模太小、涉及的知識過于基礎(chǔ)或較為單一,會導(dǎo)致問題對應(yīng)的程序太易實現(xiàn),從而容易使學(xué)生產(chǎn)生該問題缺乏挑戰(zhàn)性,可以不用十分努力去對待的輕敵思想和惰性思維,這樣會弱化課程設(shè)計的作用。若選題規(guī)模過大或功能過于繁雜,會使某些學(xué)生短期難以抓住問題的關(guān)鍵,進(jìn)而產(chǎn)生畏難情緒,最終會影響課程設(shè)計的整體進(jìn)度。
從對培養(yǎng)學(xué)生思維的角度來考量,選題不能過于簡單,要有一定的難度,要留有讓學(xué)生自主、努力思考的空間,讓他們在一定時間的思考下能較好的完成選題內(nèi)容要求。這里培養(yǎng)思維主要偏重于學(xué)生對所學(xué)的C語言與數(shù)據(jù)庫的基礎(chǔ)知識、基本技能和常用技巧的掌握與靈活運用上,要讓學(xué)生做到學(xué)有所得、做有所得、思考有所得。
從對課程設(shè)計的目的與意義來考量,選題知識覆蓋面要足夠廣,要能覆蓋較為基礎(chǔ)、常用的知識點。我們的考慮是,在選題步驟中,要側(cè)重加入以后工作中可能會使用頻率較高的基礎(chǔ)知識,為學(xué)生畢業(yè)之后融入現(xiàn)實工作提供基礎(chǔ),進(jìn)而強(qiáng)化學(xué)生在未來工作中相關(guān)知識方面的適應(yīng)能力。
2.2課程設(shè)計過程方面的思考
為了引導(dǎo)學(xué)生更好地完成課程設(shè)計中的程序設(shè)計及文檔編制工作,我們提出學(xué)生完成課程設(shè)計過程中的主體目標(biāo)要求,便于學(xué)生作為參考,并在課設(shè)進(jìn)行過程中做好監(jiān)督與服務(wù)工作,協(xié)助學(xué)生進(jìn)行學(xué)習(xí)、總結(jié)。
程序設(shè)計方面。我們要求學(xué)生的程序需按結(jié)構(gòu)化程序設(shè)計的方法去編寫,要努力做到所寫源代碼具有較強(qiáng)的層次性和模塊化,盡量提升程序的可讀性和可維護(hù)性,讓程序的讀者能夠較不費力地看出程序各部分的功能,為后期程序的修改和維護(hù)奠定基礎(chǔ)。
要求所設(shè)計的各模塊要有較強(qiáng)的內(nèi)聚性,盡量減少其與其他模塊之間的耦合性。盡量避免使用全局變量、局部函數(shù),要努力使用指針、文件,使程序盡量真實地模擬現(xiàn)實應(yīng)用,最大程度上具有通用性。
文檔編制方面。我們給學(xué)生提供了課程設(shè)計任務(wù)書和課程設(shè)計報告的模板。任務(wù)書的目的是進(jìn)一步明確課程設(shè)計過程中所需要使用語言知識、工具軟件及所完成課程設(shè)計的要求。課程設(shè)計報告的模板主要是在學(xué)院所發(fā)布的模板的基礎(chǔ)上,考慮課程的具體特性,進(jìn)一步細(xì)化模板,使得學(xué)生在課程設(shè)計的過程中,更加容易的理解和遵照模板要求,以期引導(dǎo)學(xué)生按模板思考與執(zhí)行的能力。
3 可持續(xù)性課程設(shè)計研究
在往屆的課程設(shè)計過程中,我們通常的做法是將每個班級同學(xué)分組,之后為每組同學(xué)提供一個類似于小項目的題目,要求學(xué)生按指定標(biāo)準(zhǔn)完成。之前,由于這兩門課程多數(shù)情況下是由不同的教師講授,從而經(jīng)常會選用不同的課程設(shè)計題目。這樣在進(jìn)行后一個課程設(shè)計時,學(xué)生幾乎不可能再去思考如果純粹從C語言的角度該如何解決該問題;再用C語言重寫一遍的可能性就更小了。這樣,學(xué)生很難真切的體會到數(shù)據(jù)庫系統(tǒng)的優(yōu)點與便利,從而會失去一次回顧復(fù)習(xí)C語言和比較學(xué)習(xí)文件系統(tǒng)和數(shù)據(jù)庫系統(tǒng)優(yōu)缺點的機(jī)會。為了更好地保證學(xué)生學(xué)習(xí)的連貫性、系統(tǒng)性、全面性,為了能夠較好地提高學(xué)生分析問題、解決問題、比較不同工具優(yōu)劣性的能力,我們期望選取一些合適的題目,它們同時適合作為《C語言》和《數(shù)據(jù)庫》的課程設(shè)計題目,從而“強(qiáng)制”地讓學(xué)生對所學(xué)知識進(jìn)行比較分析,讓學(xué)生能夠更好地全面理解和掌握相關(guān)課程知識。
3.1選題中數(shù)據(jù)的考慮
課程設(shè)計的題目中要涉及需要存儲至外部文件中的格式化數(shù)據(jù)。數(shù)據(jù)存儲在應(yīng)用中非常普遍,是學(xué)生學(xué)習(xí)編程語言時必須掌握的能力,這有助于他們將來適應(yīng)真實的開發(fā)。這里我們主要考慮非數(shù)值性的數(shù)據(jù)存儲,在C語言課設(shè)中,要求學(xué)生用結(jié)構(gòu)體封裝數(shù)據(jù),之后用結(jié)構(gòu)體數(shù)組或鏈表將數(shù)據(jù)組織起來,最后用文件操作對數(shù)據(jù)進(jìn)行讀寫。
在數(shù)據(jù)庫課程設(shè)計過程中,學(xué)生選用一個具體DBMS,通過SQL語句建立數(shù)據(jù)庫模式,從而存儲題目中所涉及的數(shù)據(jù),再使用SQL語句對數(shù)據(jù)庫進(jìn)行查增刪改等操作。與C語言相比,在數(shù)據(jù)庫中進(jìn)行這些操作是非常容易的,且不易出錯,這樣就對數(shù)據(jù)庫的優(yōu)點有較為直觀的認(rèn)識。
3.2選題中功能的考慮
為了明確使用數(shù)據(jù)庫系統(tǒng)和使用文件系統(tǒng)存儲數(shù)據(jù)的區(qū)別,我們在C語言和數(shù)據(jù)庫課設(shè)所選題目中要求的功能是一致的,并且要求這些功能在兩門課程設(shè)計過程中均以獨立的函數(shù)形式來體現(xiàn)。
題目一致并不意味著C語言課設(shè)中的源代碼不需要修改。實際上,在數(shù)據(jù)庫課設(shè)中,我們需要添加或修改一些代碼,主要有以下三個方面:
(1)需要添加C語言連接DBMS的代碼,這一般可通過ODBC或直接用DBMS提供的動態(tài)庫文件來實現(xiàn)。該過程對學(xué)生來講是比較有挑戰(zhàn)性的,特別是對于動態(tài)庫文件的處理對學(xué)生來講可能更難一些,因為在C語言的授課過程中,我們處理的都是頭文件,庫文件的連接是默認(rèn)的選項,而在數(shù)據(jù)庫課設(shè)中,一切都需要手動來完成。當(dāng)然,該過程對學(xué)生來講是一種絕好的鍛煉機(jī)會,會讓他們更深入的了解一些軟件的編制過程。
(2)需要將C語言課程設(shè)計中的涉及外部文件操作的函數(shù)體做相應(yīng)的修改。此時,一般需要將C語言課設(shè)中使用結(jié)構(gòu)體數(shù)組或單鏈表作為數(shù)據(jù)中間存儲單元對數(shù)據(jù)進(jìn)行讀寫的代碼改寫為使用DBMS提供的API及對應(yīng)的SQL語句來訪問相應(yīng)數(shù)據(jù)庫的代碼。通過這些操作,學(xué)生應(yīng)該可以體會到數(shù)據(jù)庫系統(tǒng)用來組織、存儲和處理數(shù)據(jù)的便利性,也能感受到之前所寫C語言程序有許多可以改進(jìn)的地方。特別是數(shù)據(jù)庫中SQL語句的一些統(tǒng)計功能,排序功能等等,會讓學(xué)生真切地體會到在數(shù)據(jù)庫課程設(shè)計時C語言代碼的減少量,能感受到只需要將精力集中在功能處理上的輕松感。
(3)另外,在數(shù)據(jù)庫課程設(shè)計中也要強(qiáng)調(diào)用戶對數(shù)據(jù)的安全性與完整性控制,以期體現(xiàn)DBMS管理數(shù)據(jù)的便利性與安全性。在C語言課程設(shè)計中,一般不會對數(shù)據(jù)有安全性的要求;對數(shù)據(jù)庫完整性的要求也比較低。這是因為用C語言直接實現(xiàn)數(shù)據(jù)的安全性對初學(xué)者來說較難,也不現(xiàn)實。這能在側(cè)面體現(xiàn)數(shù)據(jù)庫系統(tǒng)在數(shù)據(jù)管理方面的優(yōu)勢。
保持題目一致、功能一致,而要求在不同的課程中采用不同的技術(shù)來實現(xiàn)的好處有:
(1)能突出C語言和數(shù)據(jù)庫課設(shè)各自的側(cè)重點。C語言課設(shè)側(cè)重于C語言基礎(chǔ)語法知識的理解與運用。數(shù)據(jù)庫課設(shè)側(cè)重于數(shù)據(jù)庫基本概念、基本理論的理解及SQL語句的熟練運用以及使用高級語言連接具體的DBMS。
(2)能夠較為充分的復(fù)用C語言課設(shè)中的源代碼,減輕數(shù)據(jù)庫課設(shè)中的工作量,并使學(xué)生能集中精力于數(shù)據(jù)庫的設(shè)計與數(shù)據(jù)庫的連接。
(3)代碼的閱讀與修改的能力是衡量學(xué)生掌握知識程度的一個重要度量。在C語言課程設(shè)計的基礎(chǔ)上去完成數(shù)據(jù)庫課設(shè),需要學(xué)生仔細(xì)閱讀原來的源代碼及準(zhǔn)確定位至需要修改的位置并進(jìn)行正確的修改。這有利于學(xué)生進(jìn)一步提升代碼的閱讀能力和修改能力。
4 結(jié)語
為了提高學(xué)生的編程實踐能力和利用它們解決問題的能力,我們切實從學(xué)生的角度出發(fā),為《C語言》和《數(shù)據(jù)庫》選擇合適的相同的課程設(shè)計題目,將《數(shù)據(jù)庫》課程設(shè)計作為《C語言》課程設(shè)計的合理延續(xù),從而激發(fā)學(xué)生積極思考不同技術(shù)的優(yōu)缺點,提升學(xué)生對所學(xué)知識的理解與運用能力。
參考文獻(xiàn)
[1]王悠,張熙,羅文田.電子基礎(chǔ)課程設(shè)計教學(xué)研究與改革[J].讀與寫雜志,16(12):50-51.
[2]彭志鋒.梅西大學(xué)“以學(xué)生為中心”教育理念的啟示——兼論中國-新西蘭高等教育的差異[J].教育教學(xué)論壇,2020(06):319-320.
[3]趙玉蘭,姜春風(fēng).基于雙元制教學(xué)模式的信息技術(shù)專業(yè)課程設(shè)計[J].衛(wèi)星電視與寬帶多媒體,2019(24):21-22.
基金項目
本文系東北電力大學(xué)教改項目信計專業(yè)計算機(jī)類課程“以學(xué)生為中心”可持續(xù)性課程設(shè)計研究階段性成果[項目編號:J201939]。