Skip to content

Latest commit

 

History

History
1197 lines (895 loc) · 44.5 KB

C03_classroom.md

File metadata and controls

1197 lines (895 loc) · 44.5 KB

#Cohort 3 Classroom Calendar

At a Glance

Date Week Topic
May 4 Week 01 Student Orientation, Bash, Ruby
May 11 Week 02 Ruby II
May 18 Week 03 Ruby III
May 25 Week 04 Ruby IV
Jun 1 Week 05 HTTP, DOM, HTML, CSS, Sinatra
Jun 8 Week 06 Sinatra, Databases
Jun 15 Week 07 Intro to Rails
Jun 22 Week 08 Rails II, Intro to Agile
Jun 29 4th of July Break
Jul 6 Week 09 Testing in Rails, Individual Project
Jul 13 Week 10 Group Rails Project
Jul 20 Week 11 Group Rails Project
Jul 27 Week 12 Special Topics & Group Rails Project
Aug 3 Week 13 Rails Project - Using APIs
Aug 10 Week 14 Rails Project - Using APIs
Aug 17 Week 15 Rails Project - Create API
Aug 24 Week 16 Intro to Javascript
Aug 31 Week 17 JavaScript API project
Sept 7 Labor Day Break
Sept 14 Week 18 Pair JS Framework Project
Sept 21 Week 19 Pair JS Framework Project
Sept 28 Week 20 Final Rails Project
Oct 5 Week 21 Final Rails Project
Oct 12 Week 22 Final Rails Project
Oct 19 Week 23 Final Rails Project
Oct 26 Week 24 Final Rails Project Presentations
Nov 2 Week 25 Internship Spike Project, Interview Prep
Nov 9 Week 26 Internship Spike Project
Nov 16 Week 27 Internship Spike Project
Nov 23 Thanksgiving Break
Nov 30 INTERNSHIP BEGINS

Week 1

Learning Goals

  • 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

Resources

How to OS X
Introduction to Unix
Installfest
Photo Scavenger Hunt

Terminal Links

Introduction to Ruby

  • Overview
  • Community
  • IRB
  • Math
  • Basic variables
  • Using methods

Introduction to Atom

Ruby 102

  • String
  • Symbol
  • Number
  • Array
  • Hash (Intro)

Flow Control

  • Boolean
  • Conditionals (excluding elsif)

Calculator Lab

Ruby 103

  • Iterators
  • Block
  • Block scope
  • Literals

More on Conditionals & Flow Control

  • Compound conditionals
  • While
  • Until
  • Case/when

Week 2

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.)

Learning Goals

  • Scope
  • Learn core Ruby concepts
    • Objects
    • Object Inheritance
  • Solidify our knowledge of Strings, Arrays, and Hashes
  • Intro to Git
  • Using gems

Resources

Objects

  • Creating methods
  • new
  • Creating classes
  • initialize
  • attributes

Local & Instance Variables & Scope

  • Difference between local and instance variables
  • Variable scope

Hashes

  • Creation
  • Initialize an Object

Hash Practice

Introducing Gems

  • Installation
  • Usage
  • Research

Projects

Orange Tree
Solar System Project
Baby Dragon Project

MasterMind
Hangman

Week 3

In Week 3 we will be learning some intermediate ruby ideas such as advanced variables, memoization, and Enumerable. For the project we will be building a pure ruby application backed by a CSV database called FarMarFinder. 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.

Learning Goals

  • Learn basic/intermediate ruby concepts and methods
    • Scopes of all variable types (local, instance, global, etc...)
    • Performance with memoization
    • Enumerable methods
  • Running Koans
  • Unit testing your application with Rspec
  • Build a CSV backed ruby application
  • Practice pair programming
  • Collaborate on code via Github

Resources

