Tag Archives: teaching

Graduate Teaching on Diversity: Week 1

I had the second class for our pilot graduate diversity & ethics class; I discussed the first class last week. I asked the students to read Leaning In: A Student’s Guide to Engaging Constructively with Social Justice Content and to review the meaning of 16 words that we can use to talk about diversity, discrimination and oppression.  Since these words are new to most students (I think) and even just their meanings can be difficult to internalize, we did an exercise that I picked up in our faculty difference, power and discrimination seminar.  Students were each assigned one word and wrote down a definition.  Students then paired up and had 3 minutes to describe their definitions to each other. Now each student had 2 definitions.  They paired up again and had 5 minutes to describe their 4 definitions to each other.  They paired up a final time describe their 8 (or so) definitions.  We then had an open discussion about some of the more challenging definitions (if I remember: institutional vs. structural discrimination, internalized oppression, hegemony).

identity-mapI then had the students draw an identity map and to explain I showed them mine (right), and of course admitted that this is by no means complete (two glaring omissions are religion and body-type).

My goal with all this is to have students realize the privilege they are granted based on their identity in addition to simply thinking about one’s own identity.

Between talking about the diversity terminology and talking about identity, discrimination and privilege, there was a fair amount of discussion and some resistance to admitting access to privilege as well as denial of discrimination based on other identities.  We talked a little bit about student resistance at the faculty DPD seminar, but I can’t say I was ready.

I remember the first classes I’ve taught.  I remember the times that I got stuck in a lecture or made a mistake or was unable to explain myself.  And Friday’s class wasn’t dissimilar.  However, I’m a trained theoretical computer scientist, so when teaching technical material I can draw on years of experience and know that I can probably do better next time; with this graduate diversity teaching, I don’t have nearly the training.  There is also a lot more emotion tied up with ideas of discrimination and privilege.  It is really difficult to see yourself as perpetuating systems of oppression.  It’s important to not feel blame, but I think it is important to recognize that we are all a part of these systems of oppression and we are all responsible for fighting against it.  I’m not sure I did a good job of explaining that on Friday,

So, I left class with a lot on my mind and woke up the next day with it still weighing heavily.  I only have 10 weeks/hours to discuss these ideas explicitly with these students and I can’t help but blame myself for not doing the best job possible.  Discussions this weekend with my partner, a colleague in Philosophy and (very welcome emails) with a student in the class have helped to digest this.  I have a lot to learn and I am ready to accept that the first run through of this class is not going to be perfect.

I just hope I have another opportunity to teach this in the future.

Graduate Teaching on Diversity: Week 0

The graduate school at OSU is considering adding a new learning outcome for all graduate students as a mechanism for reducing an observed rise in discrimination in our graduate program (based on surveys).  The desired learning outcome is based on the Difference, Power and Discrimination (DPD) program that has all our our undergraduates take a course that has a DPD designation.  The proposed graduate learning outcome (LO) is:

Recognize difference, power and discrimination within social systems and their influence on people of diverse backgrounds both inside and outside their discipline.

There are a dozen pilot programs across campus this year to experiment with methods of delivering a DPD curriculum to our graduate students.  I volunteered to pilot one in EECS and am doing so by way of a 1-credit (1 hr/wk) class devoted to this LO along with a “responsible conduct of research” LO (that is currently required by our graduate school).  I have around 40 students (~1/3 of our incoming MS, MEng, and PhD graduate students) and had my first class yesterday.  You can see the course webpage here (which is subject to change).

I was more nervous going into this class than most classes.  This is my first time teaching non-technical material and there are a lot of unknowns.  At what level should I try to engage the students?  Will our largely international group of students have a harder time with a discussion-based class?  Will the students want to engage in thinking about these questions?

