Category Archives: Teaching

My teaching statement 2024-25

CURRICULUM, DELIVERY, ASSESSMENT

I have a long history of interest in new developments in delivery and assessment. As a PhD student I was involved in “calculus reform”, co-developing interactive computer algebra system (Mathematica) notebooks for student assignments. At the University of Auckland I was a member of the Academic Committee involved in formalizing learning outcomes and overall curriculum for the algorithms courses. I have developed lecture notes and syllabus from scratch for several courses. I taught sections of about 50 lecture courses at University of Auckland since 2002. At UMass (Math & Stat) since Fall 2019 I taught Mathematical Writing (4 times), Mathematical Modeling, and a graduate math course, designing my offerings from the ground up. In that department, class sections are all around 30 students, but at Auckland I frequently dealt with 300 students in one lecture. I prefer the smaller classes, but developed a lot of skill in dealing with the larger ones. Since switching to CS at UMass, I have twice taught a large sophomore probability course for CS majors, taught discrete math for non-majors, and am currently teaching an upper-level combinatorics course.

Video lectures. In 2018-19 I planned, performed and edited over 20 video lectures for an algorithms and data structures course (see https://www.youtube.com/c/MarkCWilson). I used them as part of a flipped classroom approach when teaching in the first half of 2019. Student responses showed that the lectures were popular (but my plan of replacing traditional lectures with them was less popular – students seem to see them as a useful extra especially for revision). They have received over 42000 views so far and are being used by people worldwide.

Undergraduate research. While in Auckland I supervised honors projects and summer research projects by 8 UoA students, along with REU-style projects by visiting undergraduates from Union College and IIT Kharagpur. This was not usual in the traditional research university department at UoA. I have since supervised two REU projects at UMass. Three of my summer students have gone on to complete a PhD in computer science or mathematics (Oxford, Queensland, Auckland) and four projects led directly to CS conference papers. The other students are all working in software-related industries. A main reason for the diversification of research interests over my career has been to find topics that are more accessible to students. In 2024-25 I am supervising 4 undergraduate minority students in CS through the ERSP.

Textbook. With M. Dinneen and G. Gimelfarb, I wrote in 2004 the 260-page textbook for COMPSCI220 at UoA (subsequently used also as a supplementary reference for several other COMPSCI and SOFTENG courses), “Introduction to Algorithms, Data Structures and Formal Languages” (Pearson NZ, ISBN 1-877258-79-2). Specifically, I chose the publisher and conducted all negotiations; organized the writing overall and edited and wrote two of the three main sections; contributed equally to the second, substantially revised, edition published in 2009; negotiated the reversion of rights from the publisher, so we could produce a free e-book version from 2013; maintained an online up-to-date list of errata and gave students incentives to report new errors.

Assessment. After much reflection on consistency of marking and grading, in 2007 I introduced multiple choice assessment for several courses, and this included overseeing development of multiple choice examination preparation software (written by then PhD-student Christof Lutteroth) which was used by at least 5 departmental colleagues. This frees time to allow teaching staff to concentrate on developing a high-quality question bank focused on learning objectives. I updated my own question bank every semester and shared it with UoA colleagues.
Automarker. With M.Dinneen I oversaw development from scratch of the “automarker” submission/feedback/marking system for programming assignments. In this major ongoing project, I played a major role in supervising the hired programmers, discussing required features; successfully applied with colleagues for two local Teaching Improvement Grants to develop the system; assisted several staff members to use the system, and was the main conduit for user feedback from faculty.
We gradually developed the system into a much more user-friendly and robust piece of software, which has been used in at least 6 courses so far, by at least 8 lecturing colleagues. We surveyed students on their user experience. The system gives feedback on common deficiencies, such as compiler errors, runtime errors, and resource inefficiency, allows students to refine their program by repeated submission, and can also be used for grading. It allows for personalized feedback and also whole-class competition via scoreboards, giving students a taste of the environment of a programming competition. The project started in 2008 and improvements are still being made, although I am no longer associated with it.

TEACHING PHILOSOPHY

The diversification of student motivations, backgrounds, and abilities that has taken place in the last few decades makes university teaching ever more challenging. Despite this, my key goals in teaching have not changed much since I began to teach. I see my role mainly as a coach, guiding and motivating students to carry out research themselves, and to set their own goals for performance. I believe in using technology and educational research to make teaching more efficient and effective. Below I expand on my main goals.

Help develop a research attitude in all students

Everything that is now smoothly presented in textbooks was at some time in the past newly discovered and exciting, at the forefront of research. In order to assimilate a concept, students must follow much the same process of discovery that previous researchers have done (albeit accelerated and shorn of most of the dead ends and false starts). Thus it is an obvious goal to develop the “research attitude” in students.

I aim to assist students in posing their own questions and answering them as far as practical. Of course, in lower level courses I will usually know the answer, but I see no great dividing line between beginners and professional researchers. There should be a difference in knowledge but not much of a difference in the basic methods. Practice at analysing complex problems, thinking logically and systematically, generating and testing hypotheses, and communicating one’s findings clearly to one’s peers are very useful for all students no matter what their future goals.

Unfortunately it is easy to slip into the habit of teaching (and learning) by lazily appealing to authority and memorization rather than adopting the correct attitude. The process of acquiring new knowledge is not smooth, as we all know, but too often new ideas are presented to students in a way that makes them appear soporifically inevitable. A quotation from Paul Halmos expresses how I want students to learn (and how I want to teach), and what I hope that they will themselves want after taking my class:

Don’t just read it; fight it! Ask your own questions, look for your own examples, discover your own proofs. Is the hypothesis necessary? Is the converse true? What happens in the classical special case? What about the degenerate cases? Where does the proof use the hypothesis?

As far as practical teaching goes, I don’t go as far as running a class completely along Socratic lines – this has been tried by some but seems to be practical only for very small classes of very strong students. I do try to include in all assignments some element of discovery, where the answer to the question is not clear and there are many ways to approach it. I try in lectures to ask a lot of questions, and restrain myself from answering them too quickly (this is one of my hardest jobs as a lecturer).

Create a safe learning environment for all students

In the last few years, issues such as micro-aggressions and more overt discrimination have become increasingly recognized. I joined a discussion group at UMass on antiracist teaching practices, and am trying to learn more about the kinds of barriers to learning that someone with my background has not faced, but which do affect a substantial number of students. I aim for a relaxed classroom atmosphere. I use flexible grading practices that allow students to present their best “k out of n” assessments for the final grade. This reduces unhealthy anxiety over grades and students know they do not need to worry about missing an assignment owing to illness, for example. I aim to create a classroom space and community where all students participate. To model for students the fact that everyone makes mistakes and the aim is to learn from them, I intend to try live coding and other forms of presentation where I need to work out answers on the fly.

Provide opportunities for the best students to excel

Healthy competition is a powerful motivating force in learning, as I can attest from personal experience. The most able students naturally seek each other out in any class, and usually enjoy a friendly rivalry. It is my job to ensure that these instincts are expressed in a positive way. Students who delight in learning (and showing off their knowledge) make teaching really worthwhile for me — without them, I would do a competent job, but without any passion. I try to allow for a component in all assignments, tests, and even lectures in which the most able students can show what they can do. For example in CS courses involving programming I have often asked students to write a program to solve a particular problem – bonuses are achieved by beating the performance of my own answer to the question (which happens surprisingly often).

Ensure that every student achieves something worthwhile in the class

Motivations and abilities of students vary widely. Some students have a distinct lack of intensity in the way they approach their study, and some have poor study skills and inefficient learning styles (I certainly do not believe that all learning styles are equally valid in every course).

I aim to challenge them very early in the course to clarify their thinking about their learning as related to the course. This includes their performance goals, learning objectives and styles, and misconceptions of the subject material. I aim still to convince these less excited students of the benefits of working in research mode. But in any case, I want every student to learn at least one thing well, rather than have a confused mass of knowledge on a variety of disconnected topics. I try to get them to clarify what their learning goals actually are in the course and then achieve to the best of their ability.

Teaching theoretical/mathematical courses as I mostly have in my career so far poses some challenges. To quote Claude Chevalley, “mathematics is to some extent an exercise in rectitude of thought, of which it would be futile to disguise the austerity”. It is the instructor’s job to soften the “austerity” as much as possible. I try to communicate my enjoyment of the subject to the students, while maintaining good humour and not trivializing the difficulties they face.

In practical teaching terms, this means using simple but key motivating examples, being available for discussion (I often have an open door policy for office hours), balancing the competitive and nurturing impulses of me and my students, and trying very hard to practice what I preach at all times. All assignments, tests and exams have some routine, confidence-building component. I have worked hard on aligning my assessment more clearly to the learning objectives of the course, and on ensuring a good range of difficulty in questions. Depending on resources, I am considering trialing some sort of course delivery and assessment that encourages students to set their own goals, and take more responsibility for their own learning. My own experience as a student with a “Keller plan” course was positive.

Use technology and educational research to teach more efficiently and effectively

I have always been interested in using advances in technology or educational research to approach as closely as possible the ideal of personalized instruction by an experienced tutor for every student. Resource constraints have made this very difficult in the past. In recent years such ideas as clickers, flipped classrooms, and student peer review have been widely discussed. I have followed this discussion with interest but without being fully convinced, although I have tried a flipped classroom approach. I have still mostly concentrated on modelling good technique and habits of thought, communicated via traditional lectures supplemented by high quality lecture notes. I was an enthusiastic adopter of the PeerWise (developed at UoA and now used worldwide) multiple choice question system as a tool for student learning.

Formal listing of learning objectives and designing assessments that reflect these objectives (constructive alignment) can make a large improvement in many courses. I have been trying to upskill as a teacher by learning about this and intend to continue this process. I attend teaching-related local workshops every year.

Introductory lectures on analysis of algorithms

After teaching a basic course on data structures and algorithms many times, I grew weary of saying the same things each semester, yet never quite saying them right. So I spent (too) many hours in the studio and editing on my laptop, to produce some short (mostly 15-25 minute) video lectures, available on my Youtube channel. They are posted under a CC-BY licence, so feel free to use them but give me appropriate credit. Feedback from students using them the last time I taught the material (where I tried with mixed success to replace traditional lectures with more active learning) was clearly positive.

Coincidences

Although we know that the probability of an unspecified “unexpected” event is rather high, given how many possible events can occur, it is still interesting to note them. There is probably an evolutionary reason why probability is so unintuitive to us. Perhaps being curious about coincidences had substantial survival value in the past.

Here are two that have occurred to me recently.

1) Just over a week ago I wandered into the Mechanics Institute Chess Club (apparently the oldest in the US) in downtown San Francisco.There were just a few players sitting around casually on a Sunday afternoon, with no events scheduled. Then in walked someone I haven’t had any contact with for 25 years, whom I knew from playing against in the schools tournaments in Christchurch and at the Canterbury Chess Club, who later became NZ champion. Now that is a coincidence – he works for Google in Sydney and was in SF for a conference. Neither of us has played competitively for many times longer than our competitive chess career lasted. Playing a few games with the newfangled clock (3 minutes per player, plus 2 second increment per move) was a fun way to spend an hour.

