世界上最受欢迎的计算机科学课程是什么?那应该是哈佛的CS50课程 中文翻译版

1,250 阅读10分钟

世界上最受欢迎的计算机科学课程是什么?那应该是哈佛的CS50课程,Free Code Camp与哈佛大学合作,在我们的社区YouTube频道上发布了整个大学级别的课程——25小时的讲座。但是这个课程是为你准备的吗?freeCodeCamp 撰稿人Phoebe Voong-Fadel为CS50写了一篇深入的评论。她会帮助你做出一个明智的决定,这门课是否值得你花时间。(阅读时间为1-2分钟):www.freecodecamp.org/news/cs50-c…

中文翻译 你是否正在考虑参加CS50计算机科学入门课程,但不知道它是否适合你?

作为一个没有计算机科学学位的人,我想学习该领域的基础知识,我和我一样。这就是为什么我决定注册这门课程,并在本文中记录我的经验。

我将提供CS50的概述和回顾,以帮助你决定这门课程是否适合你。

什么是CS50?

CS50是一门为期10周的在线和校园课程,用于介绍计算机科学。哈佛和耶鲁大学都有这门课。

课程负责人是David J. Malan教授。他得到了CS50团队的支持,该团队由资深导师和整个生产团队组成。课程时间为1月1日至12月31日。

为什么选择CS50?

CS50可能是你的好选择有几个原因。这里有一些:

  • 这是哈佛大学开设的一门很受尊敬的课程。这意味着你将从经验丰富的教师那里学习,并获得优质的课程。

  • 它涵盖了广泛的主题,包括计算机科学基础、算法、数据结构和编程语言,如C、Python和SQL。这意味着你将对该领域有一个全面的介绍。

  • 它是自定节奏的,这意味着你可以按照自己的节奏完成课程,并将其纳入你的时间表。你可以在各种平台上观看讲座,包括EdX和freeCodeCamp的YouTube频道。对我来说,这很重要,因为我没有很多空闲时间。

  • 它是免费的!你可以接触到讲座和课程资料。

课程的形式是什么?

课程包括为期十周的讲座、实验和作业,这些都是必须完成的。在课程结束时,有一个期末项目。

这是给初学者的课程吗?

是的。事实上,参加CS50课程的学生中,大约有三分之二的人以前从未上过计算机科学课程。所以,如果你是这个领域的新手,想要学习基础知识,你会有很好的伙伴。

话虽如此,但不要指望这门课会很容易。虽然课程被设计为易于理解和吸引人,但问题集和实验可能具有挑战性。平均而言,学生每周应该在这门课程上花费大约12个小时。

课程结束后我能拿到证书吗?

你可以选择免费获得CS50证书,也可以付费从edX获得经过验证的证书。

如果你在12月31日之前没有完成课程怎么办?

你可以把任何提交的文件转到下一年。我这样做了,过程很简单。课程内容基本相同,只是对课程材料进行了一些更新。

CS50每周演练


第0周:学习Scratch

在课程的第一周,您将了解计算机科学的世界,并了解如何用二进制表示数字、文本和图像。

你还将学习算法和伪代码,并动手介绍Scratch(一种图形化编程语言)。

作为第一个作业集,你将创建一个Scratch项目。这周将以一种有趣的方式让你轻松地进入这门课程,并体验编程。

如果你有兴趣,这是我的Scratch项目,它的灵感来自我儿子,他对太空很着迷。

第一周:学习C

在本课程的第二周,您将深入研究C,一种低级编程语言。

你将学习编程基础,如函数、条件、布尔表达式、循环和变量。

在习题集中,你将创建一个程序,输出一个哈希金字塔,就像超级马里奥游戏中一个关卡的末尾一样。

第2周:数组介绍

你将继续学习C语言编程,并深入了解程序如何编译、调试、数组、字符、字符串和命令行参数等主题。

在实验室中,你将编写一个Caesar's密码程序,而在习题集中,你将完成一个拼字游戏类型的挑战。如果你已经在freeCodeCamp上完成了JavaScript算法和数据结构证书的学习,你应该会对这个很熟悉,因为这是编码挑战之一。

第3周:算法入门

在第三周,你将学习不同类型的搜索(线性搜索和二进制搜索)、不同类型的排序(选择搜索和冒泡排序)以及递归。

你还将学习大O表示法,它可能具有挑战性,但在计算机科学中是一个重要的概念。值得庆幸的是,本课程提供了更困难的概念的额外短视频,并提供了更详细的示例解释。

第4周:计算机内存

第四周的重点是内存,包括指针、地址、内存分配和释放内存、检测内存泄漏以及解释堆栈溢出是如何发生的等主题。

实验和问题集涉及处理音频和图像文件。下面是我用C语言创建的过滤器示例。

image.png

第5周:数据结构

在C语言编程的最后一周,你将学习如何使用指针在内存中存储链表的地址。

