This post is a work in progress where I will collect pedagogical tips about teaching Computer Science distilled from my 15+ years’ teaching experience. They are phrased as advice to teachers, but apply equally well to learners.
Computer Science Pedagogy Tips
-
-
Don’t teach two new topics at the same time when they are similar to each other. It will often make learning each one much harder as details of each will be conflated in the mind of learner.
-
Use visualization tools wherever possible.
-
Bottom-up is usually better then top-down for learners (concrete vs abstract).
-
Writing code is the best way for students to learn to write code.
-
-
Teach about basic testing early on.
-
Keep it practical wherever possible – e.g. when learning SQL, have students execute SQL statements on a real database.
-
Whiteboards are a great tool for exploring algorithms.
-
Don’t downplay the importance of Mathematics in learning Computer Science.
-
If it can’t be tested, don’t teach it.
-
Consistency is key.
When learning something new, we are training our minds to recognise new pattern and apply new procedures. If there is a lack of consistency in the way a subject is presented, this becomes much more difficult. Later on, when some competence and experience have been gained, it will be easier to see how different notations, or different approaches to a problem, for example, are in fact variations of a common principle or situation, but it is unhelpful to expose students to this kind of inconsistency until their understanding is quite solid. One great way to ensure consistency when it comes to programming is to use an established coding style, such as PEP 8 for Python.
Bottom-up is Better than Top-down
I love this logic, from a book on Bayes’ Rule:
“Lecturers (and authors) like to teach using a top-down approach, so they usually begin with abstract general principles, and then move on to more concrete examples. In contrast, students usually like to learn using a bottom-up approach, so they like to begin with examples, from which abstract general principles can then be derived. As this book is not designed to teach lecturers or authors, it has been written using a bottom-up approach.”
Pretty important in CS teaching, IMO.
The Importance of Positive Attitude towards Failure
There will be times when you can’t fully understand every aspect of the topic you are studying. It is important in this situation to remain open and do your best the absorb the part you can understand, trusting that fuller understanding will come in time. There is often a spiral aspect to learning a new topic. This means that it may take several passes around the “circle” of the topic before it is fully grasped, with each pass providing more clarity and understanding. Insisting on full understanding before progressing can be a serious hinderance, although full understanding is a worthy ultimate goal.
Sometimes you need to back off
There is a point of diminishing returns when learning material which is significantly outside of a student’s current ability. It is certainly worth spending some time and effort attempting to master new material, but if further study just leads to more confusion, it is often better to take a break and go back to more basic material. By consolidating the more basic material and extending it a little in the direction of the new material, the student will have a better chance next time they try.