Skip to content

Instantly share code, notes, and snippets.

@bgveenstra
Last active May 3, 2019 11:53
Show Gist options
  • Save bgveenstra/2ed8b15738be78af41ec7a14c55fa0a1 to your computer and use it in GitHub Desktop.
Save bgveenstra/2ed8b15738be78af41ec7a14c55fa0a1 to your computer and use it in GitHub Desktop.

WDI 31 Learning Objectives

Week 1 Learning Objectives

The Internet

  • Explain at a high level how the Internet transmits data.
  • Distinguish between the Internet and the World Wide Web.
  • Understand why HTML CSS and JavaScript work together so well.
  • Articulate what an API is.

HTML & CSS

  • Edit and update an HTML file.
  • Recognize common HTML tags and attributes.
  • Describe the structure of an HTML document.
  • Target elements using CSS selectors.
  • Compare and contrast block, inline, and inline-block elements.
  • Draw the CSS box model.

Git & Github

  • Explain the uses of Git and GitHub for tracking their changes and collaborating on projects.
  • Draw a model of local, remote, and working copies of their repositories.
  • Write some code, commit the changes, and write a strong commit message.
  • Deploy first live website using gh-pages.

Control Flow

  • Reason through boolean logic.
  • Write semantically & syntactically correct conditional statements.
  • Compare & contrast for and while loops.

Functions

  • Identify the differences between defining a function and calling a function.
  • Demonstrate proper function naming conventions.
  • Compare and contrast a function that prints a value and a simple function that returns a value.
  • Draw a model of a function that includes arguments as input, side effects, and return values as output.
  • Explain the keyword this in the context of different scopes.

Dev Tools & Debugging

  • Solve broken code by reading and solving error messages.
  • Interact with the JavaScript on the page through the console.
  • View the DOM and styling through the console.

DOM Manipulation

  • Describe and draw the document object model (DOM) of an HTML document.
  • Manipulate the DOM and styling through the console.
  • Compare and contrast JavaScript & JQuery.
  • Select elements from the page using CSS Selectors.

DOM Events

  • Explain what DOM events are and how they are triggered.
  • Attach event listeners to DOM elements.
  • Target the source of the event.
  • Respond to events with a callback.
  • Explain event propagation.

Week 2 Learning Objectives

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

  • Craeate 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

  • 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:, and onSuccess: keys for jQuery's $.ajax object

Data Templating w/ Handlebars

  • Articulate the usefulness of data templating in the browser
  • Create and compile a Handlebars template
  • Use Handlebars templating to display JSON data

Object Oriented JavaScript

  • Instantiate new objects using Javascript constructors
  • Create shared methods amongst instances with prototypes
  • Model real-world data and relationships with JavaScript objects

Week 3 Learning Objectives

Express

  • Draw a diagram of the request response cycle with Nodejs and Express included and labeled
  • Describe the roles that Nodejs and Express play in building a server
  • Use npm to initialize a node project
  • Write a local web server to serve JSON and static assets with Express

Params and Routes

  • Create flexible, dynamic routes with parameterized route urls
  • Process data sent to a server through query strings
  • Process data sent from named form fields with POST requests

CRUD App

  • Follow a testing suite to build a functional API
  • Apply your knowledge Express to build a full CRUD API

Mongo/Mongoose

  • Differentiate and relate the concepts of schemas and models in Mongoose
  • Create Mongoose schemas & models and use Mongoose model instances
  • Describe the relationship between Mongoose with Express and integrate the two in their projects

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

Agile Development

  • Compare and contrast several development methodologies
  • Define features as user stories
  • Inform a UI with mockups
  • Conduct a scrum

Personal API & Heroku

  • Deploy server side code to Heroku so that your APIs will be publically accessible
  • Write an API documentation endpoint at the ‘/’ path
  • Build an API from scratch

Week 5 Learning Objectives

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.

Bubble Sort

  • Describe bubble sort algorithm and identify its advantages and disadvantages.
  • Write a pseudocode version of bubble sort and a javascript version of bubble sort.
  • Determine the runtime (in big-O() notation) for bubble sort.

Merge Sort

  • Explain three steps to create a recursive algorithm.
  • Describe the merge sort algorithm and a merge algorithm.
  • Write a pseudocode version of merge sort and a JavaScript version of merge sort.
  • Determine the runtime (in big-O() notation) for merge sort.

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.

Week 6 Learning Objectives

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.

Make a Directive

  • Create a custom directive.

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.

Week 7 Learning Objectives

Intro Ruby

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

Idiomatic Ruby

  • Follow variable and method naming conventions (lower_snake_case, CONSTANT, method_that_returns_boolean?, destructive_method!).
  • Prefer built-in methods when available.
  • Use implicit return whenever possible.

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, views & partials 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.

Flexbox (Power Hour)

  • Use the flexbox grid system and styling techniques.
  • Navigate, position, and style different elements using flexbox.

Week 8 Learning Objectives

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.

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 with has_secure_password.
  • Compare and contrast authentication and authorization.

Asset Pipeline

  • Explain benefits of using the Rails asset pipeline.
  • Describe how the asset pipeline works.
  • Require custom and third-party assets in Rails.

Error Handling and Validations (Power Hour)

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

Week 9 Learning Objectives

Collaboration

  • Work on coding projects with a larger group.
  • Follow good practices for branching.
  • Identify your strengths and weaknesses as a teammate

User Experience

  • Explain at least one best practice or convention from user experience design (e.g., consistency, calls to action).
  • Incorporate UX questions into project planning:
    • Who is the user?
    • What is the user’s motivation for coming to this page?
    • What is the main thing the user should do on each page?
  • Discuss a time when you collaborated with a user experience designer.

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.

Week 10 Learning Objectives

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.

Debugging Lab

  • Navigate a large, mature project.
  • Submit pull requests to contribute code changes to projects you do not own.

React & Build Tools

  • Explain the role of a build tool like Gulp or webpack.
  • Create and render React a component in the browser.
  • Explain what JSX is and how it’s important to React.

Week 11 Learning Objectives

Debugging (Publify lab)

  • Navigate a large, mature project.
  • Submit pull requests to contribute code changes to projects you do not own.

ES6 and React

  • Explain the meaning of const, let, and arrow function (=>) in ES6
  • Build a basic React component

MEN/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.

Take-Home Coding Challenges

  • Communicate with potential employers using appropriate technical terms.
  • Demonstrate knowledge of software construction patterns and best practices.
  • Consider design and implementation alternatives, and make decisions based on relevant characteristics of the problem and available tools.
  • Demonstrate awareness of (1) real-world technical development practices and (2) concerns related to the target company, including testing and security.

Local Auth with Express

  • Explain key steps of a framework-independent local authentication strategy.
  • Authenticate users in Express.
  • Restrict access to data based on whether a user is authenticated.
  • Describe alternate authentication or authorization strategies.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment