In this document you're going to find a ton of reading, videos, and quizzes that Flatiron students complete before their semester even begins. We thought we'd open source this material. We suggest going through this material linearly because it really represents a progressive journey through the fundamentals and abstractions required to build web applications. Enjoy.

The main topics we want students to know about before the semester starts are on the left: Internet Basics, Command-Line Interface, Git Version Control, SQL and Databases, HTML, CSS, Javascript and jQuery, Ruby, and Ruby on Rails.

Each resource has an estimated amount of time it should take you if you have 0 prior knowledge on the topic. In total, if you are coming to this with absolutely no experience, as in, you'd have trouble articulating what the topic even is, then we estimate this work will take you between 80 - 100 hours to complete. If you are a rockstar, this shouldn't take more than 20 hours.

If you are familiar with the topic, we highly suggest trying to take the quiz or challenge first. If you pass easily and collect the badge, great, move on. That being said, even we found ourselves learning new things during this assessment, so maybe try to watch the videos on the topics with which you are most unfamiliar.

In terms of reading and watching videos, feel free to skip through - go for overall coverage as opposed to depth - try to read and watch as much as possible and then try to take the quiz. Be quick, and then do a 2nd round of reading and watching.

Setup

To complete these units, you will need a Treehouse and CodeSchool account. They are both normally $25 a month, so figure you might spend $50-$100 depending on how quickly you get through the material. So far the fine folks at CodeSchool have created a $9 trial month for all Flatiron Preworkers. So register using that link. Treehouse will offer something similar soon.

You should also have a Rails Development environment setup. There are lots of guides for that on the internet and depending on your OS and setup, it's a bit of a process. You could always use the cross-platform Rails Installer.

Thoughts

One of the challenges in learning how to code is that you probably don't even know what you're supposed to learn. When creating this prework, we had 4 goals in mind.

  1. Full Stack
    To present the full stack of technologies required to build a webapp from the ground up. We don't care if you use ERB or HAML, the web is built on HTML, everyone should learn it. Whether NoSQL or RDBMS, understanding the fundamentals of schema design and SQL is crucial. Students shouldn't shy away from depth. How can you be a web developer without a proficiency in these skills?
  2. Linear Progression
    The material is presented in order, going from computer / web basics, to data theory, to markup, to styling, to programming, and then to version control. At that point, you've become familiar enough with general syntax and your computer to start learning to program. You learn the basics of code through Ruby and Javascript and then finally move to Rails that builds upon the rest. Thus you start at the lowest level, the literal HTML the browser renders, and progress up through levels of abstraction until you finally get to the kitchen sink that is the Rails framework. As a beginner, don't try to learn Rails without knowing basic HTML/CSS, Ruby, and Javascript. It's a disservice to your education.
  3. Curated Resources
    There is such a plethora of amazing content on learning to code. We liked the consistency of going to a few sources that all shared common interfaces and learning patterns, like videos and interactive portions. So this isn't a complete list of all the resources, but more a curated list of what we think works well together (with lots of feedback from alumni). We would love it if you submitted a github issue with more materials you've enjoyed.
  4. Language Agnosticism
    In the end, programming is about abstractions and expressions, the mechanics of code are universal and exist in all modern languages, python, ruby, and javascript. We teach Ruby because we love it. Thinking your language choice, especially as a beginner, matters, is like thinking that you can only write poetry in English and not in Spanish. Obviously the beauty of poetry is in rhyme and meter, in metaphor and simile, in cadence and rhythm, not in the king's English. Why should code be any different? At Flatiron, you're learning how to think, how to break problems down, how to express yourself, how to abstract ideas, and how to work together. We just learn that through Ruby.

Why Share It?

You might be wondering why we would share our curriculum if we are in the education business. First, we honestly do not think that going through this content alone will make anyone a web developer. That's like saying that knowing how to hammer a nail means you can build a house. Sure, you've got the gestures and mechanics down, maybe, but you don't know the first thing about building. There is just so much more to being a developer than the syntax of how to define a method or iterate over an array. We don't focus on content at the Flatiron School. We focus on learning to love code.

