# learning-outcomes

### JavaScript

* [ ] Write code that executes asynchronously
* [ ] Use callbacks to access values that aren't available synchronously
* [ ] Use promises to access values that aren't available synchronously
* [ ] Use the fetch method to make HTTP requests and receive responses
* [ ] Configure the options argument of the fetch method to make GET and POST requests
* [ ] Use the map array method to create a new array containing new values
* [ ] Use the filter array method to create a new array with certain values removed

### Node.js

* [ ] Set up a Node.js environment for web development
* [ ] Use environment variables for managing secrets and sensitive keys in Node.js
* [ ] Use npm to manage project dependencies and scripts in a Node.js environment.
* [ ] Understand server-side development using Node.js.
* [ ] Modularise code by creating reusable modules in Node.js, improving code organization and maintainability.

### APIs

* [ ] Integrate external APIs into a web application.
* [ ] Learn to make server-side requests to APIs and handle responses effectively.
* [ ] Understand the principles of client-server interaction and how to manage data exchange between them.

### Testing

* [ ] Check that passing a given input into our tests returns the expected output
* [ ] Write tests to mimic the behaviour of a user performing different actions
* [ ] Design functions for common testing patterns, like checking for matches, equality or inequality
* [ ] Organise tests using descriptive names and groupings to clarify their purpose and outcomes
* [ ] Implement custom messages in test assertions to provide specific feedback for pass/fail outcomes
* [ ] Write modular, single-responsibility functions that are easy to test in isolation