To motivate the LO, I started with a short history of computer science with a few motivating questions.  I started with the black points (right) and talked a bit about the discrimination that Turing experienced due to his sexual orientation and asked: What advances would Turing have made if not for discrimination and his ultimate suicide?.  I pointed out that the history (in black) is stunted both by colonialism and patriarchy.  I added in the blue points, pointing out that computation devices existed before we had computers (abaci) and that positional number systems are requisite for computation.  We see that these contributions are non-Western and we can ask the question: What advances would Mayan mathematics have made had their civilization not been decimated by colonialism?.  Finally I added the red points acknowledging some contributions by women to computer science and asked: What research and development would we be pursuing if women were equally represented among computer scientists?

Thankfully, there were a few good questions after this introduction, which helped to make me less worried about teaching this class.  This intro was definitely CS biased; I hope to make it more inclusive to ECE for the future, since both CS and ECE students are in the class, but I will need some help with that.

I then did a ice-breaker of sorts (since these are incoming graduate students).  I asked the students to write down what they were afraid of as they start their new graduate program.  I collected the (anonymous) sheets of paper and shuffled them and handed them back out for each student to read one out aloud.  I was worried that folks would hesitate to be honest here, but very quickly, there were tears welling in my eyes as fears of being forgotten by their loved ones back home, loneliness, being able to express oneself in English, adjusting to US culture were voiced.  There was a lot of overlap between fears and I hope that hearing their peers’ fears will help the students feel less alone.

So that was week 0.  I hope to update as the quarter progresses and am happy for constructive feedback.  If you do so anonymously, please indicate if you are a student in the class or an outside observer.


Bringing current events into the technical classroom

I spent last summer thinking about how to bring something related to the climate crisis into my fall undergraduate algorithms class.  In this class, I have converged on having 4-5 projects covering iterative, divide and conquer, dynamic programming, linear programming and heuristics.  These projects each have a practical component where an algorithm is implemented.  Linear programming seemed to be the tool that I could use to “solve” some problem in climate change.  It wasn’t until I stumbled upon this article by Robert Vanderbei suggesting an upper-level class project wherein students fit a curve to daily temperature recordings.  The suggested curve is the superposition of

  • a sinusoidal curve with a period of one year to model the change in seasons,
  • a sinusoidal curve with a period of 10.7 years to model the solar cycle, and
  • a linear term representing any drift in mean daily temperatures.

I adapted the suggested project to my class and had them fit such a curve, using GLPK, to 60 years of daily temperature recordings for Corvallis.


I provided the students with the data and offered bonus credit for students who repeated the project for another location (downloading data from NOAA).  The students found the project challenging but seemed to appreciate the tangibility of the project, so I think I will likewise adapt other projects. The students could then interpret the coefficient of the linear term as the amount of warming in average daily temperatures.

A few interesting things came up.  For example, apparently two different versions of GLPK find two different “optimal” solutions to the same LP — with different values.  For more details, please see the project description.

Next year, I think I will have them choose their own location by default as I think it is a useful experience to clean data …

Undergraduate algorithms study guide

A year ago, I was just finishing putting together materials for the new online version of our undergraduate algorithms course.  I’ve finally compiled all that material into one webpage: available here. There are a few things not yet posted, but this is essentially the content of our undergraduate algorithms course less the assignments and exams. As when I teach the on-site course, I relied heavily on material from others, notably:

Though the “interactive questions” were written by me, they were not implemented by me.  I have to thank Oregon State University’s eCampus group for that.

Hopefully this will be helpful to others, though it assumes the particular prerequisites of our program …

Color blindness considerations

I once had a student in class ask about the colors I was using on the whiteboard because he was color blind.  Since then, I have tried to be good about what colors I use when teaching.  Yesterday I was considering a low-tech alternative to clickers for the classroom: color cards!  However, now I have this color problem again.  I am too lazy to write the color of the card on the color cards I give to the class.  Surreptitiously, my partner was working on a figure for a new paper and referring to the chart below.  It provides a handy guideline for what colors look like to the colorblind and allows you to pick a subset of contrasting colors.  For more information, see the original research by Okabe and Ito.

