Code Monkey home page Code Monkey logo

jslearnerforms's Introduction

JS Learner Forms

Table Of Contents

Introduction

The concept of forms was borrowed from martial arts. Instead of solving new problems over and over in hopes that the language will stick, a form is intended to be repeated movement for movement to develop a relationship with the language and practices of a fluent developer. The student at each form level will learn to identify syntactic patterns while following an intentional and regimented process to promote fluency through a repeated process.

A student of any form will know they are ready to move to the next form when they can demonstrate proficiency in the current form by applying the techniques presented without referring to the example materials. No two programmers are alike so it is understood that the steps someone would follow may vary slightly. This variance is good as it demonstrates a deeper understanding of the ideas presented in the form.

All of the first three forms will use the same tests and will address the questions posed in the tests in the same order. For any proficiency check, the student will be expected to work through the tests by reading them and then providing an appropriate response.

As a student becomes more conversant in a particular form, they are encouraged to apply their knowledge using code katas, like the problems provided by Exercism.io.

JS Learner Forms Introduction Video

Environment Setup

Environment Setup

To use JS Learner Forms, you will need to do the following:

Forms Setup

  • Set up project
    • open a terminal/command line
    • go to the directory where the JS Learner Forms project is stored
      • Windows: cd c:\path\to\jsLearnerForms
      • Mac: cd /path/to/jsLearnerForms
    • Run the setup script: npm run setup

For a video walkthrough of the setup process, check out the following video:

JS Learner Forms Setup On YouTube

Using JS Learner Forms

Running a Form

  1. Open a terminal/command line in the JS Learner Forms directory (like when you ran the setup)
  2. Run the start script: npm start
  3. Select run from the main menu
  4. Choose the form number (start at 1 if this is your first time)
  5. Start Visual Studio Code
  6. Open the folder you cloned JS Learner Forms to in your editor
  7. Open the test and source files:
    • Test files are found in the test directory
    • Source files are found in the jsforms-source directory

Starting a Form Over

  1. From the start script menu, select the reset option.
  2. Choose the form number to update

Solving Each Form

  1. Documentation For all Forms
  2. First Form -- Write code to pass each test
    1. First Form Documentation
  3. Second Form -- Update code to pass new tests, keep old tests green
    1. Second Form Documentation
  4. Third Form -- Update code to pass new tests, keep tests old green
    1. Third Form Documentation
  5. Test Dummy Form (Fourth Form) -- Write tests matching each description and get all of the code under test (modify ONLY the test code)
    1. Test Dummy Form Documentation
  6. Async Form -- Write code to pass each test; don't forget the refactoring steps!
    1. Documentation TBD
  7. Async Test Dummy Form (Sixth Form) -- Write tests matching each description and get all of the code under test (modify ONLY the test code)
    1. Documentation TBD

Skills Covered

This section will be updated as forms are completed and ready for use.

First Form

  • Function creation
  • Conditional statements
  • Calling a function
  • Interaction and use of function parameters
  • String concatenation
  • Mathematical operations and operators
  • Built in modules such as the Math module
  • Built in functions such as toString and valueOf
  • Adding or overriding functions on objects
  • Looping
  • Arrays
  • Nested logic

Second Form

  • Inner looping functions
    • Array.prototype.forEach
    • Array.prototype.filter
    • Array.prototype.map
  • Ternary expressions
  • Instantiable objects
  • Closures
  • Factory functions
  • Higher-order functions

Third Form

  • Array.prototype.reduce
  • Object immutability
  • Generic functions
  • Scope management
  • Type checking

Test Dummy Form (Fourth Form)

Testing Concepts

  • Writing unit tests
  • Getting a test harness around untested code
  • Test Doubles -- Mocks, fakes, stubs and spies
  • Code seams
  • Pure and impure functions
  • Testing libraries - Mocha, Chai

Code Concepts

  • Design Patterns
    • Factories
    • Higher-Order Functions
  • Data Access Layers
  • Code Organization

Contributors

✨ Thanks goes to these wonderful people (emoji key):

hunterinderstries
hunterinderstries

πŸ’΅
EDF Renewables
EDF Renewables

πŸ’΅
Jason Kerney
Jason Kerney

πŸ’» πŸ“–
MichaΕ‚ Urbanek
MichaΕ‚ Urbanek

πŸ›
Willem Larsen
Willem Larsen

πŸ“–

This project follows the all-contributors specification. Contributions of any kind welcome!

jslearnerforms's People

Contributors

cmstead avatar cstead-hunter avatar willemlarsen avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.