teaching-journal

Tony’s Learning Journal for Teaching Code

A dedicated journal for teaching programming and learning teaching fundamentals in general.


June 9, 2023

Create Beautiful Presentations With Svelte

- [Companion article](https://joyofcode.xyz/beautiful-presentations-with-svelte)

No sample code, but the companion article has an excellent breakdown of the project. In fact, I’m not even going to watch the video; hopefully the article is enough?

The project includes TailwindCSS. Normally, I don’t like opinionated dependencies in tutorials, but a utility library is probably the best way to quickly style up something in RevealJS.

Session Notes

Next steps/questions:

  1. Create a dynamic /slides endpoint(s) for slide content
  2. Figure out how to organize markdown imports vs HTML content
  3. Is there a way to generalize content that can is slide vs article agnostic? For example, can I use the same content for my slides that can also feed a finished blog article?
  4. How do I begin porting my existing content to the new system? Can I build a 5-slide series that can be inserted into a larger slide deck? Can one slide series feed multiple slide decks?
  5. What’s the best way to build common layout components like side-by-side comparisons (Good/Bad. Before/After, etc)?

May 29, 2023

New slide format?

Code on the left, slide on the right

Source: How to make code more testable, by factoring out and abstracting side effects

Unicorn: a markdown blog that is flexible enough for an educator to throw some code in one component and a relative slide url in another. The wrapper component places them side-by-side.

Slide transitions using Svelte movement?

Could svelte be used as a replacement for slide transitions in ReavealJS?

Slide 1: File access module

File access module shown

Slide 2: Placeholder module

Placeholder module shown

Slide 3: Trololo module

Trololo module shown

Possible to use Svelte transitions to handle differences in DOM-manipulation triggered by RevealJS?

Further nerding


April 7th, 2023

Great reference from Rashid! He says this site was a game changer for learning the basics.


March 7, 2023

Teaching Loops

Teaching loops is very difficult. I found this article by a 40+ year old junior insightful:

He has almost convinced me to teach for...of instead of forEach. Almost.


January 12, 2023

Exit Tickets!


December 10 , 2022

Theo - ping.gg


December 2, 2022

Full stack documentation


September 29, 2022

I noticed some interesting search results while researching some ideas for having students build a game on the command line:

Search phrase: “best way to teach js” Top result: The 5 Best Ways to Learn JavaScript Fast in 2022 (For Beginners)

  1. Self-Guided Websites and Courses.
  2. Books.
  3. Coding Boot Camps.
  4. Meetups and Networking Events.
  5. Starting Your Own Projects.

It doesn’t look like there’s a lot of content out there for teachers? Maybe zooming out will lead to better results? Spoiler alert: the answer is a definite yes!

Search phrase: “the best way to teach programming” Top result: Ten quick tips for teaching programming

  1. Remember that there is no geek gene.
    Competence at programming is not innate but is rather a learned skill that can be acquired and improved with practice.
  2. Use peer instruction.
    In simplified form, peer instruction proceeds in several phases:
    1. The instructor gives learners a brief introduction to the topic
    2. The instructor then gives learners a multiple choice question that probes for misconceptions rather than simple factual recall. The ideal questions are those for which 40%–60% of students are likely to get the right answer the first time.
    3. Learners then vote on the answer to the question individually, thus formalising their initial prediction.
    4. Next, learners are given several minutes to discuss those answers with one another in small groups (typically 2–4 students), and they then reconvene and vote again.
    5. Then, the instructor can act on the latest answers. If all the learners have the right answer, the instructor can move on. If some of the wrong answers remain popular after group discussion, the instructor can address those specific misconceptions directly or engage in class-wide discussion.
  3. Use live coding.
    Rather than using slides, instructors should create programs in front of their learners.
    • Don’t go too slowly;
    • Start with a partial skeleton that includes the boilerplate (preferred) or having it on hand to copy and paste when needed;
    • Instructors may give students starter code that relies solely on concepts they have already mastered and then extend it or modify it with live coding;
    • Ensure that learners have reference material available after lectures, such as a textbook, but recognize that students of all ages increasingly turn to question and answer sites such as Stack Overflow for information.
  4. Have students make predictions.
    The key to making demonstrations more effective is to make learners predict the outcome of the demonstration before performing it.
    • Crucially, their prediction should be in some way recorded or public, e.g., by a show of hands, by holding up cue cards marked with A, B, C, or D, or by talking to their neighbour;
    • Instructors should be careful not to punish or criticise students who predicted wrongly but rather to use those incorrect predictions as a spur to further exploration and explanation.
  5. Use pair programming.
    • One person (called the driver) does the typing, while the other (called the navigator) offers comments and suggestions.
    • The two switch roles several times per hour.
    • It’s important to put everyone in pairs, not just the learners who may be struggling, so that no one feels singled out.
  6. Use worked examples with labelled subgoals.
    Students perform better when worked examples are broken down into steps (or subgoals) that are given names (or labels): Screencap of a subgoal labelling example
  7. Stick to one language.
    Courses should stick to one language until learners have progressed far enough with it to be able to distinguish the forest from the trees.
  8. Use authentic tasks.
    Learners find authentic tasks more engaging than abstracted examples. A classic question in computing (and mathematics) education is whether problems are better with context (e.g., find the highest student grade) or without (e.g., find the maximum of a list of numbers). Bouvier et al. examined this with a multiuniversity study and found no difference between the two. They suggest that since it makes no difference, other considerations (such as motivation) should be given priority.
  9. Remember that novices are not experts
    Novices may need to spend time thinking about an algorithm on paper (something expert programmers rarely need, as they have usually memorized most common algorithmic patterns). They may need to construct examples in guided steps. They may struggle to debug. Debugging usually involves contrasting what is happening to what should be happening, but a novice’s grasp on what should be happening is usually fragile.
  10. Don’t just code.
    A growing number of educators are including Parsons Problems in their pedagogic repertoire. Rather than writing programs from scratch, learners are given the lines of code they need to solve a problem, but in jumbled order. Reordering them to solve the problem correctly allows them to concentrate on mastering control flow without having to devote mental energy to recalling syntax or the specifics of library functions.

Probably the best “paper” I’ve found on how to teach code.


July 19, 2022

Some thoughts about Fall semester with two schools. One has traditional assessments and the other definitely not. But what are the common Learning Outcomes?

As a barely junior developer, I want to be able to…

  1. Follow instructions, so that I can:
    • Install third party libraries, packages and frameworks by following the developer documentation.
    • Incentivise my employer(s) to write more/better devops guides.
  2. Effectively perform online searches, so that I can:
    • Solve my problem before asking for help.
    • Find alternatives to proposed tools.
  3. To know when to ask for help, so that I can:
    • Not get trolled in an online help forum.
      • (Be respectful of other people’s time.)
    • Show proof of work and receive feedback/street cred.
    • Accurately assess my own learning progress.
    • Finally crush this nemesis bug!
    • Just move on to the next problem (after a break).

July 4, 2022


June 26, 2022

Breakdown: Upgrade Your Stream Deck: 9 Advanced Tips For Streamers by Gaming Careers


June 25, 2022

New Breakdowns:


June 17, 2022

Going to test some Twitch stream settings today.

Installation/configuration Guides

User Story: As new Mac buyer and JAM Stack coder, I want a quick reference for the software I’ll need to install as a developer because I’ve totally forgotten what I did the last time I bought a computer.

Convergent guides for:

The things:

  1. Double-click and forget
    • Zoom
    • Discord
    • Firefox
    • Chrome
    • Dev browsers
      • Postman
      • FF Dev
      • Chrome
    • VS Code
    • Git?
  2. homebrew and nvm
  3. iTerm with Oh My Zsh!
  4. VS Code config

June 15, 2022

Install log:

  1. Firefox
    • Lastpass extension
  2. Zoom
  3. Focusrite Control (Scarlett 2i2)
  4. LogiTune (Brio camera)
    • Might not be the best option? Alternative could be G Hub.
    • Tried G Hub but it doesn’t offer any more settings.
  5. Stream Deck software
  6. Wacom Desktop Center

Question: Is the current version of OBS (27.2.4) still running in Rosetta?


June 14, 2022

M1 Mac Mini Setup!

Physical setup and peripherals:

Streaming Research

Some questions that need to be answered for the Twitch Stream

Findings


June 12, 2022

Mac Mini Setup for Streaming

Streaming software

Coding Software

Messaging

Quality of Life


May 8, 2022

Assumption: A beginner will need a more convergent learning path until they can use their imagination.

Theory: Providing a list of recommended starter projects will aid in learning.

Questions:

Goal

Create sample projects geared toward board games. Projects that:

Project examples


April 6, 2022

Lean Canvas Ideas


April 23, 2022

Research: Game design/development as a tool for teaching programming.


Feb 20, 2022

Goal: Research - Syntax highlighting for specific lines in blog posts, lesson plans and slides.


Feb 6, 2022


Feb 5, 2022

Goal: Build a list of Achievement rubrics based on the Outcomes, not the requirements of the assessment.


Feb 3, 2022


Feb 1, 2022

Rubrics


Jan 26, 2022


Jan 15, 2022

Keeping a learning journal (but for code)

Dated journal entries

Quantifying some objectives and criteria for a Coding Journal

Content breakdowns

Not sure if this fits under a coding journal? It definitely doesn’t have to be a dated entry. Might be better off as an assignment or achievement (cleric badge?).

A breakdown is a summary/synopsis of a single article, video, podcast, etc: