如果你看过美剧《Silicon Valley》,一定也曾有过“做个工程师”的想法。剧中,硅谷 Pied Piper 团队通过一套无损压缩算法,成功吸引到投资人,开始了有趣的“搅”机生活。

 


 

(左边小哥看上去挺落寞……他是里面唯一不懂编程的)

 

而在现实生活中,有一个叫Aaron Pollack 的学习者,在Coursera 上学习编程课程后,成功从一个社交媒体运营转行成为一个全职软件工程师,收入也跟着翻倍。

 

 

这则发布在Coursera Blog 上的学习者故事激起了很多人学习编程的兴趣,但语言环境的限制,却让很多学习者望而却步。现在,机会来了—— 北京大学经典专项课程《程序设计与算法》在Coursera 上重装上阵,这门课将面向任何想要学习编程的人,不需要任何先修知识或计算机背景


教授们说了,这门课的目标是培养中国最优秀的程序员。

 

 

这一专项课程包含北京大学计算机专业方向三大主干基础课程。你将具备能够编写出高质量的程序、运用程序思维设计并解决实际中的问题的能力。你将精通C和C++程序设计语言,熟悉基本的算法设计,熟练运用各类数据结构,并辅以实战环节的结业实践项目。在实践环节中,腾讯将提供一线的云服务架构支持,资深工程师的专业指导和身临其境的程序开发过程,优秀学习者将有机会赢得在腾讯参观、实习等诸多机会,进一步展示和提升自我。

 

如何借助这一专项课程,从零开始变成程序员?

 

 

STEP1: 零基础入门!“程序猿”必备知识补充

计算导论与C语言基础



 

 

计算机为什么能够进行计算?计算机程序是怎样运行的?计算机未来可能的发展趋势有哪些?程序是如何编写出来的?如何学习程序设计语言?程序设计语言的基本成分有哪些?《计算导论》这门课将帮助你解决这些疑惑。 学完这门课,你将能够解释计算机和程序的基本运行原理以及它们的特性,向你的朋友讲述计算机的历史和发展趋势;同时,你也将充分“热身”,迎接“计算机程序设计语言”的学习。

 

STEP2: 迎接计算机编程第一步

C程序设计进阶

 

理解“结构化程序设计的基本思想”,掌握“C程序设计的基本技巧”,养成“良好的编程习惯和编程风格”,编写出“真正具有生命力的计算机程序”。完成这门课的学习,你将能解释C程序设计语言的基本概念与知识,并且使用C语言编写计算机程序解决生活工作中的实际问题。

 

STEP3: 提高编程能力,升级“码工”

C++程序设计

北京大学《C++程序设计》这门课将向你讲授C++程序设计有关的概念和语法,使你能够使用C++语言,以面向对象的方法编写可维护性、可扩充性好的,较大规模的程序。我们建议你在开始本课程之前已经熟悉了C语言和基本程设编写。这门课则将带你掌握C++语言中类、对象、运算符重载、继承、多态等面向对象的程序设计方法,以及模板、标准模板库STL等泛型程序设计的机制,体会和领悟面向对象程序设计方法和泛型程序设计方法的优势。

 

—— 至于为什么这门课很重要,老师们是这么解释的:

 


 

 

郭炜:“学完这门课,你就会超越码农”
刘家瑛:“那变成什么?变成码工啊?”
李戈:“码工可比码农强多了!”

 

据说这门课的结课作业是编写一个与《魔兽世界》有关的程序哦!

 

STEP4: “打怪”升级,进化“程序猿”

算法基础

算法代表着用系统的方法描述解决问题的策略机制,北京大学《算法基础》课程将探索枚举、二分、贪心、递归、深度优先搜索、广度优先搜索、动态规划等经典算法。本课程帮助掌握算法原理,其中的编程任务将充分训练思维能力和动手能力。达到本门课程的要求,即意味者你具备了初步的算法基础和较强的编程实现能力。

 

讲授这门课程的张铭教授表示:“不会算法的程序员,被称为码农……如果想从码农、码工升级为程序员,就需要上这门课。

 

STEP5: 技能进阶,解决实际问题

数据结构基础

学了C/C++ 语言,我们已经会编程解题了,那怎么用来处理实际的问题呢? 怎么设计数据结构来有效地管理企业人员?如何编写程序没让人才和岗位达到最佳匹配?如何安排旅行计划,找到最佳行程路径? 数据结构是计算机程序设计的基础,告诉我们数据在计算机里是如何组织与存储的,能帮助我们刻画实际问题中的信息及其相互关系。 完成这门课之时,你将掌握线性表、栈与队列、字符串、二叉树、树、图等经典的数据结构,并运用这些基础数据结构和相关算法解决实际问题。学好这门课将为你成为一名优秀的程序设计人员打下坚实的基础。

 

STEP6: 迈向专业程序员

高级数据结构与算法

 

怎样提升程序在运行效率呢? 如何快速地把图书按序号从小到大整理好?如何通过一个ID编号在数据库中高效地查找相对应的信息?如何迅速找到所有内容中含有“数据结构”的文档?《高级数据结构与算法》将通过使用高级的数据结构和高效的算法,让你学会如何解决这些对运行时间要求比较严格的问题。完成这门课之时,你将掌握多维数组、广义表、Trie树、AVL树、伸展树等高级数据结构,并结合内排序、外排序、检索、索引有关的算法,高效地解决现实生活中一些比较复杂的应用问题。

 

STEP7: 实战开发,大功告成!

毕业项目:腾讯 · 程序开发项目实践

 

实践项目由腾讯参与设计。在这一次的项目中,学习者将建立一个搜索引擎,并将它部署在腾讯云平台上。腾讯智能计算与搜索实验室将为毕业项目提供技术支持与指导,开放“文智自然语言处理平台”。同时腾讯将为在专项课程中的出众表现者授予奖励,给予推荐实习的机会。

 

加入北京大学《程序设计与算法》专项课程:

https://www.coursera.org/specializations/biancheng-suanfa

 

 

 

常见问题
 
 
 

 

 

 

需要固定的上课时间吗?

这门课已改版为供学习者自主控制学习进度的自助课程,这意味着学习者可以在任何时候按个人实际情况安排学习。第一期的毕业实践项目初步定为2016年2月。

 

专项课程是免费的吗?

 

学习者可以免费观看课程视频,但若想获得认证证书或是参加毕业项目以获得专项课程证书,则需要支付相应的费用。学习者可以一次性支付专项课程的整体费用,也可以根据学习进度,单独支付每门课程的认证证书费用。

 

 

 

 

加入Coursera,学习来自120所全球顶尖大学的网络课程,并获得名校签署的课程证书。Coursera 与包括斯坦福、耶鲁、普林斯顿及北大、复旦、上海交大等大学合作,提供数百门课程,帮助学习者提升职场竞争力。

 

 

 

* 本文正文部分转自Coursera官方公众帐号

* 题图及部分图片来自HBO

 

 
 
长按图片选择识别二维码,关注Coursera公众号获取课程详细信息