campbellmarianna / Advanced-Web-Patterns

I'm learning a lot in this class. Check out my notes!

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

BEW 2.1 - Advanced Web Patterns in Node.js

Course Description

We've learned a lot about the web; the common conventions and we've mastered authentication and authorization. Now pretty much you can sort through whatever someone asked for. However, there are a few extra features that are quite conventional that you have not gained mastery over yet. Those tricky features can stymie a novice engineer who doesn't know what tools and patterns they have available to them. For example, simple and full text search, uploading files and images, sending emails

For all in class work, you will be using a clone of the pet store starter project called Proud Pete's Pet Emporium. You must implement ALL the patterns in this class. If you miss class or do not complete the implementation in class, please do the work as homework. At the end of the class, you're pet store must be completely full featured.

Course Specifics

Weeks to Completion: 7
Total Seat Hours: 37.5 hours
Total Out-of-Class Hours: 75 hours
Total Hours: 112.5 hours
Units: 3 units
Delivery Method: Residential
Class Sessions: 14 classes, 7 labs

Prerequisites

BEW 1.2

Learning Outcomes

Students by the end of the course will be able to ...

  1. Implement a Simple Search
  2. Paginate a collection
  3. Use Transactional Email APIs to send emails
  4. Upload images to AWS S3 buckets and associate the images with a resource
  5. Implement websockets for asynchronous bi-directional server-client communication
  6. Edit existing npm modules and develop their own
  7. Compare and contrast strictly and dynamically typed implementations of JavaScript
  8. Practice using Typescript & Flow (Strict Typing)
  9. Understand how Node.js Modules work under the hood

People's Choice

We will have 2 classes on topics that the group chooses. During these classes we will work together to survey the topic, discuss the possiblities and limitations of the technology, and get a "hello world" working on our computers. Here are a few examples of topics we could cover:

  • Sending Texts
  • async/await, turning callback => promise
  • Generators & Decorators
  • SQL
  • Monolithic, SOA, Microservices
  • Security
  • IoT
    • Control LED strip
    • Use an API like weather data
    • Talk to routers
  • Blockchain & DAPPs
  • Amazon hosting
  • ???

Software Development Trends 2018

Schedule

Course Dates: Monday, April 1 – Wednesday, May 15, 2019 (7 weeks)

Class Times: Monday and Wednesday at 1:30–3:20pm (14 class sessions)

Class Date Topics
1 Monday, April 1 Pete's Proud Pet Emporium & Kick Off
2 Wednesday, April 3 Simple Search & Pagination
3 Monday, April 8 Async/Await
4 Wednesday, April 10 Upload images to S3
5 Monday, April 15 Payment Gateways
6 Wednesday, April 17 Sending Emails
7 Monday, April 22 Intro to WebSockets - Websocket's Project Kickoff
8 Wednesday, April 24 Blog Post Writing Day
9 Monday, April 29 TypeScript & Flow - Strict Typing in JS
10 Wednesday, May 1 Project Code Review Day
11 Monday, May 6 People's Choice 1
12 Wednesday, May 8 People's Choice 2
13 Monday, May 13 Final Class (presentations, etc)
14 Wednesday, May 15 Final Exams/Presentations

Tutorials & Projects

  1. Proud Pete's Pet Emporium - Due end of week 2
  2. Make Chat - Due end of week 3
  3. Contractor/Custom Project - Due end of week 6
    • (you can also add these features to an old project)
    • Written in JavaScript using Node.js, Express.js, and MongoDB
    • Include at least 3 of the following features:
      • Simple Search or Full Stack Search
      • Pagination
      • Uploading Files
      • Sending Email
      • WebSockets
      • Include your own custom npm module
    • A conventional UI using Bootstrap 4
    • Pushed live to Heroku
    • AJAX requests for POST/PUT/DELETE requests - Server-side rendering for GET requests (optional)
    • Use an external API (optional)
  4. Technical Blog post—pick an interesting NPM module or BEW project (e.g. TypeScript) and write >1000 words. Post must be Persuasive, Informative, and Entertaining. - Due end of Week 6
    • The project/library's history
    • A tutorial on how to implement it
    • Its various pro's, con's and gotchas

Project Policy

All projects will require a minimum of 10 commits, and must take place throughout the entirety of the course

  • Good Example: 40+ commits throughout the length of the course, looking for a healthy spattering of commits each week (such as 3-5 per day).
  • Bad Example: 10 commits on one day during the course and no others. Students who do this will be at severe risk of not passing the class.
  • Unacceptable Example: 2 commits the day before a project is due. Students who do this should not expect to pass the class.

Why are we doing this?

We want to encourage best practices that you will see working as a professional software engineer. Breaking up a project by doing a large amount of commits helps engineers in the following ways:

  • It's much easier to retrace your steps if you break your project/product/code up into smaller pieces
  • It helps with being able to comprehend the larger problem, and also will help with your debugging (i.e. finding exactly when you pushed that piece of broken code)
  • It allows for more streamlined, iterative communication in your team, as it's much easier to hand off a small change to someone (updating a function) than a huge one (changed the architecture of the project)

Through this requirement, we hope to encourage you to think about projects with an iterative, modular mindset. Doing so will allow you to break projects down into smaller milestones that come together to make your fully-realized solution.

Final Exam

  • Passing the exam is a requirement for passing the class.
  • You will have 2 hours to complete this exam - it will be in class using paper and pencil, or a format of the instructor's choosing
  • There are no retakes of the exam.
  • If you have a disability that needs an accommodation such as extended time or a different format, please take advantage of our accommodations program.

Evaluation

To pass this course you must meet the following requirements:

  • Finish and turn in
    • Pete's Pet Emporium (GitHub & live link)
    • Make Chat (GitHub & live link)
    • One Public Project that uses 3 features above and beyond resourceful routing and auth (this can be an old project that you added these additional features to)
    • One Technical Blog Post (>1000 words)
  • More than two no-call-no-shows, or more than four excused absenses will put you at risk of academic probation

Attendance

Just like any job, attendance at Make School is required and a key component of your success. Attendance is being onsite from 9:30 to 5:30 each day, attending all scheduled sessions including classes, huddles, coaching and school meetings, and working in the study labs when not in a scheduled session. Working onsite allows you to learn with your peers, have access to support from TAs, instructors and others, and is vital to your learning.

Attendance requirements for scheduled sessions are:

  • No more than two no call no shows per term in any scheduled session.
  • No more than four excused absences per term in any scheduled session.

Failure to meet these requirements will result in a PIP (Participation Improvement Plan). Failure to improve after the PIP is cause for not being allowed to continue at Make School.

Make School Course Policies

Academic Honesty
Accommodations for Students
Attendance Policy
Diversity and Inclusion Policy
Grading System
Title IX Policy
Program Learning Outcomes

About

I'm learning a lot in this class. Check out my notes!