>>大衛:歡迎您,我的名字是大衛馬蘭,這是CS50。而且,這不是典型的高中計算機科學課程。這當然是有點與眾不同。它不是因為我教了。這是因為這是一種,我們想的,那些罕見的課程,其實你的大腦擠出這麼多,你的日程安排這麼多,到學期結束時你真正感到更聰明。所以,這是我的感受時,我自己沿著這條道路早在1996年。我是政府的一個主要居住在這裡的時間在馬瑟樓。而且,一 [打氣]由於是外,其他五人那裡。所以,我是政府的一個重要的時間。而我是政府的一個重大,因為我一直喜歡歷史。我喜歡的憲制性法律在高中。所以,我這條道路上設置了新生今年做什麼我做最好的,做什麼我知道我很喜歡。而且我一直是位一怪胎,我總是胡說電腦。不過,我自己,也許具有諷刺意味的回想起來,我總是看的傢伙是誰到計算機科學在我的高中,我的朋友,真正的愛好者。然而,最後終於,大二一年,我借這個小門叫CS50,實際上我把我嚇壞了自己的大學一年級。我是一個用戶在當時的助理。所以,我肯定已經提前出線,至少要在這些,那些野人誰取笑我在高中。不過,我很害怕。目前,它有這個名聲在當時,也許還部分,這是一個,這是一個可怕的過程。這是一個很大的工作。這很難,但,這是一個人的東西在那裡,我的上帝,樹皮要遠遠低於其咬。我發現自己二年級,第一次,發現其實功課的樂趣。而且我不是說這只是在球場本課程給你。這是一個真正實現了我。現在,我認為,在一個點,我沒有過線,在那裡我真正geekdum實際使用期待週五晚上,因為我可以捲曲在前面我的小MacBook和工作CS50的習題集。因此,在這一點上,我認為我已清楚越線。而且,在這個過程中我們的目標不是把你們所有的人到該人,但,只是說有一個特殊的小東西這個過程中,少了一些特殊的關於計算機科學的一般,尤其是這些天。而且,越是馴化我們都鑽進技術,更多的玩具,我們在我們的口袋裡隨身攜帶,是自己的計算機。我的意思是,我的iPhone實際上是一個更高性能的筆記本電腦比我上大學。你可以做很多事情的整潔與這些東西。現在,我們大多數人在這個房間,可能只需要使用其他人的軟件,其他人的工具,其他人的解決方案的問題,因為我們到iTunes中,我們下載一些應用程序從 App商店和沃拉我們可以做一些確實整潔。但是,通過在本學期結束時,你可以成為解決問題的人這樣做。你可以成為一些人解決問題,建立該應用程序,這一塊的軟件,該工具,或者說,一只是使我感到有趣,娛你。例如,控制,說,你和你的iTunes資料庫從房子顯然是已經存在的應用程序,或者你可以更容易地找到班車時間表的實例。所以,事實上,其中一個很第一件事情我沒有服用CS50再次,它可能是在這一點上週五晚上和週六晚上,有這個機會,當時在哈佛穿梭巴士運行。而且,為了這一天,他們還印製時間表。但是,確實沒有辦法網上找出下一次航天飛機的。現在,我不在乎,因為即使我住在馬瑟我不是一般發生在那些誰穿梭。但是,我有很多朋友在Pfoho的實例。而其中一人問我,我認為在一個點。 [打氣]好吧Pfoho的明顯優於馬瑟。所以,我的一個朋友種,讓我想也許我可以寫一個小程序來樣幫助我的朋友檢查航天飛機的時間表。就這樣誕生了名為穿梭男孩笨拙地,這件作品的詞彙已徘徊在一些年數至少在一些高年級。在當時,這是這個小命令行程序類似的精神到DOS。這是運行在UNIX環境。因此,它不是很性感的。你剛才輸入的一對夫婦的命令,它告訴您,當航天飛機進行。那麼,這些天這是一個更複雜一點。而且,它實際上代表了精確的類型的項目,學生在課程結束時通過了決策任期屆滿。所以,這是版本4,大約 15年後,Shuttleboy。谷歌地圖似乎正在那裡有點慢。但是,對於那些你誰必須離開這裡課後去,說,從紀念館,需要去到,也就是說,四。嗯,你可以在兩分鐘內,如果離開了,這實在是不適合您只是還沒有,或者你有很多其他選擇,你可能會喜歡的。此外,即將推出,我們可以從 CS50這個球場,這將是同樣的功能的短信。您可以通過電話文本Shuttleboy。你可以Shuttleboy。 CS50的電話號碼,今年好,這是令人驚訝地可用,617 -臭蟲 CS50。所以,這將問世。所以,不要打電話只是因為我還得到譴責,現在它的被發送到我們的系統教學研究員頭的手機。所以,你就把他,如果你有問題現在對航天飛機的時間表。但是,這將很快得到實施。因此,其他的事情,其實,我們自己用了這個夏天真的在準備這學期是一大堆其他問題,我們要解決的問題。例如,有一個很多的東西,接著在這個校園在某一天。而事實上,把另一種方式,還有一大堆的東西要在這個校園,我絕對不會利用。而且,即使我現在不知所措了多少事情正在進行,校園,我似乎仍然沒有找到時間。但是,沃拉,即使在那裡,CS50的演講。這就是你的,所以這是一個,這是一個總計劃,我們寫信給所有的活動在校園裡。這一點已得到的東西,其他的學生在同一期間已處理自己。而且,我們正與其他實體在校園要真正做到這一點。但是,指向CS50這個詞是所有這些小程序,我們一直致力於這是否一個還是一個聚集所有哈佛大學的新聞在同一個地方,所有的谷歌新聞,所有這些事情是有什麼被稱為 API的,應用程序編程接口。而這僅僅是喜歡說話的能力讓其他人,人們在這個會議室裡,實際上做了什麼不相同的數據。因此,到任期屆滿,如果您決定最終的項目實施有關的新聞或事件或地圖,以及我們,至少為 1個療程,將使所有今年更容易為你提供一個接口,一個樣的功能,可以這麼說,軟件,您可以使用您自己的項目中去超越的學生,也許已經在過去的時代,因為這個框架還沒有到位他們。再次,這一切開始,至少對我來說,大約 15年前實施 Shuttleboy。然後我通過電子郵件發送我的朋友肯在Pfoho。我說:嘿,你認為什麼?這有用嗎?他寄給列於 Pfoho公開名單和沃拉,所有這些年後,我仍然很顯然擠奶這一項目。而關於它整潔東西,這就是太像這樣的課程在工程和計算機科學,我認為這是一個有點特殊,是當你做你家的作品,當您做您的項目在這個過程中,你知道了其中的很多話,你就會放下,而不是真正使用了。但是,一些吧,你會的。而有這種真正強大的東西,至少對我來說,這實在令人興奮的事情,當你和其他的東西,人們實際上照顧,其他人不只是微笑,拍拍你的背部,然後就想對自己的生活。他們實際上在使用你自己的生活,即使是愚蠢的東西作為或作為簡單,只是當他們發現可以離開這裡趕上下一班車到四。因此,到任期結束,這只是一個目標這門課程;在授權你們剛才找出一些問題,無論是在校園內或希望遠遠超出了校園,並實際使用自己的技能,你自己的思想和解決這個問題在一些部分技術。因此,這也是一個過程,因為我們說的教學大綱和課程的官方說明,教你如何思考,它教你如何更有效地解決問題。那麼,是什麼意思?那麼,當你有600兆赫在你的口袋或3千兆赫在你的辦公桌在家裡,你可以解決很多問題,有效地剛剪蠻力。但是,還有很多問題在這個世界上,無論是搜索,例如,Facebook的網絡或互聯網通過谷歌,沒關係有多快你的特定的計算機上,有沒有辦法在地獄你要去搜索數十億的網頁,除非你確實迅速處理這一問題的智慧。你不只是搜索,例如,一個巨大的名單的所有地球上的網頁自上而下尋找的東西有關的任何搜索字詞你要找的大概希望谷歌和谷歌和Facebook和任何這些大型實體有很多聰明人思考他們如何能更快地查找數據,如何能更有效地處理信息,以及他們如何可以只返回結果通常更快,讓你可以做,但更為有趣的東西與這些設備。因此,我們的意思是什麼,但通過如何,教人如何思考更仔細,更複雜的運算。那麼,這個小視覺似乎總是一個好做法。而且,這似乎是令人難忘。而我什至問就在昨天由以前的一個學生,哦,你打算做的事情再次電話簿。而我幾乎當場決定好嗎相信我們將建立一個電話簿的事情。他問我,當你撕掉它一半,我也一樣啊,我們在技術上它撕了一半的方式而不是在計算機科學的方法,我將能夠顛覆這個東西了一半。因此,這裡是我們的問題,提出了一些時間。所以,這裡的電話簿。它有至少一千多頁。而手頭很簡單的目標是找到真正的世界,也就是說,一個人在這裡。因此,邁克史密斯,姓氏開始與 S.所以,我是一個典型的人,我接了這個電話本。和任何人在那裡,你會怎樣,一個典型的人,也開始尋找邁克史密斯,顯然不是事先知道,其實他是頁。對,所以你去大約在中間,右。而在這一點的故事,我可能是在N的或M的,你知道,大約有一半的方式通過電話簿。原來,我最後一次做這個例子中我發現自己有點在護送部分。因此,它實際上是一個不均衡的關係,通過 M和N到Z但是,今天,我們是,事實上,在M的,沒事的話,現在我在M的。但是,什麼是我的外賣現在就像一個正常的人過街的?我在哪裡去下一個邁克史密斯。 [聽不清]因此,只要可能在今年上半年,右,因為 S之前,米就這樣,就在這裡視覺戲劇。這不是真的撕毀它的一半,正確的。我種被騙了該中心。但是,我們現在知道,邁克是至少在一半。我們可以從字面上扔一半的問題了。而我留下的問題的根本還是一樣的東西,找到邁克史密斯在一個真正的大書。但是,問題是現在的一半。如果它有1000頁之前,現在它有500個。你知道嗎,我可以做同樣的事情了。我可以種遞歸或反复做同樣的事情。現在,我不太在南我在噸於是,啊,我有點過分了。不過,我現在知道,邁克是不正確的,但將是一些地方級的有一天我無法撕裂大壩的事,我敢打賭。但現在,我知道他不正確的。所以,現在問題已經進駐。所以,我已經從一萬到500至250頁。再次,如果你繼續的邏輯,繼續進行數學,這個問題我砍了一半,一半,一半,直到最後我要么不找任何史密斯在所有不可能的,或者我要去找到一個我要找的。但是,這一點,那麼,引出了一個問題,這是任何優於簡單的辦法只說,你知道,阿,不,乙,不,開始從左至右將通過線性書?嗯,是的本能。這將是一個快得多。但是,如何少得多?嗯,如果我有1000頁的電話本或假設為 1,024人,你們誰喜歡兩個權力,有多少時間,我有可能分裂這個問題在半年前發現史密斯先生? >> 10。 >>大衛:那麼,10,正確的。如果你有1024個網頁,你將它們分割了一半,一半,一半,一半,我做我的10倍,這意味著從 1000到網頁的人,我正在尋找在短短的10頁轉。這就是一種整潔,但是,你知道,如果你想想,你一直在做這一切的你的生活。這不是戲劇化了。但現在,該電話簿不只是波士頓,它是為整個美國甚至整個世界,這事已在數十億的網頁,所以想像一個有40億頁的電話簿。多少翻頁我將不得不做最大限度地找到邁克史密斯在40億頁電話簿? >>“註銷基地2。 >>大衛:那是啊,如果你是那種類型的數學基礎,這是兩個日誌。但是,如果你認為 40億到20億到10億,所以50億美元。我的意思,實際上去惠特爾斯本身相當非常迅速下降。事實上 32 halvings的電話簿,甚至從 4億元,我會坐下來一頁。這就是當這個東西變得強大,我想。這時候,這些想法得到令人信服的時候可以有一個 40億頁的問題,在32個步驟,你可以找到你要找的人。因此,這就是我們的意思,當我們說,你將學習如何思考更仔細,更複雜的運算,解決問題,更智能。而當你的回報是巨大的,其實這樣做,再次,這一點在Google的世界Facebooks誰擁有豪華有巨大的數據集。你必須在這些問題的辦法,否則這種方式的根本行不通的。那麼,什麼是什麼,學生實際回收?我,我們喜歡做的事情是有點傻有時樣的採取關閉的邊緣是什麼否則很多新的材料。因此,他實際上,這個前學生送我這個鏈接,我一往直前,只是踢,然後後悔,最終將車停在uTube這裡。所以,我以為我會分享一個非計算機科學家的手段時,他的眼淚一電話簿了一半。 [笑] [沉默] [聽不清] >>您know over 200頁,好乾淨的線,合法的眼淚。 [笑] >>大衛:所以,我想,他的工作方式了。因此,我離開了這門課程的所有這些年來是肯定的,Shuttleboy,然後是在計算機科學學位,然後是一個計算機科學博士學位。這不是我們正在試圖把大多數學生在這門課程進入。大多數你在這個過程中不會去一主修計算機科學。你可能會小一些,但對一些你這將是一個終端的過程。這也無所謂,因為這當然是,事實上,結構化的方式在那裡,即使你只需付你費了好幾個月,你真的焦點,你真的拿那麼多出這當然可以,你會在事實上,擁有良好的配置回到你的世界經濟學,生物學,心理學,應用數學,實際利用有趣的是什麼最終成為一門課程,因為我們希望從概念,因為它基本上是可行的。這也是值得的或許有點難得找到。我以為我會分享一些意見,學生從去年秋季在過去這幾年放在線索引導當被問及你想告訴未來的學生。好吧,如果你還沒有看到這樣的評論,一學生說,這當然需要一個公平的金額將您的時間了。但是,如果你把你的工作成為一個全新的世界,一個整體,如果你把工作,如果你把工作納入,好吧,這是他的語法不是我的,所以如果你把,把在工作,一全新的世界將開放給你。令人驚訝的多少,我知道只有12週。另一名學生說,你最好採取這種或你會後悔的。另一個說,有點不客氣,它會踢你的屁股,讓你感覺很好。然後最終,這一個或許是我只能顯示文字,但倒數第二位在這裡。 [笑],所以我不知道你有很多朋友誰參加這個課程,但我們種做了很多損害去年的學生。我們介紹,在一開始,一些講座,一些小測驗,一對夫婦的問題集,這一概念的lolcats。你看不到我可以在這裡看到,但在一個時刻,你會看到一個小伙子高興貓誰是領導者的所謂 lolcat。這是一個愚蠢的互聯網前鋒,我認為坦白了這兩個紳士之間的對立在這裡和我們現在有可能是在屏幕上。 [笑]一個最不恰當的利用該劇院至今。 而且,我們為什麼不多賺一點多一點個人的真實這一概念實際解決問題的效率。一個簡單的問題在一天之內的任何學校,是坐下或站立起來,開始計數的學生,點名的各種權利。那麼,最幼稚,但仍然非常正確的做法,老師可以採取一,二,三,四,五,六,七,我們會在這兒相當一段時間。那麼,什麼是邊際改善,甚至在此,你可能做的孩子嗎?您是如何計算的人快?而且,不要離開我開始閱讀自己的指令?你會怎麼做的孩子嗎?三三兩兩地開始計數,右,所以我很喜歡擅長二,四,六,八,十,十二。所以,這事有趣的權利。因此,有多少的改善,是嗎?因此,它顯然是兩個因素。我現在只要花一半的時間。但是,你知道,我們會發現這整個學期,大交易,如加快你的運行時間只需兩個因素,是不是所有的有趣,因為在這裡的計算機模擬世界是我的CPU我是一台電腦,以及赫克,如果我只是等待12個月,18月,我的電腦會按性質可以由數千兆赫茲我在我能夠得到更快的人在這個房間。因此,這些種,這些種樣因子的線性加速比兩因素三,甚至因子10,誰在乎?對,我們可以在硬件投入的問題。我們可以等待的事情了。我們可以發展得更快的機器。但是,理智,是的,這是一種聰明,但它並沒有真正從根本上改變問題。我仍然會從左至右,從前到後。這真的是相同的算法。但是,我向我們可以做得更好。我們可以做的比這更聰明,做根本是更快的執行情況。但是,為了證明這一點,我們需要你的幽默我們就某一個時刻。並且它在這一點我將在那裡和你說話少說話多。但我需要你一起執行第1步,這是如果您想幽默我們,請站起來。這裡的方向在黑板上,你知道的,好吧,你有一對夫婦坐下。那些你回來,我們去那裡,沒有問題。謝謝。因此,該方案在這裡是你面前。您現在的電腦執行這一方案。這是相當自我解釋在這一點上。是的,你應該是第一。怎麼做呢?對,很多你可能想這已經無論如何,第一年級。所以,想給自己,你是第一名。因此,第三步在這裡,對小康與人的地位,增加你的兩個數字一起,通過該款項,您的新號碼,我們會做完整性檢查。 [噪聲從人群]你知道我們有多少? >> [聽不清] >>無 [無聲]。 >>我們需要有一個答案的關鍵。 [沉默] >>是啊。 [噪聲從人群] >>大衛:在這一點上,算法應該結束了。 [噪聲從人群]也許我們應該去用我的方法,畢竟。 >> 43。 >> 163。 >>大衛:哦算術前面的300多人。 [笑]什麼是我們的最後統計將會如何? >> 180。 [笑] >> 1200。 >> 386。 >>大衛:386,和你的最後一站在?是每個人?你知道答案嗎? >>什麼? >>大衛:你知道答案是什麼?我們並沒有帶來一個答案的關鍵與我們的話,386其實就是正確的答案是第一次。 [打氣] [掌聲]這沒關係。 [掌聲]非常,非常很好做。那麼,什麼是外賣,因為這肯定覺得比我慢一點很簡單,但仍然非常正確的做法只是將 onesies和twosies和剛剛完成它由左到右。但是,我們真的只是什麼做呢?好吧,如果有大約,比方說,400你站在一個點,然後你的一半,非常快,從我看得出來,想坐下。所以,你坐在一半,我們就從 400到200再到100再到50再到25。因此,再次,有相同的分而治之的想法,我們曾與電話簿。同樣,我們與每個迭代的一半大小的問題,我們一半的話,我們也減少了一半。因此,從理論上講,你的算法應該已經遠遠超過我的線性方法,因為我的做法已經採取步驟或可能說 400如果我稍微聰明的200個步驟。但是,你會已經採取了少得多,直接從 400到200,100,50,25,13,6,所以不到十步,最後還是我的200或400。同時還有胚芽一個真正有趣的想法。是的,你只是做數學是什麼東西的一小對數對數的性質的基礎 2,我們分為兩個及兩個了。我們將再次討論這個後面的學期。但這是一個非常聰明的再次實施。而且,我們只是作表面文章的非常聰明很聰明的有效途徑的問題,我們可能最終解決。所以,誰是人民,如果你只是簡單地聊天?在一個共同關心的當然是這樣,每個人的左側你和每個人的權利,你必須比你更清楚地知道。那麼,這絕對不是這樣。而事實上,近年來,本課程已作出協調一致的努力,接觸到那些不舒服,可以這麼說。並說,我們的意思不是人誰從來沒有摸過電腦前,因為這真的很難在這裡找到這些天,但人們誰使用電子郵件,使用Facebook,甚至現在,但卻不一定完全知道該怎麼辦時出了問題,或當他們被問及什麼技術,你知道,手中的上升或推動他們種的硬件給朋友誰是可能更熟悉它比。那麼,這些都是一些統計數字從去年的學期。所以,當記者問,當我們問我們的400名左右的學生最後一年,你知道,你有什麼級別的舒適度來為這個類,以及34%說自己跌,其中不舒服。所以,如果你到這間屋子,還以為現在,你知道嗎,這個詞形容我不舒服,要知道你是在非常好的公司。但是,也意識到,如果你是來學習這門課程與背景在計算機科學,你真的是野人在初中和高中誰寫的代碼和教學自己的語言,清楚,也沒關係,因為那裡肯定是一種非平凡大小觀眾以及與此背景下,約 13%,最後任期。然後,還有其他人一樣,那樣的人誰不認為他們就不太舒服,他們絕對不會認為他們更舒適,但他們只是在一個過程中得到的東西走出來。因此,實現這一過程中確實提請相當頻段的學生。而且,為了把這個更具體而言,71%的學生,去年,他們身後有為零的課程。所以,如果你想進入這個課程哦大家誰需要CS50是計算機科學迷在高中時,它並非如此。大多數人都感興趣的大概只是它。和一些,是的,絕對採取了一些課程,一些,或者至少一人去年曾採取了5門課程。所以,我們絕對有一些異常值,但再次肉類的曲線在低價值的完全。而另一個有趣的統計,在過去,我們共同的夫婦是多年的性別比例。因此,歷史上,至少在計算機科學,有位男女偏差。我夫婦 20年前,遠高於去年更為明顯。所以,我們現在幾乎在40%的水平。如果我能丟下一戰書只為有三分之一為了餅圖明年,這更公平。我要指出,但絕對沒有理由從課程的角度來看,男性和女性不應該報名參加本種課程。在相對平等的數量和實現百分之38,百分之48,我們實際上很高興地看到,我們幾乎在,至少,統計學甚至價值的50%。所以,如果你是,事實上,女性,不放心,這不是太,事實上,一個男性主導的階層。那麼,這恰好是CS50的20歲生日。我,也謝謝你。 [打氣] [掌聲]這是非常漂亮的你,因為我們為您帶來的蛋糕實際。所以,當您退出今天晚些時候在這裡,您將真正有機會見到很多的課程教學研究員誰就會在走廊裡徘徊。是的這將是一個很好的排序方式的誘因會議教學研究員。但是,我們要旅行到一個小麵包店,又符合該課程的天性,而仍然期待著平凡的工作的數量,而我們遇到的樂趣。但是,我們有一個為你的這些蛋糕。 [笑]所以,如果你笑這實際上是一件好事,因為即使你是其中一人不舒服的,至少你知道它。那些你可能在百分之14喜歡這個味道。 [笑]然後,如果你不知道到底是怎麼回事,現在,我們也有這個其餘的你。 [打氣] [掌聲]所以,那些被切碎成片以外,因為我們說話。所以,再一次讓我們的事情了一個檔次,至少介紹一些基本的租戶,我們會再採取授予本學期的剩餘。所以,大家都可能知道,電腦最終都可以歸結為 0和1以某種方式,這些東西叫做位。這是什麼意思?那麼你可以把它作為一個燈泡坦白,1位是一個燈泡這無論對或者它關閉。這是一個開關,它無論是在或者它關閉。現在,計算機科學家普遍認為場外任意作為數字零和,以及對作為一個概念。所以,如果你扔一個電燈開關上就有1人將它關閉這是一個零。或者,等價地,打開光就這就是真正的價值將其關閉這虛假的價值。因此,這些只是同義詞。在最後的一天,是的,所有的計算,所有的東西,接著在引擎蓋下的一台計算機並最終歸結為 0和1。而且,當你停下來想一想,這是非常顯著的大壩,世界做了什麼與這些基本構建模塊,包括一些設備你拿在手上。那麼,為什麼是零和的有用嗎?我的上帝,即使在現實世界中,我們至少有10位,0到9。為什麼這麼有限?那麼在硬件方面也非常容易。這是非常容易的代表兩個國家,正確的。如果計算機插入牆上,通常,你有這種簡單的二元性的來源。它或關閉。電力是流動的,或者它不是。所以,這是一種最初的原因之一,全世界只有到計算機中0和1。但是,你可以用它們作為基石。所以,這其實是一個有點小屏幕上這裡,但我們能指望我們可以以二進制或代表我們想要的東西,正如我們在二進制可以說,十進制,正如我們可以,即使在事實上,按字母順序排列的字母。因此,這裡的快速系統。在短短幾分鐘時間,你現在知道如何計算,如何編寫,如何說話二進制很像自己的筆記本電腦。那麼,您在世界的二進制,有點像小學列或值。因此,在小學這是我們學習的列,這是幾十列,數百列等等。換句話說,為什麼我們知道的數字編號為 123的123?嗯,我的老師教我,這是那些列,這是幾萬,這是數百人。那麼什麼意思呢?嗯,找出總價值是什麼,否則該字符串的數字,只是在黑板上哈希標記。那麼,我們有一個 100,所以這是1次100,然後再加上什麼二10的這樣的2倍十加三的,所以這 3次1,好吧,我似乎已經得到了回在那裡我開始。但是,這個過程很簡單,只是數字乘以由值列正是二進制是一回事。但是,在使用權力的二元兩個不到權力 10。所以,這裡的一系列8燈泡。計算機科學家喜歡用價值觀就像兩個,8,16和24和32,因為他們都普遍價值觀方便使用。所以,當我們談論 8值序列,這是像稱為字節。而這些日子,我們很少談論在短短字節,兆字節和我們交談 TB的這些日子。但是這一切都最終同樣的事情。這裡的8位外號一個字節,只是簡單的術語。因此,所有這些燈泡是關閉。因此,數學其實是很容易的。因此,在正確的,儘管它的小看到的,是一個人的列,兩歲,帶 4的八分,在16秒,32秒,矮64S,128s。好吧,也許很難記住在第一,但它只是乘以2由右至左。所以,你可以隨時重新創建此。嗯,他們都掉,這樣的佔位符0次,0次的佔位符。所以,這是數字 0代表二進制。換句話說,你怎麼知道我們寫的數字為 0的二進制?嗯,一,二,三,四,五,六,七,八,並在技術上十進制一樣,所有這些前導零,他們不添加任何的公式,它們僅僅是因為我們有我們隨便決定希望這些東西八個一排,正確的。如果他們是實物,我們有8所以他們還得全部關閉。因此,我們可以取消剛剛得到一個零。那麼你怎麼代表第一?那麼,你會本能地拋出一個開關。你會變成一個燈泡上。因此,有數字 1,因為我們現在把一張一合,一個燈泡是對在一個人的立場。我們如何去代表兩個?那麼,我們究竟要拋出兩個開關至少目前還是這種狀態,我們必須打開兩個專欄關閉那些列,現在我們有一個價值在兩歲列。所以,這就是總價值 2。現在,一個快速的精神運動;什麼將要發生的下一個順序?我如何目前排名第三?嗯,我需要一個從兩歲列,一列從三三兩兩,阿公頃。所以,現在我已經是一個遞增。而現在,重複同樣的基本格局。什麼是數字 4?那麼讓我們來看看,我只需要一個在四肢列,然後在兩歲零和的。那麼,它繼續這樣。而且,這只是這個序列的步驟。而在概念二元真的沒有那麼複雜。在我們的上方有8個零。下面,我們有七0和1 1。下面,我們有6個零,1 1,0和1,這就是二進制。 Now, thankfully, we computer scientists, we programmers by terms end are not going to often be writing in binary, talking in binary, thinking in binary because we've built many layers of the traction on top of that. In fact, people rarely talk about bits except in a networking context they talk about bytes because one bit, not that useful, eight bits these days still not that useful, but at least eight bits, one byte is at least getting us toward more useful units of measure. But, when we start looking underneath the hood, when we do certain problems such as look at files and look perhaps at network traffic, it will become interesting to know how you're representing data because you're going to have to figure out how to display that same information. And, in fact, we, if we only have zeros and ones, how do we go about representing, say alphabetical letters? Well, we're going to have to have some mapping between binary and letters. But that's as of yet unclear. But to hammer this point home and to give me a break from speaking at, I thought I'd pause for a moment and see if we can't recruit eight volunteers, one byte eight people. Can I get eight people for whom it is not too awkward to come on up. good, good one, two, three, four, five, six, seven, eight very enthusiastic eight, come on down. So, you all, for just a moment here, oh and you have to be willing to not be on the internet because there is in fact a camera in the back of this room. So, turn back now if you don't want to be on the, hello mom, in perpetuity. So, let's see, you here will be the 128th column. And let me ask that you simply hold this before you. And actually, if you could scooch this way just a little bit, then I will get out of your way. You'll be the 64's column, you shall be the 32's column and the 16's. 32's, 16s, 8's, 4's, 2's and 1's. All right. So perfectly lined up with the place holders from before, but we need a little bit of mapping, so a quick set up. We just need an arbitrary way of mapping binary numbers, which really could be converted very easily to decimal numbers. So we need a way of converting numbers to letters if our computers are actually going to show us emails or type URL's or actually display non numeric information. And, in fact, there is a system for that, it's called ASCII, an acronym whose meaning is not so interesting, but whose utility is. This is just a mapping from letters to numbers and there's actually a lot more numbers on the screen, and you guys, don't worry, aren't going to have to test yourselves with this in just a moment. But there's a mapping between numbers and letters and I'm just going to get us started by pointing out a couple of these. The numbers of interest right now are going to be, whoops, are going to be this. Whoops. So in this column here, I can't seem to zoom in simultaneously, we have decimal. Dec for decimal. And then we have the character on the right hand side. So if I hop over into this column, thought it's a bit small on the screen, the number 65 represents what letter? Capital A. And the number 97? Lowercase A. All right. So those two alone, right, so do not go home and try to remember ASCII chart. Come quiz time, do not try memorizing an ASCII chart. Memorize two, 65 is capital A and 97 is lowercase A. And from there you can bootstrap yourself to all of the other alphabetical characters. But all this chart says, and I just downloaded this chart from ASCIItable.com, this is a standard that's been around for many, many, many years, but most computers still use it. What we now have is a means of encoding alphabetical information using what's ultimately numeric. So if these guys are just switches, light bulbs, computers, we can actually convey messages. So each of you has some hints on the back. We're going to have three rounds here where these guys are going to spell out in English, in ASCII, a very short message, a three letter word. It will involve them either raising their hand, thereby representing a one or just standing there awkwardly, thereby representing a zero. So why don't we proceed immediately with round one and you can either raise or not raise your hands. So the audience doesn't get off the hook. What number are they currently representing? 66. Right. Not hard because we have a one, a hand up in the 64s column, a hand up in the 2's column. 64 times one plus two times one is 66. They're representing the number 6, which means the first letter is B. So not too bad, right? Round two. First letter was a B. [笑] >> Seventy Nine. >> David: Can someone second that? Yes. All right. So 79, which means it's now an O. So B,O. There's a third letter. Actually that is kind of, yeah. Third round. Third and final round. What number is this? I heard an 87. Someone else agree? All right, yeah. This is in fact 87, which maps to, and this is a very clever set up at which point you all B, O, W, it's bow. Very good. So actually besides that little souvenir, that was not a very enthusiastic applause, so I'll take care of you. So we do have a little something for these guys here now that they just appeared on center stage doing perhaps the geekiest thing they could. So maybe if we could humor them if only because I'm feeling a little bit awkward now. A little round of applause for these guys here. [ Applause ] All yours. All right. Thank you very much. So, so, it turns out that we can take this one step further, but you are now entering a community of people who understand things like this. [ Silence ] It's slowly spreading, yes? [ Laughter ] It's not cool that you understand this now. So we've already done some damage here today, but yes, there is now such a thing as geek humor that you might just catch a little bit more on to. So what are we going to do throughout this semester? So there's 12 weeks, zero index, so 13 weeks in total. You'll find throughout the semester that computer scientists tend to count starting from zero for reasons that will soon become clear. But what we're going to do this week, starting this Friday, is introduce you to programming. Now you may already be coming at this course with a background in the same, and that's perfectly fine, but we'll also be able to introduce some more sophisticated topics than are typically covered, things like events and threading, so just to toss out a couple of buzz words for those unfamiliar. But what we're going to do is not dive into what the typically traditional language like Java or C++ or C sharp catch phrases that you might have heard in the past, but we're going to use a programming environment, a graphical programming environment that was actually developed by MIT's media lab. And this is an environment that allows you to program, quite literally, by dragging and dropping puzzle pieces that fit together logically that lets you implement these things called loops and conditions and Boolean expressions and you can actually, on day one, after this Friday, write a program that actually some of your friends might care about. So in yester year, say when you've taken a computer science course in high school, odds are one of your first programs was the equivalent of hello world, like wow mom, I just made the computer type some characters on the screen. It's a very underwhelming experience. Much more interesting is it to implement a little something like this, as one of last year's students did. So I give you the work of a former classmate. It's a love story, of sorts, about dancing cookies. [ Music ] So this was actually from a student who had never programmed before. And just to give you a teaser of this interface, and we're only going to use this for one week time, really to get the comfort levels up and to really get folks excited about what you can actually make these machines do, this is an environment where you'll be programming by, for at least a week, just dragging and dropping puzzle pieces that fit together, as we'll see, in a logical fashion. And it lets you do fun, silly things quickly. And for any of you who are a little bit familiar with things like Java and C++, it's usually a good semester or two or three before you finally get to start writing something that another person might actually enjoy watching. Well, in week one of the course, or the second week, zero index, where we dive into a little more traditional environment. In this course we'll spend much of our time on a language called C. This is one of the earliest languages that, unlike Java, actually gives us much greater access for better or for worse, to manipulating hardware and actual memory, and we can do a lot of damage with that. In fact, any time you read of web servers being exploited or computers being hacked into, very often to this day it's the result of people having run software in a language called C or C++ without sufficient care given to what are called buffer overruns or lengths of arrays, so some fairly technical concepts that are not that hard to understand, but there's been a lot of humans making a lot of mistakes for years and with this language we'll actually understand some of those security implications. But each week, typically, we'll introduce also an interesting domain that will inspire that week's problem set. So we'll also take a look this week at the field of cryptology, cryptanalysis, the notion that you can encipher information in such a way that people can't read your messages, but if clever enough perhaps you can, in fact, crack what are otherwise secret messages. In week three we'll then look at some basic fundamentals of computer science like searching and sorting and we'll actually look at this notion of recursion, how to debug things. In short, we'll take things up to the level of problem solving and not so much about mere syntax and implementing short little cookie cutter programs. In week four we'll introduce more sophisticated problems still. What does it mean to manage memory? What does it mean to run out of memory? What does it mean to actually segfault, if you've heard this expression, and odds are you haven't, but very bad things happen and frankly by terms end you'll understand terms like my code segfaulted which actually is generally not going to be a good thing. But then again, we'll introduce some domain specific stuff. So actually one of my internships during graduate school was to work for the local Middlesex County District Attorney's office doing forensic investigations in a digital sense. The local Mass state police would bring to our office hard drives and floppy disks and sometimes for no reason mice and keyboards. And we would be tasked with finding evidence. Now it turns out, maybe just an FYI, that the criminals in Cambridge, Massachusetts, at least, not necessarily that clever. Very often our forensic analysis boiled down to booting the computer up and double clicking on the My Documents folder, and therein laid the evidence. But what we'll do this week is give you a sense of what it actually means to store information on a hard drive, on a flash drive, and why can't otherwise private information be disclosed to third parties when you drop off a computer to be repaired or even when you discard it. Well someone might very well be sifting through those hard drives and it's really not that hard to find data if you know how to look for it. Well, in week five we'll look at more sophisticated data structures, tools and techniques that you can use ala phone books and ala searching huge data sets much more intelligently. And the week's problem set will task you competitively to see just how fast the code you can write is and how little memory you can use. Toward terms end though we'll take things up to a higher level in terms of programming languages and put C behind us and introduce a web programming language known as PHP, one of the popular languages these days. Much of Facebook is still written in PHP, at least outward facing, and it's just a very easy language to learn quickly once you already know another. So with PHP we'll be able to solve problems and implement websites that do interesting things. The news site I showed you, the events site, the shuttle boy site, all of those all happen to be written in PHP. But by no means is that prerequisite. What you'll also find throughout this course is that you're not going to exit this course knowing C. You're not going to exit this course knowing PHP. Those are not interesting skills to claim, but knowing how to program, knowing how to use data structures and algorithms in an interesting way, that's a compelling story. Even I, all these years later, throughout college and graduate school, the only time I ever learned a language was probably in CS50 where it was still taught in C and CS51, which is one of the successor courses. Everywhere along the way since has been go learn this language and then work on this problem set because computer science is not supposed to be about here's a language, let's spend seven weeks teaching you where the semi colons are. There are much more interesting ideas out there. Databases, for one. And in week two we'll introduce you to this query language called SQL that'll allow you to store information in databases and actually implement some fairly interesting final projects. The week after we'll look at what's called client side programming, doing interesting things on a user's computer, taking advantage of their CPU cycles, doing things ala Google maps and these websites that actually use JavaScript, which is actually a language we'll introduce to let you do client side things, make more interesting, more sophisticated user interfaces, but at the end of the day have to be really mindful when implemented of a lot of sticky issues like network speeds, network performance and security. So it's not about again just coding something up that's fun to use or pretty to look at, but actually thinking about the design that'll be the interesting process. And then, the end result aesthetically will often be a really neat toy to show yourself or a friend. And then we'll look at hardware. We're going to take for granted that there are these physical boxes throughout much of the semester that will do what we tell them to do. But how are they doing that. So we'll actually take a peak under the hood and talk about what a compiler really is, what a CPU really is and actually consider what's making all of this fanciness from stupid YouTube videos on down possible. So what are the expectations? Attending lectures and sessions, completing nine problem sets assigned roughly weekly, two quizzes, the final project and there is in fact no final exam. Grades, it's always a question, broken down as follows here. You can take the course pass-fail. But let me say it here, and I've said it many times. I personally care relatively little about grades. I think they are a wonderful, well, they are a useful pedagogical tool with which to motivate and unfortunately sometimes de-motivate, but you'll find in this course that at the end of the day it's more about seeing how far you can go from weeks zero to week 12, as we say in the syllabus than it is about absolutely ranking all students in this course. So if you're coming into this course among those less comfortable, though a large demographic do not assume that that's automatically putting you in the lower third of the so called distribution. At terms end do I sit down with the TF's and discuss each and every one of the students. We take into account where a student came from, what kind of trajectory they were actually on and so at the end of the day please focus more on, and I don't mean to sound too grand, the process of learning and less on the numeric's. And you'll actually see that we grade problem sets, in particular, very coarsely, whereby along three axis, you will get a score of 1, 2, 3, 4, or 5, where 3, is in fact good. 3 is not C. 3 is good, 4 is better, 5 is best. But more on that as the problem sets are released. So the course's website is where you will find, as in most cases, a whole lot of useful things, if not silly things, too. And we have the luxury, as computer scientists of implementing it ourselves. So over the course of the semester you will see various new features rolling out. You'll find out over the course of the semester that the bulletin board is a wonderful place, certainly in the course of this size, to turn when you have questions about the problem set, questions about some computer science concept. You'll be able to check your grades, download all handouts in advance of lecture typically will I post the slides, if you're the type who wants to scribble on notes. But as you've seen, usually I shy away from long lists of details and more like pictures of cats and other visual cues. So you'll find, too, that we will provide printouts of code when we actually think it particularly advantageous to write right on the paper. Software, videos will be available, usually around 1 to 2 to 3 days maximally after each lecture. So the courses are being filmed and every lecture will go online in various formats including QuickTime and MP3's for downloads to iPods and such. And also you will find a link to download what we call the virtual terminal room, which as you'll see is related to virtual office hours. Books are expensive and in the computer world also not that useful. They are on the shelves of the coop, although we're told that last year they ordered like 120 books for the course and 30 were actually purchased, but this perhaps speak to the fact that there are places like Amazon.com, so if you are the type who actually enjoys the sort of support structure that a book provides, if you like to read up more than say a course's typical materials offer, by all means, procure one or more of the books that we recommend here and discuss more in detail in the syllabus. But realize there are so many resources that this course provides in printed form and electronic form, and my God, there's the whole internet out there. Books are not something that are required for this particular course. Lectures, in general, will be Monday's and Wednesday's, except for this Friday and next Friday, simply because of shopping period and Labor Day. So we'll meet this Friday, next Wednesday, next Friday, but there after this is just a Monday, Wednesday course. So this little visual cue here is to remind me that yes, we do distribute videos in QuickTime formats, MP3's, fun ways that you can, if you're actually this type, maybe in the 14 percent, watch a computer science lecture on your iPod, but it reminded me that at terms end last year, the course culminates in final projects, in which students can design most anything they want, and we actually had some students tackle some iPhone applications. Some one of these at least is now in the Apple store. It's called Rover. It's been adopted essentially by Harvard agencies and it's the iPhone version of the unofficial guide to life at Harvard. They did a brilliant job. I bring this slide up too, just to point out what other technologies might very well be down the road. Some of you may have seen this before, but just to give you a teaser of apparently what's in the pipeline, I thought I would offer this brief distraction here. [音樂] >> With the MacBook wheel, Apple has replaced the keyboard with a sleek, touch sensitive click wheel. Apple CEO Steve Jobs introduced the product yesterday at the annual Mac Expo. Senior product innovator says the MacBook wheel will make typing a thing of the past. >> At Apple our philosophy is create products that are simple to use and nothing's more simple than a single giant button. >> Gilman showed me how the revolutionary new computer works. >> Gilman: Just open the intuit-type alphabet menu here, scroll to the letter you need and center click to select it and click again to capitalize and repeat this process for each new letter. It couldn't be simpler. You could also let the predictive sentence technology complete the sentence for you. >> Gilman says the MacBook wheel has also simplified organization of files, so searching your hard drive will be a snap. >> Gilman: Just press both sides of the wheel concurrently and center click and there, you have an alphabetical list of every file on your hard drive. Everything is just a few hundred clicks away. >> Apple is calling the MacBook wheel the most intuitive product every designed. >> Here at Apple we like to think that we're giving customers features they don't even know they want yet. >> While the MacBook wheel won't hit the shelves for another 3 to 15 months, many apple users already have it on their wish list. >> I'll buy almost anything [inaudible] and made by Apple. >> Alex [inaudible] was one of the lucky few to get to try out a MacWheel and spent 45 minutes typing an email to his friend. >> I never really realized how much I hated keyboards until I saw this thing. >> I like how it automatically says, sent with a MacBook Wheel, so people automatically know you have one. >> With a price tag of just under 2600 dollars for the lowest end MacBook Wheel, it is an investment. But the super thin laptop features numerous innovations, like the new ultra thin hummingbird battery, which can power the MacBook Wheel for a fill 19 minutes before needing to be recharged and the computer is virtually unbreakable unless dropped or hit. But Apple isn't resting on its laurels, Bryan Gilman says they're already hard at work on the next generation of the MacBook Wheel, which will be four ounces lighter due to its lack of streaming hard drive or wheel. For the Ugly news Network, I'm Jeff Tate. >> Thank you for that, Jeff. It remains to be seen if the wheel will catch on in the business world where people use computers for actual work and not just dicking around. Moving on, police warn. >> David: So I've seen that thing at least a half a dozen times now, including once at like two a.m. last night and I was scrolling down on YouTube and literally like an hour prior, some guy in all seriousness posted, just a wheel? That's the stupidest product I've ever seen. [ Laughter ] And then the rants ensued in the thread thereafter. So besides lectures there are also sections and it is your teaching fellow and the course's course assistants that you will get to know very well over the course of this semester. Sectioning won't begin for a week or so's time. More on that in the lectures to come. But know that the course will have several different tracks of sections, much like First Knight's has for music. Sections targeted more at those less comfortable, those more comfortable and those somewhere in between. And we also offer most Sunday nights before a problem set is due on the following Friday is what we call code walkthrough's where one of the course's teaching fellows will lead a session targeted specifically at the week's problem set and will help you answer the question where do I begin, how should I approach this? And that too will be filmed and made available online and always linked on the course's website. So this course has a huge staff. Our staff is larger than Harvard's average class size. We have over 50 people involved in the production of this course on a weekly basis. Some of them teaching fellows who hold sections, grade work, hold office hours and more. Course assistants who are former students, who are offering on a volunteer basis in fact multiple hours of office hours in the computer lab per week. System administrators, folks doing all of our AV and video production. Someone who will actually be taking notes for you. So it is actually my opinion that scribbling down almost every word that someone like me says is not a very good use of one's time. It's much more interesting I think to actually engage with what's on the screen, what's being presented. And so what we will do as a course is post PDF's online within a couple of days of lectures of scribe notes, which is essentially an authoritative version of course notes, unedited, but documenting what went on in lecture that day, thereby hopefully freeing your minds and pencils from jotting information down. We have some of our team here. Most of our team is actually shopping courses. But if a few of your guys would like to come on stage for a moment with our head teaching fellow and assistant head teaching fellow. Allow me to ask the latter to say a quick hello. And as these guys come up in absentia allow me to say that also on staff this year besides the folks you see here are Alex, Alice, Andrew, Batul, Charlotte, Chris, Dan, Dan, Daniel, David, David, David, Derek, Dev, Didi, Doug, Drew, Erica, Fil, Glen, Greg, Janice, Jason, Jean, Jeff, Jesse, John, John, Jonathan, Jordan, Josh, Karim, Kelly, Ken, Kent, Kyu Bok, Lee, Madhura, Marta, Matthew, Michael, Michelle, Mike, Mike, Nathan, Patrick, Peter, Peyton, Rose, Saba, Sanjay, Shannon, Stacey, Ted, Wellie, Yair and me. So our course is teaching fellows and course assistants, Cansu and Yuhki, would you like to say a quick hello? >> Hi. It's definitely a great honor to be back here for the third time. And if you're one of those who are like less comfortable. [ Laughter ] I think I can [inaudible]. Okay. [ Laughter ] If you're one of those [inaudible]. There's no need to be afraid. I walked in here two years ago with no experience what so ever, and I thought that I was like dumb and I was sure that I was going to fail the class. And I came back for the third time. I did not fail the class. This course is great because it has such a good community. As you can tell by the names listed by David. All the CA's and TF's are here to help you. So if you have any questions at all, just come up to us. Not taking this class because it's hard is not a good excuse. So, hi. >> [Inaudible]. >> Hi, so well both as a student and TF, I've really enjoyed being a part of this course. And even though it's a course that requires a lot of work from you, we've put a lot of work in to it for you as well to make it as enjoyable and as fun as possible. So, we really hope that all of you stay and take part in this very special experience. >> Thanks. >> David: So you will find, thank you, all of you, you will meet them in the hallway in just a few minutes as well. So you'll find that this course, perhaps more so than many is very much a shared experience. This is not a competitive course. This is not your premed course. This is a course which ultimately yes is about doing independent work, as you'll see each week by way of the problem sets. But you can't help but to get close to someone when you're fighting with some bug and banging your head against the computer screen proverbially to try to track down some bug. And I think you'll find that past students will concur that you exit this course with a lot of friends among students and also on staff. So where does that happen? Well, within office hours in the basement of the science center there's some large computer labs and we pretty much take them over five nights a week. These won't start for some time, and this, to be honest, is perhaps the most beautiful picture of the science center I've ever seen. [ Laughter ] It does not look like that on the inside. But it is a place where a good percentage of students do choose to spend time to get one on one assistance with each of the week's problem sets. Each week we will offer more than 100 hours of assistance one on one in the science center per the schedule that will eventually go online. And for those of you who live, say in the quad, or in Mather, or who just don't want to trek all the way to the science center to ask that quick question, we also offer what are called virtual office hours, much like remote technical support where you'll be able to log into a glorified chat room, in which yes, you can type back and forth with a TF or a CA, but you can also share your screen or share control of your mouse with them subject to your consent so that they can help you troubleshoot any problem or any question you have remotely. To give you a sense of what's involved in the course, these are statistics from last year. So you will, I think it's quite fair to say, work your ass off in this course. But per my promise from the start, this is one of those experiences that I don't think a typical student regrets. If you flip through, for instance, the Q Guide forms that are all on the course's website, you'll find that only by putting in the time to a course like this do you really exit having felt like you got something out of it and frankly might very well even have emerged even smarter. So what does it mean to actually write programs and implement problem sets? Well, the first problem set last year, a quick retrospective here, was to implement your very own programming scratch. And we spend just the first week there, and the goal is to implement your own game or animation or art or anything that appeals to you. In week one, then do you implement some basic C programs to get acclimated to some more traditional programming environments at the command line, at Linux so you get comfortable with some of these basics that will certainly serve you well in the long run. Last year's Problem Set 2 was about cryptography. We gave students the opportunity to implement some ciphers, some algorithms that let them encrypt information. And we also offered some students the opportunity to do the opposite. Each problem set, many problem sets, as you'll see are implemented in two editions. A standard edition that we expect almost everyone to do, say 90 percent of the class. And then a hacker edition, which presents the material from a more sophisticated angle, expects perhaps a bit more clever work for those more experienced, and for this one did those students get handed in the hacker edition pre existing user names and passwords in encrypted form and they had to figure out what those passwords for. We actually got into trouble for this a few years ago because all of the sudden FAS Computer Services saw like 50 people running a crack program on nice.fas.Harvard.edu, so they now have been given a heads up for programs like that. Last year students implemented the game of 15. Not all that much fun to play as a party favorite, moving the numbers up down, left, right, but a real stepping stone to implementing something interactive that involves a human and the hacker edition for this one had students implementing God mode, which actually solved this thing for the human, maybe cheat mode is the more apt term, in Sudoku, which was a step up toward that, where we provided the students, you, with a framework with a whole bunch of code that you needed to first understand before taking things the final mile and implementing some of the remaining functionality. And then we dabbled in forensics and this grew out of a real world experience between me and a friend. For this problem set last year, this buddy and I, who he being a particularly good photographer, strolled around campus and we shot photographs of unique, non obvious, but identifiable places on campus. And this was using his digital camera. All of these JPEGs got stored on a digital flash card or what not. And then I accidentally formatting the thing, or erased it. Well, it turns out formatting something or erasing something, usually means neither. It just means doing a little bit of work to make the human think their data has been erased, when in reality it hasn't. It's just been forgotten. And so we tasked last year's students with writing a program in C to actually recover these photos for my friend. We gave everyone a forensic image, so to speak, a big file representing that compact flash card, and they had to recover the several dozen photographs. And they also had to solve this little murder mystery. We provided folks with this image here. Those of you who've seen this before might be doing that squinting thing right now where you're trying to look through the picture, well you look pretty awkward, because this is not a magic eye puzzle. This is just random red noise that actually has behind it an actual message. And it turns out, I think it was Colonel, let's see, I've got my little solution here. Last year it was Colonel Mustard in the study with the candlestick. And this was the murder message recovered by students who wrote code to do so. And then in Problem Set 6 last year. We challenged students with implementing the fastest spell checker possible. What do we mean by that? Well, we handed the students a big text file containing 140 plus thousand English words, and we said write a program that loads all of these words into memory, but very quickly and very efficiently can tell us yea or nay, is this document perfectly spelled or are there errors? And what we provided was a testing framework, a harness, that students, if they wanted to compete, could run their code against some benchmarks, against some testing programs that we wrote. And then, ranked on the course's website from fastest to slowest were the running times, the amount of time it took for each student's code to actually execute, complete opt in. It's by no means required. And we took a bullet for the team and made sure that one of our own teaching fellows intentionally, I think, was at the very bottom of the list. So, there was definitely a lower bound. But the odd, the funny thing was we saw this in the cue guide evaluation, this problem set of all things, was apparently the one that people sunk the most time into. Not because it took any longer than all the other p sets, but they would come back from like dinner, look at the board, and realize dam my friend, my roommate just ever so slightly inch higher than me and so it incentivized people if only to one up their friends and roommates. In Problem Set 7, last year, we asked students to implement their own E*Trade like website, whereby you had to create a website using that language call PHP a database called mysql that actually lets people log in and then manage a portfolio of stocks, buy stocks quote unquote, sell stocks quote unquote, get stock quotes. And from where? Well, we have the students; we had the student patch into Yahoo Finance where they grabbed merely the Real time stock quotes to actually simulate the process of buying and trading stocks. Unfortunately some students, perhaps some economics majors or just folks with too much free time figured out last year how to gain the system. So, even though we gave everyone 10,000 virtual dollars, I think our winner turned teaching fellow this year actually, right don't push them away make them one of your own, for a billion dollars something like that ridiculous. Turns out we weren't really checking whether or not people were trading after hours. And it turns out that also, Yahoo stalk quotes are not in fact perfectly Real time which means if you just have a real E*Trade account you can see the future and see where the stocks are going. [ Laughter ] So, apparently you can exploit that if you put your mind to it. and then, in Problem Set 8, the course's final problem set last year, we had students implement a mash up where they take Google News and Google Maps and mash them together using JavaScript, PHP and SQL in such a way that they had a website that they could find all of the local news from whether it's zip code 02138 or 90210. And, you would actually pull the local current even articles by this thing called XML and integrate it into the view of a Google Map. And then, at very course's end was the true climax of the course. This course culminates in final projects, which ultimately will be your opportunity to design your very own piece of software, designed by you or two or three friends. And the course then climaxes with the new and improved, with the second annual computer science 50 fair which last year was an exhibition across the street in one of the engineering buildings with 300 laptops atop tables, popcorn was popping, music was playing, stress balls with CS50's logo were being thrown around. And this was an opportunity for our 300 plus students to exhibit their final projects not only to each other but also to some 900 attendees in total. And we also invited some recruiters as well. So, that is what you have to look forward in this course. You also have cake to look forward to in the hallway. This is CS50 and we'll see you on Friday. [掌聲] ==== Transcribed by Automatic Sync Technologies ====