Giter Club home page Giter Club logo

syllabus's Introduction

All Contributors

This is the syllabus and course material for CodeYourFuture (CYF), a not-for-profit volunteer-run coding school for refugees, asylum seekers and disadvantaged groups.

During the course you will learn a technology stack that helps you build anything from a simple website to a powerful database-driven web application!

The eight-month course contains:

  • HTML
  • CSS
  • JavaScript
  • Back-end development using NodeJS
  • Front-end development using React

We'll complement the course with workshops on modern software methodologies and job interview practices.

Documentation

In this Syllabus you'll find the content that we teach at CodeYourFuture. For other operational details you should read our documentation website.

Contributing

Please read our Contributing guide to get started with how you can contribute to the CodeYourFuture Syllabus.

Contributors ✨

Thanks goes to these wonderful people (emoji key):


nbogie

πŸ“–

StΓ©phanie Krus

️️️️♿️

Chris Owen

πŸ“–

Mike Hayden

πŸ–‹

Alasdair Smith

πŸ–‹ πŸ“–

Jonathan Sharpe

πŸ–‹ πŸš‡

rc-pm

πŸ“–

Nick Holdsworth

πŸ–‹

Tim Hamrouge

πŸ–‹

MitchLloyd

πŸ‘€ ⚠️ πŸ’»

gregdyke

πŸš‡ ⚠️ πŸ–‹ πŸ’»

Lucy Zidour

πŸ–‹ πŸ’» πŸ‘€

Alessandro

πŸ–‹ πŸ’»

Antigoni Makri

πŸ–‹ πŸ’»

Francesc Rosas

πŸ–‹

Sam Martin

πŸ–‹ πŸ’»

jcholyhead

πŸ–‹ πŸ’»

Mark Farmiloe

πŸ–‹ πŸ’»

MΓ‘tΓ© SzendrΕ‘

πŸ–‹ πŸ’»

Matthew Craven

πŸ›

Daniel Carter

πŸ›

Coung

πŸ–‹ πŸ’»

Lana-Franks-Code

πŸ›

Gintaras

πŸ›

rickscode

πŸ›

Claire Bickley

πŸ–‹

Jack Franklin

πŸ›

Sanyia Saidova

πŸ–‹ πŸ’»

Jo

πŸ–‹ πŸ’»

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

syllabus's People

Contributors

40thieves avatar allcontributors[bot] avatar bonboh avatar carterd888 avatar chrisowen101 avatar clairebickley avatar dedekind561 avatar dependabot[bot] avatar ehwus avatar elizabethlawalcyf avatar esma-g avatar frosas avatar gregdyke avatar iantaite avatar illicitonion avatar jcholyhead avatar keithbremer avatar kfklein15 avatar llamojha avatar markfarmiloe avatar rc-pm avatar sallymcgrath avatar sansaid avatar shieldo avatar stephanie-k avatar szemate avatar textbook avatar theseafaringturtle avatar timhamrouge avatar tomdaly avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

syllabus's Issues

Plan for changes to MongoDB

What is the hypothesis?

MongoDB rework should have some kind of end outcome in mind

Why is this important?

There are a bunch of tickets with suggested improvements but we should prioritise based on a plan (/throw out anything that would be obsolete before being implemented)

Supporting Resources
(plan to attach my suggested learning goals)

Add JavaScript Core 1 Challenges

Which module(s) and week(s) does this change effect?
Module(s): JS1
Week(s): 1/2/3

What is the work that needs to be done?

As a student I want to feel stretched and excited about solving interesting programming problems. I'd also like them to be targeted at my current development level.

The content for this module can be found here.

In this repository you will find a set of challenges that are appropriate for students who are studying JavaScript Core 1. You should open a pull request to that repository and with all of the challenge details.

https://github.com/CodeYourFuture/JavaScript-Core-1-Challenges

Make sure that you do not include any content that has not been covered in the three lessons in JavaScript Core 1.

Why is this work important to do?

Challenges are important for students development to give them time to practice what they are learning in class. They are also useful for teachers who can use the challenges in class to test students understanding.

Additional context

This is a long running ticket - when you have completed it move it back into Selected For Development.

Who might need to know about this change?

