Students will get their hands dirty writing Ruby applications that interact with files, websites, and third-party APIs. Most projects will involve printing out "interesting information" in multiple formats, e.g., text, HTML, CSV, and/or JSON.
The high-level goal is to get students comfortable with the idea of fetching raw data, processing it, and outputting it in a new format. We want students asking questions like:
- Where does the data I want live?
- How do I get that data?
- How is that data encoded?
- How do I decode and process that data in Ruby?
- Data in Ruby (integers, floats, strings, arrays, hashes, et-)
- Reading and writing files
- File formats and encoding (text, HTML, CSV, images, et-)
- Command line arguments and environment variables
- Interacting with third-party APIs and websites in Ruby
- Producing web pages (HTML/CSS/JavaScript) with Ruby
- HTML photo gallery generator
- Text analysis and reporting (word counts, frequencies, et-)
- Generate reports from public APIs (e.g., Sunlight Labs, data.sfgov.org, GitHub, IMDB, etc.)
Students will dive into basic database-backed web applications using Sinatra. This sprint will emphasize wireframes, static mockups, and data modeling.
The high-level goal is to get students comfortable with what it means to write, deploy, and debug a web application.
- Deploying web applications
- Wireframing, interface design, and static mockups in HTML/CSS
- The HTTP request/response cycle
- Relational databases and persistence
- Modeling data (1-many, many-many)
- Cookies, sessions, and user authentication
- File uploading and processing
- Message Board
- Basic E-Commerce App (e.g., Craigslist, Stripe integration, etc.)
- URL Shortener
- Link-sharing website a la Reddit
This sprint will cover several "core patterns" in web development. Students will have the choice of defining their own project to work on, if they want.
- AJAX
- File uploading and processing
- Background tasks
- Structured JavaScript
- Sending email
- More complex data models
- Photo Gallery
- Polling Application
- Front-end centric projects (e.g., games)
- Student-Defined Projects
Students have the option of defining their own project, continuing to work on their project from Sprint 3, or pick up a new project work on.