摘要:針對(duì)美國(guó)斯坦福大學(xué)計(jì)算機(jī)科學(xué)系面向全校開(kāi)設(shè)的程序設(shè)計(jì)入門類課程設(shè)置情況,分析該類課程的整個(gè)課程體系,包括教學(xué)、輔導(dǎo)、作業(yè)和考核等各個(gè)環(huán)節(jié)安排,總結(jié)其課程設(shè)置人性化和科學(xué)化、輔導(dǎo)機(jī)制完備化、考核手段精細(xì)化的課程特點(diǎn)。
關(guān)鍵詞:計(jì)算機(jī)科學(xué);程序設(shè)計(jì);課程體系;作業(yè)寬限日政策;誠(chéng)信準(zhǔn)則
0 引 言
美國(guó)斯坦福大學(xué)地處加利福尼亞州西部的舊金山( San Francisco)和圣何塞(San Jose)之間,位于著名的“硅谷”中心,是世界科研和高等教育領(lǐng)先機(jī)構(gòu)之一。隸屬于斯坦福大學(xué)工程學(xué)院的汁算機(jī)科學(xué)系始建于1965年,如今引領(lǐng)著世界計(jì)算機(jī)科學(xué)的科研和教育前沿。
筆者最初接觸到斯坦福大學(xué)的計(jì)算機(jī)課程是在2009年主講數(shù)據(jù)庫(kù)原理雙語(yǔ)課程時(shí),當(dāng)時(shí)選用了一本原版教材A First Course in DatabaseSVstems,這是由斯坦福大學(xué)的兩名計(jì)算機(jī)教授(Jeffrey D.Ullman和Jennifer Widom)合作編寫(xiě)的。瀆過(guò)之后發(fā)現(xiàn),國(guó)內(nèi)的同類著名教材可以說(shuō)就是這本教材的翻譯本和節(jié)選本,從此開(kāi)始關(guān)注斯坦福及其計(jì)算機(jī)課程。
筆者再次接觸斯坦福大學(xué)的計(jì)算機(jī)課程是2010年底。當(dāng)時(shí),網(wǎng)易正式推出“全球名校視頻公開(kāi)課項(xiàng)目”,其中由斯坦福大學(xué)計(jì)算機(jī)科學(xué)系教授麥蘭·薩哈米( Mehran Sahami)講授的編程方法學(xué)( programming methodology)引起筆者的關(guān)注,于是由此展開(kāi)對(duì)斯坦福大學(xué)的計(jì)算機(jī)課程研究和探索。 1 斯坦福大學(xué)計(jì)算機(jī)程序設(shè)計(jì)入門類課程概述
斯坦福大學(xué)計(jì)算機(jī)科學(xué)系面向全校殲設(shè)了5門計(jì)算機(jī)程序設(shè)計(jì)入門類課程,供全校學(xué)生選修,這5門課程分別是CS101、CS105、CS106A、CS106B和CS106X。
1.1 CS101-計(jì)算機(jī)理論入門(introduc-tion to computing principles)和CS105-計(jì)算機(jī)入門(.ntroduction to computer science)
這兩門課程主要是計(jì)算機(jī)科學(xué)中主要領(lǐng)域的通識(shí)教育,平均每年度有大約500名學(xué)生選修。課程主要講授計(jì)算機(jī)基礎(chǔ)知識(shí)以及JavaScript、HTML、CSS等簡(jiǎn)單的程序設(shè)計(jì)。學(xué)習(xí)CS101和CSl05花費(fèi)的時(shí)間和精力相比其他程序設(shè)計(jì)入門課程要少很多,如果只是為了完成斯坦福對(duì)通識(shí)教育的要求,選修這兩門課非常適合。CS101于春季學(xué)期開(kāi)課,CS105于秋季、冬季學(xué)期開(kāi)課。
1.2 CS106A-編程方法學(xué)( programming methodology)
編程方法學(xué)是斯坦福選修人數(shù)最多,也是教學(xué)規(guī)模最大的計(jì)算機(jī)程序設(shè)計(jì)入門課程,在2012年秋季學(xué)期中,有650名學(xué)生選修CS106A。CA106A教授的是良好的軟件工程思想,同時(shí)結(jié)合使用較廣泛的Java程序設(shè)計(jì)語(yǔ)言,比單純程序設(shè)計(jì)的知識(shí)范圍要大得多。該課程適合所有專業(yè)的學(xué)生學(xué)習(xí),事實(shí)上,選修該課程的大多數(shù)是工程學(xué)院以外專業(yè)的學(xué)生。該課程不需任何程序設(shè)計(jì)經(jīng)驗(yàn),但課程要求嚴(yán)格,需要花費(fèi)大量的精力。CS106A于每年的秋季、冬季、春季和夏季學(xué)期開(kāi)課。
1.3 CS106B-抽象編程( programming abstractions l
該課程是CS106A的直接后續(xù)課程,涵蓋高級(jí)程序設(shè)計(jì)主題,如遞歸、算法分析和數(shù)據(jù)抽象等。CSl06B[5]采用C++程序設(shè)計(jì)語(yǔ)言,C++類似于C和Java的結(jié)合。如果學(xué)生已經(jīng)參加了計(jì)算機(jī)科學(xué)高級(jí)課程考試并取得了4分或5分的成績(jī),或在一門專業(yè)課程中取得了好成績(jī),則可以從CS106B開(kāi)始學(xué)起。CS106B要求學(xué)生已經(jīng)對(duì)好的程序設(shè)計(jì)風(fēng)格以及軟件工程思想非常熟悉(達(dá)到CS106A的水平),在此基礎(chǔ)上,可以學(xué)習(xí)解決程序設(shè)計(jì)和數(shù)據(jù)抽象中的新問(wèn)題。CS106B于秋季、冬季、春季和夏季學(xué)期開(kāi)課。
1.4 CS106X-抽象編程(高級(jí))( progra-mming abstractions(accelerated))
CSl06X是CS106B的提高版本,它使用C++程序設(shè)計(jì)語(yǔ)言,講授的主題與CS106B完全相同,只是進(jìn)行更深層次的探討。由于課程內(nèi)容很多,因此課程進(jìn)度非???,適合已通過(guò)計(jì)算機(jī)科學(xué)高級(jí)課程考試或有扎實(shí)的程序設(shè)計(jì)基礎(chǔ)的學(xué)生。不要錯(cuò)誤地認(rèn)為真正的工程師都會(huì)直接選修CS106X,實(shí)際上,大多數(shù)計(jì)算機(jī)科學(xué)家和工程師(包括2012-2013秋季學(xué)期CS106A的授課教師Mehran Sahami教授)都是從CS106A開(kāi)始學(xué)習(xí)。CS106X通常于秋季學(xué)期開(kāi)課。
許多斯坦福的學(xué)生在高中階段或是在他們本身從事的與計(jì)算機(jī)相關(guān)的工作領(lǐng)域中已經(jīng)獲得相當(dāng)多的程序設(shè)計(jì)經(jīng)驗(yàn),這種情況下,即使從CS106X開(kāi)始學(xué)習(xí)程序設(shè)計(jì)類課程也很浪費(fèi)時(shí)間,但是根據(jù)以往的經(jīng)驗(yàn),每一屆新生中只有10~15位應(yīng)該從程序設(shè)計(jì)類更高起點(diǎn)的課程開(kāi)始學(xué)習(xí)。對(duì)于大多數(shù)學(xué)生來(lái)說(shuō),還是應(yīng)該從CS106課程開(kāi)始學(xué)習(xí)。大多數(shù)高中的計(jì)算機(jī)課程對(duì)現(xiàn)代軟件工程技術(shù)涉及不多,學(xué)生通過(guò)CS106可以學(xué)習(xí)科學(xué)的程序設(shè)計(jì)理念,為更高級(jí)的工作打下堅(jiān)實(shí)的基礎(chǔ)。
2 課程體系——以CS106A為例
2.1 課程安排
總共上課11周,每周3節(jié),每節(jié)50分鐘。除上課以外,學(xué)生每周必須參加50分鐘的小組討論。
2.2 課程組成員
(1)1位授課教師(instructor)。課程的負(fù)責(zé)人,主講課程,另外每周有2小時(shí)的課程輔導(dǎo)。
(2)l位首席助教(head to)。輔助教師完成課程所有任務(wù),每周兩次(每次2小時(shí))的課程輔導(dǎo)。
(3)多名討論小組長(zhǎng)(section leaders)。討論小組長(zhǎng)主要負(fù)責(zé)組織每周一次的小組討論,每個(gè)小組6~8名成員。小組長(zhǎng)還要履行下列職責(zé):與組員一同上課,每周一次的課程組會(huì)議以及針對(duì)每次作業(yè)與每名組員面對(duì)面交流后評(píng)分,輔助期中、期末考試成績(jī)考核,每周2小時(shí)在公共機(jī)房進(jìn)行輔導(dǎo)答疑。
(4)多名課程輔導(dǎo)者(course helpers)。每周在公共機(jī)房進(jìn)行2~10小時(shí)課程輔導(dǎo)答疑。
2.3 課程網(wǎng)站
課程通過(guò)網(wǎng)站發(fā)布課程最新公告,提供詳細(xì)的課程資料并根據(jù)課程進(jìn)度隨時(shí)更新,網(wǎng)址為http://www.stan ford.edu/clas s/cs 106/或http://cs106a.stanford.edu/.
2.4 學(xué)分
本科生選修CS106A可獲得5學(xué)分,研究生選修這門課可獲得3學(xué)分,但是對(duì)兩者的要求完全一樣。
2.5 教材和課堂講義
(1)該課程有兩本教材。第1本名為Karelthe Robot Learns Java,這是一本35頁(yè)的書(shū),以一個(gè)極其簡(jiǎn)單的機(jī)器人世界為背景,介紹程序設(shè)計(jì)的主要思想??_爾是一個(gè)友好的小機(jī)器人,生活在一個(gè)格子世界中。在課程的第1周,學(xué)生將和卡羅爾一起探索程序設(shè)計(jì),解決問(wèn)題和體會(huì)軟件工程思想。這本教材對(duì)于學(xué)生完成第一次作業(yè)非常有用,學(xué)生可以登錄課程網(wǎng)站下載該教材電子版,也可以在斯坦福書(shū)店買到這本書(shū)。
第2本名為The Art and Science of Java,作者是Eric Roberts。熟悉了機(jī)器人卡羅爾的世界后,學(xué)生可從第2周開(kāi)始學(xué)習(xí)用Java程序設(shè)計(jì)語(yǔ)言構(gòu)建更大、更詳細(xì)的程序。該教材非常好地介紹了Java中的軟件工程思想。
(2)課堂講義(handouts)。除了教材,教師還會(huì)以課程講義的形式發(fā)放課程附加材料,作為教材的補(bǔ)充材料。每次上課時(shí),學(xué)生都可以在教室入口處的講義箱領(lǐng)取,也可以從課程網(wǎng)站以PDF格式直接下載。
2.6 課程主要聯(lián)系方式Email
這門課程要求學(xué)生擁有Email帳戶。在斯坦福,所有學(xué)生通過(guò)LaIR都可取得Email帳戶,師生之間課后的主要交流都是通過(guò)Email完成,包括作業(yè)的提交、討論組的注冊(cè)等。
2.7 程序設(shè)計(jì)作業(yè)
(1)教學(xué)大綱已經(jīng)列出本門課有7次程序設(shè)計(jì)作業(yè),每次作業(yè)都有截止時(shí)間。隨著課程進(jìn)度的推進(jìn),作業(yè)會(huì)越來(lái)越難,時(shí)間花費(fèi)也將越來(lái)越多,因而后面作業(yè)的權(quán)重比前面的要稍重一些。除了學(xué)期期末的作業(yè),學(xué)生針對(duì)每個(gè)作業(yè)都要與小組組長(zhǎng)一對(duì)一地交流10~15分鐘進(jìn)行互動(dòng)評(píng)分,包括作業(yè)中的閃光點(diǎn)、仍需改進(jìn)的地方、在程序設(shè)計(jì)思想方面的欠缺。通過(guò)這些,學(xué)生可以獲得更詳細(xì)的信息,也可以提問(wèn)評(píng)分等級(jí)及依據(jù)。
(2)作業(yè)評(píng)分等級(jí)。作業(yè)等級(jí)由高到低分別為++、+、、√+、√、√-和、√--6級(jí),作業(yè)成績(jī)主要由討論小組長(zhǎng)評(píng)定,但是其中的最高級(jí)++代表著“絕對(duì)完美”,必須經(jīng)由課程教師和助教同意才能給出,這種成績(jī)很稀少且不口T多得,每學(xué)期只會(huì)出現(xiàn)有限的幾個(gè)。
(3)作業(yè)寬限日政策。每次作業(yè)必須在指定的時(shí)間前提交電子版,但是學(xué)生有時(shí)還會(huì)遇到些意外而導(dǎo)致作業(yè)不能按時(shí)提交,因此采取作業(yè)寬限日政策,規(guī)定每學(xué)期可以有兩個(gè)作業(yè)寬限日.當(dāng)寬限日用完后,上交遲到的作業(yè)(最多遲到3個(gè)上課日)會(huì)隨著遲到的時(shí)間每天降低一個(gè)級(jí)別(如√+降至√,依此類推)。與小組長(zhǎng)的面對(duì)面交互評(píng)分將在作業(yè)上交截止日期后的兩周內(nèi)完成,超過(guò)3個(gè)上課日上交的作業(yè)將不會(huì)被評(píng)分。只有極特殊的情況出現(xiàn)(如因病、家庭緊急情況和宗教原因等),才有可能延長(zhǎng)寬限日,這必須在作業(yè)到期日前的24小時(shí)內(nèi)經(jīng)由助教同意,小組長(zhǎng)沒(méi)有這種權(quán)力。
2.8 課程考核方式及分?jǐn)?shù)比例
課程可在實(shí)踐的過(guò)程中不斷地改革考核方式及分?jǐn)?shù)比例,以兩個(gè)學(xué)期為例。
(1) 2012年冬季學(xué)期。除了7個(gè)程序設(shè)計(jì)作業(yè)外,還有2次中期考試,其中程序設(shè)計(jì)作業(yè)占55%,第1次期中考試占20%,第2次期中考試20%,小組參與占5%。
( 2) 2010年秋季學(xué)期。除了7個(gè)程序設(shè)計(jì)作業(yè)外,還有1次中期考試和1次期末考試,其中程序設(shè)計(jì)作業(yè)占45%,期末考試占30%,期中考試占15%,小組參與占10%。
2.9 誠(chéng)信準(zhǔn)則
早在1921年,斯坦福的學(xué)生學(xué)術(shù)委員會(huì)便制定《斯坦福大學(xué)誠(chéng)信準(zhǔn)則》,通行至今。作為計(jì)算機(jī)課程的學(xué)生,在學(xué)術(shù)誠(chéng)信方面應(yīng)該做到:①在提交的作業(yè)中注明在完成作業(yè)過(guò)程中接受的幫助;②不要與其他學(xué)生共享實(shí)際程序;③不要看往屆學(xué)生的程序解決方案和代碼;④做好對(duì)提交的程序進(jìn)行解釋說(shuō)明的準(zhǔn)備;⑤所有提交程序都要經(jīng)過(guò)自動(dòng)抄襲檢測(cè)程序的檢測(cè)。
3 幾點(diǎn)體會(huì)
3.1 課程設(shè)置多樣——人性化
同一門課程按不同的深度分層開(kāi)設(shè),每位學(xué)生可以結(jié)合自身的實(shí)際情況選修適合的課程。國(guó)內(nèi)大部分高校的程序設(shè)計(jì)入門課程比較單一(如只開(kāi)設(shè)C程序設(shè)計(jì)),這樣容易造成兩極分化的現(xiàn)象,一是學(xué)生對(duì)程序設(shè)計(jì)沒(méi)有很大興趣或是能力不足,卻沒(méi)有第二種選擇,造成學(xué)習(xí)困難,成績(jī)不好;二是學(xué)生對(duì)程序設(shè)計(jì)興趣濃厚,學(xué)習(xí)起來(lái)游刃有余,希望有更高的起點(diǎn),卻被禁錮在一定的課程范式中。
3.2 課程安排合理——科學(xué)化
(1)程序設(shè)計(jì)類課程的導(dǎo)向及重點(diǎn)清晰。這類課程首先強(qiáng)調(diào)的是軟件工程思想,而不是一開(kāi)始就單純地學(xué)習(xí)一門程序設(shè)計(jì)語(yǔ)言,學(xué)會(huì)的僅僅是語(yǔ)言結(jié)構(gòu),實(shí)際上,學(xué)習(xí)軟件系統(tǒng)開(kāi)發(fā)過(guò)程中實(shí)用的軟件工程思想才是最重要的。
(2)課程體系結(jié)構(gòu)完善。斯坦福大學(xué)計(jì)算機(jī)系的每門課程都有完善的課程體系,關(guān)于課程的基本情況在學(xué)期一開(kāi)始的第一次課,課程主講教師就會(huì)向全體學(xué)生介紹清楚并開(kāi)始執(zhí)行。
3.3 課程輔導(dǎo)具體——完備化
課程相關(guān)資料全部上網(wǎng),包括教材電子版、課堂資料、相關(guān)軟件、作業(yè)和授課視頻等。一門課程除了有主講教師和助教,討論組組長(zhǎng)和課程輔導(dǎo)者(均由高年級(jí)的學(xué)生擔(dān)任)還為學(xué)生學(xué)習(xí)提供全方位的幫助,每周的周日至周四晚上都在公共機(jī)房為學(xué)生完成作業(yè)提供幫助。登錄http://cs198.stanford.edu/,點(diǎn)擊“輔導(dǎo)時(shí)間表”鏈接,學(xué)生便可得到最新的輔導(dǎo)時(shí)間安排。
3.4 考核機(jī)制全面——精細(xì)化
首先對(duì)交作業(yè)的時(shí)間有嚴(yán)格的規(guī)定,寬限日的政策具體明確,可操作性極強(qiáng);然后設(shè)計(jì)多個(gè)評(píng)分等級(jí),同時(shí)對(duì)作業(yè)進(jìn)行面對(duì)面交流評(píng)分;最后要求學(xué)生誠(chéng)信地完成作業(yè),并且有嚴(yán)格的檢測(cè)手段。
4 結(jié)語(yǔ)
課程設(shè)置人性化、課程安排合理化、課程輔導(dǎo)完備化、課程機(jī)制精細(xì)化是斯坦福大學(xué)程序設(shè)計(jì)入門類課程的特點(diǎn),這值得國(guó)內(nèi)大學(xué)相關(guān)課程學(xué)習(xí)。如何借鑒斯坦福的經(jīng)驗(yàn),探索出一套更適合各高校培養(yǎng)目標(biāo)的課程體系,值得我們進(jìn)一步研究。