转:Google技术开发指南:给大学生自学的建议

原文来自于:http://blog.jobbole.com/80621/

技术开发指南

想要成为成功的软件工程师,必须拥有坚实的计算机科学的基础。本指南针对大学生,给出一条自学途径,让学生以科班和非科班方式提高技术技能。读者可以学习本指南中介绍的课程,但是为了能正常毕业,还是请侧重于自己本身的专业。本指南中介绍的在线课程无法代替你在大学中的课程。但可以作为其补充,或者作为计算机方面的介绍。

使用说明:

  • 请自行决定如何使用本指南
  • 除了本指南中介绍的内容,如果你有其他想学的,尽情去学吧!
  • 即使学习了本指南中所有内容,也不能一定保证你能获得Google的工作。
  • 本指南会随时更新或修改,记得随时回来看看。
  • 关注我们的Google+上的Google for Student账号可以获得进一步的提示、资源,并认识其他对开发感兴趣的学生。

科班式建议

  • 计算机科学简介

说明:计算机科学简介是介绍编码相关的基础内容。

在线资源:Udacity – intro to CS courseCoursera – Computer Science 101

  • 至少学习一门面向对象编程语言:C++、Java或Python

初学者在线资源:Learn to Program: The FundamentalsMIT Intro to Programming in JavaGoogle’s Python ClassCoursera – Introduction to PythonPython Open Source E-Book

中级在线资源:Udacity’s Design of Computer ProgramsCoursera – Learn to Program: Crafting Quality CodeCoursera – Programming LanguagesBrown University – Introduction to Programming Languages

  • 学习其他编程语言:

提示:你可以选择这些语言中的一种或多种——Java Script、CSS、HTML、Ruby、PHP、C、Perl、Shell、Lisp、 Scheme。

在线资源:w3school.com – HTML TutorialCodeAcademy.com

  • 测试你的代码

提示:学习如何追踪bug、创建测试和断点。

在线资源:Udacity – Software Testing MethodsUdacity – Software Debugging

  • 开发逻辑思维并学习离散数学

在线资源:MIT Mathematics for Computer Science、Coursera – Introduction to Logic、Coursera – Linear and Discrete Optimization、Coursera – Probabilistic Graphical Models、Coursera – Game Theory

  • 深入理解算法和数据结构

提示:学习基本的数据类型(栈、队列和背包)、排序算法(快速排序、归并排序、堆排序)、数据结构(二叉搜索树、红黑树、散列表)、大O表示法。

在线资源:MIT Introduction to Algorithms、Coursera Introduction to Algorithms Part 1Part 2List of AlgorithmsList of Data StructuresBook: The Algorithm Design Manual

  • 深入了解操作系统相关知识

在线资源:UC Berkeley Computer Science 162

  • 学习人工智能

在线资源:Stanford University – Introduction to RoboticsNatural Language ProcessingMachine Learning

  • 学习如何构建编译器

在线资源:Coursera – Compilers

  • 学习密码学

在线资源:Coursera – CryptographyUdacity – Applied Cryptography

  • 学习并行编程

Online Resources: Coursera – Heterogeneous Parallel Programming

在线资源:Coursera – Heterogeneous Parallel Programming

非科班的学习建议

  • 接触课堂之外的项目

提示:创建并维护一个网站、构建自己的服务器、或构建一个机器人。

在线资源:Apache List of ProjectsGoogle Summer of CodeGoogle Developer Group

  • 处理一个非常大的系统(代码库)中的一小部分,阅读并理解已有的代码、文档,并进行调试。

提示:Github可以用来阅读源码并为某个项目做贡献。

在线资源:GithubKiln

  • 与其他开发者共同工作

提示:这将帮你提升团队工作工作的能力,同时从他人那可以学到新东西。

  • 有针对性的学习算法知识并提升编码能力

提示:可以在CodeJam或ACM 这些编程竞赛上练习算法知识。

在线资源:CodeJamACM ICPC

  • 做一个教学助手,帮助他人

提示:帮助他人可以加深你对该领域的理解。

  • 软件工程师方面的实习经验

提示:实习申请要在实习开始前提前申请。在美国,实习期是在夏季(5月到9月),申请一般会提前几个月。

在线资源:google.com/jobs

时间: 2024-08-29 08:15:30

转:Google技术开发指南:给大学生自学的建议的相关文章

技术福利【干货】音视频 iOS CallKit 开发指南