Enumerable Methods
Inheritance
Advanced Variables
Reading from CSV
TDD/BDD
RSpec
Assertions
[More on Assertions](http://en.wikipedia.org/wiki/Assertion_(software_development)
Ruby Koans

Projects

FarMarFinder

Week 4

In Week 4 we continue 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 testing projects and tests.

Learning Goals

  • Solidify knowledge and use of intermediate ruby concepts
    • Scopes of all variable types
    • Enumerable methods
  • Begin an introduction into computer science (CS) fundamental concepts
    • Recursion
    • Big O notation
  • Running Koans
  • Writing Rspec tests
  • Giving lightning talks

Resources

Recursion
Complexity

Projects

Scrabble
Bank Accounts
Dictionary

Week 5

In Week 5 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 and deploy it to Heroku.

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.

Learning Goals

  • 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
  • Grow skills in reading technical documentation by working with the Sinatra: Up and Running book
  • Gain exposure to deployment via Heroku

Resources

Intro to HTTP
HTML
Intro to Sinatra Heroku CSS
Intermediate CSS

Projects

Sinatra Blog

Week 6

In Week 6 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.

Learning Goals

  • 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

Resources

Projects

Week 7

In week 7 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.

Learning Goals

  • Solidify understanding of web response cycle
  • Introduce Rails
    • ActiveRecord
    • Controllers, Views & Routes
    • Forms
  • Introduce Data Modeling
  • Improve workflow

Resources

Projects

Week 8

In week 8 we will focus on reinforcing the major components of Rails, seen in this rails stack diagram. Working in pairs, we will revisit a previous project using Rails. We will examine how to work with ActiveRecord relationships. We will introduce Agile methodologies and how we will use them on our projects. At the end of the week students will have learned and practiced the rails stack.

Learning Goals

  • Continued exposure to Rails
  • DB seeds with CSV
  • Begin using agile practices in pair projects
  • Practice pair programming skills

Resources

Projects

Week 9

In Week 9 students will be creating a rails app to store and rank media by type. By the end of the week students will be able to identify each piece of the rails request cycle and the methods and variable scopes available within each of them. Students will begin testing some of the functionality within their web applications using RSpec as well as start to use Bootstrap for styling.

Learning Goals

  • Begin using RSpec to test functionality in Rails applications
  • Introduce the use of Bootstrap
  • Usage of the rails models
    • Basic and Advanced Validations
  • Learn to identify and describe the current state and availability of different methods and variables at any given point in the request cycle.

Resources

Validations
Bootstrap
Advanced Validations

Testing

RSpec Rails
Controler Specs
RSPec Practices
Shared Example Specs

Projects

Media Ranker

Week 10

In Week 10 we will be working on Betsy, an online webstore for independent merchants to sell their goods. At the end of the week students will have learned and practiced more with the rails stack and working in larger teams to complete a project.

Learning Goals

  • Continued exposure to Rails
    • User Authentication
  • Increasing skills in group work habits
  • Improving technical workflow
  • Increasing git/github competency
  • Use agile development practices in a group of four
  • Revisiting smaller Ruby exercises

Resources

User Authentication
Session
Conditional Validation
ActiveRecord Callbacks
Controller Filters
Custom View methods

Projects

Betsy
Small Ruby Project - ProPass

Week 11

In Week 11 we will continue working in groups of 4 on the Betsy project introduced in Week 10. The majority of the week will be devoted to project time, with short lectures and assignments. We will revisit some of the tools and practices that we learned from Metz to work through some refactoring and DRYing up our code.

Learning Goals

  • Continued exposure to Rails
  • Increasing skills in group work habits
  • Improving technical workflow
  • Increasing git/github competency
  • Use agile development practices in a group of four
  • Increased exposure to best practices in OO design

Projects

Betsy
CS Fundamentals

Week 12

In week 12 we will work on Ada Cooks which will allow us to continue practicing TDD and solidify our understanding of database relationships using Rails. We will start using Factory Girl to write tests and Learn about uploading files.

Learning Goals

  • Using FactoryGirl for fixture data in our tests
  • Using CarrierWave for file uploads
  • Solidify knowledge of database relationships
  • Practice TDD

Resources

RSpec Tools
Getting Started w/ Factory Girl
CarrierWave (minus S3)
Refactoring
OO Design

Projects

Ada Cooks

Week 13

In week 13 we will work on SeeMore, in which we will create a RESTful web API from a public or private data source, and continue our learning within a larger Agile team.

Learning Goals

  • Identify when to use an external web API
  • Create a web API
  • Build data in JSON or XML format
  • Consume data in JSON or XML format
  • HTTP from Ruby (HTTParty)
  • local User creation via OAuth service
  • push to authorized services via APIs
  • increasing comfort with API interactions
  • increasing professional comportment and team project skills
  • focus on project "polish" and customer deliverables

Resources

Web Api 101
Consuming an Api
Practice Consuming an Api
Starting SeeMore
Authentication w/ OmniAuth

Projects

SeeMore

Week 14

In week 14 we will continue working with our teams on SeeMore.

Learning Goals

Continued from Week 13

Resources

Projects

SeeMore

Week 15

In Week 15 we will be begin a unit on Refactoring and Service Oriented Architecture. Build a Shipping service for a ecommerce projects. The emphasis will be on instilling good code craftsmanship and citizenship, exploring service APIs, and continuing to develop expertise with testing.

Learning Goals

  • Build an API
  • Practice SOA

Resources

Creating an Api in Rails Ada Pets

Projects

Shipping Service Shipping Service Teams

Week 16

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.

Learning Goals

  • 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
  • Integrate JavaScript into a Rails app
  • Understanding event handlers to write code that responds to user interaction.

Resources

Lecture Topics

JS 101
JS 102
jQuery 101
ajax

Exercises

JS 101 Exercises
Ch 2 Exercises
Ch 3 Exercises
JS Koans

Projects

Digital Clock
Keyboard