Learn to Code
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 is ADI's annual week-long workshop series and hackathon. The workshops at DevFest cover Python, Flask, APIs, HTML, and CSS.
First-time programmers should follow the Codecademy Python Track, and first-time app builders should follow the Introduction to Python Programming and the Accelerated Introduction to Web Development.
Over the course of multiple years of holding student-run workshops, ADI has developed a large number of resources itself, on a wide variety of topics. See resources written by ADI members highlighed with a gear ().
Dictates the structure and contents of every web page on the internet. Lets you put text and images on a web page; if you want to make a web site, start here.
Walks you through learning all the different HTML tags one at a time. Beginner, intermediate, and advanced tracks. A great place to start!
Extensive reference by the organization behind Firefox. If you need any element of HTML explained to you very clearly or in detail, look here.
Clearly explains hand-picked features of the latest and greatest version of HTML, HTML5, and how HTML5 compares to earlier HTML standards.
Promotes innovations and describes best practices in HTML5. Once you've mastered the basics, check in here regularly.
The web's most popular front-end template. Starting a new project? Hit the ground running with HTML5 Boilerplate.
This guide, developed for beginners, teaches you the foundations of HTML and what you can do with it.
The code that styles HTML: dictates look, layout, and general presentation. Once you've laid out your content using HTML, use CSS to make it look good.
HTML dog will walk you through learning a lot of the most important CSS properties. They have beginner, intermediate, and advanced tracks.
Extensive reference by the organization behind Firefox. If you need any property of CSS explained to you very clearly or in detail, look here.
Once you've got the hang of CSS, CSS preprocessors allow you to write CSS using more powerful features, such as variables, functions, and “mixins.” After development, these files get compiled into regular CSS that all web browsers can understand. Makes CSS easier.
Sass makes CSS fun again. Sass is an extension of CSS3, adding nested rules, variables, mixins, selector inheritance, and more. It’s translated to well-formatted, standard CSS using the command line tool or a web-framework plugin.
The dynamic stylesheet language. LESS extends CSS with dynamic behavior such as variables, mixins, operations and functions.
Stylus is a revolutionary new language, providing an efficient, dynamic, and expressive way to generate CSS. Supporting both an indented syntax and regular CSS style.
Side-by-side comparison of Sass, LESS, and Stylus. Check here if you want to see the differences.
In this course, you'll learn how to code in JS, a flexible and powerful programming language used all over the web.
Written and developed by Gilad Penn, covering syntax, Document Object Model manipulation, and a bit of jQuery.
Guide to learn about the practice of front-end development. It broadly outlines and discusses the practice of front-end engineering: how to learn it and what tools are used when practicing it
The documentation on the jQuery official site is superb, and is a great way of getting started learning.
A video series which emails you a video once a day for 30 days in order to provide step-by-step instruction in learning to use jQuery.
Unheap is an aggregation of open-source jQuery plugins (meaning they’re free to use!), which allow you to do some amazing things like animated image galleries and scroll to refresh.
A combination of videos, interactive console challenges, and writing code in the browser. You'll need about 3 hours of time to make it through everything.
Learn to make parallax scrolling websites with a modern feel. Requires some knowledge of jQuery.
Download and learn Bootstrap. See especially the "Getting started" page, and check out some examples.
Easily create a Bootstrap theme.
Flat-ish version of Bootstrap.
Another flat version of Bootstrap. Looks similar, but with gradients and shadows gone. Also check out the "flatstrap-sass" and "flatstrap-rails" Ruby gems (easy to find on Google) for painless integraiton with Ruby on Rails (if you don't know what Rails is, disregard that last bit).
This guide, developed by Udemy for complete beginners to Bootstrap, gives you a thorough introduction to its fundamental concepts.
A front-end UI framework similar to Bootstrap. Looks a little different. Great for getting a site up and running quickly. It's "responsive", so your site will look good on screens of all sizes (desktop, tablet, mobile).
Download and learn Foundation. See especially the "Docs" page.
Post about the capabilities and usage of angular. Good overview of why you might want to use it.
Official documentation from the AngularJS team. A great starting point.
A small skeleton AngularJS app.
A bunch of links to blog posts, articles, videos, etc. for learning AngularJS.
Backbone home page.
A general-purpose, high-level programming language focused on clarity and readability. Often used to write the backend for web applications. A great first programming language.
Learn Python the Hard Way is a book (available for free here) for people who do not have experience programming, and it will teach you to program while teaching you Python.
Interactive, online tutorial to learn to program Python. No experience necessary.
Dive into Python is a book about Python for people who already know how to program in another language.
Online intro to Python 2.7. Will teach you the key concepts in Python. No experience necessary.
Written and developed by ADI, this tutorial covers basics of programming in Python.
This, guide developed for beginners by Udemy, gives a short introduction to Python essentials and core concepts.
A simple and lightweight web framework for Python that allows you to quickly develop web applications. This is the easiest way to get going with a simple web app. If you want to extend your web site to have changing, dynamic content, Flask is a great place to start.
The Flask homepage. Gives a quick introduction, and the docs are really good.
An 18-part tutorial that starts from Hello World and takes you to an advanced Flask app. Assumes some knowledge of Python.
Written and developed by ADI, this 5-part tutorial covers basic Python, Flask, HTML, CSS, and API programming.
Written as a natural extension of the ADI's Accelerated Introduction to Web Development, this tutorial covers advanced topics in Flask, including building large Flask apps, managing dependencies, using a database, and processing form data.
A one-stop MVC web framework for Python that brings together all the bits you need to develop a web application. It's a lot heavier than Flask, but might be better for more complicated apps.
The Django homepage. Has more information
A general-purpose, high-level programming language focused on clarity and readability. Often used to write the backend for web applications. Similar to Python, but most people prefer one to the other (ADI right now uses more Python).
Interactive, online tutorial to learn to program Ruby. No experience necessary.
Part tutorial, part comic book, part really bizarre art, Why's (Poignant) Guide to Ruby is considered a classic way to learn the language.
Learn the basic building blocks of Ruby, all in the browser.
Another, more traditional way to learn Ruby. Try this if Why's isn't your style.
Official source of information about the Ruby language.
From the website: "An up to date book on Ruby programming, written in a style described as 'a beautiful display of pragmatically chunky bacon, wrapped in a nutshell.' Or something like that."
In this course, you'll learn how to code in Ruby, a flexible yet powerful programming language that’s popular over the web.
Ruby on Rails
Ruby on Rails is a model-view-controller framework for building web applications with Ruby. As such, it touches all parts of the stack, from running a web server to rendering front-end templates. A really popular framework for web apps.
This tutorial will walk you through building your first app with Ruby on Rails.
A compilation of starter applications, tutorials, templates, and examples for different Rails libraries.
Learn Ruby on Rails, an open-source framework for the Ruby programming language. Rails for Zombies will teach you all the Rails basics with a zombie flair.
This guide, developed for beginners by Udemy, is a guide to Ruby on Rails essentials and core concepts and is designed to help you learn from scratch.
A simple Ruby web framework, lighter than Ruby on Rails. Flask is inspired by this, so they're good analogues.
Official Sinatra homepage. Get started here.
Git is a Version Control System (VCS), which lets you track changes to code over time and collaborate with others. A VCS is critical to working on any medium-to-large application, and really helpful when working on a project with someone else.
A really awesome in-browser tutorial/game that lets you get a feel for what git is like, interactively.
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.
GitHub is a website that hosts git repositories. It lets you store a shared copy of code that you're working on with someone else, as well as see others' code and contribute to open source projects.
If you want to save information when a user leaves your app or coordinate between different users, you need a database of some sort. Here are some good options to get started.
A "relational" database-think about it like an Excel spreadsheet, but stricter, bigger, and more powerful. It might already be installed and it's really easy to set up a database. Note that you'll need to learn the basics of Structured Query Language (SQL) in order to use it.
A "non-relational" database. You put whole "objects" in and can query them in simple or complicated ways. Check out the interactive demo!
Another "relational" database. This one is very popular, and also powerful. You need to know SQL for this. MariaDB is based on MySQL, and was forked after the community worried that Oracle wasn't devoting enough time to the project and was hiding things; they're mostly identical, but MariaDB is the way to go for "MySQL" nowadays.
Golang is a staticly-typed compiled language with a focus on easy networking development and concurrency. Golang has a focus on conciseness, simplicity, and safety. It is used in many infrastructural systems because of its simplicity and expansive standard library.
Introduce yourself to Go without installing it! These example programs demonstrate different aspects of Go. The programs in the tour are meant to be starting points for your own experimentation.
Everything you need to know to get started with Go. This EBook covers all aspects of the language.
Golang developers peroidically dive into various topics to explain use cases and idioms in depth.
An introduction to concurrency using Golang. Learn the fastest way to download cat pictures.
In order for your project to be out on the internet, you need to get it hosted. Here are a bunch of options to do that.
This site was created to let beginners host websites with static content. Start here if you're just trying to get a web page online!
If you're using GitHub, this is a really easy way to publish a project page.
Parse is a cloud app platform with free tiers. Great place to host apps.
Heroku is a Platform as a Service (PaaS) provider, which means that they host your apps for you without you having to manage any computers, virtual or otherwise.
Amazon Web Services (AWS) is a cloud hosting provider that has a bunch of cloud options, the easiest of which is Elastic Cloud Compute (EC2). EC2 just gives you a virtual machine in one of their data centers that you control completely, so it's a very flexible option.
Java is an object oriented language, and the most widely used language in the world. It is compiled down to Java byte code, and then run on a Java Virtual Machine. Because JVMs have been made for many different platforms, people often say of Java, "Write once, run anywhere.". Java is great language if you want to program for Android or program scalable systems (both big and small companies use Java, but it's not a usual choice for prototyping). We'll probably have a hard time teaching you Java online, so these resources are more advanced.
Data structures and algorithms are essential for your general computer science knowledge, solving problems, and acing your technical interviews.
Assumes you already know Java, and gives a solid run down for data structures and algorithms in presentation format.
ADI's personal collection of favorite interview questions.
Hackerrank is a web platform for practicing interview questions on a wide variety of topics including data structures and algorithms.
Cracking the Coding Interview gives you the interview preparation you need to get the top software developer jobs. This is a deeply technical book and focuses on the software engineering skills to ace your interview. The book is over 500 pages and includes 150 programming interview questions and answers, as well as other advice.
Haskell is an advanced purely-functional programming language. With strong support for integration with other languages, built-in concurrency and parallelism, debuggers, profilers, rich libraries and an active community, Haskell makes it easier to produce flexible, maintainable, high-quality software.
A free and fun online resource for learning Haskell. 'The funkiest way to learn Haskell.'
Another high-quality free online resource for learning Haskell, with a bit more serious tone.
The main Haskell website, from where you can download the language, visit the very detailed wiki, and explore the many Haskell libraries freely available through Cabal.
A powerful and flexible programming language, useful for tackling hard problems.
An interactive Scala demo. Try it out and try not to get hooked.
How Twitter ramps up their engineers (with Java experience) on Scala.
Take a Coursera class from Martin Odersky, the creator of Scala himself
Written by Martin Odersky, this is the definitive guide to the language.
Twitter Scala style guide.
The Android SDK is the library that lets you write programs that run on Android.
If you want to learn Android, ADI's got your back. We have an introductory Android tutorial to help you make a fully functional Android app in a matter of hours.
In addition to the tutorial on GitHub, check out the slides from our Android workshop.
Portal for all things Android development: references, tools, news.
Detailed Android development tutorials covering almost everything you would want to know
Coursera class to use if you want to learn Android more formally
Coursera specialization to become an Android pro
A superset of C, Objective-C is the language that iOS and Mac apps are written in.
Learn the language that powers iOS and Mac apps. In this course, you'll learn the fundamental building blocks of Objective-C and explore the foundation of elegant and beautiful apps.
A great book that walks beginners through the basics of Objective-C. A great buy.
NSHipster is a blog that has great explanations for some of the quirks and "overlooked bits" of Objective-C and Cocoa.
Learn to build an iOS application by learning to code in Objective-C.
An introductory talk given by ADI member Matt Piccolella. This explains the key concepts of iOS development and helps you build your first app!
A simple, heavily-commented iOS application that shows the important parts that go into building an app.
A great book that walks beginners through the basics of iOS. Best after the Big Nerd Ranch Objective-C book.