Skip to main content

Mentor Notes

Want to make a change to this week? Open a change request

Want to report a bug in this week? Open a bug


Requirements

Schedule

Here's a rough schedule, which you can adapt to suit your cohort. You should also schedule at least one short break in the afternoon for prayers. Parcel out the sessions between volunteers in a planning call beforehand. Once you've planned it, make sure you share the schedule with all trainees and volunteers at least 24 hours beforehand, so they can make any necessary travel, childcare, religious, and other logistical arrangements.

Morning

10:00 AM10:30 AM11:00 AM11:30 AM1200:00 AM12:30 AM
Welcome / AgreementsPersonal DevelopmentPersonal DevelopmentCode.orgLunchLunch

Afternoon

13:0013:3014:0014:3015:0015:3016:0016:30
TelephoneUser StoriesUser StoriesCYF BlocksCYF BlocksShip ItShip ItRetro

Code.org

Code.org uses the same Block.ly visual editor as CYF Blocks, and has some good resources, so instead of reproducing those in our application, we ask trainees to work through the basics of sequencing, control flow and loops on the Code.org site. The coursework page lists the exact lessons we expect them to complete.

Preview Code.org

Take a look at Code.org before class and complete one or two levels.

The most useful thing you can do together in class is to share your screen and get everyone up and going with the interface. This will help unblock people who get stuck on some minor setup issue at first. Moreover, getting everyone coding together, sharing screens, and trying things, is really worth spending time on to set the tone for the course.

CYF Blocks

We will use CYF Blocks to build our projects for Fundamentals. CYF Blocks builds on the knowledge learned in Code.org and concretises those lessons as real code that builds real web pages.

From Code.org we build on these learning objectives:

  • programme sequentially
  • control flow

On top of that, in CYF Blocks we learn to

  • interact with the DOM
  • change the content on a web page
  • click buttons and make them change things

Trainees will work on CYF Blocks themselves through the week, so to start just get everyone introduced to the interface. There is no signup required.

Take some time to familiarise yourself with CYF Blocks by doing at least the first 3 exercises. Be prepared to point out to the students the following areas/features of the screen:

  • static html (this will usually be automatically filled and students will almost never be asked to modify anything here)
  • the blocks area and the elements in the toolbox (hopefully self explanatory)
  • the instructions, which should probably be read through once before doing anything
  • the run button, used to execute the code generated from the blocks
  • the test checkboxes that appear when run is pressed: they should turn green when the exercise is done
Warning

CYF Blocks currently (12/02/22) only uses local storage. Make sure trainees know this, and explain that if they open it in a new browser or on a new computer, their work will not be there. They should use the share button to save out states.

Readiness for the full Software Development Course

To ship their code, trainees need a Github account. Some people will not have signed up to the accounts or installed the things they were asked to, though it's made clear that they are expected to do so before coming to class. You can use this to help evaluate trainee readiness for the full course.

Dealing with unprepared trainees in class

Don't hold up the rest of the class -- place the unprepared in a breakout room with a volunteer to get them sorted, and record their names. Do this each time there's a paperwork/admin/prep issue like this. Re-iterate that preparing for class is crucial for success on the course.

Of course everyone misses some things, but we know from experience that people who persistently fail to follow instructions or prepare for class really struggle on the Software Development Course and often wash out.

Telephone

Play the default game! You don’t need to explain what to do, people will figure it out. You might try playing it between the mentors in your planning calls - it’s a fun icebreaker. Limit the groups to 5 or else the game takes too long. It takes 10 minutes to play with 5 people.

Now come back into the main room and lead a reflection.

Example reflection:

Was it surprising (and hilarious) to see what other people drew from your words? What about how they described your picture? Did anybody get a series of similar pictures or words?

User Stories

Sample reflection for mentor

Example reflection:

What’s NOT in the user story? (It’s the how.) One reason to write user stories is to establish clearly what we are doing and why. A common mistake in coding is jumping straight into “how” before we understand and agree these things. This wastes a lot of time. If you find yourself jumping straight to “how” or “jumping to conclusions”, check yourself! Remember the telephone game and how absurdly wrong things can go.

Ship It

A version of this session has been run many times at CYF so please ask others for help if you're stuck. There's a full workshop called Deploying Your Code you can run through beforehand if that's helpful.

We will ask trainees to ship frequently at CYF.

  1. We only evaluate what people have shipped. Shipped software is the only completed form of software. And that's what counts.
  2. A shipped piece of software is a tangible product. Real, deployed sites are valuable to trainees beyond this course. They can use them to build their portfolio.
  3. Finishing things is so hard. You must learn how to do it and practice it constantly to be successful.

Retro

One or two volunteers will facilitate a retro at the end of the day. You may wish to split the retrospectives into trainee and mentor, or do it all together. It's up to you.

Coursework In Perspective

Quick presentation to discuss how block-based programming is relevant in the "real world", as it can appear a little "childish" to adults.

Sequence, repetition with loops, conditional execution with if/else, and breaking bigger problems into smaller problems, with functions.

Possibly showing representations in JS, by clicking the "Show code" button on Code.org.

Assigning Coursework

At the end of Class, assign the homework for this week through Google Classroom.