If you want to build a ship, don’t drum up the men to gather wood, divide the work and give orders. Instead, teach them to yearn for the vast and endless sea.

Antoine de Saint-Exupery

The Web

The goal of this section is for you to understand the basics of the web. What web servers are, how code is interpreted, basic things like that.

Website Basics: 1.5 Hours

http://teamtreehouse.com/library/websites/website-basics/website-basics

Beyond HTML and CSS, there are several basic technology skills that every web professional should know. Some of these include uploading files to the web via FTP or purchasing domains and hosting.

Graphic Basics: 2 Hour

http://teamtreehouse.com/library/websites/technology-foundations/graphic-basics

Graphic basics is for developers and designers alike, to become familiar with the difference between vector and raster, units and increments and saving for the web.

Aesthetic Foundations: 2.5 Hours

http://teamtreehouse.com/library/websites/aesthetic-foundations

Aesthetic Foundations will cover the elements and principles of art, along with color theory. This basic knowledge will provide a design language that enables more effective communication amongst designers and other team members.

Term Definitions

Thanks to the amazing team at Skillcrush, lots of tech terms are artfully explained. These are the ones you 100% need to know.

Domain

Ever wonder what that thing in the top of the browser is?

POP & IMAP

POP, IMAP, SMTP Oh My! It's only email, don't be scared.

API

We're building programs that can talk to other programs. Their APIs are their languages. Sort of.

WYSIWYG

You can't always get what you want, but sometimes, What You See Is What You Get.

IP Address

There's no place like 127.0.0.1, there's no place like 0.0.0.0, there's no place like localhost.

Web Server

Apache, Puma, Unicorn, Thin, IIS, Mongrel, don't be scared, they are just the beasts behind the world wide web.

Bugs

The term 'debugging' was coined by Grace Hopper when she literally removed a moth from her computer to get it working.

DNS

Finally understand how 74.125.228.4 actually means google.com

The Cloud

It's like instead of your head being in the clouds, it's all your infrastructure.

Command Line

Live deep in the nix heartland and become a loving extension of the shell.

Version Control

Rule 1. Never lose code. Rule 2. Never lose code.

Grid Systems

Just because we're not designers doesn't mean we shouldn't appreciate and respect their grids.

Rails

Not liking Ruby on Rails is like not liking parfait.

Cookies

There's probably a pun we could come up with, but we take security seriously.

404 Error

The web's best easter egg.

Responsive Design

Keep your mind like water, but your design should be fluid and screen independent.

SEO

Despite what you might read, it's basically just black magic, the dark arts, the voodoo that gives traffic.

Hex

Because green to you might not be green to me. So there's these really specific codes we use for colors.

Ruby

The. Best. Programming. Language. Ever. Period. We. Promise.

CMS

All applications are basically just content management systems anyway.

Pseudo Code

First learn to express yourself. Then learn to code.

HTTPS

Insecure content warnings? HTTP Sniffing? Here's why.

Open Source

It's sort of impossible for me to quantify the impact open source software has made, but at least 64% of the top million websites are powered by it.

AJAX

And one day in February 2005, the Internet suddenly felt different.

Frontend / Backend

What's the difference? Turns out, less and less.

Javascript

The most pervasive and ubiquitous programming language since Flash.

Programming

It's awesome.

Database

Just think Excel spreadsheet on crack. Better. We mean better.

CSS

We could never love anyone that didn't appreciate the importance of a separation of content and style.

HTML

All documents should come in this format.

The Command Line

Familiarity with a shell environment is crucial to being a functional developer. There are no good interactive tutorials for command lines, so complete the following reading.

Learn the Command Line the Hard Way: 3 Hours

http://cli.learncodethehardway.org/book/

The venerable Zed Shaw gives us a short book about your shell.

Command Line Basics: 0.5 Hours

http://blog.teamtreehouse.com/command-line-basics

Bash Basics: 0.5 Hours

https://gist.github.com/a8a7ca963e37e0b108b9

SQL & Databases

This section is all about understanding what databases are and how to query them for data.

Learn SQL the Hardway: 4 Hours

http://sql.learncodethehardway.org/book/

Another SQL Resource Coming Soon