Classroom competition, TSP style

I changed up a few things in my undergraduate algorithms course this year.  I probably wouldn’t have if I wasn’t charged with designing an online version of the same course, one that would be static for at least three years, so far as I understand it.

One major thing that I changed was the assignment component.  This course has always (officially, by way of ABET-geared course learning objectives) included programming assignments.  Something that I abhored.  There was a post by Michael Mitzenmacher that changed my opinion (a bit) on this front. But mostly the thought that non-students would be looking closely at the various components of my course convinced me to take things a bit more seriously.

In previous iterations, I would completely separate “programming” assignments from “non-programming” assignments which is really terrible I know.  So this year I took a 180 and had 4 projects, each geared toward a major topic of the course with design, analysis and implementation/experimental analysis components.  Much better.  (Except for group unfairness woes as mentioned in my previous post.)

For the final project, I left things very open ended.  Design an algorithm to solve (2D Euclidean instances of) TSP.  In class, this allowed me to talk about verifiers (how else would I trust their solutions?), NP, give them a taste of a difficult problem, etc.  The assignment would culminate with a two-step competition. One to solve instances over a period of 24 hours and one to solve instances — live in class — in 4 minutes.  Before the assignment was even released I realized how competitive the students would get, requiring me (a.k.a. our amazing IT guy, Todd Shechter) to set up virtual machines for the competition to ensure fairness.  It was definitely convenient that DIMACS has a large set of instances available with optimal tour lengths listed.  Thank you, experimental algorithms community!

I have to say, I was impressed.  In a stroke of genius, I enforced a 2-page report limit so that I was actually able to easily discern their main techniques.  There were several equivalence classes of algorithms.  Two groups implemented Christofides’ algorithm, and, true to form, it got within 50% of optimal.  I tried hard to keep my impartiality in reading the reports on algorithms by biological metaphor and was pleased to see that my abhorrence played out in algorithms that didn’t do so well.  Several groups that did very well started with some sort of greedily generated tour and then made local changes that improved the tour.  I’d like to highlight the algorithm by Francis Vo and Soo Hyun Yoo, who were the only team to take advantage of the 2D Euclidean-ess of the problem and had an algorithm that outperformed all the others (almost all of the time), solved one of the 4-minute instances to optimality and added fuel to my “take advantage of the domain” banner I love to wave.  They started with a(n almost) convex hull of the points, iteratively added the remaining points to this tour greedily, and cleaned up with local search.  They even animated their algorithm to aid in design:

I will definitely make improvements (the in class competition was a little chaotic and not super interesting for the students who didn’t make into later rounds) but I enjoyed it and I think many of the students did.

Incentivizing healthy group dynamics in classes

I’ve just finished teaching our undergraduate algorithms course this quarter.  I changed the course quite a bit from previous iterations.  This was mostly because I have been designing an online version of the course for our online post-bacc degree (more on that in another post).  It gave me a chance to rethink many aspects of the course.  One was in how the project assignments were managed.

There were 4 projects.  Two were rather large and involved and the other two were still challenging, but not as time intensive.  The projects involved: designing, analyzing run times of, proving the correctness of, implementing and experimentally analyzing algorithms using the techniques we learn in class (divide and conquer, dynamic programming, etc.)  I had the students work in groups of 2-3.  Groups were formed in the first class with the only constraint that each group contain one person who self identifies as being better at theory than practice (based on grades in the discrete math and programming intro course sequences).  I did have feedback that the students were thankful the projects were done in groups as they were challenging.

Anyhow, after the first project I started getting feedback of the form “my team members didn’t do any work!”  Unfortunately, I didn’t really plan a mechanism for correcting for this.  The projects account for 40% of the final grade and looking at the current grades, not all the group ‘leaders’ are ahead based on test performance and not all group ‘slackers’ are behind (as I would have thought).  It’s too late to really do much for this quarter, but I would like to be prepared for next time.