这个实验巩固了你对指针的知识,而问题集涉及创建一个拼写检查程序。这是一个特别棘手的练习,在深入研究之前,值得您花时间理解提供的起步文件。

第6周:学习Python基础知识

第六周是从C过渡到Python, Python是一种流行的编程语言,比C更容易学习和使用。你将完成将之前用C编写的程序转换为Python的作业。

第7周:SQL和关系数据库

在第七周,你将学习关系数据库和SQL(结构化查询语言),使用SQLite在命令行和Python中执行查询。

这个问题集很有趣,因为你必须解决一个谜,谁通过一系列SQL查询偷了CS50鸭子!

第8周:HTML、CSS和JavaScript

第八周介绍互联网和web的基础知识,包括客户端的HTML、CSS和JavaScript。

作业中,你要创建一个关于自己的主页。

第9周:Flask

在第九周,你将学习Flask,这是一个用于构建web应用程序的Python框架。我们将介绍如何使用Jinja创建表单、布局和模板,如何使用POST和GET请求,以及如何在Flask应用中发送电子邮件。你还将经历构建全栈应用程序的过程。

对于问题集,您将通过实现一个全栈金融应用程序来测试您的技能,该应用程序将汇集您在整个课程中所学的所有知识。这是一个具有挑战性但有益的项目,可以让你体验如何构建一个真实的web应用程序。

第十周:结束讲座

本周不做运动。有一个客座讲师和马兰教授的总结。

期末项目


课程的最后一部分是期末专题。概要是:

“建立一些你感兴趣的东西,你可以解决实际问题,你可以影响你的社区,或者你可以改变世界。” “build something of interest to you, that you solve an actual problem, that you impact your community, or that you change the world.”

这是故意模糊的,因此您可以自由选择您喜欢的任何编程语言和项目。你还需要录制一段三分钟的视频来演示你的应用程序。

我构建了一个婴儿追踪应用程序。在后端,我使用Python和Flask开发了一个REST API。对于我的数据库,我使用SQLite。在客户端,我使用React.js。

这是一项重要的工作。从构思,到设计,再到开发,我大概花了30多个小时。

你的期末项目将为你的个人作品集做一个很好的补充,所以好好享受它吧!下面是我的应用程序的一些截图。

image.png

参加CS50有什么好处?

  • 这些讲座在内容和制作上都是高质量的。Malan教授充满活力、热情,对教授计算机科学和编程非常有热情。舞台上和交互式屏幕上的视觉示例有助于理解困难的概念。

  • 问题集结构良好,并提供详细的演示视频、规范和带有注释的入门代码,以帮助指导您完成任务。您还可以在提交代码之前测试代码是否满足所有要求。

  • 得益于修改过的GitHub Codespaces,安装集成开发环境(IDE)非常简单,你可以在浏览器中编写代码。

  • CS50库是一个很有用的资源,有很好的文档。该库提供了get_string等函数,可以在命令行界面(CLI)中提示用户输入一个字符串。在课程的前几周,这些函数就像训练轮一样,帮助你专注于熟悉编程语言。

  • 对于一些习题,有两个选项:一个是当你“感觉不太舒服”的时候,另一个是当你“感觉更舒服”的时候。这让你能够选择适合自己的难度级别。

  • 本课程的结构建立在你之前的课程和习题的基础上。你将从C开始,一种低级语言,然后在本课程的稍后部分继续学习如何在Python和JavaScript中实现相同的东西。

  • 在Facebook、Twitter、Discord和LinkedIn等各种平台上都有一个大型且活跃的在线CS50社区,你可以在那里与其他学生联系,并获得关于问题集和实验的帮助。

  • 这门课程是免费的,任何人只要有电脑和互联网连接就可以参加。

CS50的缺点是什么?

这门课很有挑战性。它的学习曲线可能很陡峭。我发现我不得不围绕我不熟悉/不舒服的科目做额外的阅读。

大多数人没有完成课程,但即使你没有完成它,你仍然可以从你学到的东西中获益。用马兰教授的话来说:

“在这门课程中,最重要的不是你最终与同学的关系,而是你开始学习时与自己的关系。” “What ultimately matters in this course is not so much where you end up relative to your classmates but where you end up relative to yourself when you begin.”

总结


CS50是一门综合性和高度尊重的课程,提供了坚实的计算机科学基础。

作为一名没有计算机科学学位的自学前端开发人员,我发现这门课程是填补知识空白和加强我对该领域基础知识理解的绝佳方式。

课程内容引人入胜,制作精良,作业虽然具有挑战性,但提供了应用所学知识的宝贵机会。

该课程涵盖了广泛的主题,使其成为计算机科学的优秀入门课程。总的来说,这是一门出色的课程,也是我拥有过的最好的在线学习体验之一。

我希望这篇文章对你有用,它可以帮助你决定是否参加CS50。