We will use the Ruby language and the Rails framework to immerse students into the challenge of building a live, database-backed web application deployed at a public web address.
Specifically, students will learn how to:
- Build a live website or web application and deploy it to the public internet
- Use the Ruby on Rails framework to rapidly build a web application
- Write software using the Ruby programming language
- Use a relational database to provide content for dynamic websites
- Follow industry best-practices of modern web software development
- Troubleshoot and resolve the most common problems with web applications
- Essentials of the Ruby programming language
- Essentials of the Rails framework
- Front-end frameworks such as jQuery and Bootstrap
- MVC architecture principles
- Domain modeling and its role in web application development
- Agile and "extreme programming" practices
- Secure user authentication and authorization
Students will be expected to complete:
- Weekly homework (likely for the first four weeks) (20%)
- Midterm around week 6 (30%)
- Final project due by the end of the course (50%)
Projects are chosen from a provided list of "project templates." Students can propose a personal project subject to approval and equivalence with the standard project requirements.
- Students experienced with object-oriented languages (C++, Java, Python, etc.): None required.
- Students without OO experience: "Learn to Program", 2nd Ed., by Chris Pine, published by Pragmatic Bookshelf.
Students will need a laptop that can run the Ruby on Rails framework, specifically: a Mac running OS X 10.9 (Mavericks) or newer; or Windows 7 or newer; or a recent Linux installation. Students should also be familiar with a code editor such as Sublime Text, Atom, TextMate, Emacs, or Vim
Instructor will give more specific instructions on how to install the software before the quarter begins.
Students must be fluent in at least one programming language.
Students fluent only in a non-OO language such as C will be required to purchase the "Learn to Program" textbook to augment class materials.