We're working on some better SQL resources, stay tuned!

Hypertext Markup Language

The source of all content on the web, HTML is a crucial markup syntax to understand. We will be covering very little HTML through the course and we seriously expect you to know what the basic tags are and when to use them.

HTML & CSS Tutorial: 2 Hours

http://learn.shayhowe.com/html-css/

This is a beautiful guide that we recommend everyone read through as quickly as possible. Don't worry if you don't fully grok this, the Treehouse unit below covers all this through videos and tests.

Treehouse HTML Basics: 6 Hours

http://teamtreehouse.com/library/websites/html

This HTML tutorial helps you master HTML. Mastering HTML and its many elements is critical for any type of web professional. HTML or "Hyper Text Markup Language" describes the basic structure and content of a web page.

Advanced HTML5 & CSS3: 6 Hours

http://www.codeschool.com/courses/functional-html5-css3

If you are familiar with HTML & CSS already and were able to complete the Treehouse unit pretty easily, we recommend you try this unit. Especially if you are into aesthetics and advanced behaviors as it covers some amazing features of HTML & CSS.

Cascading Style Sheets

While HTML tells the browser what different parts of the page are, CSS says what those pieces should look like.

CSS Foundations: 6 Hours

http://teamtreehouse.com/library/websites/css-foundations

Cascading Style Sheets (CSS) is a language used to describe the visual look of a web page. Using CSS, it is possible to change colors, margin, padding, fonts, and much more.

CSS Cross Country: 6 Hours

http://www.codeschool.com/courses/css-cross-country

A beautiful and interactive tutorial from the amazing people at CodeSchool.

CSS3 on Treehouse: 4 Hours

http://teamtreehouse.com/library/websites/css3

CSS3 (Cascading Style Sheets 3) is a superset of CSS that adds many new constructs and properties. Support for CSS3 is rapidly improving across all major browsers, making it a critical piece of technology for modern web professionals.

Responsive Websites: 4 Hours

http://teamtreehouse.com/library/websites/build-a-responsive-website/

The Smells Like Bakin' cupcake company needs their website to work on tablets and phones. We will modify the code of their pre-existing website so that it is flexible and fits beautifully into a wide variety of screen resolutions and devices.

Git: Version Control

Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.

Try Git: 1 Hour

http://www.codeschool.com/courses/try-git

Get an introduction to the basic concepts of Git version control.

Git Real: 4 Hours

http://www.codeschool.com/courses/git-real

A more advanced introduction to the core of version control with Git.

Git Immersion: 3 Hours

http://gitimmersion.com/

Git Immersion is a guided tour that walks through the fundamentals of Git, inspired by the premise that to know a thing is to do it.

The Git Book: 6 Hours

http://git-scm.com/book

The entire Pro Git book, written by Scott Chacon and published by Apress, is available here.

Git Videos: 1 Hours

http://git-scm.com/videos

Four videos covering some basics from the creators and maintainers of Git.

Basics

Certain aspects of coding are fundamental, learn them through javascript and ruby.

Try Ruby: 1 Hour

http://www.codeschool.com/courses/try-ruby

Ruby is a programming language from Japan (available at ruby-lang.org) which is revolutionizing the web. The beauty of Ruby is found in its balance between simplicity and power. This interactive tutorial is maintained by CodeSchool but was originally by the legend _why_the_lucky_stiff.

Introduction to Programming: 4 Hours

http://teamtreehouse.com/library/programming-2/introduction-to-programming

Basic programming skills are essential for all web professionals, including designers. Many programming languages share a common set of concepts, which will be covered in this course.

Javascript

Javascript Foundations: 6 Hours

http://teamtreehouse.com/library/websites/javascript-foundations

Learn the fundamentals to the JavaScript Language. JavaScript is the key to programming in the browser, mastering jQuery, and building apps with Node.js. You will learn how to program effectively in JavaScript, the different types, functions, and techniques for writing solid JavaScript. You will benefit from taking Introduction to Programming if you don't have much experience with programming.

jQuery Air, First Flight: 6 Hours

http://www.codeschool.com/courses/jquery-air-first-flight