2) This is close enough to true, and doesn’t change the essential mathematics. I know someone who has been married twice, each time to someone with the same birthday. How likely is that? This is different from the famous “birthday problem”. Suppose that everything is uniformly randomly chosen, and I have $latex k$ acquaintances who are in a position to marry and whom I know well enough that I would hear about such a coincidence. Let $latex n$ be the number of days in a year. The probability that one of these acquaintances fails to have such a coincidence is $latex 1-1/n$, so the probability that some succeeds is $latex 1 – (1-1/n)^k$. Let $latex c$ be a number between $latex 0$ and $latex 1$ that represents our threshold for incredulity – if an event has probability less than $latex c$, I will be surprised to see it, and otherwise not. Thus we should be surprised if $latex (1-1/n)^k > 1-c$. Reasonable values for $latex n,k,c$ are $latex 365, 100, 0.01$, but since $latex (364/365)^{100} = 0.76$, we should not be surprised. Analytically, the inequality $latex (1-1/n)^k > 1 – c$ can be approximately solved via making the approximation $latex (1-1/n)^k = exp(k log(1-1/n) approx exp(-k/n) approx 1 – k/n$. Thus I expect to need $latex k < cn$ in order to be surprised: the number of acquaintances should scale linearly with $latex n$, which clearly doesn’t have to measure days. So if I only care about which month the person is born in, I will never be surprised, but if I care about the hour and have fewer than about 80 acquaintances, very likely I will be surprised. The original case of a day shows that if I have more than 4 acquaintances, I should not be surprised.

Suppose everyone in the world is my acquaintance. How precise could we be about the birthday without being surprised? Now $latex k$ is of the order of 5 billion, so with the same value of $latex c$, $latex n$ should be about 500 billion. That means we can slice up a year into milliseconds and such a coincidence event would not be at all strange.

Binary search rules!

This afternoon I visited a branch library with my sons and checked out a large number of books for them, using the self-checkout. On leaving, we set off the alarm, because at least one book had not been correctly scanned. A librarian seized the pile of books, and proceeded to determine the offending book by binary search using the alarm (his algorithm may not have worked completely if more than one book was unscanned, so he performed a final check on the original pile, after scanning the one he found). His colleague was amazed and said that everyone else uses (in effect) sequential search of the receipt, checking it with the books in hand. I was amazed that someone this clever was working as a librarian, and that I had finally found a real-life application of an algorithm – I try to give many such examples when teaching algorithms courses, but they always have a slightly contrived feel to them.

Big O(micron) and Big Omega and Big Theta

Teaching an algorithms course recently, I realized that the correct use of these asymptotic notations is apparently rather difficult for students to grasp. In fact, I have some colleagues whose understanding of these concepts is not maximally clear.

In 1976 Donald Knuth published an article explaining these notations in detail and recommending their use. After 35 years and plenty of evidence that it works well, we still have resistance. Perhaps one reason is that the idea of “asymptotically equivalent to”, or “of the exact order of”  is formalized by the symbol Theta, while O is a simpler and more familiar symbol that evokes the word “order”. The most common misuse I have seen is exactly this use of O when Theta is meant. The principle that the most important and useful concepts should have the simplest notation implies that O would be better for computer science use. However, that would make it inconsistent with mathematical use where big-O is definitely used for upper bounds only.

The main mistake seen (also mentioned by Knuth) apart from the perhaps excusable one above is not excusable: it is the use of O to discuss lower bounds as in the example: “Algorithm A is better than Algorithm B because A is known to  run in time O(n log n) and B in time O(n^2)”. If O is replaced by Theta, then this might make sense, but the literature is full of algorithms whose O-bounds are not asymptotically tight – how do we know B doesn’t run in time O(n) also? Again, if you think that O means Theta, this mistake is an easy one to make.

Scientific teaching

Last week I attended a talk by Carl Wieman about the approach to teaching science (at university level) that his eponymous Science Education Initiative promotes. Briefly, he advocates paying serious attention to the research literature on how students actually learn, which seems rather obvious but apparently is rarely done. Some of the statistics he gave were quite depressing: student recall of basic concepts as measured by standard tests is about 30% for traditional lecture courses, and students’ way of thinking is usually more novice-like after taking such courses than before. He advocates using “clickers” to allow instant anonymous feedback in lectures, and structuring lectures around key nonobvious questions to encourage student discussion.

I found it pretty compelling and hope to see it tried out in my own department soon.

Algorithm song contest!

The NZIMA programme in Algorithmics is sponsoring a competition to produce a song on the topic of algorithms. There is a well-known parody of Billy Joel’s “For the Longest Time”, but this is 20 years old, and we are sure that New Zealand can produce something of comparable, if not higher, standard.

Rules: entry is open to anyone resident in New Zealand. The song must be to the tune of Billy Joel’s “We Didn’t Start the Fire”. It may be submitted either as lyrics or audio file (or both). The best entry by a secondary or tertiary student will receive $200 of textbooks of the winner’s choice. Desirable features of an entry include correct scansion and real content about the subject of algorithms. The deadline for entries is 28 February 2009.

UPDATE: deadline extended to 31 May 2009.

Popularizing (T)CS

The downturn in CS enrolments in universities this millennium has elicited several responses. In the theoretical CS community, there seems to be a strong feeling that many of the students we had were here for the wrong reasons, namely the internet bubble and associated overoptimism about job prospects (ironically, job prospects now are great for our graduates, but we are still (at Auckland) seeing a decline in enrolment).

The idea is that CS has a public relations problem compared to areas like biology and physics – it has been presented far too vocationally, and the big ideas have not been communicated in the way that they have in those fields. It frustrates me, for example, that the general education CS course in my department deals with very few big ideas, and a lot of “how to write XHTML” stuff. Of course, even many “computer scientists” think of CS as part of engineering, not science. Unlike E.W. Dijkstra, they apparently think that computer science is about computers, whereas the rest of us think that it is about information and computation, with computers being both tools to study these fundamental concepts and technological fruits of that study. Most of my immediate colleagues work in pretty applied areas as far as I can work out, with not much to excite a really good student, no matter how worthy the application.

Michael Mitzenmacher has a project to write a popular book aimed at inspiring high school students about theoretical CS. The CS Unplugged materials already address a younger audience. The latter was developed substantially in New Zealand, but seems relatively unknown here. In this country theoretical CS is relatively weak compared to both applied CS and mathematics, and public understanding of the issues above is probably even less than in the USA.

I would love to contribute more to spreading better information locally about the intellectual side of CS. Anyone in NZ reading this who wants to help should contact me, or better still, tell me about their great ideas that I can help with.

Why (some) mathematics is hard

Here’s an interesting article by Jim Holt in the New Yorker about the work of Stanislas Dehaene on the number sense in humans. From studying accident victims, children, Amazon tribes, etc, he concludes:

… we are all born with an evolutionarily ancient mathematical instinct. To become numerate, children must capitalize on this instinct, but they must also unlearn certain tendencies that were helpful to our primate ancestors but that clash with skills needed today. And some societies are evidently better than others at getting kids to do this.

When it comes to mathematics education, what he says is both standard:

“Give a calculator to a five-year-old, and you will teach him how to make friends with numbers instead of despising them,” he has written. By removing the need to spend hundreds of hours memorizing boring procedures, he says, calculators can free children to concentrate on the meaning of these procedures, which is neglected under the educational status quo.

and nonstandard (as far as I know, these days):

“The idea that all children are different, and that they need to discover things their own way—I don’t buy it at all,” he said. “I believe there is one brain organization. We see it in babies, we see it in adults. Basically, with a few variations, we’re all travelling on the same road.” He admires the mathematics curricula of Asian countries like China and Japan, which provide children with a highly structured experience, anticipating the kind of responses they make at each stage and presenting them with challenges designed to minimize the number of errors.

A very interesting fact is that the encoding of numbers in languages does seem to affect  efficiency of arithmetic operations. Chinese has more regular number names, and they are shorter, than say English or French, and this is reflected in the arithmetic performance of native speakers of these languages.