張曉瑩, 盧 衛(wèi), 程一艦, 趙展浩, 杜小勇,3
(1. 中國(guó)人民大學(xué) 信息學(xué)院, 北京 100872; 2. 中國(guó)人民大學(xué) 信息技術(shù)與信息管理國(guó)家級(jí)實(shí)驗(yàn)教學(xué)示范中心, 北京 100872;3. 中國(guó)人民大學(xué) 數(shù)據(jù)工程與知識(shí)工程教育部重點(diǎn)實(shí)驗(yàn)室, 北京 100872)
慕課(massive open online course,MOOC)的興起與迅速發(fā)展[1],在國(guó)內(nèi)外高校掀起一股教育改革浪潮。中國(guó)人民大學(xué)的數(shù)據(jù)庫(kù)系統(tǒng)概論課程曾榮獲國(guó)家級(jí)精品課程、國(guó)家級(jí)精品資源共享課。數(shù)據(jù)庫(kù)系統(tǒng)概論課程團(tuán)隊(duì)正積極投入到慕課課程的建設(shè)潮流中,致力于將數(shù)據(jù)庫(kù)系統(tǒng)概論建設(shè)成精品慕課課程,推動(dòng)數(shù)據(jù)庫(kù)慕課資源在高校的共建共享。課程團(tuán)隊(duì)自2015年起通過(guò)“請(qǐng)進(jìn)來(lái)、走出去、干起來(lái)”三步走策略完成慕課課程的籌備工作,2016年4月至今,在中國(guó)大學(xué)MOOC平臺(tái)先后開(kāi)設(shè)了數(shù)據(jù)庫(kù)系統(tǒng)概論基礎(chǔ)篇(3期)[2]、高級(jí)篇(3期)[3]和新技術(shù)篇(2期)[4]系列課程,面向國(guó)內(nèi)高校開(kāi)設(shè)SPOC(small private online course)課程20余門(mén),選課人數(shù)累計(jì)超過(guò)10萬(wàn)人,受到教師和學(xué)生的熱烈歡迎。
慕課課程要求授課教師既要提供教學(xué)相關(guān)的視頻和課件,又要提供配套的測(cè)驗(yàn)、考試等評(píng)測(cè)方式考核學(xué)生對(duì)知識(shí)的掌握情況,同時(shí)還需實(shí)現(xiàn)對(duì)教師教學(xué)方法的反饋。目前,慕課課程的測(cè)驗(yàn)、考試形式多以選擇、判斷、填空等客觀題為主,可以快速自動(dòng)評(píng)判。顯然,上述評(píng)測(cè)方式僅適用于理論知識(shí)的考核,而對(duì)于實(shí)踐性強(qiáng)的計(jì)算機(jī)類課程,例如數(shù)據(jù)庫(kù)系統(tǒng)概論、程序設(shè)計(jì)等,還需要考核學(xué)生的實(shí)際動(dòng)手能力。
我校數(shù)據(jù)庫(kù)系統(tǒng)概論課程團(tuán)隊(duì)根據(jù)課程實(shí)際需要,自主研發(fā)了面向慕課的在線SQL自動(dòng)評(píng)測(cè)系統(tǒng)[5]。本評(píng)測(cè)系統(tǒng)不僅支持學(xué)生在線完成實(shí)驗(yàn),還支持自動(dòng)、實(shí)時(shí)、準(zhǔn)確判分,同時(shí),為教師提供針對(duì)學(xué)生實(shí)驗(yàn)成績(jī)和實(shí)驗(yàn)過(guò)程等數(shù)據(jù)的統(tǒng)計(jì)分析功能。
“數(shù)據(jù)庫(kù)系統(tǒng)概論”是一門(mén)理論與實(shí)踐緊密結(jié)合的計(jì)算機(jī)類專業(yè)課程,旨在培養(yǎng)學(xué)生靈活運(yùn)用數(shù)據(jù)庫(kù)理論、方法和技術(shù)分析和解決復(fù)雜工程問(wèn)題的能力[6-7]。學(xué)生通過(guò)實(shí)驗(yàn)?zāi)軌蚣由顚?duì)理論知識(shí)的理解,達(dá)到掌握實(shí)踐技能、形成工程素養(yǎng)、實(shí)踐科學(xué)思維、培養(yǎng)創(chuàng)新能力的目的。不論是傳統(tǒng)課堂還是慕課,實(shí)驗(yàn)教學(xué)都是數(shù)據(jù)庫(kù)課程教學(xué)中不可或缺的重要環(huán)節(jié),實(shí)驗(yàn)?zāi)芰Φ目己艘彩侵匾慕虒W(xué)內(nèi)容之一。顯然,慕課中常用的客觀題考核方式無(wú)法滿足這方面的需求,因此,設(shè)計(jì)開(kāi)發(fā)支持慕課課程的評(píng)測(cè)系統(tǒng)對(duì)推動(dòng)數(shù)據(jù)庫(kù)慕課資源的共建共享具有非常重要的意義。
在傳統(tǒng)課堂中,教師通常事先規(guī)劃好每節(jié)實(shí)驗(yàn)課的實(shí)驗(yàn)任務(wù),要求學(xué)生到機(jī)房上機(jī)實(shí)驗(yàn)并完成實(shí)驗(yàn)報(bào)告的撰寫(xiě)和提交。教師根據(jù)實(shí)驗(yàn)結(jié)果截圖對(duì)學(xué)生的實(shí)驗(yàn)質(zhì)量做出評(píng)判。如果在慕課中沿用這種純?nèi)斯ぁ⒋至6鹊呐姆绞?本質(zhì)上只是簡(jiǎn)單地將實(shí)驗(yàn)評(píng)測(cè)從線下轉(zhuǎn)移到線上,并沒(méi)有減輕教師的負(fù)擔(dān)??紤]到數(shù)據(jù)庫(kù)系統(tǒng)概論慕課課程的學(xué)習(xí)人數(shù)通常成千上萬(wàn)、學(xué)習(xí)規(guī)模較大,這種傳統(tǒng)評(píng)測(cè)方式大大加重了教師的工作負(fù)擔(dān)。因此,如何像客觀題一樣對(duì)實(shí)驗(yàn)進(jìn)行自動(dòng)、實(shí)時(shí)地評(píng)判成為評(píng)測(cè)系統(tǒng)的重要研究?jī)?nèi)容。
慕課給傳統(tǒng)教育帶來(lái)挑戰(zhàn)的同時(shí),也帶來(lái)了機(jī)遇[8-9]。慕課平臺(tái)積累了大量寶貴的用戶學(xué)習(xí)數(shù)據(jù)。借助大數(shù)據(jù)分析技術(shù),對(duì)實(shí)驗(yàn)過(guò)程和實(shí)驗(yàn)成績(jī)進(jìn)行全面地分析,及時(shí)將學(xué)習(xí)中存在的問(wèn)題反饋給學(xué)生和教師,既能提高學(xué)生的實(shí)踐能力,又能改進(jìn)教師的教學(xué)方法。因此,如何對(duì)實(shí)驗(yàn)過(guò)程和實(shí)驗(yàn)成績(jī)統(tǒng)計(jì)分析是評(píng)測(cè)系統(tǒng)的另一重要研究?jī)?nèi)容。
SQL(structured query language)是重要的關(guān)系數(shù)據(jù)庫(kù)操作語(yǔ)言,也是數(shù)據(jù)庫(kù)系統(tǒng)概論課程中重要的內(nèi)容之一,它既包含復(fù)雜的理論知識(shí),又涉及大量的實(shí)驗(yàn)。針對(duì)慕課環(huán)境下的數(shù)據(jù)庫(kù)實(shí)驗(yàn)測(cè)試平臺(tái)中存在的問(wèn)題,自主研發(fā)了在線SQL自動(dòng)評(píng)測(cè)系統(tǒng),通過(guò)自動(dòng)、實(shí)時(shí)、準(zhǔn)確地量化學(xué)生的實(shí)驗(yàn)成績(jī),幫助授課教師及時(shí)有效地獲取學(xué)生的學(xué)習(xí)情況,使其適應(yīng)MOOC教學(xué)、MOOC+SPOC混合式教學(xué)等新型教學(xué)模式的需求。
本文將從基本架構(gòu)、系統(tǒng)功能、關(guān)鍵技術(shù)實(shí)現(xiàn)、實(shí)驗(yàn)設(shè)計(jì)、系統(tǒng)評(píng)價(jià)等方面詳細(xì)介紹面向慕課的在線SQL自動(dòng)評(píng)測(cè)系統(tǒng)。
本系統(tǒng)的基本架構(gòu)如圖1所示,自底向上依次為數(shù)據(jù)源層、數(shù)據(jù)訪問(wèn)層、業(yè)務(wù)邏輯層、控制層、可視化層。
圖1 系統(tǒng)基本架構(gòu)
數(shù)據(jù)源層以人大金倉(cāng)Kingbase數(shù)據(jù)庫(kù)為基礎(chǔ),使用阿里巴巴的開(kāi)源數(shù)據(jù)庫(kù)連接池Druid進(jìn)行數(shù)據(jù)庫(kù)的連接池配置和監(jiān)控等。系統(tǒng)的實(shí)驗(yàn)數(shù)據(jù)集由我校真實(shí)的本科學(xué)生選課數(shù)據(jù)構(gòu)成。
數(shù)據(jù)訪問(wèn)層負(fù)責(zé)抽象出數(shù)據(jù)庫(kù)的訪問(wèn)接口,實(shí)現(xiàn)數(shù)據(jù)庫(kù)的增、刪、改、查操作,讀取并傳遞數(shù)據(jù)。
業(yè)務(wù)邏輯層是系統(tǒng)的邏輯實(shí)現(xiàn),例如實(shí)驗(yàn)題目的解析與判斷,處理用戶答案和標(biāo)準(zhǔn)答案,按照既定的規(guī)則合理判分并返回結(jié)果分?jǐn)?shù)等。
控制層主要是對(duì)外的數(shù)據(jù)輸出接口,前端通過(guò)http請(qǐng)求進(jìn)行數(shù)據(jù)請(qǐng)求,相應(yīng)的控制接口調(diào)用業(yè)務(wù)邏輯層的邏輯判斷返回相應(yīng)的數(shù)據(jù)。主要分為3個(gè)方面的控制邏輯:與學(xué)生相關(guān)的,例如注冊(cè)登錄、獲取用戶信息等;與答題相關(guān)的,例如提交答案判分、保存答案等;與教師端可視化相關(guān)的,例如提供人數(shù)、成績(jī)等數(shù)據(jù)。
可視化層是各類數(shù)據(jù)的展現(xiàn),包括學(xué)生端的題目呈現(xiàn)及答題、答題結(jié)果呈現(xiàn)以及教師端的學(xué)生申請(qǐng)呈現(xiàn),以及學(xué)生的成績(jī)、答題等統(tǒng)計(jì)信息的呈現(xiàn)。
本系統(tǒng)主要包括2大功能模塊:學(xué)生端功能模塊和教師端功能模塊,具體如圖2所示。
圖2 系統(tǒng)功能模塊
2.2.1 學(xué)生端功能
(1) 注冊(cè)模塊。在答題前,學(xué)生要使用實(shí)名信息注冊(cè)賬號(hào),由相關(guān)學(xué)校的授課教師審核通過(guò)后方可獲得平臺(tái)的使用權(quán)限。實(shí)名信息應(yīng)該包括真實(shí)姓名、學(xué)校、專業(yè)、班級(jí)、序號(hào)等內(nèi)容。本系統(tǒng)免費(fèi)向所有高校開(kāi)放使用,同一學(xué)校同一學(xué)期可能開(kāi)設(shè)多個(gè)數(shù)據(jù)庫(kù)課堂,使用“序號(hào)”唯一標(biāo)識(shí)每個(gè)課堂。學(xué)生在注冊(cè)時(shí)通過(guò)選擇正確的學(xué)校和序號(hào)加入對(duì)應(yīng)的課堂中。
(2) 登錄模塊。學(xué)生使用賬號(hào)和密碼登錄系統(tǒng)。如果賬號(hào)未經(jīng)授課教師審核通過(guò),登錄后會(huì)進(jìn)入到等待審核頁(yè)面。
(3) 答題模塊。學(xué)生在作答過(guò)程中可以隨時(shí)保存答案,提交后即完成作答,系統(tǒng)自動(dòng)完成批改。
2.2.2 教師端功能
(1) 審核模塊。為使用本系統(tǒng)的授課教師分配教師賬號(hào)。授課教師登錄系統(tǒng)后根據(jù)實(shí)際情況同意或拒絕學(xué)生的申請(qǐng)。
(2) 成績(jī)統(tǒng)計(jì)模塊。當(dāng)學(xué)生提交答案后,系統(tǒng)會(huì)自動(dòng)存儲(chǔ)該學(xué)生每道題的分?jǐn)?shù)。教師通過(guò)可視化的圖表查看所管理學(xué)生的答題情況,包括總體完成情況、總體成績(jī)統(tǒng)計(jì)以及個(gè)體成績(jī)?cè)斍榈取?/p>
(3) 行為統(tǒng)計(jì)模塊。本模塊采集學(xué)生在答題過(guò)程中的行為數(shù)據(jù)。如各個(gè)題目和各個(gè)模塊上的答題用時(shí),從而可以間接地判斷題目的難易程度。
本系統(tǒng)的重要目標(biāo)是能夠自動(dòng)、實(shí)時(shí)、準(zhǔn)確地評(píng)判量化學(xué)生的實(shí)驗(yàn)成績(jī)。因此,答案判斷是系統(tǒng)的核心功能。一種實(shí)現(xiàn)方法是比較SQL語(yǔ)句,另一種是比較結(jié)果。由于SQL語(yǔ)句具有靈活、不唯一的特點(diǎn),給定一個(gè)SQL題目,可以使用多種不同的SQL語(yǔ)句完成。如果采用第一種實(shí)現(xiàn)方法,對(duì)于復(fù)雜實(shí)驗(yàn),無(wú)法預(yù)測(cè)所有正確的SQL語(yǔ)句,直接對(duì)比SQL語(yǔ)句不具備可操作性。通過(guò)比較結(jié)果能夠很好的規(guī)避直接比較SQL語(yǔ)句的復(fù)雜度,且易于實(shí)現(xiàn)。因此,采用比較結(jié)果的方法實(shí)現(xiàn)答案判斷。
答案判斷的基本思想是:分別執(zhí)行學(xué)生提交的SQL語(yǔ)句和正確的SQL語(yǔ)句,比較兩者得到的結(jié)果(事先保證正確的查詢結(jié)果不為空),如果兩者結(jié)果一致,則認(rèn)為答案正確,否則認(rèn)為答案不正確。但是,有時(shí)候?qū)W生的答案結(jié)果與正確結(jié)果相似,只是可能沒(méi)有排序或者沒(méi)有去重,這樣的疏漏其實(shí)并不屬于特別嚴(yán)重的錯(cuò)誤,直接判定為全錯(cuò)是不合理的。因此,在判斷時(shí)引入梯度分?jǐn)?shù),增加不完全正確的判斷結(jié)果,從而避免以偏概全。系統(tǒng)在具體實(shí)現(xiàn)時(shí),學(xué)生提交的SQL語(yǔ)句作為事務(wù)的操作序列執(zhí)行,該事務(wù)最后會(huì)被回滾,這樣不會(huì)改變數(shù)據(jù)狀態(tài),因此不會(huì)影響其他學(xué)生的操作結(jié)果。下面以Java代碼為例介紹關(guān)鍵技術(shù)的實(shí)現(xiàn)。
2.3.1 數(shù)據(jù)操縱語(yǔ)言的判斷
數(shù)據(jù)操縱語(yǔ)言包括查詢操作和更新操作。
(1) 對(duì)于查詢操作,引入 minus 關(guān)鍵字比較兩者結(jié)果是否相同。核心代碼如下:
/*拼接兩個(gè)sql字符串*/
String spliceSql1 = ″ ( ″ + sql1 + ″ ) ″+ ″ minus all ″ + ″ ( ″ + sql2 + ″ ) ″;
recordList1 = samplesDAO.query(conn,spliceSql1);
/*判斷查詢結(jié)果是否相同*/
isEqual = (recordList1.size()==0) ? true : false;
(2) 對(duì)于更新操作,先執(zhí)行提交的SQL語(yǔ)句,然后查詢更新后的記錄是否符合預(yù)期,如果符合則為正確,否則為不正確。核心代碼如下:
/*執(zhí)行學(xué)生提交的SQL語(yǔ)句*/
iCode = stmt.executeUpdate(userSolution);
/*執(zhí)行完畢后再次進(jìn)行查詢獲取到結(jié)果集record2*/
record2 = samplesDAO.query(conn, extraSql);
/*查看record2中相應(yīng)記錄的值是否被更新成指定的值*/
2.3.2 數(shù)據(jù)定義語(yǔ)言的判斷
數(shù)據(jù)定義語(yǔ)言包括表、索引、視圖的修改和刪除、完整性等操作,判斷的邏輯比較清晰。首先檢查相應(yīng)的表、索引、視圖、屬性等是否存在,屬性類型和完整性約束是否正確,然后執(zhí)行提交的SQL語(yǔ)句,最后檢查執(zhí)行后的數(shù)據(jù)庫(kù)變化是否與預(yù)期相同。核心代碼如下:
/*獲取視圖或表*/
rs = dbMetaData.getTables(null, ″PUBLIC″, ″%″, types);
/*獲取索引*/
rs = dbMetaData.getIndexInfo(null, ″PUBLIC″, tableName, true, true);
/*獲取主鍵*/
rs = dbMetaData.getPrimaryKeys(null, ″PUBLIC″, tableName);
/*獲取外鍵*/
rs = dbMetaData.getImportedKeys(null, ″PUBLIC″, tableName);
2.3.3 數(shù)據(jù)控制語(yǔ)言的判斷
數(shù)據(jù)控制語(yǔ)言包括授權(quán)與回收功能。對(duì)于權(quán)限的判斷,首先通過(guò)查詢dba_sys_privs表獲得指定的用戶對(duì)指定操作對(duì)象的權(quán)限集,再檢查指定操作權(quán)限是否存在于已獲得的用戶權(quán)限集中,從判斷出用戶是否成功授權(quán)。
2.3.4 數(shù)據(jù)庫(kù)編程的判斷
數(shù)據(jù)庫(kù)編程包含觸發(fā)器的設(shè)置和存儲(chǔ)過(guò)程。
(1) 觸發(fā)器的設(shè)置通過(guò)執(zhí)行提交的觸發(fā)器后,根據(jù)觸發(fā)條件進(jìn)行相應(yīng)的操作,然后檢查與預(yù)期的觸發(fā)結(jié)果是否相同,從而判斷觸發(fā)器設(shè)置是否正確。核心代碼如下:
String sql1=″create table stu (sno char(10),sname char(10),sage int)″;
stmt.executeUpdate(sql1);
String sql2=″insert into stu values(′001′,′mark′,20)″;
stmt.executeUpdate(sql2);
/*執(zhí)行提交的觸發(fā)器的語(yǔ)句*/
iCode = stmt.executeUpdate(userSolution);
/*執(zhí)行創(chuàng)建語(yǔ)句*/
/*條件出發(fā)前查詢一次*/
tvalue = samplesDAO.queryOne(conn, checkSql);
/*執(zhí)行觸發(fā)條件*/
String sql3 = ″update stu set sage=19″;
stmt.executeUpdate(sql3);
/*條件出發(fā)之后在查詢一遍,看觸發(fā)器是否發(fā)揮了作用*/
tvalue = samplesDAO.queryOne(conn, checkSql);
(2) 存儲(chǔ)過(guò)程本質(zhì)上是一個(gè)函數(shù),給定所要?jiǎng)?chuàng)建的函數(shù)名稱和參數(shù),當(dāng)執(zhí)行提交的答案之后,調(diào)用該存儲(chǔ)過(guò)程查看結(jié)果與預(yù)期的是否相同,判斷答案是否正確。核心代碼如下:
/*調(diào)用學(xué)生所創(chuàng)建的存儲(chǔ)過(guò)程*/
CallableStatement cs = conn.prepareCall(″{call proc_sc(?)}″);
cs.setString(1, ″2017004004″);
cs.execute();
cs.close();
我們根據(jù)數(shù)據(jù)庫(kù)系統(tǒng)概論課程的重要知識(shí)點(diǎn),參考教材《數(shù)據(jù)庫(kù)系統(tǒng)概論(第5版)》[10]和《數(shù)據(jù)庫(kù)系統(tǒng)概論(第5版)習(xí)題解析與實(shí)驗(yàn)指導(dǎo)》[11],結(jié)合我校在中國(guó)大學(xué)MOOC平臺(tái)的教學(xué)大綱,設(shè)計(jì)了數(shù)據(jù)操縱語(yǔ)言、數(shù)據(jù)定義語(yǔ)言、數(shù)據(jù)控制語(yǔ)言和數(shù)據(jù)庫(kù)編程四大實(shí)驗(yàn)?zāi)K,考察內(nèi)容涵蓋了表查詢、數(shù)據(jù)更新、索引、視圖、完整性、授權(quán)、存儲(chǔ)過(guò)程、觸發(fā)器等。下面詳細(xì)介紹各實(shí)驗(yàn)?zāi)K的設(shè)計(jì)。數(shù)據(jù)操縱語(yǔ)言的實(shí)驗(yàn)設(shè)計(jì)和考察點(diǎn)見(jiàn)表1。
表1 數(shù)據(jù)操縱語(yǔ)言的實(shí)驗(yàn)設(shè)計(jì)和考查點(diǎn)
表1(續(xù))
學(xué)生實(shí)驗(yàn)使用的課程數(shù)據(jù)庫(kù),數(shù)據(jù)來(lái)源于中國(guó)人民大學(xué)教務(wù)處系統(tǒng)。數(shù)據(jù)庫(kù)包括以下3個(gè)表,具體如下:
(1) 學(xué)生表:Student (Sno, Sname, Ssex, Sage, Sdept)
(2) 課程表:Course (Cno, Cname, Cpno, Ccredit)
(3) 學(xué)生選課表:SC (Sno, Cno, Grade)
2.4.1 數(shù)據(jù)操縱語(yǔ)言
本模塊實(shí)驗(yàn)內(nèi)容包括單表查詢、多表查詢和數(shù)據(jù)更新。單表查詢實(shí)驗(yàn)考察表的基本查詢語(yǔ)句、去重、確定范圍、排序、字符匹配、確定集合、分組統(tǒng)計(jì)的應(yīng)用。多表查詢實(shí)驗(yàn)考察各類連接、嵌套查詢、集合查詢的應(yīng)用。數(shù)據(jù)更新實(shí)驗(yàn)考查基本表數(shù)據(jù)的插入、更新、刪除及與查詢結(jié)合的應(yīng)用。本模塊實(shí)驗(yàn)內(nèi)容和考查點(diǎn)詳見(jiàn)表1。
2.4.2 數(shù)據(jù)定義語(yǔ)言
本實(shí)驗(yàn)?zāi)K實(shí)驗(yàn)內(nèi)容包括表的管理、索引的管理、視圖的管理、實(shí)體完整性、參照完整性。表的管理實(shí)驗(yàn)考查基本表的定義、修改、刪除。索引是加快查詢速度的有效手段,索引的管理實(shí)驗(yàn)考查有效索引的建立、刪除。視圖是一個(gè)虛表,數(shù)據(jù)庫(kù)中只存放視圖的定義。視圖的使用帶來(lái)很多好處。視圖的管理實(shí)驗(yàn)考查視圖的建立、刪除。數(shù)據(jù)庫(kù)的完整性保證數(shù)據(jù)庫(kù)存儲(chǔ)的數(shù)據(jù)是符合現(xiàn)實(shí)世界語(yǔ)義的。完整性實(shí)驗(yàn)主要考查表級(jí)和列級(jí)完整性約束的建立。本模塊實(shí)驗(yàn)內(nèi)容和考查點(diǎn)詳見(jiàn)表2。
表2 數(shù)據(jù)定義語(yǔ)言的實(shí)驗(yàn)設(shè)計(jì)和考查點(diǎn)
2.4.3 數(shù)據(jù)控制語(yǔ)言
授權(quán)作為數(shù)據(jù)庫(kù)安全控制的一種措施。數(shù)據(jù)控制語(yǔ)言實(shí)驗(yàn)?zāi)K考察對(duì)基本表的各類權(quán)限(查詢、插入、更新、刪除)的分配、回收、級(jí)聯(lián)操作。本模塊實(shí)驗(yàn)內(nèi)容和考查點(diǎn)詳見(jiàn)表3。
表3 數(shù)據(jù)控制語(yǔ)言的實(shí)驗(yàn)設(shè)計(jì)和考查點(diǎn)
2.4.4 數(shù)據(jù)庫(kù)編程
本實(shí)驗(yàn)?zāi)K實(shí)驗(yàn)內(nèi)容包括觸發(fā)器和存儲(chǔ)過(guò)程。觸發(fā)器是用戶定義的事件驅(qū)動(dòng)的特殊過(guò)程,可以進(jìn)行復(fù)雜的檢查和操作。觸發(fā)器實(shí)驗(yàn)考查Before和After觸發(fā)器的定義。存儲(chǔ)過(guò)程實(shí)驗(yàn)考查其定義。本模塊實(shí)驗(yàn)內(nèi)容和考查點(diǎn)詳見(jiàn)表4。
表4 數(shù)據(jù)庫(kù)編程的實(shí)驗(yàn)設(shè)計(jì)和考查點(diǎn)
2.5.1 功能
本評(píng)測(cè)系統(tǒng)實(shí)驗(yàn)內(nèi)容涵蓋了數(shù)據(jù)操作語(yǔ)言、數(shù)據(jù)定義語(yǔ)言、數(shù)據(jù)控制語(yǔ)言、數(shù)據(jù)庫(kù)編程,能夠使學(xué)生得到完整的SQL實(shí)驗(yàn)訓(xùn)練。學(xué)生在答題時(shí),每題均單獨(dú)呈現(xiàn),題目難度層層遞進(jìn),能有效地檢驗(yàn)學(xué)生對(duì)知識(shí)點(diǎn)的掌握程度。系統(tǒng)較好地支持SPOC課堂教學(xué),運(yùn)行穩(wěn)定。系統(tǒng)功能目前還在不斷完善,例如,實(shí)驗(yàn)案例庫(kù)、隨機(jī)動(dòng)態(tài)組題、統(tǒng)計(jì)分析數(shù)據(jù)多樣化等高級(jí)功能已在開(kāi)發(fā)中。
2.5.2 效果
為了支持?jǐn)?shù)據(jù)庫(kù)課程的共建共享,本系統(tǒng)免費(fèi)開(kāi)放給所有高校數(shù)據(jù)庫(kù)教師使用。石家莊鐵道大學(xué)是首批使用本評(píng)測(cè)系統(tǒng)的學(xué)校之一。圖3顯示了該校某班的單表查詢實(shí)驗(yàn)的總體情況。其中,顯示出實(shí)驗(yàn)的總體完成情況,17人已作答。點(diǎn)擊餅圖中各部分,會(huì)顯示出該部分對(duì)應(yīng)的學(xué)生姓名,授課教師可以及時(shí)提醒這些學(xué)生完成實(shí)驗(yàn)。柱狀圖顯示出每道實(shí)驗(yàn)題的學(xué)生成績(jī)分布情況,可以看到,對(duì)于前3題,大部分學(xué)生都能正確作答,而對(duì)于第8題,只有5人正確作答,3人部分正確作答,反映出學(xué)生對(duì)前3題掌握較好,對(duì)第8題掌握不好,從而幫助授課教師確定教學(xué)中的重難點(diǎn)。
圖3 單表查詢實(shí)驗(yàn)的總體情況
圖4顯示了某個(gè)學(xué)生單表查詢實(shí)驗(yàn)的完成情況,為了保護(hù)學(xué)生的隱私,用張小明代替該學(xué)生真實(shí)姓名。其中,左圖是該學(xué)生每道題的成績(jī),右圖是該學(xué)生完成每道題的用時(shí)。授課教師通過(guò)查看學(xué)生的個(gè)人完成情況,可以了解該學(xué)生的薄弱環(huán)節(jié),從而因材施教。
我校數(shù)據(jù)庫(kù)課程團(tuán)隊(duì)自2016年4月開(kāi)始設(shè)計(jì)開(kāi)發(fā)在線SQL自動(dòng)評(píng)測(cè)系統(tǒng)。最初作為中國(guó)大學(xué)MOOC平臺(tái)數(shù)據(jù)庫(kù)系統(tǒng)概論基礎(chǔ)篇和高級(jí)篇的實(shí)驗(yàn)平臺(tái),供慕課學(xué)生完成實(shí)驗(yàn)題。2017年春季學(xué)期,杜小勇教授和盧衛(wèi)副教授在我校率先開(kāi)設(shè)數(shù)據(jù)庫(kù)系統(tǒng)概論SPOC課堂,使用評(píng)測(cè)系統(tǒng)考查學(xué)生對(duì)知識(shí)的掌握情況,減輕教師的批改負(fù)擔(dān)。此外,另有10余所高校已經(jīng)申請(qǐng)使用本測(cè)驗(yàn)系統(tǒng)。根據(jù)使用人員的反饋,本系統(tǒng)仍然在不斷完善。
在線SQL自動(dòng)評(píng)測(cè)系統(tǒng),不是取代傳統(tǒng)的實(shí)驗(yàn)教學(xué),而是對(duì)傳統(tǒng)實(shí)驗(yàn)教學(xué)的重要補(bǔ)充。本評(píng)測(cè)系統(tǒng)在實(shí)際教學(xué)中可以有多種的應(yīng)用。
圖4 單表查詢實(shí)驗(yàn)的個(gè)體情況
如圖5所示,在傳統(tǒng)教學(xué)中,可以將本評(píng)測(cè)系統(tǒng)作為實(shí)驗(yàn)教學(xué)的輔助工具,將實(shí)驗(yàn)作業(yè)的發(fā)布與完成從線下轉(zhuǎn)移到線上。學(xué)生在任何時(shí)間任何地點(diǎn)都可以在線提交實(shí)驗(yàn),系統(tǒng)會(huì)自動(dòng)生成實(shí)驗(yàn)報(bào)告并進(jìn)行自動(dòng)批改,節(jié)省了學(xué)生撰寫(xiě)實(shí)驗(yàn)報(bào)告和教師批改實(shí)驗(yàn)的時(shí)間和精力。系統(tǒng)的統(tǒng)計(jì)數(shù)據(jù)反饋給教師,掌握學(xué)生對(duì)知識(shí)的掌握情況,從而發(fā)現(xiàn)實(shí)際教學(xué)中存在的問(wèn)題。
圖5 應(yīng)用場(chǎng)景1:傳統(tǒng)實(shí)驗(yàn)教學(xué)
如圖6所示,學(xué)生課前通過(guò)MOOC平臺(tái)的視頻等資源學(xué)習(xí)課程并完成相應(yīng)的實(shí)驗(yàn)練習(xí)。一方面,學(xué)生可以了解自己的學(xué)習(xí)效果,針對(duì)自己的薄弱點(diǎn)在MOOC平臺(tái)或SPOC課堂再學(xué)習(xí)。另一方面,學(xué)生的答題情況可以及時(shí)反饋給授課教師,例如,每個(gè)實(shí)驗(yàn)題的正確與錯(cuò)誤統(tǒng)計(jì)信息、學(xué)生出錯(cuò)行為等一些細(xì)粒度的信息,通過(guò)對(duì)這些重要信息的分析,幫助教師準(zhǔn)確把握教學(xué)的重點(diǎn)和難點(diǎn)。
中國(guó)人民大學(xué)數(shù)據(jù)庫(kù)系統(tǒng)概論課程團(tuán)隊(duì)自主研發(fā)的在線SQL自動(dòng)評(píng)測(cè)系統(tǒng),在實(shí)驗(yàn)教學(xué)測(cè)評(píng)中發(fā)揮了很好的作用,在未來(lái)的工作中,將繼續(xù)完善系統(tǒng)的功能,還將與其他高校合作創(chuàng)建實(shí)驗(yàn)題庫(kù),增設(shè)查詢優(yōu)化等更高階的實(shí)驗(yàn)內(nèi)容等,使其發(fā)揮更大的作用。
致謝:感謝中國(guó)人民大學(xué)數(shù)據(jù)庫(kù)系統(tǒng)概論課程團(tuán)隊(duì)的教師、學(xué)生和金倉(cāng)信息技術(shù)股份有限公司的技術(shù)人員支持和幫助!
參考文獻(xiàn)(References)
[1] 范逸洲,王宇,馮菲,等.MOOCs 課程學(xué)習(xí)與評(píng)價(jià)調(diào)查[J].開(kāi)放教育研究,2014,20(3):27-35.
[2] 中國(guó)人民大學(xué).數(shù)據(jù)庫(kù)系統(tǒng)概論MOOC課程基礎(chǔ)篇[EB/OL].(2017-07-10). http://www.icourse163.org/course/RUC-488001.
[3] 中國(guó)人民大學(xué).數(shù)據(jù)庫(kù)系統(tǒng)概論MOOC課程高級(jí)篇[EB/OL].(2017-07-10).http://www.icourse163.org/course/RUC-1001655006.
[4] 中國(guó)人民大學(xué).數(shù)據(jù)庫(kù)系統(tǒng)概論MOOC課程新技術(shù)篇[EB/OL].(2017-07-10).http://www.icourse163.org/course/RUC-1001965017.
[5] 中國(guó)人民大學(xué).SQL自動(dòng)測(cè)詳系統(tǒng)[EB/OL].(2017-08-09).http://dbm.ruc.edu.cn/rucdbcourse/.
[6] 王寧,王珊.數(shù)據(jù)管理課程群的構(gòu)建和實(shí)施方案研究[J].中國(guó)大學(xué)教學(xué),2010(6):62-65.
[7] 王珊.數(shù)據(jù)庫(kù)課程教學(xué)改革:面向21世紀(jì)課程教材與國(guó)家精品課程[J].中國(guó)大學(xué)教學(xué),2006(4):14-18.
[8] 李曉明.將要發(fā)生變化的課堂[J].中國(guó)大學(xué)教學(xué),2017(6):15-17.
[9] 李曉明,張絨. 慕課:理想性、現(xiàn)實(shí)性及其對(duì)高等教育的潛在影響[J].電化教育研究,2017(2):62-65.
[10] 王珊,薩師煊. 數(shù)據(jù)庫(kù)系統(tǒng)概論[M].5版.北京:高等教育出版社,2014.
[11] 王珊.張俊. 數(shù)據(jù)庫(kù)系統(tǒng)概論習(xí)題解析與實(shí)驗(yàn)指導(dǎo)[M]. 5版.北京:高等教育出版社,2015.