Simplify web development with the amazing javascript library jQuery, in use by over 220 million websites.

jQuery Air, Captain's Log: 6 Hours

http://www.codeschool.com/courses/jquery-air-captains-log

Now that you've got the basics of javascript and jquery, take flight as a captain of the browser (or something)!

Ruby

My conscience won’t let me call Ruby a computer language. That would imply that the language works primarily on the computer’s terms. That the language is designed to accomodate the computer, first and foremost. That therefore, we, the coders, are foreigners, seeking citizenship in the computer’s locale. It’s the computer’s language and we are translators for the world.

But what do you call the language when your brain begins to think in that language? When you start to use the language’s own words and colloquialisms to express yourself. Say, the computer can’t do that. How can it be the computer’s language? It is ours, we speak it natively!

We can no longer truthfully call it a computer language. It is coderspeak. It is the language of our thoughts.

_why's poignant guide to ruby

Learn to Program: 10 Hours

http://pine.fm/LearnToProgram/

Chris Pine's Learn to Program is a classic book that is mostly available online for free. Read it all. Then buy it and read it again.

Ruby Foundations: 10 Hours

http://teamtreehouse.com/library/programming-2/ruby-foundations

Learn the fundamentals to become a Ruby and Rails developer. You'll learn things like what Ruby is, how to write object oriented Ruby, classes and modules, programming structures and types, and more. There are no requirements for this course other than a web browser and willingness to learn.

Ruby Bits: 6 Hours

http://www.codeschool.com/courses/ruby-bits

Learn all the little bits that make Ruby one of the most popular programming languages amongst non-programmers and programmers alike.

Rails

Getting Started with Rails Guide: 2 Hours

http://guides.rubyonrails.org/getting_started.html

This guide covers getting up and running with Ruby on Rails. After reading it, you should be familiar with:

  • Installing Rails, creating a new Rails application, and connecting your application to a database.
  • The general layout of a Rails application.
  • The basic principles of MVC (Model, View Controller) and RESTful design.
  • How to quickly generate the starting pieces of a Rails application.

Rails for Zombies: 4 Hours

http://www.codeschool.com/courses/rails-for-zombies-redux

Ruby on Rails, the most popular framework in-use by Zombies. That's right, you can basically be brain dead and use Ruby on Rails. No offense to brain dead people or zombies.

Rails for Zombies 2: 4 Hours

http://www.codeschool.com/courses/rails-for-zombies-2

In part 2 of Rails for Zombies, you learn even more about how to use this amazing framework as the undead.

Building Facebook: 12 Hours

http://teamtreehouse.com/library/programming-2/build-a-simple-version-of-facebook

That's right, in theory, if you've gotten this far, you are ready to make a billion dollars and build a simple version of Facebook!

At this point in the prework it's time to go from Rubywan to Ruby Knight. You'll be covering abstract concepts like testing and idioms, paradigms, and best practices. Do the best you can, enjoy.

Testing

Testing with RSpec: ~ Hours

http://www.codeschool.com/courses/testing-with-rspec

Write code that tests your code. If it seems like a post-modern nightmare, that's because it sort of is.

Rails Testing for Zombies: ~ Hours

http://www.codeschool.com/courses/rails-testing-for-zombies

After eating all these brainz, you're probably pretty smart. Now learn how to prove that your code works.

Best Practices

Rails Best Practices: ~ Hours

http://www.codeschool.com/courses/rails-best-practices

"Any fool can write code for machines, it takes a programmer to write code for humans."

Credits

First, we'd love to thank all the amazing people who created these source materials. Most of it is from CodeSchool and Treehouse, with a bit from Zed Shaw, and some from the people at Skillcrush. Obviously there are a lot more resources out there for learning these topics. This guide is just my current preferences and tries to put them in a linear fashion so skills can build upon each other. Hope it helps someone. Oh and the theme for the site was purchased from WrapBootstrap.

Contributing

Right now the repository is just a static hardcoded HTML site. We'll be moving it to Jekyll or something shortly so the content is easier to edit. Until then, feel free to fork and add resources, fix typos, whatever. You can also just use Github issues to suggest other resources, etc.

Fork me on GitHub