There is a difference between programming and teaching. I have seen a lot of good programmers to be horrible teacher. In my opinion, this happens when people becomes delusional in thinking that teaching is just like writing programs — tell each and every step, in a logically perfect sequence. In reality, teaching is more than that. First of all, humans don’t need everything to be spelled out. In fact, that is detrimental to teaching (I’ll explain why later). Humans just need broad thick strokes here and there. They are good in connecting the strokes and building perfect picture themselves. In my opinion, the most important objective of teaching should be to generate motivation; not to spell out every detail.

## Rule Number 1: Motivation First!!

The hallmark of poor teaching style is to jump into a topic without motivating it first. I’m not an expert on human psychology, but one thing I am pretty sure. As humans, we always try to “connect the dots”. If we start learning a new idea, we must connect it with something that we already know. Many teachers don’t help us to do it. They start teaching the special theory of relativity without talking about the double-slit experiment, or, talks about the theories of machine learning without talking about why machines should even learn. I promise you, I really know the pain that students go through when the teachers do it. I faced it in almost every course in my undergrad university.

I know that often it is a big problem for you (as a teacher) to tie a long thread of motivation in front of the topic that you are going to teach. But, hey, that is *your* problem as a teacher. You can’t blame the students if they don’t get it or don’t become interested to get it. In my experience, almost ALL the knowledgeable teachers I saw in Bangladesh suffer from the problem of not motivating enough. It is not true that they don’t know the importance of motivation. The problem is, they don’t know *how* to motivate.

The most useful technique (in my experience) for motivating a student is to connect the topic of focus with something that the student already knows. Now, different students know different areas in different levels. So it is the best to connect the topic with some mass common knowledge. However, that is not always feasible. In that case, connect it with many different areas. For example, when teaching machine learning, show how the computer’s ability to learn from the data can help finding out new medicine; how it can identify your problems in public speaking or dancing; how it is not possible to program a self-driving car without the ability to learn from experiences. In most cases, giving solid examples to connect topics with a person’s real life makes them motivated. I have used this technique successfully in many different cases.

## Deductive vs Inductive Teaching Style

I don’t know if they are correct terminology or not (deductive/inductive) but I am trying to use this to infer resemblance with deductive and inductive logic. According to my definition, deductive teaching style is to teach the most generalized theory first, then gradually coming down to more specific facts and real-life examples. It is like, teaching the formula $latex (a+b)^2 = a^2 + 2ab + b^2$ first, then teaching how two numbers say $latex a=2 $ and $latex b=5 $ follows the formula. It is like deductive methods of logical proofs. On the other hand, inductive teaching style is to show small examples and then gradually point towards the pattern that all of the examples show and then finally revealing the generalized theory. For example, before showing the algebraic formula, the teacher can show a few examples with numbers followed by an illustration of how this should always be the case, then finally revealing the formula.

Both inductive and deductive teaching styles are important and have their own niches. However, I’ve seen computer scientists and mathematicians who try to shove deductive teaching style in all possible teaching scenarios. Maybe they are so mesmerized by the beauty of a unified general theory, that they forgot to consider the student’s need and the capacity of learning. For example, I’ve seen people who don’t want to teach Hidden Markov Models until they finish teaching the whole topic of Probabilistic Graphical Models. Once they finish teaching PGM, they are more interested to show how HMM is an instance of PGM and then uses theories of PGM to solve describing equations of HMM. I’ve heard instances where machine learning teachers are interested to teach the “Theories of Machine Learning” (e.g. PAC learning) first and then teach the classifiers, regressors etc. A more common instance can be found when we analyze people teaching algorithms. Many people don’t want to give an example before describing an algorithm. They will describe an algorithm first. Then use an example while following the steps of the algorithm. Typically this style is harder for students to grasp. Because at the beginning, the students’ idea about the outline of the algorithm is very vague. They are not clear what the algorithm is trying to do. They are not sure what are the typical traps to watch out for while designing the algorithm. As a result, if the algorithm uses some trick to tackle over a specific genre of errors, the students are totally at loss. However, when the same algorithm is described with examples first with stumbling upon a few typical problem cases, the students usually understand better.

I don’t know exactly why inductive teaching is a good fit for this case, but I can speculate some causes. I think, seeing an example first, gives the students a hands-on experience to the problem first. They automatically start to gather many facts and ideas about the problem. After that, going for the generalized theory enables them to connect their own facts and ideas into the theory. Probably brain develops some of the neural connections beforehand while seeing the examples. Seeing the theory just augments over those existing neural connections in order to understand the complete picture. On the other hand, in deductive teaching style, the brain needs to build the neural connections for all the possible cases (including the atypical edge cases) at once. This might be cognitively difficult (building higher number of neural connection should require higher energy). In addition, there might be a motivational cause too. In inductive teaching style, the students automatically go for finding out the generalized theory while seeing the examples. When the theory is presented in front of them, it is already partially known to them. This follows rule number 1 and makes them motivated by connecting the unknown with something they already know about.

## Outlining and Emphasis

I’ve seen many teachers who don’t know where to emphasize more and where less. They give equal emphasis everywhere:

In my opinion proofs shouldn’t be shown in class unless they contain exceptionally novel ideas

- Why spoon-feeding everything is detrimental? (Cognitive load, forgetting factor, motivation and Exercise)

## Chalk-talk vs PowerPoint

-color of marker, handwriting, size and opaque body problem vs confined space problem

## Teaching is Like Public Speaking (or a Movie)

All the rules of public speaking apply: reignition of attention with regular interval, interaction, put the medicine in peanut butter

[Incomplete]