这个系列都是我做的笔记,David上课真是棒极了,我看过的最有意思的课之一。CS50相当于计算机导论,我打算同时更新Andrew Ng的机器学习和加州理工Yaser Abu-Mostafa的机器学习课程,往后面翻翻吧。
计算机思维:你可以把一个问题用比较直观的方法解决,但如果你把此类问题的数量增大,正如越来越多的互联网和大规模数据系统中出现的问题等等你应该思考怎么样才能更便捷,怎样才能更高效。你应该用行之有效的方法处理问题。
迭代:查电话薄
程序设计究竟是什么?
接下来我们将接触几种程序语言,首先是Scratch,是一种图形模拟语言,提供优雅舒适的作图环境,只需利用文本和鼠标编程。编程是给计算机发出指令,在这个程序语言界面的左手边有一些拼图,他们的形状和颜色代表他们的功能,任何一个给计算机发出指令的图块,都是橙色的,能够让计算机感知鼠标或屏幕边缘的图块,都是紫色的。
课程要求:每节课都要来参加;做完九套习题;参加两次测验,最后设计好期末大
作业
就算说得再多,也不如你们亲自动手,通过真正深入的研究,才能学到知识。
介绍一下scratch,一旦确定需要查找的部分,想要达到那种层次,你是否意识到,我想做出一些可以会走动的跳舞的人,我需要按这种方式那种方式让他转圈,并检查我是否到了屏幕的边缘等,你开始意识到,你所登陆的网站上这些大而复杂的软件,如果你只对其中的一小块代码进行研究,你就会发现,哦,我也可以做这个,当你意识到你现在要做的是把想法付诸程序,把小问题串在一起的时候,就开始觉得有意思了。
如果你觉得scratch太浅显,那么我给你一些小的逻辑板,它们就是各种各样的真实世界的感应器,你可以用它们来连接到你的手机或电脑上去,和现实世界做进一步的互动。
命令行界面:command-line interface,是图形用户界面得到普及之前使用最为广泛的用户界面,它通常不支持鼠标,用户通过键盘输入指令,计算机接收到指令后,予以执行。也就是我们常说的Linux或者Unix。
去年,我们要求学生设置自己的加密密码,以确保信息安全,这也许是现代社会中扰频或加密的共同需求,无论是信用卡还是即时信息或电子邮件,或者是其它一些,你不希望别人看到的信息。
到第二个星期,我们会讲到如何应用这些密码来保护自己的隐私和安全。
到第三周,我们要编一个叫做“15”的游戏,就是经常在派对上玩的,可以把数字上下左右移动的小游戏。
几个星期之内,你就能开始执行从用户端的输入。我们给学生的不是一些空白白板,而是一些分布式代码,使用现成的资料或者工具,在现实世界是很常见的,这样以来,我们的确可以避免做重复工作,但却永远学不会编程。
我们会因自己失误而去删除或者弄乱一些数据,一个图片文件是由0和1构成的,要写一个程序来处理所有的这些0和1,寻找出一个用来标示JPEG,或者其他图片的模式。这些图片的模式很容易找到,即使他们已经被删除,无论是意外还是有人故意为之,要恢复已删除的东西,需要做这部分的工作。然后我给你一个包含一万4千单词的额超大文本,我让你最短时间内实现拼音检查,我想让你使用较少的内存,较少的CPU周期,写出运行速度尽可能快的程序。
我们从较低程度的C和scratch语言,向更常见的语言过度。到期末结束的时候,我们向程度不同的同学介绍了像PHP和SQL HTML CSS 这样的语言,使用这些技术,你可以把你想象中的东西,以网页内容的形式表现出来,人机交互的运用将越来越多,而且你将学会编程,不仅能制作网站,还能做出应用程序,一些你感兴趣的东西,一些解决问题的手段,还有一些可以让你通过使用现有的电子手段来分辨出校园里看到的一个人的东西。
去年的时候,我们给学生提供了能用来写程序跟雅虎财经的免费网站交互的代码即finance.yahoo.com 一个免费的网站。他们基本是通过文本文件,或者通过一个简单的API应用或者编程接口来获取股票和其它一些数据,这些都是本课程的内容。
通过这些数据,学生们就可以做出类似电子商务的网站,只要你有账户就能进入你的账户,里面有一万的虚拟美元,这样你就能去查询股票报价,进行买卖股票之类的事,这一切仅仅用了几个星期的时间完成。
去年我们给学生提供了谷歌地图和谷歌新闻,要求他们把两个熟悉的实时世界产品结合到一起,这样他们就有了一个美国地图,上面到处都是一些小图标,它们能够精确地标记出当前事件发生的地方。
十一周后,很多人每小时都能知道60公里内发生的事情,就像这里的很多课程一样,这个课程不只有概念性的介绍,也包括上机和演练讲座,因此在分组后,你们有机会与教员们一起在小房间里工作,在上机时间内我们有机会一对一授课,在实验室内亲自实践,不然的话我们在校园里探讨问题,会被很多人围观的,同样,特别对于那些不熟悉编程跟不上进度的同学,每周上课前都可以预习新的知识点。
你会发现最有效的学习地方是这个课程视频,这里不仅有讲义,教学大纲的错误之处,还有大量课程中使用的工具,包括我们自己的视频,这对学习很有帮助。
作文一个程序员,我们写了一小段代码来使得屏幕上的单词,也就是在暗背景下发亮的字,可以和我说的话同步,我们也觉得很有乐趣。
这周五,我们将讲计算机科学,并在我们设定的环境下,介绍编程语言Scratch的用法,随后我们也会在课堂中捎带讲一些基础知识。
第一周,我们会学习C语言,以及相关的知识。
第二周,我们会学习加密技术及其功能,还会学到一些操作工具,通过浙这些工具的使用来手机解决问题的办法。
第三周,我们将介绍算法和数据结构,以及可以更有效地解决问题的机制。
在第四周,我们会讲更多有趣地计算机基础知识,比如说我们很熟悉地内存和磁盘空间等,但实际上,只需要一点点变成操作计算机的经验,你就能使用自认为合适的内存,把0和1 所代表的内容放到合适的数据里面,在之前提到的法院问题上,你甚至能提取出别人也许不想让你找到的东西。
第五周,那些对编程较为熟悉的同学,我们将会教授链接列表,哈希表,以及日益复杂的数据结构,以便帮助我们解决比现在所学的更大也更有趣的问题。
第七周,然后我们会讲生活中的应用程序,比如说压缩文件--将大量的数据分解使其更便于管理并占用尽量少的磁盘空间。
第八周,我们会学习HTML,HTTP,PHP,SQL等。
第九周,我们看一下当下流行和吸引人的网页,许多你在facebook中使用的特征功能都是极具动态的,我们将会学习如何实现这些动态,还有Ajax对于浏览器兼容性的贡献。
CS50大会!!!