I’ve kicked around some ideas:

  • Have the groups be randomly assigned and change them for each project.  At least then a given student would be unlikely to be always stuck with a slacker, but a slacker could still ride the coattails of the rotating groups.  I do this in my graduate class, but there the tests are worth much more and I don’t want to do that for an undergraduate class.  Also, the last project is the most difficult, and I would like groups to establish a good working pattern by then.
  • Take feedback from groups on who the ‘slackers’ are after the first project and take the ‘leaders’ of those groups and have them form new groups amongst themselves and take the ‘slackers’ and do the same.  I think with this the slackers would end up being forced to work or be penalized and the leaders would get a break.  It might get complicated though.  It would likely piss off some people.  Doing so only after the first project might not be sufficient.  The groups of ‘leaders’ may not be big enough to form new groups.
  • Have the groups distribute the points for each project among the members of the group orhave a group participation score incorporated and based on group members rating each other. I’ve heard of these mechanisms being used but I’m not sure how successful that would be.
  • Have a graded question (either on the midterm or as a quick start of class quiz on the day of the project hand-in) that would only be easy to answer if a student was involved in the working of the assignment.

I’d love to hear your thoughts.  Or am I over-thinking this and should care less?

Student depression, large classes and online classes

Last quarter, three students I was teaching spoke with me about their depression.  Three of the 160 or so students I was teaching. This was the first time a student had spoken with me about their mental health.  I was happy that these students felt that they could approach me.  I was uncertain of what to say, beyond what I would say to a friend in the same situation.  I was happy that these students assured me they had people (professional or not) to speak with. I was worried about the 157 other students.  How many of them were struggling with depression and distress?  These students who approached me were probably more likely to be seeking counselling – if they were comfortable speaking with me about their problems, they probably were alright with speaking to others.

However, most may not be.  As classes get bigger and move online, the sense of community at a university will degrade.  I won’t know my students.  They won’t know me.  They may not even know their fellow students.  Is this an advised model of education for our youth as they become adults?

Teaching with a microphone

After Claire’s post on accidentally taking a classroom microphone with her after teaching, I grumbled to myself “I wish I taught at a fancy university with a fancy microphone in the fancy classroom.”  One email later, I learn that there is a microphone in the computer cabinet in the classroom where I teach 130 students.  I tried it out today, hoping to counter a sore throat after flying back from FOCS*.  Apparently it worked really well, the students in the back were answering more questions and one student after class asked me to use it in future classes.

Sadly, it means that maintaining my sanity with comments murmured under my breath is no longer possible.

* I will post on FOCS when the talks from the conference are available so I can point to my favorite talks.

Teaching Matroids

In my grad algorithms class, I taught matroids.  This was last Thursday and came on the heels of a class and problem solving session on greedy algorithms.  The class, I think, went well.  I went slowly (Socratically), building up the definition of a matroid using the graphic matroid as an example, motivated by Kruskal’s algorithm for maximum spanning tree.  I pointed the class to Jeff Erickson’s notes on the topic, but used the 4 Bill’s treatment of matroids in preparing the lecture.  The problem solving session for this topic (yesterday), on the other hand was … well, the questions were too difficult.  Yes, I’ve made this mistake before.  But this time 4 of the 6 questions ended up being too difficult (for the time given).  Oh well.

I think I will teach matroids again in this class.  In teaching greedy algorithms, I had many questions along the lines of “when will greedy work?” and I think seeing an abstraction of a whole class of objects for which greedy will work (although not, of course, painting the whole picture) satisfied those questions.  It’s also a level of abstraction that hasn’t been included in this class before.  A healthy dose of it, I think.

Next up, dynamic programming.  Maybe I’ll include Courcelle’s Theorem.  (No, I won’t.)