Facilitator’s Guide: Full Stack Software Development - MERN
Overview
Welcome! This guide contains course-level information, instructions, and suggestions for instruction.
It is incredibly important to read through the information given within this guide, and the module-level guides provided within, to best facilitate learning in the classroom. These guides contain high-level breakdowns of lessons, assignments, and other material intended to give you the context necessary to deliver the content effectively. Additionally, suggestions for time allocation can be found within the module-level guides.
Course Syllabus
For a detailed breakdown of most course information, please refer to the course syllabus.
General Facilitation Notes
- Use the professional development day during the week to prepare for teaching the four remaining days. The majority of the course is very interactive, containing many examples and synchronous activities. It is important to be familiar with the contents of these items in advance.
- Use Canvas announcements to publish an agenda for the upcoming day.
- The agenda should include a time breakdown of the day, the content, activities, breaks, and a motivational quote or fun piece of information when appropriate.
- Publish the agenda at the same time each evening before the next day’s lesson. Canvas supports delayed publishing, so you can create some or all announcements in advance.
- Review the lessons before administering them. Make sure that you know what the lesson contains, and are prepared to lead the activities within.
Workplace Simulation
Review the workplace simulation training materials provided below thoroughly to ensure you understand the expectations of you as the instructor.
Simulating a true workplace environment will aid learners in uncountable ways - to that end, we are always looking for feedback on how we can iterate upon and improve this framework!
Training Materials
- Onboarding Slideshow for learners
- Workplace Simulation Guide (instructor only)
- Weekly Check-In Template for Team Leads
In-Class Activities
Almost every lesson within the course contains an activity to reinforce learning. Leverage these activities in a variety of ways to make learning more dynamic and interesting. The activities are intentionally open-ended so that you as the instructor can determine if an activity should be solo, pair programming, group, instructor-led, code-along, etc.
Emphasize Self-Learning
Technology moves too quickly for us to keep up. It is important that learners understand that we are teaching them foundational skills that they can then carry with them to grow in industry. If learners expect everything they need to know to be contained within the lesson material in front of them, they will be set up for failure.
Every lesson contains opportunities for self-guided learning, some more obvious than others. Challenge learners to find the answers to their own questions whenever possible, and to validate those answers through practical application.
A curated list of additional resources is located at the end of most lessons as a starting point for this journey, but encourage learners to go farther. They will find many incorrect answers and bad practices, but learning how to separate and validate the good information is the cornerstone of a successful developer.
Technologies
Canvas
As your primary interface, it is important to know how to navigate Canvas quickly and efficiently. Familiarize yourself with the course’s layout on Canvas, and contact the delivery team and/or content developer with any concerns well before encountering them in class.
Canvas is currently synced to a template course from which the delivery team controls all associated Canvas instances. For this reason, it is incredibly important that you DO NOT EDIT your Canvas course instance. Doing so will break the sync, and prevent the course from receiving further updates.
Sandpack and CodeSandbox
This course makes extensive use of CodeSandbox and its associated tool Sandpack for displaying live, interactive code examples alongside their results.
For this reason, it is important that you familiarize yourself with the platform and its controls before the course begins:
- Set up an account.
- Create or fork a few sandboxes.
- Play around with some applications.
- Experiment with the native Sandpack examples within lessons…
- …and how these can interact with CodeSandbox and GitHub.
- Perhaps most importantly, get acquainted with the process of attaching a sandbox to a GitHub repository, and/or downloading it for local development.
- Both of these techniques will be useful to provide alternative options for development for the learners.
This Thing
Yes, this platform which is currently hosting the content you are reading is fairly new (and built entirely with technologies you are likely familiar with)!
If you have questions, comments, concerns, suggestions, etc. regarding the content platform (not Canvas), please feel free to reach out to Matthew Eckart via Slack (or email, but Slack is better).
Additionally, if you would like the ability to directly report content issues or contribute to the content repository, reach out to request access to the GitHub repsitory.
All changes must go through an approval process before being shipped; therefore, the ability to contribute to this curriculum does not guarantee update velocity.
Important Module Information
Each module has its own outline available as its index page, which is accessible to both learners and instructors. This outline contains a breakdown of the module that includes time allocations and high-level information for each item, and should be reviewed well ahead of introducing the module in class.
Some modules have special considerations as a part of this particular course, as follows:
Module 1: Version Control
It is expected that learners will continue to use their GitHub accounts to submit most assignments throughout the remainder of the course.
Ensure learners have set up a viable, professional GitHub (with an appropriate username and avatar), before exiting this module.
Module 2: HTML and CSS Review, with Accessibility and Module 4: JavaScript Review
Learners should have completed the Scrimba pre-work before entering the class, and therefore be sufficiently familiar with much of the content within this module.
Using the information gathered from the pre-exam as well as conversations with your learners, you can determine how much time should be spent on certain topics within this module. If the learners are well-learned, spend time on Accessibility and then move on. If they are struggling, spend a bit of extra time on the topics within the module.
Recommendations for where to “find” the time, if borrowed:
- Module 5: The Document Object Model
- Learners will likely have a solid understanding of many topics within this module as a result of their pre-work.
- Module 13: MongoDB Fundamentals
- The MongoDB-without-Mongoose sections can be covered very quickly to get to the practical knowledge.
- Module 16: Unifying User Interfaces with Web Applications
- These are concepts that the learners have been doing throughout the course without drawing specific attention to it; therefore, this can be covered rather quickly or assigned as additional asynchronous material in a worst-case scenario.
Module 6: TypeScript and Advanced JavaScript
Following the completion of this module, it is expected that learners complete most if not all of their code in TypeScript.
Due to the modular nature of our curriculum materials, the proceeding modules do not highlight this as an absolute requirement (in case they are included in courses that do not teach TypeScript).
It is your responsibility as the instructor to remind learners to continue with TypeScript throughout the course, and enforce this requirement.
Module 8: Introduction to Artificial Intelligence (AI) and Tools for Software Engineering
The first lesson of this module is asynchronous, and must be assigned the day before, or several days before, the module begins.
We are introducing AI tools quite early in the curriculum, and it is to be expected that learners will lean upon them for the remainder.
From the end of this module to course completion, code reviews, informal technical discussions, and other methods of verifying understanding should be used frequently. All major graded assignments should include some form of check-in that imparts confidence in the learner’s ability to explain what they have done, why, and how.
Module 17: Deploying MERN Applications
This module contains a lot of information for the curious learner, but most of it is not necessary to complete this course. Ensure learners are focused on the finish line during this module, not consumed by the intracacies of web-app deployment.
You may notice that we have migrated to using logical (ordered) module numbering, rather than our internal module identifiers, for this course. For this reason, it is important to include the following information when reporting issues or discussing content:
- The Unique Course Identifier (UCI 1018.1).
- The logical module number (ex. “Module 1” for Version Control), and the module name.
- The particular section of the module being referenced, if applicable. Also note that individual sections within course material can be hyperlinked by clicking on a section title and copying the resulting URL. This can be useful both for internal communication, and communication with your learners!
Module Assessments and Project Weeks
It is beneficial to introduce the module-end assessments (SBAs) and section-end projects at the beginning of their respective module or section, to give learners an idea of what they are working toward.
Allow and encourage learners to iteratively work on these items throughout modules, even if the designated “SBA Day” or “Project Week” has not officially begun, provided they are keeping up with the more immediate material.
All SBAs and Projects should involve a code review and/or technical interview to prepare learners for discussing their work with industry experts, and to ensure academic integrity.
If you made it all the way down here and actually read through everything… kudos! Send me (Matthew Eckart) a message on Slack with a fun fact or actionable criticism of my material for brownie points. :)