CMSC 389R: Ruby on Rails

Instructor: Neil Spring
Syllabus: pdf
Place: CSIC 1122 MTuTh 1-2:35
Textbook: Agile Web Development with Rails (4th edition).
Reading schedule: pdf
Forum: forum.cs
Lecture Notes: txt


Homework site: scriptroute https
  1. Zero - due 1/4
  2. One - due 1/10
  3. Two - due 1/13
  4. Three - due 1/20

Review Vocabulary

vocabulary pdf

Final Exam

The final exam will be during the last class period, Jan 20, starting at 1:50.

Pre-Class FAQ

What is Rails?

Rails is an open source web development framework. Unofficially, Rails is the fastest, easiest means of producing the server and database side of web applications. It has been used to build great software with relatively little effort. If you want people to access software you wrote, Rails is a great way to make that possible. It also has a lot of potential for social software: twitter is famously based on Rails.

Which version of Rails will we learn?

Rails 3.0 was released August 29, 2010. We'll learn it.

Will there be a textbook?

We'll use the beta version of Agile Web Development with Rails (4th edition). There are few books ready for Rails 3.0. The expectation is that this book will be "final" January 20, which means it should be in pretty good shape while we use it. It's also fairly cheap as an e-book ($28).

What are the projects?

You'll build something cool, ideally of your own design, in this class in small groups. There won't be time to make it beautiful, but there will be time to make it functional. Projects will be graded on creativity, elegance, completeness, and ambition.

What do I need to know beforehand?

You must have initiative and creativity, and refuse to be intimidated by error messages. You should have spent 20 hours playing with Ruby (which you can accomplish in December if you haven't taken 330). Prerequisites for the class include 250 and 212/216. Experience with SQL, CSS, HTML, and other technologies is useful and demonstrates initiative, but is not entirely required. If you believe the formal prerequisites fail to consider your preparation by other means, contact me. Alternative prerequisite experience may include fluency in sql, experience with production-class Javascript like Scriptaculous and Prototype, and Ruby proficiency. Fluency means at a level where you don't need to consult google to perform most tasks. I will expect you to show off your prior code; this is not about whether you list javascript, sql, or ruby on your resume.

Why am I teaching this class?

I have written several Rails-based applications: the department's graduate admissions review system, a scoreboard for process schedulers used in CMSC 412, a home automation system that logs temperature and hvac status from my proliphix thermostat. I've modified other software to use directory-id based authentication. It means something to me that Rails is the tool I turn to when I want to build something useful. I've also suffered through other people's PHP and Python-based web applications, and appreciate just how rich the Rails framework is.

How will the course be graded?

There will be a "final" exam, homeworks, and the project above. I could give you detail, but you should know by now that such detail doesn't really matter. Screw something up in a class and you won't get an A; screw everything up and you won't pass.

Will the class run at all?

The class must be nearly full to be taught at all. Please sign up!

Updated (11/23): Can I take 389R and 389C and 389P at the same time?

Probably. If you can take 15 credits in 15 weeks, 3 credits in 3 weeks should be feasible. 389P should have some overlap (HTML and SQL topics) so may not be as steep a challenge to take at the same time. Note that all are programming courses, so if you struggle to code, it might be better to play it safe and stick to one or maybe two.

Updated (11/23): Can I take 389R next winter instead?

I agreed to develop and teach this class for Winter 2011; I haven't agreed to teach it in the future, and I haven't been approached by anyone who would take it over. I have heard that the other 389 classes have been offered every winter in some form, so can be expected to persist.

My plan was to (tentatively) run the class every other winter, depending on demand and how happy students are with the class. I expect that every other winter would include seniors and juniors, and some eager sophomores, and that juniors should be able to take the class with confidence, especially after 330's presentation of Ruby. Of course, much can change in two years.

Updated (11/23): What's the right strategy for enrolling?

If you're interested, sign up.

It's probably a poor strategy to wait to sign up until you're convinced the class will run - by then the class may be full and that's not good.

Similarly, no one will "sit in" on the class; sorry.

I have other questions!

nspring, cs, umd, edu.