Date | Week | Topic |
---|---|---|
Sept 21 | Week 01 | Student Orientation, Bash, Ruby |
Sept 28 | Week 02 | Ruby II |
Oct 5 | Week 03 | Ruby III |
Oct 12 | Week 04 | Ruby IV |
Oct 19 | Week 05 | Ruby V |
Oct 26 | Week 06 | HTTP, DOM, HTML, CSS, Sinatra |
Nov 2 | Week 07 | Sinatra, Databases |
Nov 9 | Week 08 | Intro to Rails |
Nov 16 | Week 09 | Rails II, Intro to Agile |
Nov 23 | Thanksgiving Break | |
Nov 30 | Week 10 | Testing in Rails, Individual Project |
Dec 7 | Week 11 | Group Rails Project |
Dec 14 | Week 12 | Group Rails Project |
Dec 21 | Week 13 | Special Topics + Break |
Dec 28 | Winter Break | |
Jan 4 | Week 14 | Rails Project - Using APIs |
Jan 11 | Week 15 | Rails Project - Using APIs |
Jan 18 | Week 16 | Rails Project - Create API |
Jan 25 | Week 17 | Intro to Javascript |
Feb 1 | Week 18 | JavaScript API project |
Feb 8 | Week 19 | Pair JS Framework Project |
Feb 15 | Week 20 | Internship Interviews |
Feb 22 | Week 21 | Capstone Project |
Feb 29 | Week 22 | Capstone Project |
Mar 7 | Week 23 | Capstone Project |
Mar 14 | Week 24 | Capstone Project Presentations |
Mar 21 | Spring Break | |
Mar 28 | Week 25 | Internship Spike Project |
Apr 4 | Week 26 | Internship Spike Project |
Apr 11 | Week 27 | Internship Spike Project |
Apr 18 | INTERNSHIP BEGINS |
- Introduction to the program
- Get to know each other (students and staff)
- Understand expectations
- What is Ada?
- Working Ruby development environment
- Comfort with basic OS X Hotkeys
- Comfort with basic UNIX command-line skills
- navigation
- file manipulation
- grep
- man pages
- modifying your terminal
- Ruby history & background
- Learning basic ruby concepts
- irb
- Methods
- Iterators
- Variables
- Conditionals
- Learn about basic tools
- Text Editors (Atom)
- Terminal
How to OS X
Introduction to Unix
Installfest
Terminal Aliases & Profile
- Overview
- Community
- IRB
- Math
- Basic variables
- Using methods
- String
- Symbol
- Number
- Array
- Hash (Intro)
- Iterators
- Block
- Block scope
- Boolean
- Conditionals (excluding elsif)
More on Conditionals & Flow Control
- Compound conditionals
- While
- Until
- Case/when
In Week 2 we continue to discover the Ruby language with more exercises involving command-line scripts. We will focus the majority of our time on Objects, cementing the learning of Hash, Array, and String functionality, and begin to explore other standard classes from Ruby core (Dates and Times, for example.)
- Scope
- Learn core Ruby concepts
- Objects
- Object Inheritance
- Solidify our knowledge of Strings, Arrays, and Hashes
- Intro to Git
- Using gems
- Creating methods
- new
- Creating classes
- initialize
- attributes
Local & Instance Variables & Scope
- Difference between local and instance variables
- Variable scope
- Creation
- Initialize an Object
- Installation
- Usage
- Research
Solar System Project
Baby Dragon Project
In Week 3 we will be learning some intermediate ruby ideas such as advanced variables, inheritance and Enumerable. For the project we will be building a multiple-wave pure ruby application using a CSV database and inheritance called Bank Accounts.
By the end of the week students should be able to build a ruby DSL for a relational CSV backed database using basic ruby methodologies and best practices.
- Learn basic/intermediate ruby concepts and methods
- Scopes of all variable types (local, instance, global, etc...)
- Enumerable methods
- Running Koans
- Build a CSV backed ruby application
- Build an application using inheritance
- Collaborate on code via Github
Enumerable Methods
Inheritance
Advanced Variables
Reading from CSV
Assertions
[More on Assertions](http://en.wikipedia.org/wiki/Assertion_(software_development)
Ruby Koans
In Week 4 we start working with Test-Driven Development (TDD) and advanced Ruby concepts. We will spend a few days exploring TDD and the RSpec toolset through building our own projects and tests.
- Solidify knowledge and use of intermediate ruby concepts
- Scopes of all variable types
- Enumerable methods
- Begin an introduction into computer science (CS) fundamental concepts
- Working through Koans
- Unit testing your application with Rspec
- Practice pair programming
In Week 5 we will re-visit some topics introduced in previous weeks to assist in concept solidification. We will work as individuals on the FarMar project in order to gain some solid footing in CSVs as databases, and additional practice using intermediate Ruby concepts. By the end of the week students should be able to build a ruby DSL for a relational CSV backed database using basic ruby methodologies and best practices.
- Introduce code coverage as a methodology for ensuring accurate testing
- Solidify git workflow process, specifically with a pair
- Use intermediate ruby concepts and methods
- Variable scope
- Class methods vs Instance methods
- Enumerable methods
- Build a CSV backed ruby application
Pair programming Code Coverage Setup
In Week 6 we will cover an introduction of the "plumbing" of the Internet and how clients such as web browsers communicate with servers. We will be learning the basics of HTML & CSS. By the end of the week we will style a single page website using the common HTML & CSS practices.
Our learning will focus on the usage of basic HTML tags and their potential attributes. We will learn about CSS selectors, cascading rules, and common techniques for creating important web page elements. By the end of the week students should be able to create and style a webpage using valid HTML and CSS.
- Learn basic architecture of the Internet
- Learn the HTTP response cycle
- Learn basic techniques and best practices for HTML
- Learn basic techniques and best practices for CSS
- Build a personal blog in Sinatra
Intro to HTTP
HTML
HTML Divide and Conquer
Intro to Sinatra
CSS
CSS Divide & Conquer
ERB & layouts
In Week 7 we continue using Sinatra to solidify our understanding of web page elements using forms and additional HTTP verbs.
Our learning will cover an introduction to relational database concepts as well as understanding how to utilize these concepts. This includes an introduction to using SQL concepts using SQLite.
- Learn the HTTP verbs and the appropriate scenarios to use them
- Learn how and when to use forms in our web pages
- Enhance Sinatra blog using forms
- Learn the basics of relationship database constructs
- Practice pair programming
- Gain exposure to deployment via Heroku
- Advanced Sinatra
- Creating & Submitting Forms
- HTTP Verbs, CRUD & Idempotency
- Intro to Databases
- More Forms
- Using SQL
- Heroku Installfest
- Heroku
In week 8 we introduce students to the Ruby on Rails framework, which will be the focus of much of the work for the remainder of the course. Working individually, students build a basic Rails application. The focus is on learning how Rails and its implementation of MVC differ from Sinatra, how to work with ActiveRecord models, and begin to develop basic proficiency with Rails.
- Solidify understanding of web response cycle
- Introduce Rails
- ActiveRecord
- Controllers, Views & Routes
- Forms
- Introduce Data Modeling
- Improve workflow
In week 9 students continue to expand their knowledge of Ruby on Rails, learning how ActiveRecord can be used to achieve data/model designs with relationships. Working in pairs, students build upon their existing experience by revisiting the Farmer's Market project from week 5 in which they first dealt with a large, inter-related dataset. Additionally this week students are introduced to Agile development practices using Kanban boards with Trello.
- Solidify understanding of data modeling in MVC context
- Knowledge of one-to-one and one-to-many relationships, with primary and foreign keys
- Better understanding of CRUD routes through Rails resources
- Improve workflow with task tracking/management
For week 10 students continue to build web applications with the Ruby on Rails framework. The focus in this week is on testing both models and controllers using RSpec. A second major theme for the week is the use of Bootstrap to quickly build responsive websites. Basic validations for model classes are introduced, and the week's project has requirements for using them on each model.
- Understand how models can be checked for validity, and how validation requirements can be defined
- Extend RSpec knowledge from pre-web projects (Scrabble, FarMar) into the Ruby on Rails context
- Understand how to build DRY spec code by using shared examples
- Improve front-end design capabilities and productivity using a responsive, grid-based framework
- ActiveRecord Validations
- Testing in Rails with RSpec
- RSpec Shared Examples
- Easy Site Design with Bootstrap
- Rails Entity-Reltionship Diagrams (rails-erd gem)
Week 11 brings the first group, multi-week project for students. This is a major expansion of the project development process that we've used in the classroom until now. In order to emphasize the Agile methodology discussed in previous weeks teams select task managers and stand up leads, have stand up meetings with their project manager (instructor) each day, track all progress in Trello with user stories, and whiteboard site flows and entity relationships. Projects are demoed to project managers at the end of the week.
In addition to all of this, students are learning how to perform user authentication in Rails using session data and controller filters. Advanced validations for model classes are also discussed, and the bEtsy project provides several opportunities for using custom validations.
- Long-term project development with the Agile methodology
- Different team member roles (task manager, stand up leader, project manager)
- Password-based user authentication in Rails
- Authorization of specific actions/routes in Rails
- Building custom validations for advanced model designs
- User Authentication in Rails (1)
- User Authentication in Rails (2)
- Advanced ActiveRecord Validations
- Rails Controller Filters
- Rails View Methods
Week 12 finishes up the first team project for students. Within each team a different set of students take on the Task Manager and Stand Up Leader roles, but teams retain their previous Project Manager (instructor). Emphasis this week is on getting to a "feature complete" state; improving code quality through testing and code coverage; and presenting a project demo to colleagues and stakeholders.
Because we're continuing with the bEtsy project from Week 11, there is not much new lecture material. Crystal is presenting another CS Fundamentals lecture on the mergesort algorithm, and Kari will cover the use of GitHub Issues for contributing to open source projects by reporting bugs or feature requests.
- Long-term project development with the Agile methodology
- Different team member roles (task manager, stand up leader, project manager)
- Collaborating on other people's/teams' projects using GitHub Issues
Week 13 only has one day of class time, on Monday. We are taking the opportunity provided by this short week to run our own Ada Hackathon! Students present their project ideas (all card games in standard Ruby) and classmates sign up to be part of their team along with at least one TA or instructor.
- Hackathons are fun and social experiences!
- Have a great winter break!
Week 14 is our introduction to working with Web APIs (Application Programming Interfaces). Web APIs allow for the integration of our website with various services provided by other organizations. These services will supercharge our Rails apps and provide the final piece of our back-end programming curriculum.
Our project for Week 14 is another two-week team effort, further emphasizing the collaboration, agile methodology, and team management skills. For this project, teams build a site which allows users to sign-up with a social media account, and to then track other social media users using one integrated activity feed.
- JSON and XML data formats for computer-computer interaction
- OAuth and the standard web-based login flow
- Using the OmniAuth gem to integrate OAuth strategies for popular social networks
- APIs - What they are and how to use them
In Week 15 we continue working on the API project started in the previous week.
- Week 14 Continued
- Model factories for advanced testing, using Factory Girl
In Week 16 we will be begin a unit on Refactoring and Service Oriented Architecture. Build a Shipping service for a e-commerce projects. The emphasis will be on instilling good code craftsmanship and citizenship, exploring service APIs, and continuing to develop expertise with testing. In addition, we will utilize an unfamiliar code base to build skills in reading and comprehending code.
- Build an API
- Build a system following SOA principles
- Integrate features into an unfamiliar system
In Week 16 we will start using JavaScript! We will start with an introduction and a few small projects using on Chrome Dev Tools and JSFiddle. Then we will go into a few larger projects in the browser. Finally we will integrate some of our new found skills into a Rails application.
- Introduction to JavaScript, including core concepts and features:
- variables
- types
- arrays
- functions
- scope
- objects
- Understanding of the DOM and how the browser loads and represents web pages.
- Using JavaScript and jQuery to modify a web page:
- with the JavaScript document object and associated methods
- with jQuery's $ function and associated methods