What is 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?
3.0 was released
August 29, 2010. We'll learn it.
Will there be a textbook?
We'll use the beta version
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,
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
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
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.