Overview
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.
-
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? -
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. -
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. -
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
Internet Basics
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.4actually 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
- 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
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.
Programming
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!
Advanced Topics
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."
About
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.