Tips for Growing as a Computer Science Educator

Note: I wrote these tips in 2018 for the graduate teaching assistants in COS 226. However, these tips are general enough to be useful for anyone willing to grow as a CS educator.


Get into the right mind frame

Multiple studies found that CS educators rely mostly on intuition and anecdotal evidence to make decisions about changes in their daily teaching practice" and "do not believe that results from educational studies are credible reasons to try out teaching practices". This lack of reliance on research evidence allows myths and urban legends about learning and teaching to spread.

The first step is to acknowledge mindfully that teaching is not only a skill that requires practice, but also a science that requires learning. Never underestimate how easy it is to fall into folk pedagogy. This article by Raymond Lister is an excellent read to help you get into the right mind frame towards being a computer science educator that uses research to improve their teaching.

Peter Kugel's article on how professors develop as educators is also great light-weight read to begin with. It can help you become self-concious of where you stand as an educator based on what you focus on most in your teaching.


Learn about teaching and learning in general

Regardless of whether you teach computer science or any other field, there are common things about teaching and student learning that are helpful to know. Start getting acquainted with theories like:

Start also getting acquainted with different Active Learning methods and recognizing differences between terms like Cooperative vs Collaborative Learning, Problem-Based vs Project-Based Learning, Situated Learning vs Cognitive Apprenticeship, etc.

It is also useful to learn about theories for how learners are motivated and about the interplay between these theories and teaching methods like Gamification. Examples of motivation theories include: Value Attribution Theory, Value-Expectancy Theory and Self-Determination Theory.

There are countless books that are good introductions on learning and teaching. Here are two examples:

  • National Research Council, 2000. How people learn: Brain, mind, experience, and school: Expanded edition. National Academies Press.

  • Ambrose, S.A., Bridges, M.W., DiPietro, M., Lovett, M.C. and Norman, M.K., 2010. How learning works: Seven research-based principles for smart teaching. John Wiley & Sons.

Beside learning and teaching, it is also good to know about assessment and curriculum design related concepts like formative vs. summative assessment, criterion-referenced vs. norm-referenced assessment, Outcome-based Education and Bloom’s Taxonomy.


Learn about teaching CS in particular

To be an effective teacher, you need to know your subject matter very well and also know about how students learn and how teaching should be done. However, these two dimensions alone are not enough. The third important dimension is the intersection between these two dimensions, which is referred to as Pedagogical Content Knowledge (PCK).

How are Constructivism, Situated Learning and Neo-Piagetian theories applicable to the teaching of programming? What common misconceptions do novice programmers have? How do novice programmers comprehend code? What is the best programming language to use in CS1? How do students understand recursion? Is ordering shuffled lines of code a good way to assess programming? Should students learn to write test cases before writing their code? How can source code plagiarism be defined in an educational context? These are examples of questions that are not tackled in the field of education nor in the field of computer science, but are tackled in the field of Computer Science Education.

The field of Computer Science Education is young compared to other discipline-based educational fields (like Physics Education, Math Education and Engineering Education). However, it has become a vibrant field with many interesting findings. The following are some introductory texts to get you started with computer science education and maneuver its vast literature:

  • Chapters I, II and III of Juha Sorva’s PhD thesis provide an excellent introduction to the learning and teaching of introductory programming.

  • Mark Guzdial’s Book is a great introduction to the research in computer science education on teaching programming for everyone (adults, children, majors, non-majors, etc.).

  • This article is a comprehensive review of the research on introductory programming from 2003 to 2017.

  • This book, edited by Sally Fincher and Anthony Robins is a comprehensive handbook of computing education research.

  • Pears et al. Compiled a list of potentially seminal papers in CS education as of 2007. Amy Ko’s CS Education Research FAQ page also has a list of suggested readings related to computer science education.

The following are also some readings that focus more on practical advise than surveying the literature:

  • Neil Brown and Greg Wilson provide in this article 10 tips for teaching programming. You can use the references to get acquainted with important evidence-based teaching techniques in computer science. Greg Wilson also authored an open source book that has practical advice on teaching programming.

  • Colleen Lewis and Tom McKlin lead a team that compiled an extensive list of computer science teaching tips in the csteacchingtips project.

  • This book has a comprehensive discussion of how to teach programming.

  • This website has a curated inventory of programming language misconceptions. Knowing such misconceptions and addressing them while teaching can make teaching more effective!


Stay up to date

Here are suggestions for staying up to date in the field of computing education:

Last modified: