This course provides students with an introduction to server-side web application development, with an emphasis on the pragmatic skills needed to build live, functioning web applications. Students will learn fundamental domain modeling skills, server-side HTTP development using the Ruby on Rails framework, the essentials of front-end development with HTML/CSS, agile software techniques and best practices, debugging techniques, and the basics of application-level security.
(Note: Students without any experience with relational databases may be asked to join an online, two-hour database orientation session led by the professor)
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.
• None required
Students will need a laptop that can run the Ruby on Rails framework, specifically: a Mac running OS X 10.13 (High Sierra); Windows 10 or newer; or a recent Linux installation. Students will be provided with specific instructions on how to install the Ruby on Rails framework before the quarter begins.