iOS CallKit 开发指南 简介 CallKit 是融云音视频通话功能的 UI 界面 SDK.包含了单人.多人音视频通话的界面的各种场景和功能.您可以快速的集成 CallKit 来实现丰富的音视频通话界面,并进行自己的 UI 定制开发.同时我们开源了 CallKit,您可以根据您的需要去使用. GitHub 项目:CallKit 开源代码 使用说明 由于底层引擎技术不同,2.6.0 之后的音视频 SDK 与 2.6.0 之前的 SDK 中的 VoIP 不能互通. 音视频 SDK 为商用收费

《DirectShow开发指南》,《DirectShow 实务精选》及《精通网络视频核心开发技术》作者考证

<DirectShow开发指南>,<DirectShow 实务精选>及<精通网络视频核心开发技术>作者考证 今天看见同事在看一本关于DirectShow的书籍,  <精通网络视频核心开发技术>,  我拿过来随时翻了翻,恰好翻到第260页, 看到这样一句话, "关于DirectShow Filter 开发方法更详细的介绍,限于篇幅,笔者在这里就不详细介绍了 有兴趣的的读者可以参考笔者的另外两本书<DirectShow开发指南>和<D

开发者必看|Android 8.0 新特性及开发指南

背景介绍 谷歌2017 I/O开发者大会今年将于5月17-19日在美国加州举办.大会将跟往年一样发布最新的 Android 系统,今年为 Android 8.0.谷歌在今年3 月21日发布 Android 新系统开发者预览版时已给新系统取名为 Android O.自2008 年发布以来, Android 依靠 Google 的生态运作,全球市场份额在2016年底已超过85% .而近几年依靠 Android 发展起来的智能手机厂商不断增加, Android 生态大家庭也正在不断壮大. Androi

Google C++ 风格指南内容整理

之前一直没有全面的看过Google C++风格指南,现在很多公司进行C++开发都要求按照Google C++风格.在这个网站 http://zh-google-styleguide.readthedocs.org/en/latest/contents/  有人已经把其翻译成中文.为了便于以后查看,下面的内容完全是来自于这个网站,只是把多个网页的内容整理放在了一起. 1.      头文件: 通常每一个.cc文件都有一个对应的.h文件.也有一些常见例外,如单元测试代码和只包含main()函数的.c

Knockout应用开发指南

第一章:入门 1.Knockout简介 (Introduction) Knockout是一个轻量级的UI类库,通过应用MVVM模式使JavaScript前端UI简单化. Knockout有如下4大重要概念: 声明式绑定 (Declarative Bindings):使用简明易读的语法很容易地将模型(model)数据关联到DOM元素上. UI界面自动刷新 (Automatic UI Refresh):当您的模型状态(model state)改变时,您的UI界面将自动更新. 依赖跟踪 (Depend

Google Web开发最佳实践(一)

这篇文章最初是在阿里通信前端团队的github博客(http://aliqin.github.io)上看到的,原文地址https://developers.google.com/web/fundamentals/(要翻墙).既然要去阿里了,就得先熟悉熟悉环境,既然是最佳实践,就得自己亲自实践一下. 1.创建网站的内容和结构 内容是任何网站最重要的部分.所以让我们为内容而设计,而不要让设计支配内容.在这个手册中,我们首先确定我们需要的内容,基于这个内容创建一个页面结构,然后在简单的线性布局里呈现页

Knockout应用开发指南 第十章:更多信息(完结篇)

原文:Knockout应用开发指南 第十章:更多信息(完结篇) 1   浏览器支持 Knockout在如下浏览器通过测试: Mozilla Firefox 2.0+(最新测试版本:3.6.8) Google Chrome(通过Windows and Mac 下的version 5测试:其它低版本也该可以工作) Microsoft Internet Explorer 6, 7, 8 Apple Safari(Windows下的Safari 5测试,Mac OS X下的 Safari 3.1.2测试

开发指南专题专题一: JEECG微云快速开发平台前言

JEECG微云快速开发平台-前言 1. 前言 1.1. 技术背景 随着WEB UI 框架(EasyUI/Jquery UI/Ext/DWZ)等的逐渐成熟,系统界面逐渐实现统一化,代码生成器也可以生成统一规范的界面! 代码生成+手工MERGE半智能开发将是新的趋势,生成的代码可节省50%工作量,快速提高开发效率! 1.2. 平台介绍 JEECG [J2EE  Code Generation] 是一款基于代码生成器的微信快速开发平台,采用代码生成+手工MERGE半智能开发模式, 可以帮助解决Java

Freemaker_入门+深入+开发指南+学习笔记

freemaker的基本语法 freemaker的基本语法:<# ... > 中存放所有freemaker的内容,之外的内容全部原样输出.<@ ... /> 是函数调用两个定界符内的内容中,第一个符号表示指令或者函数名,其后的跟随参数.freemaker提供的控制包括如下: <#if condition><#elseif condition><#else></#if> 条件判断<#list hash_or_seq as var&