# data[].attributes.body
Programming is a practical skill.

# data[].attributes.body
Encourages students to keep going.

# data[].attributes.body
Sense of creating some fun things

# data[].attributes.body
Worked examples
Variety (some "cool" factor)

# data[].attributes.body
Need to see something happening
Colour
Making loads more stuff

# data[].attributes.body
Students don't feel like they are on their own. The feedback itself is detailed enough to help the students. Students are actively listening.

# data[].attributes.headline
Good to work on real-life where possible

# data[].attributes.subject
Good to work on real-life where possible

# data[].attributes.body
Convoluted vs simpler problems

# data[].attributes.body
Start talking

# data[].attributes.body
Supposed to prepare beforehand (e.g. watch a video)
Discuss
(Good examples on the web e.g. google depth-first search)

# data[].attributes.body
Learning from each other. Leverage complementary skills and knowledge levels. Students are speaking their own language, understand each other weaknesses and more comfortable sharing them

# data[].attributes.body
picking a theme or topic or issue

# data[].attributes.headline
Structure to allow the good ones to move ahead

# data[].attributes.subject
Structure to allow the good ones to move ahead

# data[].attributes.body
It takes different amounts of time for people to "get it".
Don't let the ones who have moved ahead get stuck.
Option to recycle them back for peer-support and shared learning

# data[].attributes.body
Students need to practice
It is a skill, not something to memorise

# data[].attributes.body
Motivated by a sense of achievement; builds confidence

# data[].attributes.headline
Incremental Difficulty for Lab Exercises

# data[].attributes.subject
Incremental Difficulty for Lab Exercises

# data[].attributes.body
Tasks gradually increase in difficulty because weaker students don't feel completely demoralised at the start of the lab

# data[].attributes.body
Visual or audio feedback
Code is abstract - some don't get it

# data[].attributes.headline
Start with basic approaches and then reinforce the "mantra"

# data[].attributes.subject
Start with basic approaches and then reinforce the "mantra"

# data[].attributes.body
Break down the problem
Incremental design

# data[].attributes.headline
Reminder of Achievements over course of semester

# data[].attributes.subject
Reminder of Achievements over course of semester

# data[].attributes.body
Building confidence

# data[].attributes.body
Programming is like ...
cooking; babysitting a toddler; driving a car

# data[].attributes.body
Start small then build it up
Keep showing progress
Small things make a "big" "important" programme

# data[].attributes.body
Ctrl-A Delete
How to read error messages
How to use google?

# data[].attributes.body
Students see the lecturers tackling problem

# data[].attributes.body
Students checking their progress against peers using Einstein graphs. Perhaps more useful for good students?

# data[].attributes.body
Make a change and see the result
See the correspondence between code and an action

# data[].attributes.body
Programming is a process, there is more than one solution (students don't realise that)

# data[].attributes.body
Ability to show stuff to someone else
Perhaps need to get to a certain level

# data[].attributes.body
Hour-long lectures with one-way flow of information doesn't address the need for practise. Boring for students.

# data[].attributes.headline
Suggest quality external resources and encourage their use if necessary

# data[].attributes.subject
Suggest quality external resources and encourage their use if necessary

# data[].attributes.body
Linda, Kahn academy
Udemy
Think like a CS
Cracking the coding interview
(but use is then up to them!)
Particularly good where students don't have prerequisite knowledge

# data[].attributes.body
Get as many people as possible into that group
Encourage them

# data[].attributes.body
This code works but ...

# data[].attributes.body
Sometimes it doesn't work, but sometimes they have fun

# data[].attributes.body
Could leave the lab when finished

# data[].attributes.body
Students assume they understand

# data[].attributes.body
Programming can be too abstract, need to see practical stuff

# data[].attributes.body
Students find it too easy to find solutions online

# data[].attributes.body
Bad examples

# data[].attributes.body
Whiteboarding
What is the problem?
Talk through the process before typing
"Parsons problem" - given lines then reorder to make working code

# data[].attributes.body
Too much talking ...

# data[].attributes.body
Failing exams/assessment
Uninspired - quit computing or never come here
Become poor coders

# data[].attributes.body
Discuss different approaches how to do an assignment

# data[].attributes.body
Students think that they don't need to go to an lecture as the notes are available online - what's the solution?

# data[].attributes.body
Force students to rush can cause poor programming (1 letter variable names)
Sometimes this is useful! (AIPO)

# data[].attributes.body
Too easy to pick the wrong student, undermine confidence, etc.

# data[].attributes.body
Will answer questions when others don't; set the tone

# data[].attributes.headline
Focusing too much on syntax and programme specific details

# data[].attributes.subject
Focusing too much on syntax and programme specific details

# data[].attributes.body
More important to understand algorithm

# data[].attributes.body
Mark solutions in labs

# data[].attributes.body
... always encourage the studentss

# data[].attributes.body
Students don't turn up or are late.

# data[].attributes.body
For example, talking about an algorithm's complexity without providing a run-time example

# data[].attributes.body
Lectures that no one goes to
Plagiarism in labs
Logistics (big classes)

# data[].attributes.headline
Discussion around how to exam/assess ...

# data[].attributes.subject
Discussion around how to exam/assess ...

# data[].attributes.body
Write code to generate the error message

# data[].attributes.body
Adapt questions for each student

# data[].attributes.body
How to do this with a large group

# data[].attributes.headline
Better (ie. more efficient) ways to give automatic feedback

# data[].attributes.subject
Better (ie. more efficient) ways to give automatic feedback

# data[].attributes.body
(actually I should just be looking to use einstein!)

# data[].attributes.body
Teaching assistant/lab manager paid to carry out offline administration/preparation

# data[].attributes.body
End/start of every academic year

# data[].attributes.body
New google platform that hosts Jupyter notebooks
colab.research.google.com

# data[].attributes.body
There's lots of good ideas.
Both formal and informal
(but no-one has much time!)
Maybe a shared school padlet to put links to interesting tools or resources?

# data[].attributes.body
Hard to find sometimes

# data[].attributes.headline
More automation and individualised feedback

# data[].attributes.subject
More automation and individualised feedback

# data[].attributes.body
Particularly for large classes

# data[].attributes.body
Get them to run it locally

# data[].attributes.body
40% is really low , aim for 80%
Time based
Submit, feedback, resubmit