@ChrisOwen101

React Mandatory Homework is Unclear

Describe the bug

In the React homework it is somewhat unclear which homework is mandatory and which is optional. See an example here:

https://syllabus.codeyourfuture.io/react/week-1/homework

Ideally, we want students to push themselves as much as possible and not think that just doing the Mandatory homework is "enough".

How could this be fixed?

Add more messaging around what the student should be completing. We should try to encourage the students to do as much as possible since we've seen repetition to be an important part of learning React.

Link to content

https://syllabus.codeyourfuture.io/react/week-1/homework
https://syllabus.codeyourfuture.io/react/week-2/homework
https://syllabus.codeyourfuture.io/react/week-3/homework

Who else might need to know about this?

@40thieves

This was reported by Claire Bickley, City Coordinator of Birmingham.

Fix ordering of data fetching exercises in React hotel homework

Describe the bug

In the React hotel homework, exercise 15 is currently within the week 2 section. To complete this exercise, students must have knowledge of useEffect for data fetching, which is not taught until week 3 of the React module.

How could this be fixed?

The simple fix is to move exercise 15 into the week 3 section. However we may want to add an additional exercise to week 2 to make up for it. This should be considered at the same time as #73.

Link to content

Exercise 15: https://github.com/codeyourfuture/cyf-hotel-react#15-load-bookings-remotely

Additional context

Raised by Claire on Slack: https://codeyourfuture.slack.com/archives/C76GQDRH9/p1601283195001900.

Add More JS2-2 Coursework

Which module(s) and week(s) does this change effect?
Module(s): JavaScript Core 2
Week(s): Week 2

What is the work that needs to be done?

This week is pretty light on coursework for exercises and challenges which means our students don't get a lot of practice doing the work this week.

This ticket should add a few more smaller exercises and one larger project for the students to work on this week.

Please make sure to check what the students have learnt in this lesson. If you want to include challenges that the students haven't learnt yet, please tag them as (Optional)

Why is this work important to do?

This is the week that the DOM and DOM manipulation is introduced and is quite pivotal. It's pretty important that the students get a good amount of practice doing this work before they move on to the next week

Additional context

Homework page: https://syllabus.codeyourfuture.io/js-core-2/week-2/homework
Homework repo: https://github.com/CodeYourFuture/JavaScript-Core-2-Coursework-Week2

[Workshop] Mobile Application Development (React Native)

This workshop was requested by a Student

Aims

The aim of the workshop would be to give students enough knowledge to create a very similar React Native application have them deploy it on to a phone or emulator.

The workshop should aim for minimum level complexity (that of a simple counter or clicker app). The aim of this app is to give students the tools they need to learn more.

Do not cover

This workshop should not cover the differences between native, semi-native and web based applications.

Prior Understanding

This workshops assumes a good understanding of JavaScript and React.

The students have not had any exposure to loading applications on to smartphones or the tools involved

The workshop assumes that students have used a mobile application previously and can use a smartphone.

Completion

When completed the lesson plan, slides and exercises should be added to the Workshop section of the Syllabus

Consider adding additional exercises to React homework

What is the hypothesis?

There is not enough homework for students doing the React module hotel homework. Several students in London class 6 completed the weekly homework well within the ~20 hours a week estimate. To make up for this, we supplemented the homework with additional challenges. These also have the benefit of adding variety to the homework.

On the other hand, there was also a bank holiday weekend during the module, which added an extra weekend for students to complete their homework.

Therefore, I would like to discuss whether other classes also saw this effect. If so, I see a couple of options:

  1. Adding more exercises to the Hotel homework
  2. Making a few of the additional challenges mandatory

Why is this important?

Keeping students engaged and practiced with React, we should make sure that they find the exercises challenging enough.

[Workshop] Introduction To Unit Testing in JavaScript

Workshop Request

What is the title of your workshop

Introduction To Unit Testing in JavaScript

What are the key topics that will be covered in the workshop?

By the end of this session and homework, a student should be able to

  • Define what Unit Testing is
  • Give reasons for why testing - and unit testing in particular - is important
  • Read testing code and describe what it is testing
  • Run tests on a JavaScript codebase and tell if they have passed or failed
  • Write a unit test that tests a Javascript function
  • Refactor code to make it testable and then write a test for it

