Syllabus

Knowing how to hack also means that when you have ideas, you'll be able to implement them... It's a big advantage, when you're considering an idea like putting a college facebook online, if instead of merely thinking "That's an interesting idea," you can think instead "That's an interesting idea. I'll try building an initial version tonight."

Paul Graham

Why

The new reality is that every company is a software company. Even in traditionally brick-and-mortar industries, software is performing more and more of the work. And, of course, many companies (especially "lean startups") are purely software-based.

Lacking an understanding of how software works and how software is built while working in a software-based world puts you at a disadvantage.

In this course, our goal will be to develop an understanding of both of these things. We believe the best way to do that is to just build something yourself, using modern languages and workflows.

You will ultimately build a functional prototype of your own app idea. To do this, you will learn the Ruby on Rails web application framework, but our higher-level goals are to:

  1. Understand the general, platform-independent patterns of how applications work.

  2. Communicate more effectively and credibly with developers on our teams.

  3. Develop a builder's eye for problems that can be solved with technology.

  4. Prioritize features more intelligently by developing a better feel for their costs.

  5. Implement a modern software development workflow, from task management to version control to quality assurance to deployment.

  6. Be able to make and test small changes to an application yourself.

  7. Be empowered with a new, powerful, and just plain fun creative outlet

Who, Where, & When

Instructors

  • Instructor

    • Email:

    • Office Hours:

  • Instructor

    • Email:

    • Office Hours:

  • Instructor

    • Email:

    • Office Hours:

Required Materials

Software

You will receive a detailed guide to setting up a development environment on your computer. All required software is free.

Course Format

This course is entirely project-driven. We will build a series of applications together in class. We will start with a simple idea and learn just what we need about various technologies (Database architecture, hosting, deployment, Git, HTML, CSS, Ruby, Rails) to make that idea real.

We will then build a slightly more complicated idea, and deepen our knowledge of each topic. And then an even more complicated idea. In this way, we will spiral across topics picking up essential, applicable knowledge; what we're not going to do are deep theoretical dives into each topic, one after the other, without ever getting to build real stuff.

In addition, you will build your own app idea. During the first few weeks, you will think of a few of your ideas and we'll then, together, select one that matches the scope of the course. This app will be your final project.

The process will generally consist of the instructor demonstrating a concept in a tutorial app and then giving the class a challenge to practice it and think up questions. You are strongly encouraged to team up and work together on the challenges.

Expectations & Time Commitment

This course is designed for a beginner who has never programmed before. It is our goal to make programming accessible to as many people as possible, and dispel the mystique that surrounds it. It's really possible, with passion and persistence, for a beginner to become productive very quickly with today's tools.

Note: it's possible, but not always easy. If you have never seen a line of code before, you are going to be learning a lot of new things all at once, and so should plan to spend a significant amount of time. If you already have some programming experience, you may have to spend less time initially while we learn basics; but once we get into Rails, it will likely be all new to you too.

What you can expect from us in return is a lot of support. We know it's a lot, and we're here for you — one-on-one appointments, review sessions, etc. We all will help each other on the class discussion board. There is no such thing as a dumb question; we're all beginners here, learning together.

Attendance (10% of your grade)

Class attendance is mandatory, and you are expected to be on time. 1% will be deducted from your final grade for each unexcused absence.

An excused absence is a documented medical emergency, religious holiday, etc. Get in touch with the instructor immediately if you foresee any such absences.

Attendance of office hours will be noted and may make the instructor more sympathetic when it comes to borderline grades.

Homework (45% of your grade, 5% each)

Homeworks will be posted each week by noon of the day following class. Homeworks will be due at the time that your section begins. So, if you have class on Wednesday the 21st at 6:00pm, then homework will be posted by Thursday the 22nd at noon, and will be due on Wednesday the 28th at 6:00pm.

You will be able to get instant and automatic feedback on most of the homeworks as you work. If you want any partial credit on homeworks, you must schedule a one-on-one appointment with an instructor to go through your solutions and discuss anything that's fuzzy. The appointments are typically remote via Google Hangout. You are allowed to book up to 30 minutes 1-on-1 with an instructor every week.

The primary objective of the homeworks is to be hard and to expose places where your understanding of the material is shaky early, so that you can book appointments with us to clarify it. Every concept in this course builds upon the one before it, so it is essential that you not fall behind. We strongly recommend taking advantage of this unique resource; we are lucky to have professional developers acting as assistant instructors.

You are allowed and encouraged to work in study groups on the homeworks, but you must type up your final solutions yourself. In other words, no copy-pasting.

Midterm (25% of your grade)

The midterm exam will occupy one-half of Week 6 class. It will be a practical exam; you will download partially complete/buggy applications and fix them. The format will be exactly the same as your homeworks.

Final Project (20% of your grade)

The final project will be to build one of your own ideas, and to record a brief screencast demoing it and discussing something you learned from the process of building it.

Tentative Schedule

  • Week 1

    • Wireframing

    • Domain Modeling

    • At Home: Introduction to HTML

  • Week 2

    • More on HTML

    • Bootstrap

    • At Home: Introduction to Ruby

  • Week 3

    • More on Ruby

    • Scraping the Web, Parsing CSVs, APIs

    • At Home: Introduction to RCAV

  • Week 4

    • More on RCAV

    • Parameters

    • At Home: CRUD with Ruby

  • Week 5

    • More on CRUD with Ruby

    • The Golden Seven

    • At Home: Review

  • Week 6

    • Midterm Exam

    • Generators

    • At Home: Direct Associations

  • Week 7

    • More on Direct Associations

    • Indirect Associations

    • At Home: Authentication

  • Week 8

    • More on Authentication

    • Authorization

    • At Home: Workflow

  • Weeks 9, 10, & 11

    • Optional Topics

      • Sending emails, SMS

      • File uploads

      • JavaScript & jQuery

      • Search

      • Social Networks

      • Maps

      • Etc

    • Final Project

Last updated