Ruby on Rails - August 2015

Resources for the TIY-Durham Rails course.

Syllabus

Teacher Contact Info

Mason F. Matthews

Email: mason.matthews@theironyard.com

Slack: @mason.matthews

Cell: (919) 302-5139 (Only call after 5 PM for emergencies)

Schedule

The cohort runs from August 31st to November 20th.

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

Lab is from 1:30 PM to 5 PM Monday-Thursday and 9 AM to 5 PM on Friday. On Fridays, some time will be taken for campus meetings such as the Weekly Huddle.

Office hours and one-on-one instruction

A teacher or TA will be available during lab times, at a minimum. You can schedule one-on-one time with either of us. After hours, we may be available in the classroom or in Slack, which we use for group communication.

Holidays

No classes will be held on Labor Day (Monday, September 7th). Students will be welcome to continue to use the campus on holidays, however.

Topics

Class topics are listed week-by-week below. However, this list is not definitive and we will reorder things based off how the class is going.

Each list of topics is a list of things students should be comfortable with at the end of that week.

Week 1 - Ruby

Non-code discussions beginning this week:

  1. The process of human learning
  2. Git and GitHub

Week 2 - OOP and Testing

We will also start discussing:

  1. Agile development practices
  2. Pair Programming

Week 3 - Databases and Rails Models

Non-code discussions beginning this week:

  1. Troubleshooting and debugging
  2. Working with legacy code

Week 4 - APIs and Rails Controllers

Non-code discussions beginning this week:

  1. Software estimation
  2. Database and workflow diagramming

Week 5 - HTML and Rails Views

Non-code discussions beginning this week:

  1. Real-world GitHub workflows
  2. Marketing yourself/networking

Week 6 - Rails Features

Non-code discussions beginning this week:

  1. Working on cross-technology teams

Week 7 - JavaScript

Non-code discussions beginning this week:

  1. Finding a good work environment

Week 8 - Web App Patterns

Non-code discussions beginning this week:

  1. Technical debt mitigation

Week 9 - Web App Patterns

Non-code discussions beginning this week:

  1. Development on large teams

Friday of this week will be Pitch Day. You will pitch your project ideas to the entire cohort (all the classes will be together) and then vote on your preferences. We will assign you to teams based on your preferences, and you can start work as soon as Friday evening.

Weeks 10-12

During these weeks, final projects will be in full swing. Ad hoc lectures may occur, but they will be optional. You should be comfortable with:

Assignments

In-lecture Exercises

During breaks in the lecture during the first half of the course, you will be given exercises for practicing the content you’ve just learned. Sometimes I’ll give you a set of tests, and you’ll be asked to write code to make them pass. Other times you’ll be given a blank slate to start from. In most cases, you won’t have time to finish the exercises before I ask you to stop and throw away what you’ve done. This is normal (if not disconcerting) and will be somewhat liberating a few weeks in.

In-lecture Challenges

During the second half of the course, we’ll have reached a point where the knowledge we accumulated in the first few weeks risks being crowded out by new content. In order to combat this (and to actively prepare for interview questions), lecture will include challenges that cover fundamental Ruby topics. You will have approximately 20 minutes to work on each of these challenges, and you’ll do so individually.

Nightly Assignments

After classes on Mondays, Tuesdays, and Wednesdays, you’ll be given an assignment. You’ll work on these during the lab time that afternoon, and it’s expected that you won’t finish them by 5pm. You’ll be asked to work on these as individuals, and you’ll usually be expected to write tests first.

Weekend Assignments

After classes on Thursdays, you’ll be given a substantially longer assignment. You’ll usually work on these assignments in pairs (which we’ll assign for you), and you’ll occasionally be working with students from other courses. Lab time on Thursday afternoon and all day Friday will be dedicated to helping you with these. As above, we expect that you won’t finish these by 5pm on Friday, and you’ll be expected to write tests first.

Final 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-5 people on your project, and these groups CAN include students from the other courses. Projects that span multiple courses typically turn out the best.

During weeks 10, 11, and 12, you’ll spend all of your time working on this project (minus some field trips and guest speakers). We will potentially have occasional lecture time, but it will be tailored to what you need to know for your project and will be optional.

This project must use Rails in some fashion, although it will inevitably involve additional technologies. If you are not planning to spend much time on the visual user interface, I highly suggest working with someone from another class to make your project visually appealing.

Policies

Absence Policy

If you miss more than 4 lectures, your enrollment in the job placement program is forfeit and you may not be allowed to graduate. I don’t recommend missing any lectures, as we will be moving very fast.

Late Homework Policy

Your homework is due by 8 AM on the day it is due. After that, it is late. If you regularly turn in your assignments late, your enrollment in the job placement program is forfeit and you may not be allowed to graduate.

We would rather see a solid incomplete attempt on time than a complete assignment late. Solid incomplete attempts turned in on time 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 if you copy and paste anything, you MUST understand every line of that code.

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

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. 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 discussions, Slack, Teamwork, email, and other forums.

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.

This text is taken from the Django project.