What knowledge does the student need before starting?

The students will

  • have knowledge of JavaScript
  • be able to write JavaScript code to an average level
    • they will have completed up to JS3 of our syllabus
  • have no knowledge of what testing is or why it is useful

What are the topics that will not be covered in the workshop?

  • Any other forms of testing (e.g. UI testing)
    • Except in passing to describe the difference from Unit Testing

Any other notes?

This workshop must also include homework for the students to study in the time after the lesson. It is expected that a lot of the learning will happen in the homework section.

This workshop could be based on this lesson which was recently cut from our syllabus because of time constraints in the course.

This workshop could also be split across two or more lessons if the content is deemed to be to lengthy.

This workshop must include practical exercises for the students to try during the lesson.

Completion

When completed the lesson plan, slides and exercises should be added to the Workshop section of the Syllabus

Code Style Guide for CodeYourFuture

What is the work that needs to be done?

In the wild, there are lots of good Code Style guides that can help us to make sure our student code in professional way.

The problem with many corporate-grade guides is that they are very dense and assume an advanced knowledge of JavaScript - not ideal for our students when they're starting out.

For inspiration here is AirBnBs.

Why is this work important to do?

We often tell our students to "write good code" but our definition of that is sparse and disparate. This file will become our single source of truth for what we expect of our students.

Additional context

A very acceptable version of this would be a pared-down version of a corporate style guide with links away to the full document.

Remove clever code from examples: res.send(error || data)

This is in lots of mongodb week 1 and 2 examples.

It hinders the students for little gain - even if they understand it and worse copy it, they invariably have to do away with it as soon as the task requirements are slightly increased

e.g.
now log the error message, or
now return different status codes in the error and success cases

As a clearer, more durable alternative, use something like:

if (error){
res.setStatus(5xx).json(relevantErrorObject)
} else {
res.setStatus(2xx).json(relevantData)
}

res.send() also causes confusion when the students try to send numeric result during early experimentation.

If the idea is to send json, be explicit and communicate intention to other programmers.

Add Pre-Module Work to the React Module

Which module(s) and week(s) does this change effect?
Module(s): React
Week(s): Pre-Module

What is the work that needs to be done?

There is some pre-work that has to be done before the React module starts.

You can find a discussion about that here

This should be added to both the Overview and Lesson 1 pages of the React module so teachers do not miss it. You could consider adding a Prep page to the syllabus so it can be directly linked to.

Why is this work important to do?

If we leave this work to be done in the lesson we lose a precious lesson time to simple work that can be done at home

Who might need to know about this change?

@40thieves @nbogie

[DRAFT] JS1 & JS2 Content Reshuffle

DRAFT

Which module(s) and week(s) does this change effect?
Module(s): JS1 + JS2
Week(s): Week 1,2 & 3 for both

What is this change trying to solve?

Our students struggled a lot with JS1 this year so we're looking at improving the module.

