这里是,油管ArtificialIntelligenceEducation专栏,原作者SirajRaval,原标题ComputerScienceCurriculum。 这是一份五个月(20个星期)学习计算机科学的经验贴,希望帮助你跟我一样从入门到精通。 传统的大学开设ACS专业,主要是引导学生从毫无任何编程经验,到对计算机科学领域的一些相关学科有一个较为宽泛的认识。 WEEK12Python 在最开始,我们要学的是Python这种编程语言。 什么是Python? Python是一种解释执行的具有动态语义的面向对象的高级编程语言。 啊什么鬼啦,定义中这么多专业术语,看不下去怎么办? 别着急,我给大家介绍一个学习资源,这个资源不要求你了解计算机科学领域的相关术语也能看懂。 在网络上有一本极好的免费的书,叫做AutomateTheBoringStuffWithPython。这本书对编程小白来说相当实用,书中展示了如何完成一些基本的任务,例如:使用Python语言发送提醒邮件,移动文件夹以及格式化数据等。 我建议你第一周的时间来读这本书,总共有18章,如果每天完成三到四个章节周末就能完成。这本书中里面有许多练习,你可以在你使用的任何操作系统的终端上去完成这些练习。如果你在自己的机器上安装Python时遇到了问题,可以到Python的官网上查查详细的相关信息。 在学习Python的第二周,我推荐参加CodeAcademy的Python课程。在课程中,你的网页上就会有交互式的控制台,你可以马上得到反馈,知道自己的代码是否编译正确。这些年,这个平台的这个课程一直很受初学者的欢迎。 总共两个周的时间,差不多足够你对Python语言有一个基本的了解了。当然,前两周你写的程序还不足以改变世界,但是,理解这门语言的语法、关键词、使用的频率以及为什么使用,这些都是至关重要的。它们能够帮助你在下一阶段中构建以及理解一些数据结构。 AutomatetheBoringStuffwithPython:https:automatetheboringstuff。com Codecademy的Python教程:https:www。codecademy。comlearnlearnpython WEEK34数据结构 我还记得:当我还是哥伦比亚的一个计算机科学的大一新生时,每个人都会告诉我,在你的专业里面,你将要上的最重要的两门课是数据结构与算法。 在那个时候,这听起来很滑稽。怎么能说数据结构与算法比学习令人激动的机器人学和计算机视觉还要重要呢? 结果我被啪啪打脸了,他们是对的。 在计算机科学领域,如果你要创造出无穷无尽超级棒的应用,你就必须理解如何正确地存储数据,以及对数据进行处理,以便完成任务。 有一个UCSanDiego开设的数据结构课程,这门课程会展示给你各种各样的数据结构从二叉树到链表,以及在Python中如何实现这些数据结构。 UCSanDiego的DataStructuresFundamentals:https:www。edx。orgcoursedatastructuresfundamentalsucsandiegoxalgs201x WEEK56算法 之后,你也许会想了解一些算法方面的东西,使用Python作为基础语言的最好的一门课程是MIT的算法介绍课程。在他们的网站上,你可以看到所有的课程和相关的笔记以及问题集。 你会注意到:当谈到数据结构和算法,一旦你开始构建并且能够理解其中的一些东西,一切都会开始变得有用起来。当涉及到数据的正确存储时,你会开始理解,你必须要做的一些折衷处理;当你开始考虑应用的时候,你将能够知道,为了完成任务,你需要什么类型的数据结构以及算法。 MIT6。006:IntroductiontoA:https:courses。csail。mit。edu6。006fall11notes。shtml WEEK7数据库 接下来,无论你是构建一个web应用、移动应用或者是仅仅进行数据处理,了解数据库如何运作都是十分重要的。 SQL是最普遍的标准的数据库语言,Coursera上有一门课程,课程名字叫做UsingdatabaseswithPython,这门课程能够帮助你容易地理解数据库。 你可以跳过这门课程的第一周,继续往后学,因为我们已经了解了Python学习部分的内容。 密歇根大学UsingDatabaseswithPython:https:www。coursera。orglearnpythondatabases WEEK8网络 在接下来的一周,我们将在Python上稍微停一下,转而把注意力放在网络上。 在你构建一个需要使用互联网的应用时,你必须要弄明白:互联网这个人类设计的复杂的系统,是如何允许我们在一瞬间与全球各地的人进行交流的。 Coursera上有一门课程,这门课程是Google开设的,叫thebitsandbytesofcomputernetworking。你会学到互联网协议是如何工作的,你会弄明白,当你向网页中输入网页链接并且点击回车键时,在搜索引擎之下发生了什么。 TheBitsandBytesofComputerNetworking:https:www。coursera。orglearncomputernetworking WEEK910网页开发 在你完成这一部分的学习之后,你就能开始进行网页以及移动应用的编程开发了。我是哈佛大学计算机科学教授DavidMalan的忠实粉丝,他个人充满热情,极富感染力,能够让你一直沉浸在课堂中。 网络方面最好的课程是哈佛的cs50web编程课程,课程使用的是Python和JavaScipt,我们目前只了解了Python的相关知识,但是很有必要去了解一下JavaScipt这门web语言。 GitLecture0CS50’sWebProgrammingwithPythonandJavaScript:https:www。youtube。comwatch?v1u2quEmIRc Github参考:https:github。commelanierichardsjustbuildwebsites WEEK1112移动端 接下来,你需要花两周的时间,构建一个让你激动的应用。你可能会灰心,不过没有关系,你有两个选择IOS和安卓。 可以在第一个周构建一个IOS应用,第二个周构建一个安卓应用。这样你就能看到两者之间的差别,并且能够意识到自己更喜欢哪一个编程环境。 苹果端:https:developer。apple。comlibrarycontentreferencelibraryGettingStartedDevelopiOSAppsSwift 安卓端:https:developer。android。comtrainingbasicsfirstapp WEEK1314数据科学 数据科学是从数据中寻找结论的一门学科,通常这会用到机器学习和统计分析部分的知识。 EDX上有一门UCSD开设的一门课程,名字叫做Pythonfordatascience。通过这门课来进入这个领域是一个很好的方法,课程略长,因此这门课需要一到两周的时间。 这门课会让你直接使用到你的Python知识,你会接触到一些常用的数据科学方面的Python库,如:pandasnumpy。学完这门课之后,你会对机器学习有一点了解。 PythonforDataScience:https:www。edx。orgcoursepythonfordatascience WEEK1516计算机视觉 Udacity上有计算机视觉方面特别好的课程,当然也推荐斯坦福的CS231n。 https:www。udacity。comcourseintroductiontocomputervisionud810 斯坦福CS231n:http:www。mooc。aicourse268 WEEK1718自然语言处理 我推荐Coursera的这门课: AppliedTextMininginPython:https:www。coursera。orglearnpythontextmining WEEK19软件编程实践 仅仅知道如何编程还是不够的,你还需要知道在一个团队中如何进行编程。这就是为什么,你需要在接下来这个周学习软件开发实践。 Coursera上有一门课程,名字叫做软件开发过程与方法论。在这门课程中,涵盖了许多和其他人一些协同编码开发的团队技巧。如果你想在一家公司工作,比如:Google者一些很小的初创公司,了解这些东西至关重要。 SoftwareDevelopmentProcessesandMethodologies:https:www。coursera。orglearnsoftwareprocesses WEEK20区块链 最后一个周,你需要,对加密货币、区块链等技术有一个大致的认识,因为这些技术现在很火。在Youtube上我已经准备好了一个加密货币的播放列表,你可以打开看看。 翻译王飞整理凡江