Learn To Code

Resources for entering tech

There are tons of different technologies out there, each of which has its own tutorials, documentation, and community (good or bad). ADI has done the hard work of tracking down the best resources, summarizing each technology, and identify critical concepts based on goal so that the only thing standing between you and the implementation of your idea is a little bit of learning and hard work. DEVFEST CURRICULUM DevFest is ADI’s annual week-long workshop series and hackathon. At DevFest 2016, we showcased the DevFest Tracks, featuring 6 original, self-paced, open-source tutorials in a variety of topics such as web development, iOS development, and data science. The DevFest Tracks are the perfect place to start learning new skills! Read more about the educational methodology and design behind the DevFest curriculum here.

TOPICS

DATA OpenCV Python Tutorials LEVEL: INTERMEDIATE OpenCV is an open source computer vision library with excellent Python bindings and documentation. If you’re interested in implementing computer vision techniques, the OpenCV Python tutorials are an excellent place to begin.

Python Data Science Handbook LEVEL: INTERMEDIATE The Python Data Science Handbook is a great resource for learning Python for data science. Although it covers the basics of data science, this book is more oriented towards exploring the tools that Python provides rather than teaching data science to an introductory audience.

DataQuest Blog LEVEL: INTERMEDIATE Comprehensive tutorials and articles on data science, data analysis, and data engineering.

Deep Learning (Goodfellow, Bengio, and Coureville) LEVEL: ADVANCED Written by some of the top researchers in the field, Deep Learning is a great introduction to machine learning (with an emphasis on deep learning). It’s relatively light on the mathematics compared to most other approaches, which can be a good or bad thing depending on your point of view.

Jupyter Notebook Tips & Tricks LEVEL: INTERMEDIATE This is a great interactive tutorial on both Python and programming in general. If you’ve never programmed before, this is a great place to start! description: Jupyter notebook is a flexible tool that helps you create readable analyses, as you can keep code, images, comments, formulae and plots together. Here are a bunch of useful tips when using Jupyter.

GENERAL Twilio Blog LEVEL: INTERMEDIATE Technical tutorials on a range of topics across many different languages.

Simple Made Easy LEVEL: INTERMEDIATE A classic talk by Rich Hickey (the inventor of Clojure), describing the difference between being simple and being easy and explaining why we should strive for simplicity.

How To Set Environment Variables LEVEL: BEGINNER There are some things we just shouldn’t share with our code. These are often configuration values that depend on the environment such as debugging flags or access tokens for APIs. Environment variables are a good solution and they are easy to consume in most languages.

LANGUAGES Learn LaTeX in 30 minutes LEVEL: BEGINNER All those nicely-formatted, professional-looking papers and guides you come across have one thing in common: they’re written with LaTeX. LaTeX is a typesetting system that lets you build beautiful, expressive documents (including those with complex mathematical notation) with just plain text. Learning LaTeX can strongly improve the readability and quality of your written work.

Learn You a Haskell LEVEL: INTERMEDIATE Learn You a Haskell (For Great Good) is a fun and playful introduction to Haskell, the granddaddy of functional programming.

Eloquent Javascript LEVEL: BEGINNER Eloquent Javascript, written by the venerable Marijn Haverbeke, is by far the best Javascript book out there. Although geared towards an introductory audience, it’s also a great way for experienced programmers to dig deep and learn to love one of the most ubiquitous languages ever.

Codecademy: Learn Python LEVEL: BEGINNER This is a great interactive tutorial on both Python and programming in general. If you’ve never programmed before, this is a great place to start!

You Could Have Invented Monads! LEVEL: ADVANCED Monads have a reputation for being mysterious and impenetrable abstractions, which is a shame (we blame the name). In reality, as this blog post will show, monads are actually quite natural and common abstractions. Although the blog post uses Haskell syntax for its examples, minimal actual knowledge of Haskell is required.

SOFTWARE DEVELOPMENT Back to Basics (Joel on Software) LEVEL: INTERMEDIATE In this classic essay, Joel Spolsky walks through the low-level implementation of strings in C and demonstrates why knowing these low-level details matter.

Pro Git LEVEL: INTERMEDIATE Pro Git, available freely on the git website, is an excellent book covering all aspects of git, including use and inner workings. A must-read to fully understand git.

The Architecture of Open Source Applications LEVEL: INTERMEDIATE One of the only books of its kind, AOSA walks you through the design and architecture of some of the most famous open source projects. Most software engineers only ever work with a handful of programs deeply, and so they never learn from the mistakes and lessons from experienced practitioners. Reading AOSA is one way of preventing that from happening to you.

WEB The Flask Mega-Tutorial LEVEL: INTERMEDIATE Flask, ADI’s tool of choice, is a simple and lightweight web framework for Python that lets you quickly develop web applications. This 18-part tutorial starts from Hello World and takes you all the way into a production-ready web app. Requires prior knowledge of Python.

MDN Web Reference LEVEL: REFERENCE The most comprehensive and up-to-date reference to web technologies you’ll find on the web. Even grizzled veterans have these pages bookmarked for handy reference!

MDN Learning Area LEVEL: BEGINNER A series of articles from Mozilla (the creators of Firefox) to teach beginners web development. Web development can be hard, and Mozilla’s tried hard to provide enough detail to help you through.