唐大仕
摘要:哈佛大學(xué)計(jì)算機(jī)基礎(chǔ)課CS50是一門很有影響力的課程。文章介紹該課程的教學(xué)內(nèi)容、教學(xué)組織及課程推廣情況,并介紹其對國內(nèi)計(jì)算基礎(chǔ)教育的啟示,包括重視基礎(chǔ)、突出計(jì)算思維、生動(dòng)的課堂、豐富的工具以及對品牌的重視等。
關(guān)鍵詞:CS50;計(jì)算機(jī)基礎(chǔ)課程;計(jì)算思維
中圖分類號(hào):G642.0? ? ?文獻(xiàn)標(biāo)志碼:A? ? ?文章編號(hào):1674-9324(2019)39-0005-03
CS50(Computer Science 50)是哈佛大學(xué)一門計(jì)算機(jī)科學(xué)的導(dǎo)論性的課程[1],內(nèi)容包括基本的計(jì)算機(jī)知識(shí)、基礎(chǔ)算法、編程應(yīng)用等,還探討人工智能等最新的計(jì)算機(jī)科學(xué)領(lǐng)域的應(yīng)用。該課程是哈佛大學(xué)本科學(xué)生的一門選修人數(shù)最多、最受歡迎的課程之一,在美國及全球都有較大的影響力。筆者曾參加在哈佛大學(xué)舉辦的Workshop,與該課程的領(lǐng)導(dǎo)者David J.Malan進(jìn)行了交流,感受了該課程的教學(xué)方式及其影響力。本文就CS50的相關(guān)情況進(jìn)行介紹,并且談?wù)剬ξ覈鴩鴥?nèi)計(jì)算機(jī)基礎(chǔ)教育的啟示。
一、CS50的教學(xué)內(nèi)容
1.教學(xué)大綱。CS50的教學(xué)內(nèi)容,包括了較廣泛的內(nèi)容,從基礎(chǔ)的算法、數(shù)據(jù)結(jié)構(gòu)、C語言到網(wǎng)絡(luò)、機(jī)器學(xué)習(xí)、Python、數(shù)據(jù)庫、JavaScript等。課程大綱如表1所示。
課程中主要體現(xiàn)的思想是計(jì)算的中心思想,是計(jì)算思維,并且包含了The College Board(美國大學(xué)理事會(huì))提出的計(jì)算機(jī)科學(xué)基礎(chǔ)原則(CSP,computer-science-principles)。其中包含了7大思想(7 big ideas),如表2所示。
2.知識(shí)點(diǎn)。從其具體講解的知識(shí)點(diǎn)(表3所示)來看,主要在C語言、數(shù)據(jù)結(jié)構(gòu)方面進(jìn)行了詳細(xì)的講解,這與國內(nèi)的“計(jì)算概論”相似。而在課程后半部增加了網(wǎng)絡(luò)、Web前端、Web后端、數(shù)據(jù)庫等內(nèi)容,使得計(jì)算機(jī)的知識(shí)講解得更全面。在人工智能、機(jī)器學(xué)習(xí)等方面有所涉及,使得學(xué)生可以對計(jì)算機(jī)的最新發(fā)展有一個(gè)全面的認(rèn)識(shí)。
二、CS50的教學(xué)組織
1.教學(xué)時(shí)間與教學(xué)形式。CS50的課程時(shí)長在11—13周,每周有2次課,每次課2—3小時(shí)。課程中還包括1次測驗(yàn)、1次考試、8個(gè)實(shí)習(xí)編程、1個(gè)期末大作業(yè)。CS50采用大班級教學(xué)、小班級輔導(dǎo)。在哈佛大學(xué)的課程每次上課有800—1000人,在哈佛劇院上課。老師講課后錄制成視頻,放到網(wǎng)上,可供校內(nèi)學(xué)生及校外學(xué)生進(jìn)行觀看。除了上課,還安排了輔導(dǎo)時(shí)間。學(xué)生課下完成練習(xí),主要是編程題目,課程中給學(xué)生出的練習(xí)題目(Problem Set)如表4所示,可見大部分題目是開放性的,學(xué)生可以較自由地發(fā)揮。
2.教學(xué)工具。CS50課程內(nèi)容較多,講課速度也較快,這對學(xué)生的掌握內(nèi)容還是有一定挑戰(zhàn)的,所以教學(xué)團(tuán)隊(duì)提供了較多的教學(xué)工具及線上線下支持。用于學(xué)生的工具包括:CS50IDE(在線的集成開發(fā)環(huán)境)、help50(幫助文檔)、check50(程序檢查及建議)、debug50(調(diào)試工具)、style50(格式檢查)、submit50(作業(yè)提交工具)等。甚至還有C語言與Scratch語言相轉(zhuǎn)化的工具。用于教師的工具包括:check50(程序檢查及建議)、style50(格式檢查)、render50(在線語法加亮)等。還提供了一個(gè)平臺(tái)cs50.me,用于教師批改作業(yè)、添加評語以及師生之間的互動(dòng)。
3.教學(xué)資源。由教師團(tuán)隊(duì)及助教對課堂錄像及教學(xué)素材進(jìn)行編輯整理,并提供給學(xué)生豐富的教學(xué)資源和素材。在教學(xué)視頻方面,包括:課堂錄像(提供多機(jī)位及全景視頻)、字幕、筆記、程序代碼、幻燈片等。還由助教錄制了一些補(bǔ)充講解的視頻(稱為shorts)。
對于練習(xí)題目,除了給出問題外,還給出規(guī)范、指導(dǎo)等。還給教師團(tuán)隊(duì)提供題目的解決方案以及詳細(xì)的評分規(guī)則、打分量表等。
4.教學(xué)活動(dòng)。除了常規(guī)的上課、練習(xí)、答疑等常規(guī)教學(xué)活動(dòng)外,每學(xué)期還舉辦事件性的活動(dòng)。包括:(1)CS50 Puzzle Day,類似于“面對面選課”,每學(xué)期前進(jìn)行,會(huì)發(fā)一些宣傳材料,提供一些問題和解決方案等。(2)CS50 Hackathon,編程馬拉松,每學(xué)期中后期舉辦,將有較高熱情的學(xué)生組織起來針對一定的任務(wù)進(jìn)行項(xiàng)目編程?;顒?dòng)一般會(huì)從頭天晚上延續(xù)到第二天早上。(3)CS50 Fair,編程集市,每學(xué)期期末舉辦,學(xué)生可以展示他們的程序作品并交流,還會(huì)請一些外面的公司(如微軟等)來參與。(4)CS50 Coding Contest,校際的編程比賽。
從以上活動(dòng)來看,這門課的內(nèi)容是十分豐富和多樣的。
三、CS50的推廣
CS50在美國國內(nèi)及全球產(chǎn)生了廣泛的影響力。CS50除了在哈佛大學(xué)內(nèi)部、聯(lián)合耶魯大學(xué)開設(shè)外,還通過以下方式進(jìn)行推廣。
一是CS50x,即在知名的慕課平臺(tái)edx上開設(shè)專門的課程[2],該課程可以被其他大學(xué)采用,也可以供社會(huì)學(xué)習(xí)者自學(xué),其作業(yè)提交期限是12個(gè)月,以方便自定進(jìn)度。該課程注冊的學(xué)習(xí)者人數(shù)已超過100萬。
二是CS50AP,即大學(xué)先修課[3],主要針對各個(gè)中學(xué)進(jìn)行開設(shè)。AP課程是在大學(xué)課程的基礎(chǔ)上進(jìn)行了精簡和一定程度的改造,分為9章,內(nèi)容包括7個(gè)重要思想、24個(gè)理解知識(shí)點(diǎn)、44個(gè)學(xué)習(xí)小目標(biāo)、312個(gè)關(guān)鍵知識(shí)語句、6個(gè)計(jì)算思維實(shí)踐、數(shù)字創(chuàng)新活動(dòng)以及1個(gè)考試。采用了該AP課程的中學(xué)超過150所。
該團(tuán)隊(duì)還歡迎其他學(xué)校使用該課程。使用方式有兩種——adopt(直接采用)或adapt(修改后采用)[4]。在北美和歐洲有較多的學(xué)校采用了該課程,其他地區(qū)也有學(xué)校正在或?qū)⒁捎?。每年還在哈佛大學(xué)及其他地方舉辦研討班,來自美國及其他國家的中學(xué)教師、大學(xué)教師參加研討,擴(kuò)大了其影響力。
四、CS50的啟示
CS50作為哈佛大學(xué)本科學(xué)生的計(jì)算機(jī)基礎(chǔ)課程,不僅在本校成為最受歡迎的課程,而且在校外也具有廣泛的影響力。這對于我們國內(nèi)的計(jì)算機(jī)基礎(chǔ)教育來說,有較大的啟發(fā)意義。
1.教學(xué)內(nèi)容基礎(chǔ)全面、突出計(jì)算思維。在教學(xué)內(nèi)容方面,可以看出其基礎(chǔ)性,突出計(jì)算思維,突出計(jì)算基本原理(Computer Science Principles)和計(jì)算機(jī)科學(xué)的最重要的7個(gè)思想(seven big ideas),在內(nèi)容組織上,將計(jì)算機(jī)基本概念、程序設(shè)計(jì)語言、數(shù)據(jù)結(jié)構(gòu)與算法、網(wǎng)絡(luò)、Web前端與后端、人工智能等融合在一起,注重讓學(xué)習(xí)者對計(jì)算機(jī)科學(xué)有全面和整體的把握,真正將計(jì)算思維落到實(shí)處。
另外,值得學(xué)習(xí)的是,其教學(xué)內(nèi)容也是隨時(shí)代在更新,如在講應(yīng)用系統(tǒng)時(shí),將Web的前后端開發(fā)放到突出的位置,編程語言之一php改成了python,人工智能的內(nèi)容近來增加了機(jī)器學(xué)習(xí)的內(nèi)容。
2.課堂教學(xué)靈活生動(dòng)、教師富有激情。在課堂教學(xué)方面,主講教師David J.Malan在講課時(shí)富有激情,講課語速很快,課堂互動(dòng)熱烈。如講解二進(jìn)制時(shí)使用實(shí)際的電燈的點(diǎn)亮與熄滅,講解二分法時(shí)手撕電話簿,講解算法時(shí)讓學(xué)生參與食品的制作過程,講解排序時(shí)讓學(xué)生直接參與排序,在講解人工智能時(shí)還請來了機(jī)器人,這樣生動(dòng)的教學(xué)方式,讓學(xué)生印象深刻。
3.豐富的教學(xué)工具、全程的教學(xué)支持。教師團(tuán)隊(duì)制作了豐富的教學(xué)工具,如上文提到的集成開發(fā)環(huán)境、格式檢查工具、調(diào)試工具、幫助文檔、作業(yè)提交平臺(tái)等。還給學(xué)生提供了豐富的教學(xué)過程支持,如答疑、輔導(dǎo)、作業(yè)點(diǎn)評等。組織的面對面選課、編程馬拉松、編程集市、編程競賽等,豐富了教學(xué)過程,也給學(xué)有余力者以更好的發(fā)揮。這對國內(nèi)的計(jì)算機(jī)設(shè)計(jì)大賽也有借鑒意義,即如何將比賽與課程教學(xué)活動(dòng)較好地結(jié)合起來。
4.極大的教學(xué)投入、強(qiáng)烈的品牌打造。這門課的教學(xué)團(tuán)隊(duì)有80多人,其中有全職教師12人,還有很多助教。教師安心教學(xué)、專心教學(xué),投入全部精力研究教學(xué)內(nèi)容、教學(xué)方法,制作教學(xué)視頻,研發(fā)教學(xué)支持工具,使得課程不斷積累和進(jìn)步。
還有一點(diǎn)特別值得國內(nèi)的同行們借鑒,就是課程團(tuán)隊(duì)十分注重品牌的樹立,其教學(xué)過程、教學(xué)支持工具、網(wǎng)站群中都注重名稱的統(tǒng)一、內(nèi)容的精細(xì),在慕課和大學(xué)先修課程的推廣、研討會(huì)等各種場合都體現(xiàn)了濃濃的、獨(dú)特的CS50品牌特色。
參考文獻(xiàn):
[1]CS50 at Harvard,https://cs50.harvard.edu.
[2]CS50x Introduction to Computer Science,https://cs50.edx.org.
[3]This is CS50 AP,https://ap.cs50.net/.
[4]Bring CS50 to your school,http://cs50.org/.
Introduction and Reflection of Harvard University Computer Science Course CS50
TANG Da-shi
(School of Electronics Engineering and Computer Science,Peking University,Beijing 100871,China)
Abstract:Harvard University Computer Science Course CS50 is a well-known course.This course teaches students how to think algorithmically and solve problems efficiently.This paper introduces the outline and syllabus of the course,and how it is promoted to all over the word.Comparing with the courses on fundamental computer science in China,we should improve teaching and learning,such as concentrating on teaching the basic knowledge,emphasizing computational thinking,making learning interesting,providing bunch of learning tools,and binding brand as well.
Key words:CS50;fundamental computer science course;computational thinking