JS2/Week3 is a weaker week in our curriculum and so could be pushed back to when the content in that lesson is more required. The homework for this week is not directly related to the content (it's three mini-projects).

What is the proposed change?

  • JS1 - Week 1 - Variables, Strings, Numbers
  • JS1 - Week 2 - Functions and Expressions
  • JS1 - Week 3 - Arrays and Loops
  • JS2 - Week 1 - Array Methods
  • JS2 - Week 2 - Objects
  • JS2 - Week 3 - DOM & DOM Manipulation
  • JS3 - Week 1 - Debugging and How Does The Web Work
  • JS3 - Week 2 - APIs and Fetch
  • JS3 - Week 3 - Scope & Array Destructuring (see Issue #6 )

Why is this work important to do?

We need to give our students more time to understand the basics before moving onto the harder parts of the course

Risks

We've lost the section on Sync vs Async and so we'll need to do this content in another way. I think we could set it as homework as there's lots of good content around this.

Who might need to know about this change?

@ChrisOwen101 @40thieves @nbogie

Add demos to show goal of exercises in React module

Which module(s) and week(s) does this change effect?
Module(s): React
Week(s): 1 - 3

What is the work that needs to be done?

Add a demo for each each exercise in the React module, which demonstrates the final goal of the exercise.

Why is this work important to do?

The exercises are written to break the task down step-by-step, to help students work through the exercise. However this leads to confusion over what is required from the task. Additionally advanced students don't get the opportunity to try the exercise without the assistance.

Additional context

This is a common bit of feedback from teachers running the React module.

Who might need to know about this change?

@nbogie

Resource Recovery from London Class 6

Which module(s) and week(s) does this change effect?
All

What is the work that needs to be done?

As we have finished teaching in London for the year we've had a huge amount of taught content.

Many of our teachers have used Slides/Exercises/Diagrams/CodePens/Extra Homework/YouTube Videos/Resources to help them teach however they are often now handed over when they've finished teaching.

We should get in contact with each of the Lead Teachers from here and request any of their teaching material to add to the syllabus
https://docs.google.com/spreadsheets/d/1sZNv9P6_cee8-0kG8sT83qkhZBPwL0z7hKqi03lGUTE/edit#gid=1718527320

All content should be stored on the Instructor Notes page for the week e.g. here

Why is this work important to do?

It's important that we preserve the work that we've done year to year so it can be re-used for all of our schools.

[Workshop] UI & UX Design 101

This workshop was requested by a Student

Aims

The students should be able to

  • Define the difference between UI and UX
  • List the key concepts behind the ideas of UI & UX
  • Understand the job role of a UI & UX designer
  • Identify obvious design flaws in a website
  • Suggest improvements to websites

Prior Understanding

Student will have a good understanding of HTML & CSS.

Students are assumed to have no or limited background in design, UI or UX.

What should this not cover?

Completion

When completed the lesson plan, slides and exercises should be added to the Workshop section of the Syllabus

Button styling not working on Production build

Describe the bug

On the production build of the Syllabus website the button does not have it's rounded button styling

See here for production:
image

It should look like how it does on a local build. See here:
image

What should happen

The button should be styled the same on Production and Local Builds

What Makes A Good Final Project

Which module(s) and week(s) does this change effect?
Module(s): Final Project
Week(s): N/A

What is the work that needs to be done?

When our students reach Final Projects, we like it if they can work on projects for NGOs/Charities.

Some of our City Coordinators are asking what we should look for in a project to make sure that our students have a good experience.

Making a list of previous external projects would be nice.

You can see a list of internal projects here:
https://syllabus.codeyourfuture.io/finalproject/projects

These projects all fulfil all the criteria of a good Final Project.

Why is this work important to do?

Making sure this task is well-defined will reduce the risk of an unsuitable project being worked on by our students.

Additional context

Chat with Rob Crook (Product Manager from Spotify) for thoughts. He's been running Final Projects for us in two cities.
Claire Blickley & Barnaby Dathan are City Coordinator for West Midlands and North West respectively.

Github Desktop vs Git + Terminal

Github Desktop vs Git + Terminal

Before we start working on the ticket about designing a Git lesson we need to have a discussion on which method is best for us to teach.

We maybe also decide to design the lessons in such a way that we can leave it up to the school to define.

Overview

Git is one of the key tools we use to submit homework and historically has been tricky getting students setup with. Last year in London we chose to teach Github Desktop and Git Theory rather than trying to teaching Terminal which could be viewed as a barrier to entry that increase cognitive load.

This was met with moderate success - students were able to submit homework but the majority still had problems submitting homework and doing basic Git Tasks. Some issues were reduced including

  • Typing and Grammatical Errors in commands
  • Memory recall issues with forgetting commands

However it did introduce issues

  • The nuts & bolts of git are obscured a lot meaning fundamentals understands of the tool are not formed so quickly
  • Students did not have good Terminal Skills by the time they reached React which caused problems.

Success Metrics

This lesson will be a success if student can

  • define what Git is and what it does
  • define what the differences between Git and Github are
  • create a repository on Github
  • clone a repository using Github Desktop or Command Line
  • make changes to a repository using Github Desktop or Command Line
  • create and move between branches using Github Desktop or Command Line

Students will be using Github extensively to submit homework.

Discussion

Given the above - we should decide which we want to teach - Github Desktop vs Git + Terminal

Below, could we list out the Positive & Negative points for each solution so we can be an accurate decision.

Do not be afraid to be opinionated one the thread - let's work out the best solution.

Add Sponsorship Banner to Front Page + Module Pages

What is the work that needs to be done?

We get over 900 unique visitors a month and ~13K monthly page views. We could monetise this by offering a sponsorship package to the syllabus. This money would be ring-fenced to being spent onto on improving the syllabus.

Why is this work important to do?

Having dedicated funds to spend on the syllabus will improve it's quality and improve our students learning.

Examples

On the front page and in the sidebar here: https://material-ui.com/

Design

Something simple is fine. A button to a page with more information is more than enough.

Feedback forms at end of lessons

Which module(s) and week(s) does this change effect?
All Weeks and Modules

Why is this work important to do?

As our content is being used by more and more people around the world it's important that we receive feedback on what went well or poorly in the lesson.

What is the work that needs to be done?

1. Create a Google Form
Create a Google Form that has the following information

  • Name (Optional)
  • Module Name (Drop down)
  • Week Name (Drop down)
  • Teacher or Student (Checkbox)
  • A series of questions about the quality of the content and what we can improve

2. Create React Component
A reusable Feedback component to embed at the end of each page to reduce duplication of code

3. Embed to each week of the course
A the end of each week we should embed this form to encourage people to complete it.

Idea: Forms can be pre-filled with data. Could we do this to reduce errors?

Who might need to know about this change?

@nbogie

Review how we introduce functions and expressions

Which module(s) and week(s) does this change effect?
Module(s): JS1
Week(s): 1, 2

Also JS1 week 3 and JS2 week 2

What is the work that needs to be done?

Currently, we introduce functions as a standalone concept, without linking them to any practical reasons they may be useful.

Our initial examples are too simple to be realistic (wrapping + and *2).

We should see if we can drive functions through real-world problems (re-using more complex code, explaining more why re-use is good).

We should also make more clear the distinction between side effects and returning. (We prompt students to think about console.log, but we don't really linger on it or explain much). This links in pretty closely with understanding expressions, which we have seen in React students didn't fully grok.

We should also use introducing array methods and event handlers as a way to reinforce these ideas, rather than assuming our learners have fully grasped them.

Why is this work important to do?

This seems to me to have been one of the biggest stumbling blocks leaving learners confused and unable to work on their own. They struggle with things like forEacg and map, they frequently return where they don't need to, or don't return where they do, and they get confused when we get to JSX about when they need {}s and what goes in them.

Earlier on, they also struggle to talk about functions because they haven't been trained in how to think about them. Giving better motivational examples, so they saw why they were useful in the first place, and more structure around thinking about them, so they know how to read them and tease out the key information about any one function, would improve much about how they approach problems, as well as confidence in understanding.

React Hotel homework README doesn't show examples of any per-city info cards

In the React hotel homework, in Lesson 1 Exercise 3, we introduce the slightly abstract concept of an "Info card". We have an example screenshot (Bookings.png), but it doesn't contain any info cards. It would be great for us to have either a separate png linked to from the README showing an example, or to have an example in Bookings.png we can point to, so that students are absolutely clear what one is.

Could we teach 'Scope' earlier in the course?

What is the hypothesis?

We currently teach Scope in the final week of JS3.

From our Manchester school we found that students found it very helpful to be taught and that they would have got a lot out of being taught it earlier.

Why is this important?

By moving the Scope content earlier in the course we can help build our students mental model of how JavaScript works internally.

Supporting Resources

Slack Post:
https://codeyourfuture.slack.com/archives/C7SLBMSJE/p1600159879007500

[Workshop] Introduction to Accessibility

Aims & Learning Objectives

  • List the 4 main groups of disabilities (visual, hearing, motor, cognitive)
  • Define what accessibility is
  • Recall some specific conditions for each categories
  • Define what an invisible disability is and give some examples
  • Define situations where you can experience an accessibility issue, for touch, see, hear and speak or a combination of more than one of them (could be done as homework)
  • List some reasons why accessibility is important to consider
  • Illustrate what each letter in SCULPT mean
  • Apply advice to check colours and give good text links and alt texts
  • Create an alternative text when sharing photo on social media.
  • Identify good and bad practice in social media
  • List the 4 principles of WCAG and define them in their own words
  • Recall the 3 conformance levels and which one to aim for
  • Identify situations where respecting the guidelines is not enough for a good user experience

Prior Knowledge

Students will have knowledge of HTML & CSS

Completion

When completed the lesson plan, slides and exercises should be added to the Workshop section of the Syllabus

Review contributing guides

Module(s): N/A
Week(s): N/A

What is the work that needs to be done?

Inspired by this change, the contributing guide is now correctly linked from the README (thanks!)

However the link is to the contributing guide I wrote for the fundamentals module. The syllabus top-nav links to a different guide (which looks like @ChrisOwen101 wrote).

I think it might also be worth noting that Github has some magic if the repo contains a CONTRIBUTING.md file in the root. We could consider moving our existing guides to this file.

Why is this work important to do?

Clarify what are the expectations of a contributor.

Who might need to know about this change?

@ChrisOwen101

Add Array Destructuring to JS3-3 and Remove Classes

Which module(s) and week(s) does this change effect?
Module: JavaScript Core 3
Week 3

What is the work that needs to be done?

Removing Classes

  1. Remove content about Classes from JS3-3
  2. Remove content about Classes from JS3-3 homework

Adding Array Destructuring

  1. Write content that properly explain the usages of array destructing and why it will be helpful.
  2. Write several in-class exercises which teach the students how to use array destructuring (consider using Faded Examples)
  3. Add homework tasks that ask the student to write some array destructuring code
  4. Add homework tasks that ask the student to convert existing code to using array destructuring

Why is this work important to do?

React has now moved from using classes to using hooks which means that JS Classes now have far less importance in our course. For this reason we should update our curriculum so that our students are better prepared for React.

Additional context

Who might need to know about this change?

@ChrisOwen101

Add "how to ask a good question"/"how to answer questions" session to Fundamentals course

As discussed in this Slack thread.

What is the hypothesis?

We should add a session about to the Fundamentals course about how to ask a "good" question. A first step would be to describe what a "good" question looks like. Based on initial discussions and prior art, a primary aspect would be questions that enable others to answer more easily. Some level of attempting to answer the question by themselves is also important.

Additionally, we should include some basic tips on how to answer a question in a helpful manner. We should aim to get students in a teaching/coaching mindset. This approach helps both the asker and the answerer, as they both gain a better understanding than giving the straight answer.

Why is this important?

It is commonly observed that students ask for help by posting something like "I'm stuck, can someone help". To be able to assist, a volunteer/student wanting to help must do quite a lot of work before they are able to answer. They must ask for more details of the problem, ask what they've tried already, research the problem, etc before being able to answer. This is often discouraging to answerers, leaving students stuck.

On the flip side, often a student that is further advanced can "give away" answers (in good faith), by giving a list of exact instructions. These kind of answers are problematic, as they require no learning effort from the asker.

Supporting Resources

Create Git Lesson for the beginning of the course

Which module(s) and week(s) does this change effect?
Module(s): Git
Week(s): 1

What is the work that needs to be done?

This year, we're going to dedicate a full day to working on Git & Git Command Line OR Github Desktop

By the end of the lesson a student should be able to

  • define what Git is and what it does
  • define what the differences between Git and Github are
  • create a repository on Github
  • clone a repository using Github Desktop or Command Line
  • make changes to a repository using Github Desktop or Command Line
  • create and move between branches using Github Desktop or Command Line

You are also welcome to add to the above list with any LOs that you think are important.

Github Desktop vs Command Line

Before you start working on this ticket we need to have a discussion on which method is best for us to teach.

We maybe also decide to design the lessons in such a way that we can leave it up to the school to define.

Why is this work important to do?

Git is one of the key tools we use to submit homework and historically has been tricky getting students setup with.

Additional context

We have a current workshop for Github Desktop here

Add section on .env files (either MongoDB or in Node module)

Keep the assigned HW (youtube video), but also do 15 minutes in-class, after that to ensure everyone has it.

Ideally this would be added in Node module but we currently have nothing in the node module exercises that needs protecting. Add it when it is NEEDED.

The HW was:

Watch the Daniel Shiffman video https://www.youtube.com/watch?v=17UVejOw3zA
"3.4 Hiding API Keys with Environment Variables (dotenv) and Pushing Code to GitHub"

Although it talks about API keys, it is also the approach we would recommend you take for your mongodb connection URI.

Pay careful attention to the bit about the .gitignore file, too!

Also link to docs on:
repl.it: https://docs.repl.it/repls/secret-keys
glitch: TODO

Teach Terminal/Command Line Earlier In The Course

Which module(s) and week(s) does this change effect?
Module(s): React + 1 Other
Week(s): n/a

What is the work that needs to be done?

Our students currently do not learn Terminal or Command Line properly until they reach the React course. We should find some time earlier than React in the syllabus to teach command line.

This lesson should cover enough that they can use React (and the common tasks associated with React) through the Terminal.

Areas to consider:

  • How to open a terminal
  • How to navigate through a folder structure
  • The structure of a command in the terminal.
  • How to run a command in the terminal
    other areas are left up to the creator to consider

This would should include

  • Learning Objectives
  • A piece of content to be taught in a lesson that includes in-class exercises
  • Some homework for the students to do surrounding Terminal and Command Line

Why is this work important to do?

The extra cognitive load of learning command line whilst doing React means that some students struggle more than they should with the module. By moving this earlier into the syllabus is gives us some more lead time to make sure students understand it.

Who might need to know about this change?

@40thieves

Resource Recovery for North West Class 3

Which module(s) and week(s) does this change effect?
All

What is the work that needs to be done?

As we have finished teaching in London for the year we've had a huge amount of taught content.

Many of our teachers have used Slides/Exercises/Notes to help them teach however they are often now handed over when they've finished teaching.

First, we should get in contact with Banaby Dathan (North West City Coordinator) who can let us know who was teaching each module.

Then We should get in contact with each of the Lead Teachers and request any of their teaching material to add to the syllabus

All content should be stored on the Instructor Notes page for the week e.g. here

Why is this work important to do?

It's important that we preserve the work that we've done year to year so it can be re-used for all of our schools.

[Workshop] React Redux

Workshop Request

What is the title of your workshop

Redux Workshop

What are the key topics that will be covered in the workshop?

Redux is a highly requested workshop from our students in London.

  • What is Redux?
  • What problems does it solve?
  • Why would you use Redux?
  • How do you use Redux in a React App?

In particular you should cover

  • Redux Stores
  • Redux Reducers
  • How to do Synchronous and Asynchronous actions with Redux

What needs to be included?

  • A full lesson plan of the sessions (these should be high enough quality for other volunteers to run in the future)
  • Exercises for the lesson
  • Coursework for the students to complete after the lesson (consider making this a group project)
  • Instructor notes for the next person to teach it

See here for an example Lesson Plan

What knowledge does the student need before starting?

  • Good knowledge of React and JavaScript.
  • Student must have built several React Apps before

Be sure to give some pre-workshop

What are the topics that will not be covered in the workshop?

Other Front End Library Frameworks

Any other notes?

This workshop could easily be split across two evenings/days with some coursework in between - Redux is a complex tool that can take some time to understand.

I would highly consider finding an existing open source Redux Workshop and fitting it for our needs. Many already exists.

Completion

When completed the lesson plan, slides and exercises should be added to the Workshop section of the Syllabus

Update MongoDB Week 3 to include London taught content

Which module(s) and week(s) does this change effect?
Module(s): MongoDB
Week(s): 3

What is the work that needs to be done?

In our last London class we taught different content in Week 3 of MongoDB than what is currently in the Syllabus.

You can find the document here

https://docs.google.com/document/d/1OyvL5lYMgITC6PHKC3v-gXFq_OFD2PI6Ed6zllvhagQ/edit#

There are resources at the bottom of that document.

You can decide how much or how little of this content is used - the aim of this ticket is to make sure nothing of high quality slips through the net.

Why is this work important to do?

The taught content is better than what currently exists in the Syllabus and has some great exercises and ideas.

Additional context

Who might need to know about this change?

@nbogie, Greg Dyke,

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.