Note: Originally taught as a 5 week intensive course at NYU's Interactive Telecommunications Program in the 2006 Summer Session by dedi hubbard (with a push from joe versoza). This is the static archive of a Rails built syllabus. The course journals are no longer available.
Having a dynamic web site to promote, document and share projects is a neccessity at ITP. However, the barrier of entry for creating custom database driven web sites is set pretty darn high, but what everyone doesn't know is that web development can actually be much easier... and even (gasp!) fun. There are a bunch of methodologies and frameworks out there that help ease web development, and this course is about creating web sites from the ground up, in a quick, easy, organized and understandable way.
Agile Web Development favors an iterative, build and change, build and change approach. There's a strong focus on getting a project up and running quickly and adding functionality in stages that include designing, implementing and testing. At any given stage in a project, there is a working application ripe for new features and further development. Methodologies that will be covered will include utilizing a model view controller architecture, database abstraction through object relational database mapping, templating systems to separate presentation from logic, test driven development, and using source code management.
Students will begin with basic exercises leading to the development of a fully functional database driven web site serving their own needs. The class will use the Ruby on Rails language and framework. This class is for people with some experience with programming and with HTML. Some prior experience/knowledge with XHTML/CSS and a basic understanding of SQL is also recommended.
Week 1: Ruby & Web Basics
Course intro, ruby basics (variables, iterators, conditionals, classes, common objects, output). Server-Client, http, db access, sql.
Week 2: First Looks at Rails
Scaffolding, Convention over configuration, Change-View-Change, etc.
Week 3: The Rails Way
Working without the scaffolds.
Week 4: Rails Goodies
Plugins, etc. Rich Associations.
Week 5: Learning from Rails
Special topics in rails, a look at other frameworks. Workshop for projects.
Week 6: Presentations
Work out the homework assignments and work out the exercises. You may work in groups up to 3 with the expectation that each member of your team must come up with their own explanations (in particular their contributions, thoughts and ideas).
Each week write in your Development Journal about some tidbit you learned or had trouble with in detail (feel free to come up). Discuss how to solve the problem (in words or pseudo-code) and include relevant examples. Important: Make sure to include code, commentary and any references or help you sought. Be ready to elaborate in class.
Build an application in Rails and document the process.
There are many Rails books down the pipeline, for now I'd recommend some version (the first edition is in print now and the second is in progress and available as a beta pdf) of "Agile Web Development with Rails" and "Programming Ruby" both which are available through the Pragmatic Programmers bookshelf.
The class site is available at http://agile.totallyrules.com/