Workshop Curriculum
From DevchixWiki
Contents |
Web App & Rails Overview
These topics we cover in a big group at the beginning.
Student shall be able to:
- understand a browser makes a request to the server, and the server returns the HTML to "render" in the browser
- know the major components of a browser request: URL, content type
- describe the sections & layers on a server that return the response: Ruby | Rails | App, Database
- Programming tools we'll be working with
- Rails
- Rake
- git: for source code control
- a database
- an editor
- hosting services: heroku/github
- Model-View-Controller
- in general
- in Rails
- Test-first teaching
Break into small groups
Do introductions - have students talk about what their background is, why they came to the workshop, what they want to get out of it...etc. This can inform what you focus on.
As you're going through the curriculum, ask students questions, especially if they aren't asking questions and engaging.
Database
Some students, even experienced programmers, don't have experience with relational databases.
Student shall be able to:
- describe a record (i.e., recipe card)
- describe a table as a collection of records (i.e., recipe box)
- describe a database as a collection of tables
- describe relations between tables
Ruby
Student shall be able to:
- describe the primitive types and the differences between them: numeric, string, symbol
- differentiate between the collection types: array, hash
- enumerate & loop over collection types
- use irb to test code snippet & language construct
HTML and HTTP
[TBD]
Rails Quick Start
Student shall be able to:
- Generate a bare bones Rails app (use the template to apply cucumber features)
- Start the server (always do
ruby script/serverso Windows folks don't get confused) - Edit static HTML pages (index.html)
- Create a git repository, add files, & commit
- Deploy bare bones app to Heroku
Add a Model: Topic
Student shall be able to:
- Inspect the cucumber features for topics
- Run the cucumber features for topics, notice they fail
- Run the scaffolding command to generate topic files
- Run the cucumber features again, notice one now passes
- Create topics using the web UI
- Look at the logfile to see what's happening when they do that
- View the topics they create in the SQLite firefox extension
- Open
ruby script/dbconsoleto see topics
Rails Internals
Student shall be able to:
- Describe MVC as business logic, presentation logic, application logic OR models, views, and stuff in-between
- Dump a list of routes with the "rake routes" command
Add some stuff to the Topic model
Student shall be able to:
- Add a title validation to Topic
- Add a description validation to Topic
- Relate routes to URL
- Dump a list of routes with the "rake routes" command and notice the additions
Add a Model: Vote
Student shall be able to:
- Understand that a Topic has many Votes, and a Vote belongs to a Topic
- Describe the relationship between Topics & Votes
- Created nested REST
- Dump a list of routes with the "rake routes" command and notice the nesting
Advance: Performance
Student shall be able to:
- Add a Topic ID index to the Votes table
- Spot 1+N query storm
TODO for curriculum
- link slides
- remove git diagram
- standardize git commands (
git add .vsgit add -A)
- email Microsoft folks about projector situation
- add .gitignore to template
- add postgres column to table of common SQL commands

