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.
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.
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.
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.
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?
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.
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 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
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
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
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.
Thanks to the amazing team at Skillcrush, lots of tech terms are artfully explained. These are the ones you 100% need to know.
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.
We're building programs that can talk to other programs. Their APIs are their languages. Sort of.
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.
The term 'debugging' was coined by Grace Hopper when she literally removed a moth from her computer to get it working.
Finally understand how
18.104.22.168actually 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.
Not liking Ruby on Rails is like not liking parfait.
There's probably a pun we could come up with, but we take security seriously.
- 404 Error
- Responsive Design
Keep your mind like water, but your design should be fluid and screen independent.
Despite what you might read, it's basically just black magic, the dark arts, the voodoo that gives traffic.
Because green to you might not be green to me. So there's these really specific codes we use for colors.
The. Best. Programming. Language. Ever. Period. We. Promise.
All applications are basically just content management systems anyway.
- Pseudo Code
First learn to express yourself. Then learn to code.
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.
And one day in February 2005, the Internet suddenly felt different.
- Frontend / Backend
What's the difference? Turns out, less and less.
The most pervasive and ubiquitous programming language since Flash.
Just think Excel spreadsheet on crack. Better. We mean better.
We could never love anyone that didn't appreciate the importance of a separation of content and style.
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.
The venerable Zed Shaw gives us a short book about your shell.
Command Line Basics: 0.5 Hours
Bash Basics: 0.5 Hours
SQL & Databases
This section is all about understanding what databases are and how to query them for data.
Learn SQL the Hardway: 4 Hours
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
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
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
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
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
A beautiful and interactive tutorial from the amazing people at CodeSchool.
CSS3 on Treehouse: 4 Hours
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
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
Get an introduction to the basic concepts of Git version control.
Git Real: 4 Hours
A more advanced introduction to the core of version control with Git.
Git Immersion: 3 Hours
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
The entire Pro Git book, written by Scott Chacon and published by Apress, is available here.
Git Videos: 1 Hours
Four videos covering some basics from the creators and maintainers of Git.
Try Ruby: 1 Hour
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
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.
jQuery Air, First Flight: 6 Hours
jQuery Air, Captain's Log: 6 Hours
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
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
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
Learn all the little bits that make Ruby one of the most popular programming languages amongst non-programmers and programmers alike.
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
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
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
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 with RSpec: ~ Hours
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
After eating all these brainz, you're probably pretty smart. Now learn how to prove that your code works.
Rails Best Practices: ~ Hours
"Any fool can write code for machines, it takes a programmer to write code for humans."
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.
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.