Syllabus

Teacher Contact Info

Jesse Wolgamott

jesse@theironyard.com

713-397-2814

Schedule

Class is from June 9 to August 29, 2014.

Lecture is from 9:30 AM to 12:30 PM Monday-Thursday, with breaks during that time. Depending on the topic, we may end early.

Lab is from 1 PM to 5 PM Monday-Thursday and 9 AM - 5 PM on Friday.

Office hours and one-on-one instruction

A teacher or TA will be available Monday-Friday from 9 AM to 5 PM at minimum. During lab time, you can schedule one-on-one time with either of us. After hours, we may be available in the classroom or in HipChat, which we use for group communication.

Holidays

July 4th falls on a Friday. We will have no class on July 4th. In addition, July 3rd will be a lab day. Any students that want to take a 4-day weekend are welcome to: weekend homework assignments will be given Wednesday, July 11th.

Topics

The topics we are going to cover in class are listed below. This list is not comprehensive: we will cover additional topics as needed.

  • General programming
    • Command-Line Orientation
    • Git & GitHub
    • Pair Programming
    • Principles of Agile Development
    • Estimation
  • Ruby
    • Ruby Basics: syntax, numbers and strings, arrays and hashes, methods
    • Logic and Control Flow
    • Object-Oriented Programming with Ruby
    • Modules
    • Bundler and Rubygems
    • Unit Testing with Ruby
    • Pry
  • Web Applications & Front-End
    • HTML & CSS
    • Introduction to Web Applications with Sinatra
    • Zurb Foundation
    • Introduction to JavaScript
    • jQuery
    • CoffeeScript
    • Ajax
  • Rails
    • MVC & Intro to Rails
    • Rake Tasks and Rails
    • YAML
    • Simple Rails Models (CRUD)
    • Migrations
    • Rails Model Relationships
    • STI and Polymorphic Relationships
    • Model Validations
    • SQL
    • Rails Controllers & Routing
    • Before & After Filters
    • REST & Building APIs
    • Rails Views & ERb
    • Eliminating Duplication with Layouts and Partials
    • View Helpers
    • Forms & Validation
    • Haml
    • Sass & the Asset Pipeline
    • Sending Emails
    • Generating JSON
    • The User Session & Flash
    • Roll-Your-Own Rails Authentication
    • Testing with Rails
    • Deploying Rails on Heroku
  • Rails Gems/Plugins
    • Advanced Testing with Rails: FactoryGirl, Faker, RSpec
    • Acceptance/Integration Testing with Capybara
    • Authentication with Devise
    • Admin Interface with ActiveAdmin
    • File Uploads with CarrierWave
    • Debugging with better_errors and pry-rails
    • Consuming APIs with HTTParty
  • Optional Bonus Modules
    • Ember and Single Page Applications
    • Authentication with Omniauth
    • Easier Forms with SimpleForm
    • Search with pg_search and Sunspot or ElasticSearch
    • Security and Linting with Brakeman, Rubocop, and Rails Best Practices
    • Asynchronous Processing with Sidekiq
    • Deploying Rails to non-Heroku environments

Curriculum as a mind map

curriculum mind map

Capstone Project

During the last three weeks of the course, you will be working on your capstone project, putting all you've learned into practice. You will be working with a group of 2-4 people on your project.

At the end of week 9, you'll present your idea for a final project and get feedback, helping you scope the project. During weeks 10, 11, and 12, you'll work primarily on this project. We will have lecture time, but it will be tailored to what you need to know for your project and may be optional. We will let you know what days lecture is optional.

This project must use Ruby on Rails to build a web application of significant size, backed by a database and using some of the libraries we covered during class.

A front-end development course is happening at the same time as our class. If anyone wants to combine efforts with members of that class, that is a fantastic idea, but expectations for your project will be higher.

Materials

All students must bring their own MacBook laptop. Your MacBook should have a minimum of 4 GB of RAM and 128 GB of hard drive space. Those are minimum specs, and I recommend getting 8 GB of RAM and a 256 GB hard drive, but that’s your choice to make. Any of the current MacBook Air models or MacBook Pro models will work. I have a 13-inch MacBook Pro and really dig it.

Your MacBook must be running OS X Mavericks. Mavericks is a free upgrade from the App Store.

There is no commercial software required for the class, but you may want to purchase some. We are going to use a free text editor in class – Atom – but Sublime Text is great, as is RubyMine. (I am working on a classroom license for RubyMine, so if you decide to try it out, use the 30-day trial: do not purchase it yet.)

Policies

Absence policy

You can miss up to 4 lectures; after that, your job placement guarantee is forfeit. I don't recommend missing any, as we will be moving very fast.

Late homework policy

Your homework is due by 6 AM on the day it is due. After that, it is late. Like the absence policy, you can turn in homework late 4 times, although I do not recommend it.

I would rather see a solid attempt on time than a complete assignment late. Solid attempts are not considered late.

Honor code

You are expected to do your own work. You should use all resources available to you, including open-source code, but copy and pasting open-source code is prohibited: you should use it only for inspiration or as a library in a bigger project.

Copying homework is taken very seriously and can result in forfeiting job placement.

Code of Conduct

Like the technical community as a whole, classes at The Iron Yard are made up of a mixture of people from all different backgrounds.

Diversity is one of our huge strengths, but it can also lead to communication issues and unhappiness. To that end, we have a few ground rules that we ask people to adhere to when they're taking a class at The Iron Yard. These rules apply equally to teachers, students, other staff, and guest lecturers.

This isn't an exhaustive list of things that you can't do. Rather, take it in the spirit in which it's intended - a guide to make it easier to enrich all of us, the technical communities in which we participate.

This code of conduct applies to all communication: this includes in class, HipChat, email, and other forums such as Skype, Google+ Hangouts, etc.

If you believe someone is violating the code of conduct, we ask that you report it by talking to your teacher. If you do not feel comfortable talking to your teacher, speak with any Iron Yard teacher or campus director.

  • Be welcoming, friendly, and patient.

  • Be considerate. Your work will be used by other people, and you in turn will depend on the work of others. Any decision you take will affect your colleagues, and you should take those consequences into account when making decisions.

  • Be respectful. Not all of us will agree all the time, but disagreement is no excuse for poor behavior and poor manners. We might all experience some frustration now and then, but we cannot allow that frustration to turn into a personal attack. It's important to remember that a community where people feel uncomfortable or threatened is not a productive one. Members of the Iron Yard community should be respectful when dealing with other members as well as with people outside the Iron Yard community.

  • Be careful in the words that you choose. Be kind to others. Do not insult or put down other people. Behave professionally. Remember that harassment and sexist, racist, or exclusionary behavior are not appropriate for this class. This includes, but is not limited to:

    • Violent threats or language directed against another person.
    • Sexist, racist, or otherwise discriminatory jokes and language.
    • Posting sexually explicit or violent material.
    • Personal insults, especially those using racist or sexist terms.
    • Unwelcome sexual attention.
    • Advocating for, or encouraging, any of the above behavior.
    • Repeated harassment of others. In general, if someone asks you to stop, then stop.

  • When we disagree, we try to understand why. Disagreements, both social and technical, happen all the time and The Iron Yard is no exception. It is important that we resolve disagreements and differing views constructively. Remember that we're different. The strength of The Iron Yard comes from its varied members, people from a wide range of backgrounds. Different people have different perspectives on issues. Being unable to understand why someone holds a viewpoint doesn't mean that they're wrong. Don't forget that it is human to err and blaming each other doesn't get us anywhere, rather offer to help resolving issues and to help learn from mistakes.

This text is taken from the Django project.