This document collects the course's weekly objectives. If you'd like to have persistent check marks, feel free to fork this gist version of the WDI 34 objectives.
Developers will be able to...
###Command Line
- Navigate the file system from the command line.
- Create, move, copy, and delete files or directories from the command line.
- Research unfamiliar bash commands and options with
--help
,man
, and/or online resources. - Describe the uses of the
sudo
andchmod
commands.
###HTML & CSS Review
- Recognize common HTML tags and attributes.
- Describe the structure of an HTML document.
- Apply CSS styles to HTML elements based on tag, class, or id.
- Distinguish among block, inline, and inline-block elements.
- Draw the CSS box model.
###GitHub Workflow
- Explain the uses of Git and GitHub for tracking changes and collaborating on projects.
- Draw a model of local, remote, and working copies of their repositories.
- Write some code to improve their work, commit the changes, and write a strong commit message.
- Deploy their first live website using gh-pages.
###JavaScript Data Types
- Identify JavaScript data types.
- Declare variables in the Chrome developer tools console.
- Get and set the values of variables.
- Use built-in methods to manipulate strings and arrays.
###JavaScript Control Flow
- Predict the output of boolean expressions, including "truthy" and "falsey" values.
- Write syntactically correct conditional statements.
- Compare & contrast
for
andwhile
loops.
###JavaScript Functions
- Identify the differences between defining a function and calling (invoking) a function (casting the spell).
- Create a simple function that prints a value (for the user/developer to see a result) and a simple function that returns a value (for the rest of the code to use a result). Distinguish between the impact of these different results.
- Draw a model of a function that includes arguments as input, side effects, and return values as output.
- Explain the scope of a function.
###Chrome Dev Tools and Debugging
- Use the console tab to gather diagnostic information about code (read various error messages and logs of their own creation).
- Use the console tab to interact with the JavaScript on the page.
- Use the elements tab to view an manipulate the DOM and styling.
- View sites in mobile mode with the device mode.
###DOM Manipulation
- Describe and draw the document object model (DOM) of a simple HTML document.
- Use the elements tab to view and manipulate the DOM and styling.
- Explain the relationship between JavaScript and jQuery and the benefits of using jQuery for DOM manipulation.
- Select elements from the page using CSS selectors and use jQuery to dynamically change the DOM.
###DOM Events
- Explain what DOM events are and how they are triggered.
- Attach event listeners to DOM elements.
- Target the source of an event.
- Respond to events with a callback.
- Explain event propagation.
###Bootstrap
- Implement class-based CSS.
- Use a CDN to import Bootstrap into projects.
- Effectively use a grid system to space elements across the page.
- Improve the design of HTML pages with the aid of Bootstrap & mockups
###Iterator Methods & Callbacks
- Use appropriate iterator methods to declaratively loop through collections
- Follow the order of execution in a program that uses callbacks
- Write a higher-order function that calls a custom callback
###Objects
- Create an object that contains a variety of data types
- Access attributes of an object using
.
syntax and[]
syntax - Articulate the usefulness of JSON
###HTML Forms
- Explain the basics of the client/server model
- Compare and contrast the available input options for HTML forms
- Use a method and an action to submit form data
- Generate query parameters using a form
###AJAX
- Articulate why AJAX is useful and how it works
- Create an AJAX request that fetches data
- Describe the meaning of
method:
,url:
, andonSuccess:
keys for jQuery's$.ajax
object
- Articulate the usefulness of data templating in the browser
- Create and compile a Handlebars template
- Use Handlebars templating to display JSON data
- Instantiate new objects using Javascript constructors
- Create shared methods amongst instances with prototypes
- Model real-world data and relationships with JavaScript objects
###Express
- Draw a diagram of the request-response cycle with Node.js and Express included and labeled
- Describe the roles that Node.js and Express play in building a server
- Use
npm
to initialize a Node.js project - Write a local web server to serve JSON and static assets with Express
###Express Routes & Parameters
- Create flexible, dynamic routes with parameterized route urls
- Process data sent to a server through query strings
- Process data sent from named form fields (as with POST requests)
- Identify Express routing patterns that can be used for PUT, PATCH, and DELETE requests
###MongoDB/Mongoose
- Explain how MongoDB and Mongoose are related
- Describe the relationship between schemas and models in Mongoose
- Create Mongoose model instances
- Using Mongoose, integrate a MongoDB database with an Express project
###Mongoose relationships
- Describe one-to-one, one-to-many, and many-to-many data relationships
- Write mongoose schemas that can reference and embed data
- Reflect model relationships in server routes
###Personal API & Heroku
- Deploy server side code to Heroku to make an API publically accessible
- Write an API documentation endpoint at the
/api
path - Build an API from scratch
###Big O
- Articulate a set of steps to determine Big O complexity.
- List the Big O complexities of some commonly-used patterns and algorithms.
- Estimate the time or space efficiency of an algorithm using Big O notation.
###Binary Search
- Describe the binary search algorithm and identify its advantages and disadvantages.
- Write a pseudocode version of binary search and a javascript version of binary search.
- Determine the runtime (in big-O notation) for binary search.
###Intro Angular
- Explain the benefits of using Angular and describe the problems Angular aims to solve.
- Initialize Angular in an HTML view, and use expressions and templates to impact the DOM.
- Organize the code into controllers and connect the View & Controller using
this
. - Implement 2-way data binding.
###Angular $http
- Inject a service into a controller.
- Read data with
$http
. - Create data with
$http
. - Update data with
$http
. - Delete data with
$http
. - Update the view to reflect a successful state change.
###Angular Client-side Routing
- Compare and contrast client-side and server-side routing.
- Add a module to an Angular project.
- Implement client-side routing with the
ngRoute
module. - Display view template files with the
ng-view
directive.
###Custom Directives
- Explain the justifications for using custom directives.
- Describe the directive definition object and implement it in creating a directive.
- Integrate a third party directive into your code.
###Promises
- Explain the purpose of promises.
- Draw the lifecycle of a promise.
- Manipulate promises using Angular’s
$q
service.
###Services
- Explain motivations for using services.
- Create a custom service.
- Use promises in a custom service.
###Ruby Intro
- List Ruby data types.
- Articulate strategies to learn new programming languages and frameworks.
- Run Ruby code in an interactive Command Line Interface or from a file.
###Ruby Methods
- Write conditionals, loops, and methods in Ruby.
- Apply methods in ruby to solve problems.
- Explain the two main differences between Ruby methods and JavaScript functions: isolated scope and implicit return.
###Ruby OOP
- Define the OOP terms “class,” “instance,” and “inheritance.”
- Create your own classes and instances.
- Define attributes and methods for instances or for the class as a whole.
- Explain and implement the class-based inheritance pattern.
###Rspec
- Justify writing unit tests.
- Explain important testing concepts: edge cases and test coverage.
- Read and explain Rspec tests.
- Write DRY and effective test code using RSpec.
###Rails Intro
- Articulate the Rails philosophy and the MVC pattern.
- Start a Rails project with no database and create routes that render dynamic templates.
- Distinguish between Express and Rails.
###Active Record
- Create a model that inherits from ActiveRecord class
- CRUD data in the database using our model
- Write a migration to define a database schema
- Update our database schema with another migration
###Rails Views
- Describe how layouts, view templates, and partial templates work together.
- Recognize rails url helpers and path helpers.
- Explain benefits of using Rails form helpers and link helpers.
- Find and determine correct syntax for Rails form helpers and link helpers.
###Migrations
- Add and remove columns from the database.
- Alter an existing column.
- Explain when it is okay to edit a migration and when it is okay to edit the schema.
###Error Handling and Validations
- Use built-in ActiveRecord validation methods to validate database entries.
- Display errors in the view using Rails flash messages.
- Set breakpoints to check your assumptions.
###Associations
- Describe how relational databases can be used to create associations between resources.
- Create one to-many-model relationships in Rails.
- Create many to-many-model relationships in Rails.
###Cookies and Sessions
- Describe the request and response cycle's relationship to the stateless web.
- Discuss and use an HTTP Cookie in a web application.
- Differentiate between an HTTP Cookie and a Session.
###Rails Auth
- Build routes, controllers, and views for user sign up, log in, and logout.
- Implement a
User
model that securely stores hashed passwords withhas_secure_password
. - Compare and contrast authentication and authorization.
###Asset Pipeline
- Explain benefits of using the Rails asset pipeline.
- Require custom and third-party assets in Rails.
###Rspec with Rails
- Identify aspects of Rails apps that we might want to test.
- Differentiate between integration testing and unit testing.
- List tools that are used to test Rails applications.
- Test model methods using rspec-rails.
- Test controller actions using rspec-rails.
###Bubble Sort
- Describe bubble sort algorithm and identify its advantages and disadvantages.
- Write a pseudocode version of bubble sort and a ruby version of bubble sort.
- Determine the runtime (in big-O() notation) for bubble sort.
###Merge
- Pseudocode an algorithm to merge two sorted arrays, and implement the algorihtm in ruby.
###Recursion & Merge Sort
- Explain three steps to create a recursive algorithm.
- Describe the merge sort algorithm.
- Write a pseudocode version of merge sort and a ruby version of merge sort.
- Determine the runtime (in big-O() notation) for merge sort.
###Linked Lists
- Describe the low-level structure of arrays and linked lists.
- Manipulate linked lists.
###Stacks
- Describe a stack by its methods and last in, first out (LIFO) behavior.
- Build stack methods using linked list methods.
###Queues
- Describe a queue by its methods and first in, first out (FIFO) behavior.
- Build queue methods using linked list methods.
- Compare and contrast stacks and queues and appropriately choose which is better for a given situation.
###Hashmaps
- Describe and draw the structure of a hashmap.
- Explain properties of a good hash function.
- Perform runtime analysis on the hashmap data structure.
###Trees
- Explain the relationship between graphs, trees, and binary search trees.
- Draw a balanced binary search tree from some given data.
- Use binary search trees in answering interview style challenge questions.
###Breadth First Search
- Describe and draw breadth-first tree traversal.
- Pseudocode breadth-first search.
- Identify use cases for breadth-first search.
###Depth First Search
- Describe and draw depth-first tree traversal.
- Compare and contrast depth-first and breadth-first.
- Pseudocode depth-first search.
- Identify use cases for depth-first search.
###Rails JSON API
- Use Rails and jbuilder to build a JSON API without a front end.
###Angular and Rails
- Build an Angular front end for a Rails JSON API back end.
###MEAN stack review
- Explain the role of each technology within the MEN/MEAN stack.
- Give detailed account of the purpose of the different files and folders that make up a MEN/MEAN app.
- Explain basic Angular setup and write examples of important built-in directives.
- Identify key Angular concepts: directives, controllers, templates, services, client-side routing.
###MEAN Auth
- Authenticate users in Express.
- Restrict access to data based on whether a user is authenticated.
- Describe various authentication or authorization strategies.
- Explain the history of ECMAScript and JavaScript.
- List features of JavaScript added with ES6.
- Write and read JavaScript code that uses new ES6 features:
- Explain block scope and when to use var, let, and const.
- Interpolate strings with template literals.
- Write shorter function declarations with arrow functions.
- Use default parameters in JavaScript.
- Explain roles of build tools: minification, compilation, concatenation/bundling, compression, file watching, etc.
- Compare build tools: Rake, Gulp, Webpack.
- Use build tools to automate workflow.
- Explain what ReactJS is and where it fits in our applications' stack.
- Explain the component model of web development.
- Create and render React components in the browser.
- Follow a planned series of steps when answering in-person technical interview questions.
- Explain technical thinking to another person while coding or whiteboarding.
- Follow a planned series of steps when working on take-home technical challenges.
- Identify interviewing areas of strength and areas to focus on and improve.
- Recognize and apply JavaScript features:
this
,call
, closures. - Apply good coding syntax habits even on whiteboard:
=
vs==
vs===
; correct syntax for loops; correct syntax for if/else; semantic variable naming. - Identify opportunities to use built-in methods or structures in JavaScript and Ruby.