Welcome to the Code the Dream’s Node/Express class, Echidna!
Node, short for Node.js, is an implementation of the Chrome JavaScript engine, but one that runs outside of the browser, so that it can be used to write standalone programs as well as web serving applications. Express is a framework for Node that makes the creation of web applications very easy. These are complemented by a vast library of NPM packages to make adding common functions easy. The combination is a leading framework throughout the IT industry, and continues to grow in adoption. And, all programming in Node and Express is in JavaScript, so the back end engine for an application can be written in the same language as the front end.
Below is a quick outline of this course. Remember to keep pace with the mentor sessions, and don’t hesitate to ask lots of questions! Slack is the best place for your questions, and you have a Slack channel for that purpose (#echidna-discussion). Get oriented on the Student Resources page. See below for information on mentor sessions and how to sign up for them.
If you need assistance with non-curriculum items please contact your Cohort Instructional Leader, Dan Politica, on Slack or by this email: echidna@codethedream.org
Course Calendar
Week | Start Date | Due Date | Lessons |
Pre-Class | May 30, 2023 | Machine Setup Github Cookbook Gear up for Class | |
1 | May 31, 2023 | June 6, 2023 | Node Introduction |
2 | June 7, 2023 | June 13, 2023 | NPM and Async Patterns |
3 | June 14, 2023 | June 20, 2023 | Introduction To Express |
4 | June 21, 2023 | June 27, 2023 | Middleware, REST Methods, and Postman |
5 | June 28, 2023 | July 4, 2023 | Task Manager API Part 1 |
6 | July 5, 2023 | July 11, 2023 | Task Manager API Part 2 |
7 | July 12, 2023 | July 18, 2023 | Using Query Parameters |
8 | July 19, 2023 | July 25, 2023 | JWT Basics |
9 | July 26, 2023 | Aug 1, 2023 | Jobs API Part 1 |
10 | Aug 2, 2023 | Aug 8, 2023 | Jobs API Part 2 |
11 | Aug 9, 2023 | Aug 15, 2023 | Catch Up Week |
12 | Aug 16, 2023 | Aug 22, 2023 | A Front End for the Jobs API |
13 | Aug 23, 2023 | Aug 29, 2023 | Server Side Rendering with EJS |
14 | Aug 30, 2023 | Sept 5, 2023 | Authentication with Passport |
15 | Sept 6, 2023 | Sept 12, 2023 | Testing with Mocha and Chai |
16 | Sept 13, 2023 | Sept 19, 2023 | Final Project Begins |
17 | Sept 20, 2023 | Sept 26, 2023 | Final Project Completed |
Sept 27, 2023 | Sept 29, 2023 | Final Project Presentations | |
Oct 9, 2023 | TBD | Practicum |
Before You Begin
You should plan to use the VSCode editor for this course. You should already know how to access your terminal. Refer to the Pre-Class week above to help with any environment setup.
This is a cheat sheet for some of the concepts of this course.
Submitting Your Assignments
For each lesson, you will have a coding assignment and a mindset assignment. Follow the coding assignment instructions and make changes to your code as instructed. You should have basic familiarity with git before starting this course, but if you aren’t confident in your git skills, see this Github Cookbook. For each assignment, you will do the following steps:
- Create a branch for your lesson. Commit changes to that branch periodically, and push it to GitHub.
- When the lesson is complete and all your work has been pushed to GitHub, open a pull request for your branch. Note: The target for your pull request should be the main branch of your own repository, not the Code-the-Dream-School Repository.
- Then use the Assignment Submission Form to submit the link to your pull request, your mindset answers, and feedback.
Please review the homework submission tips at this link before you begin.
When Submitting Your Code
When you submit your code, it should be working. If you are not able to get your code working, ask for help on Slack, or bring up questions in a mentor session, or arrange a 1:1 mentor session.
All code should be readable. There are many aspects to good code style, but the most important for right now is indentation! The content of blocks, methods, and classes should be indented two spaces. The end statement should line up, being indented the same number of spaces, with the statement that begins the block, method, or class. Here’s an example:
function my_function(parameter) {
if (x === 0) {
return x;
else {
return error;
}
}
We need proper indentation in order to be able to review your assignments. You need proper indentation to make sure your code is structured correctly. There are two npm packages that will help you (once you know how to use npm): prettier and eslint. Prettier can reformat your code. Eslint can find syntax errors and bad practices.
Having useful commenting in your code is also advised. It helps you, your reviewer, and anyone else who may work with your code find needed areas during review or debugging. Here’s an example of a useful comment on the example code from above:
//ERROR CATCH FUNCTION
function my_function(parameter) {
if (parameter === 0) {
return parameter;
else {
throw new Error("Failure occurred.");
}
}
Final Project
For the final project, each student implements an Express application that includes authentication and CRUD operations to a MongoDB database. The application may be implemented as APIs plus a front end (full stack) or using Server Side Rendering with EJS templates. The rubric is below:
Rubric for Express Final Project
A sample final project is described here. The provided sample is for EJS, but all students should read the description at the link, as it provides an important introduction to security in web applications. Look at the rubric for a warning about reusing this code.
Mentor Session Calendar Links
Traditional Mentors
Traditional Mentors are volunteer mentors who will host one or more one-hour long group sessions weekly. Typically these sessions are question-answer format so be sure to bring your questions from covering your learning materials or working on your coding assignment to the session. To sign up for a group mentor session:
- Open the calendar of mentor sessions for your class using this link.
- Double check you have the correct week selected (tabs for each week are at the bottom of the spreadsheet)
- Determine which session(s) work for your schedule. Use the Converter links to see what day/time the session will be in your local time if you’re in a different time zone than the mentor/host.
- In the column of the session(s) you wish to attend, find an empty field and type your name.
If you need help finding your way around the spreadsheet, watch the video below.
By Appointment Only Mentors
By Appointment Only Mentors are volunteer mentors who will help you one-on-one. If you’re unable to make a group session, or would just like to have one-on-one assistance, use the links below. To sign up for a one on one session:
- Click on the orange “Sign Up with this Mentor” button under the mentor whose session you want to attend for the week
- This will open their Calendly page in a new window. Click on the blue circled date for the session you wish to attend
- Click on the button to the right of the calendar for the time you wish to attend
- Click Confirm
- Use the instructions or link in the email confirmation you receive after clicking Confirm to join your session on the day and time you signed up for