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