#WDI
##Week 1
- Intro to web development
- Languages (and their unique strengths)
- Frameworks
- The Internet from FE to BE
- Command line & hidden files
- Version control with Git & Github
- Programming Concepts (Ruby)
- What is functional vs. imperative
- Data types
- Variable assignment
- if/else
- case/switch
- Blocks (yeild)
- Arrays
- Hashes
- Interation
- while loops
- String manipulation
- RegEx Lite
- Intro to OOP
- Object + object IDs
- Everything is an object
- Functions/methods
- Scope
- Encapsulation
- Classes
- Class vs. Instance
- Inheritance (classical)
- self
##Week 2
- Advanced OOP
- Intro to testing
- User stories
- Unit testing
- TDD
- RSpec
- Persistance
- Memory vs. persistant storage
- File I/O
- Intro to SQL?
##Week 3
- Data modeling/ERD
- Database
- SQL
- Relationships
- Constraints
- Validation
- Sanitization/injection
- NoSQL
- ACID
- Active Record
- Validations
- Relationships
- CRUD
##Week 4
- Intro to web apps
- HTTP Requests
- Routing
- Params!
- REST
- JSON
- APIs
- HTML/CSS basics
- Document outline
- Box model
- CSS selectors
- Package Management
- gem (!)
- pip
- npm
- Sinatra
- Server-side templating
- ERB
- HAML
- Intro to Rails
##Week 5
- Rails
- rake
- Rails console
- Fat models, skinny controllers
- Migration files
- Asset pipeline
- View helpers
- Modules
- Testing
- Capybara
- Acceptance testing
- Test coverage
- Continuous integration
- Factory girl
- Shoulda matchers
- Authentication
- bcrypt
- User roles
- Sessions
- STI (single-table inheritance)
- Advanced HTML
- HTML5
- Cross-browser
- Accessibility
Memorial Day 5/26
##Week 6
- Deployment
- Rails environements
- Heroku
- PROJECT 1
##Week 7
- Programming Concepts (JS)
- Functional vs. imperative
- Data types
- Variable assignment
- Hoisting
- if/else
- case/switch
- Arrays
- Objects/Hashes
- Interation
- for & while loops
- String concatenation
- Console debugging
- Timers
- Functions
- Invocation methods
- Scope
- Context
- Prototypal inheritance
- UnderscoreJS (functional programming)
- Testing (JS)
- Mocha
- Chai
- Spies (Sinon)
- Stubs (Sinon)
- DOM
- Degradation (noscript)
- Vanillia (getElementById, querySelector)
- jQuery ($)
- Performance
##Week 8
- Advanced CSS/SCSS
- Cross-browser considerations
- CSS animations
- Responsive design
- Async Programming
- Callbacks
- Events
- Promises
- Ajax/XHR
- Agile/Teams
- Requirements gathering
- Pivitol Tracker, Jira
- Productive disagreement
- Github Collab
- Workflows
- Waterfall
- Agile
- SCRUM
- Design / UX / Wireframes
- Paired programming
- MINI-GROUP PROJECTS
- PROJECT 2 KICKOFF
##Week 9
- PROJECT 2
Day of Reprieve 6/23 (job shadowing?)
##Week 10
- Model/View Separation
- MV* tools (Backbone, Angular, Ember, Knockout)
- Backbone Models
- Validation
- REST
- FE-persistance (local storage, cookies)
- Model testing
##Week 11
- Backbone Views
- Client-side routing
- Client-side templating
- Testing views
- Modular architecture (RequireJS)
Independency Day 7/4
##Week 12
- ComSci 101
- Big O
- Sorting
- Recursion
- Sweet-lib day
- PROJECT 3
##Week 13
- PROJECT 3
##Misc Lessons
- Tools
- Chrome dev tools
- Sublime workflows
- Debugging (Pry)
- Learning
- Reading & understanding docs
- Read your errors!
- Realism / object reflection
- Taking notes vs. paying attention
- Symantic Googling
- Whiteboarding ideas & software designs
- Paper & pencil
- Answers via Google & Stack Overflow
- Comfortable being uncomfortable
- Asking good questions
- Github Issues
- Design Patterns
- Refactoring/DRY
- Naming conventions
- Singleton
- Factory
- Observer
- MVC: Rails, Django, Express, etc.
- SOLID
- Networking
- curl
- Web servers
- Apache
- Nginx
- Web sockets
- FE Tools
- Node & NPM
- JS libs
- Grunt
- Build processes
- Jobs
- Portfolio
- Interview process/questions
- Presenting yourself
- Networking
- Behavioral interview
- Where to find jobs
- Code challenges
- Negotiation
- RegEx
- Exception Handling
- Caching & invalidation