>>大卫:欢迎您,我的名字是大卫马兰,这是CS50。而且,这不是典型的高中计算机科学课程。这当然是有点与众不同。它不是因为我教了。这是因为这是一种,我们想的,那些其实你的大脑挤出这么多,你的日程安排这么多的学期结束时,你真正感到聪明罕见课程。所以,这是我的感受时,我本人参加了1996年这一历程。我是一个在当时居住在这里的政府大厦马瑟重大。而且,一 [打气]由于是外,其他五人那里。所以,我是当时政府的主要。而我是政府的一个重大,因为我一直喜欢历史。我喜欢在高中的宪制性法律。所以,我这条道路上设置了新生做我做最好的,做什么我就知道我喜欢的一年。而且我一直是一个怪胎位,我总是胡说电脑。不过,我自己,也许具有讽刺意味的回想起来,我总是看的家伙是谁参加我的高中计算机科学,作为真正的爱好者我的朋友。然而,最后终于,大二一年,我借这个小门叫CS50,实际上我把我吓坏了自己的大学一年级。我是一个用户在当时的助理。所以,我肯定已经提前出线,至少要在这些,那些野人谁我在高中的乐趣。不过,我很害怕。目前,它在这部分在当时的声誉,或许仍认为这是一个,这是一个可怕的过程。这是一个大量的工作。这很难,然而,它的那些东西在那里,我的上帝,远远高于其树皮咬坏1。我发现自己二年级,第一次,发现其实功课的乐趣。而且我不是说这只是在球场本课程给你。这对我是一个真正的实现。现在,我想在一个点,我没有越线,以真正geekdum在我实际使用期待周五晚上,因为我蜷缩在我小的MacBook上和CS50的问题集的工作。因此,在这一点上,我认为我已清楚越线。而且,我们在这个课程的目的并不是要成为这个人大家,但是,我只想说,有一个小东西这个课程特别,在一般的小东西有关计算机科学特别是这些特殊的日子。而且,越驯化技术,我们都到了,我们的更多的玩具在我们的口袋里随身携带,是自己的计算机。我的意思是,我的iPhone实际上是一个比我更高性能的笔记本电脑在学校的。你可以做这些事情的整洁很多东西。现在,大多数在这个房间里的我们,可能只是使用其他人的软件,其他人的工具,其他人解决问题,因为我们到iTunes中,我们下载一些应用程序存储和沃拉我们可以做一些确实整洁的应用程序。但是,在本学期结束时,你可以成为解决问题的人这样做。你可以成为一些人解决问题,建立该应用程序,这一块的软件,即工具,或者说,一只是使我感到有趣,娱你。例如,控制,说,你和你的iTunes资料库从房子显然是已经存在的应用程序,或者你可以更容易地找到班车时间表的实例。因此,事实上,我做的第一件事服用CS50再次,它是在这一点上周五晚上和周六晚上大概一,有一位当时在哈佛大学的穿梭巴士运行的机会。而且,为了这一天,他们还印制时间表。但是,确实没有办法找到了下一次航天飞机的联机。现在,我不在乎,因为即使我在奥美我是谁之间的穿梭普遍采取了不居住。但是,我有一个朋友在Pfoho比如很多。而其中一个人问我,我觉得在一个点。 [打气]好吧Pfoho优于马瑟的明显。所以,我的朋友种之一,让我想也许我可以写一个小程序来帮助我的朋友检查航天飞机的时间表种类。就这样诞生了笨拙的男孩名叫穿梭,这种词汇已呆了一些年数约至少在一些高年级的一块。在当时,这是这个小命令行程序在精神上类似到DOS。这是运行在UNIX环境。因此,它不是很性感的。你刚才输入的一对夫妇的命令,它告诉您,当航天飞机进行。那么,这些天这是一个更复杂一点。而且,它实际上代表了精确的项目,在课程结束时由学生方面作出年底类型。所以,这是版本4,大约15年后,Shuttleboy。谷歌地图似乎正在那里有点慢。但对你谁必须离开这里课后去,说的人,从纪念馆,需要去到,也就是说,四。嗯,你可以在两分钟内,如果离开了,这实在是不适合您只是还没有,或者你有很多其他选择,你可能会喜欢的。此外,即将推出,我们可以从CS50这个球场,这将是通过SMS相同的功能。您可以通过电话文本Shuttleboy。你可以Shuttleboy。 CS50的电话号码,今年好,这是令人惊讶地可用,617 -臭虫CS50。所以,这将问世。所以,不要打电话只是因为我还得到谴责,现在它的被发送到我们的系统教学研究员头的手机。所以,你就把他,如果你对现在的航天飞机的时间表问题。但是,这将很快得到实施。因此,其他的事情,其实,我们自己用了这个夏天真的准备在这学期是一个我们要解决其他问题一大堆。例如,有一个整体的东西很多是朝这个校园的某一天。而事实上,把另一种方式,还有一大堆的东西会在这个校园里,我绝对不会利用上。而且,即使我现在有多少事情正在进行校园,我似乎仍然没有找到时间不知所措。但是,沃拉,即使在那里,CS50的演讲。这就是你的,所以这是一个,这是一个计划,我们写信给总校园中的所有活动。这事已在这同一课程的其他学生对他们自己解决。而且,我们正与其他实体的校园真正实现这一目标。但是,指向CS50这个名词,所有这些问题,我们已经就这是否一个或是否在一个地方聚集哈佛大学的新闻都是一个,所有的谷歌新闻,这些东西都是要什么有工作小程序被称为API的,应用程序编程接口。而这仅仅是幻想的能力让其他人发言,在这个房间里的人,实际上做的是同样的数据进行处理。因此,到任期届满,如果您决定我们要落实好,至少为1个疗程的最后项目相关的新闻或事件或地图,以提供一个界面,你会更容易,所有今年,一个样的功能,可以这么说,软件,您可以在自己的项目使用和超越的学生,也许,在过去的时代了,因为这个框架还没有实行了他们。再次,这一切开始,至少对我来说,大约15年前实施Shuttleboy。然后我在电子邮件中Pfoho我的朋友肯。我说:嘿,你认为什么?这有用吗?他邮寄名单上的Pfoho开放和沃拉出来,所有这些年后,我仍然很显然挤奶这一项目。而关于它整洁的东西,这就是太一在工程和计算机科学,我觉得这样的过程,是一个有点特殊,是当你做你家的作品,当你在这个过程中您的项目,你知道了其中的很多话,你就会放下,而不是真正使用了。但是,它的一些,你会的。而有这种真正强大的东西,至少对我来说,这真是令人兴奋的事情,当你真正关心的东西和其他人,其他人不只是微笑,拍拍你的背部,然后对自己的生命去排序。他们在实际使用你自己的生活作出即使是愚蠢的东西或作像刚刚发现的时候,他们可以离开这里赶上下一班车到四简单。因此,到任期结束,这对本课程的目标之一;授权你们刚才找出一些问题,无论是在校园内或希望远远超出了校园,并实际使用自己的技能,你自己的头脑和解决的一些问题部分技术。因此,这也是一个过程,因为我们说的教学大纲和课程的官方说明,教你如何思考,它教你如何更有效地解决问题。那么,是什么意思?那么,当你有在你的口袋或3千兆赫在你的办公桌600兆赫在家里,你可以有效地解决刚才剪切蛮力很多问题。但是,有一个在这个世界上很多问题,无论是搜索,例如,Facebook的网络或通过谷歌互联网,这并不重要有多快你的特定的计算机上,有没有地狱你要去搜索数十亿的网页,除非你确实迅速处理这一问题的智慧。你不只是搜索,例如,一个地球上的所有网页,从顶部向底部巨大的名单有关的任何搜索条件为你大概希望谷歌和谷歌和Facebook这些大型实体的任何前瞻性望着什么有一个怎样才能够更迅速地找到数据思想聪明的人很多,他们如何能更有效地处理信息,以及他们如何可以只返回结果通常更快,让你可以做的是,这些设备具有更有趣的事情。因此,我们的意思是什么,不过,由如何,教人如何思考更仔细,更复杂的运算。那么,这个小视觉似乎总是一个好做法。而且,这似乎是令人难忘。而我连问了一个以前的学生就在昨天,哦,你打算做的事情再次电话簿。并决定我几乎当场好吗相信我们将建立一个电话簿的事情。他问我,当你在一半撕毁它,我喜欢好耶在技术上我们拆除一半,但不是在计算机科学的方式方法,我将能够颠覆这个事情的一半。因此,这里是我们的问题,提出了一段时间。所以,这里的电话簿。它有至少一千多页。而眼下的目标很简单,就是找到真正的世界,也就是说,一个人在这里。因此,迈克史密斯,姓氏与S.开始,所以,我是一个典型的人,我接了这个电话本。而且那里的人,你会怎样,一个典型的人,也开始寻找迈克史密斯,显然不是事先知道,其实他是哪一页上。对,所以你去大约在中间,右。而在这个故事中的点,我在N的或M的,你知道,大约有一半的方式可能是通过电话簿。原来,我最后一次做这个例子中我发现在某种程度上护送节自己。因此,它实际上是一个不均衡的关系,通过M和N到Z但是,今天,我们在事实上,在M的,没事的话,现在我在M的。但是,什么是我的外卖现在就像一个正常的人在街上过?我在哪里去下一个迈克史密斯。 [听不清]因此,只要可能在今年上半年,正确的,因为M.和转型后的话,就在这里视觉戏剧来。这不是真的撕毁它的一半,正确的。我种被骗了该中心。但是,我们现在知道,迈克,至少有一半是没有。我们可以从字面上抛出了问题的一半了。而我的问题的根本还是一样的东西离开,找到一个真正的大书迈克史密斯。但是,问题是现在的一半。如果它有1000页之前,现在它有500个。你知道吗,我可以做同样的事情了。我可以种递归或反复做同样的事情。现在,我觉得很不是我在南吨很于是,啊,我有点过分了。不过,我现在知道,迈克是不正确的,但将是一些地方级的有一天我无法撕裂大坝的事,我敢打赌。但现在,我知道他不正确的。所以,现在问题已经进驻。所以,我已经从一万到500至250页。再次,如果你继续的逻辑,继续进行数学,我砍了一半这个问题,在半,直到最后半我现在不是要找不到任何史密斯的一切,不可能的,或者我要去找到一个我要找的。但是,这一点,那么,引出了一个问题,这是任何比只是说,你知道,阿,不,乙,不,从左边开始简单的方法去线性好权,通过这本书?嗯,是的本能。这将是一个快得多。但是,如何少得多?嗯,如果我有1000页的电话本或者让我们为你们说谁喜欢的两个大国的1,024个,有多少时间,我有可能在半年前分裂史密斯先生找到这个问题呢? >> 10。 >>大卫:那么,10,正确的。如果你有1024个网页和你分裂的一半,一半,一半一半,我这样做,这意味着我从1000页到我要找的人在短短10页的10倍转。这就是一种整洁,但是,你知道,如果你想想,你一直在做这一切的你的生活。这不是戏剧化了。但现在,该电话簿不只是波士顿,它为整个美国甚至整个世界,这一点是已经在它的网页数十亿,所以想象一个40亿页的电话簿。多少翻页我将不得不做最大限度地找到一个40亿页电话簿迈克史密斯? >>“注销基地2。 >>大卫:那是啊,如果你是那种类型的数学基础,这是两个日志。但是,如果你认为40亿到20亿到10亿,所以50亿美元。我的意思,实际上去惠特尔斯本身相当非常迅速下降。其实与32电话簿halvings甚至从4亿元,我会坐下来一页。这就是当这个东西变得强大,我想。这是当这些想法得到令人信服的时候你可以有一个40亿页的问题,在32个步骤,你可以找到你要找的人。因此,这就是我们的意思,当我们说,你将学习如何思考更仔细,更复杂的运算,解决问题,更加智能化。而当你的回报是巨大的,其实这样做,再次,这种世界Facebooks谁拥有庞大的数据集有奢侈的谷歌点。你一定要以这种方式,否则这些问题的根本行不通的。那么,什么是什么,学生实际回收?我,我们喜欢做的事情是有点傻有时样的采取关闭的边缘是什么否则大量的新材料。因此,他实际上,这个前学生送我这个链接,我一往直前,只是踢,然后表示遗憾,最后,拉对uTube这里。所以,我以为我会分享一个非计算机科学家的手段时,他的眼泪在半年电话簿。 [笑] [沉默] [听不清] >>你知道超过200页,干净漂亮的线,合法眼泪。 [笑] >>大卫:所以,我想,他的工作方式了。因此,我得到了所有这些年来出这当然是肯定的,Shuttleboy,然后是一个计算机科学学位,然后是在计算机科学博士学位。而这不正是我们试图把在这个过程中大部分为学生。你们中的大多数在这个过程中都不会走,主修计算机科学的研究。你们有些人可能会很小,但对你这部分将是一个终端的过程。这也无所谓,因为这当然是事实,在某种程度上在那里,即使你只支付了数个月的会费,并且你确实集中在和你真的结构作为这一过程多了,你可以,你会在事实上,拥有良好的配置回你的经济学,生物学,心理学,应用数学世界,实际利用什么是最终成为一个有趣的过程,因为我们希望从概念,因为它是从根本上实际应用。这也是值得的或许有点罕见的。我以为我会分享一些意见,从今年年中把线索引导去年秋天的时候,你会什么想告诉未来的学生要求学生。好吧,如果你还没有在这些意见看,一名学生说,这当然会采取你的时间相当数量最多。但是,如果你把一个全新的世界,整个你的工作,如果你把工作,如果你把工作纳入,好吧,这是他的语法不是我的,所以如果你把在工作,把一全新的世界将开放给你。令人惊讶的多少我只在12周的经验教训。另一名学生说,你最好采取这种或你会后悔的。另一个说,有点不客气,它会踢你的屁股,让你感觉很好。然后最终,这一个或许是我只能显示文字,但是,从倒数第二这里。 [笑],所以,我不知道你是否有谁参加这个课程,但我们种的损失做了去年的学生很多很多的朋友。我们介绍了在一开始,一些讲座,一些小测验,一对夫妇的问题集,这lolcats概念。你看不到我可以在这里看到,但在一个时刻,你会看到一个小伙子高兴猫谁是所谓的lolcat领导人。这是愚蠢的互联网前锋,我认为这两者之间坦率的二分法先生在这里和我们现在在屏幕上有可能是1。 [笑]一本迄今为止最戏剧不当使用。 而且,我们为什么不多赚一点多一点个人真正实际解决这个问题的更有效的概念。作者:任何学校一天一个简单的问题是要坐下或站立起来,开始清点学生,各种权利唱名。那么,最天真的,但尽管如此,非常正确的做法,老师可以采取一,二,三,四,五,六,七,我们会在这儿相当一段时间。那么,什么是边际改进这甚至你可能有一个孩子做什么?您是如何计算的人快?而且,不要离开我开始阅读自己的指令?你会怎么做的孩子吗?三三两两地开始计数,右,所以我很喜欢擅长二,四,六,八,十,十二。所以,这事有趣的权利。因此,如何改善是多少呢?因此,它显然是两个因素。我现在只要花那么多时间的一半。但是,你知道什么,我们会发现这整个学期,大不了如加快跑步只由一两个因素时,是不是所有的有趣,因为在电脑世界中的模拟这里是我是一个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。而且,当你停下来想一想,这是非常了不起大坝做了什么,世界的基石,这些设备包括你在你手里持有一些。那么,为什么是零和的有用吗?我的上帝,即使在现实世界中,我们至少可以通过零9个,10个数字。为什么这么有限?那么在硬件方面也非常容易。这是非常容易的代表两个国家,正确的。如果计算机到墙上,通常堵塞,你有这样的二元性质容易的来源。它或关闭。电力是流动的,或者它不是。所以,这对最初的原因之一,那种世界只有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。你会变成一个灯泡。因此,有数字1,因为我们现在把一张一合,一个灯泡是对在一个人的立场。我们如何去代表两个?那么,我们究竟要投入至少与两个开关现在这种状态,我们必须打开两个专栏关闭那些列,现在我们有三三两两地列在一个值。因此,这两个总价值。现在,一个快速的精神运动;什么将要发生的下一个顺序?我如何目前排名第三?嗯,我需要从两岁列,从三分球列和啊哈之一。所以,现在我已经是一个递增。而现在,重复同样的基本格局。什么是数字4?那么让我们来看看,我只需要在一列四肢,然后在人群里凑的零。那么,它继续这样。而且,这只是这些步骤的顺序。并在二元notion真的没有那么复杂。在我们的上方有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 ====