How I prepare for weekly lessons

Lecture prep with textbook open and video editor open.

Here’s a preview into how I create the content for my courses. I always hated slides straight from the textbook publishers, so I always make my own. I also frequently have to re-teach or re-view content that I’ve learned previously, so the best way to learn is to consume all the information and then be able to regurgitate it in my own words.

For discrete math, I first go through the book and highlight the important bits – definitions, laws, notes about how things work. So much content in textbooks is just fluff… while it can help you gain context for what you’re learning, I wish it were separated a little more… give me the pure information in one section, and the pure exposition in another. Examples after that. Make it easy to parse.

So I come up with what I want to cover – then I usually look line for additional resources. I frequently quote Wikipedia pages on math because it’s easier to cite; I don’t want to get in trouble for quoting the textbook (because proprietary, ugh.) There are also Wikibooks (a, b) on Discrete Math, and other class resources from other universities.

Next, I build my lectures. Yep, it’s a slideshow (built with the open source LibreOffice Impress), however:

  • I try to write out all the information that I want to cover for the chapter in these slides. I hate when class slides are useless on their own.
  • I use the slides to give information, show examples, and give practice problems.
  • I turn it into a video, for students to watch on their own time.

As I turn it into a video, I alleviate some of the shitty parts of slideshows further:

  • I don’t just record myself talking as I run through the slideshow “live”. Nope. I throw the slides in my video editor (kdenlive, also open source), then record my talk for each slide separately (with Audacity, also open source). I put them all together in the video editor. This means I cut out all the “ums”, pauses, and stumbles.
  • I insert in working math by-hand by recording myself working problems in a paint program (GIMP, open source) with my drawing tablet (a cheapo Wacom), recording the screen with OBS (also open source).

 

I’m currently writing the lesson plan for a chapter on logic circuits, which means I pull out another handy open source tool: dia.

Using dia to diagram circuits

It’s dia!!

I’ve found that I’m too busy this semester to actually grade paper homework. With my own homework and studying to do as a grad student, it just isn’t practical. Therefore, I’m also leveraging our LMS (learning management software) to build custom homework questions that are self-grading, and give students immediate feedback.

Creating a quiz in D2L

 

Millennials rock

“demographers and researchers typically use the early 1980s as starting birth years and the mid-1990s to early 2000s as ending birth years.”

I think that teachers of the my generation and future generations will end up being more effective because of our experience with various types of technology. Many of us have grown up editing videos, using YouTube, or even making animations (*cough*Newgrounds*cough*…) and when we leverage our experience into our professional lives, we become that much better at creating tools and content. As kids and teens, we learn to be content creators, whether we’re making videos about video games, or programming tutorials, or drawing, or whatever our interests are.

We aren’t afraid of technology, and we pick up the tools we need and teach ourselves. I have a toolbelt full of software for video editing, audio editing, music writing and sheet music creation, diagramming, art, animating, software development, and more. I taught myself to animate as a tween, which is a skill that has served me throughout the years. I began making YouTube programming tutorials when I was about 18, which is another skill that I still build and use today.

We don’t rely on expensive proprietary software to come along and let us teachers achieve what we need – there are tons of tools for all sorts of things, and many are free and open source. And if those tools don’t exist, there are more and more tools popping up for building your own.

We are the generation that creates!

(And is also sleep deprived from too much work. Looks like I’ll get less than 5 hours of sleep tonight…)

Feedback during the 3rd week of my C++ class

Dang! It is always nice to get good feedback like this.

This was in one of the mini-essays I assigned in my C++ class (reading about & discussing problem solving techniques), so I wasn’t expecting it!

“Coming into the class I was very nervous. My friend who has taken this course before by other unnamed teacher said it was the worst and that if I didn’t understand this class that I would struggle going forward. Scary right? For me it was. But as I continue to read the content you have written to teach and share with us, I am put to ease. I find myself smiling and laughing at your videos and text, which is something I did not expect coming into the class. So while I am still terrified of falling on my face, I have faith that I will make it. And that is not something that I previously thought.”

You’re ignoring the issue – Diversity in Tech

Don’t read the comments. Sometimes, when I post a link to an article on my Facebook wall, I feel compelled to add the warning, “don’t read the comments” along with the article.

This morning I posted a link to NPR’s Why Some Diversity Thinkers Aren’t Buying The Tech Industry’s Excuses article, and the comment responses are pretty much exactly the kind of responses that I still get sporadically for having the audacity to suggest that my YouTube channel needs more women viewers on someone else’s video that highlights the same problem on their channel.

comments

Scroll through the comments in the Diversity in Tech article, and you see the same mentality…

comments2

As sick as I am of hearing the same, “They’re just not interested. Stop trying to force women and people of color into tech!!!“, this isn’t what I want to post about right now. That’s a whole other long-ass topic that needs to be researched… Which I have done some research for that re: women in CS already so you can read this if you really want to.


No, what I really want to talk about is that, by making statements like “they’re just not into it”, ignoring whether or not we’re going to argue that entire demographics of people simply aren’t interested, I cannot imagine that anybody would state that absolutely, 0% of [demographic] are not interested in computer science. I think that we can all agree that at least some of these people exist, whatever people these might be. Right? There can’t be a net total 0 women, or African American people, or Latinx people, or Native American people, or gay people, trans people, intersex people, etc. etc. etc. You would have to be pretty damn specific if you wanted to come up with a demographic of people that might not exist as a person-who-is-interested-in-tech. And heck, even I fit the demographic of a “woman-or-maybe-genderfluid/queer/indifferent, asexual, panromantic, Esperanto-speaker, dandruff-haver, piano-player” programmer – I don’t mean to be facetious, I’m just trying to highlight that a person can be many things, and still interested in tech.

OK, so my first point is, there cannot be a people of any given demographic who have zero software developers among them.

Let’s look at these handy graphs I found on this article Race and Gender Among Computer Science Majors at Stanford:

Male & Female Computer Science majors at Stanford (from Medium.com)

Male & Female Computer Science majors at Stanford (from Medium.com)

So, there exist some women. It isn’t zero women. And then we have…:

Computer Science majors by race at Stanford (from Medium.com)

Computer Science majors by race at Stanford (from Medium.com)

and the Medium article even breaks down even further with more statistics.

But my point is, it isn’t zero. So let’s stop acting like all women/PoC are simply not interested in computer science.


 

So, secondly, the idea is that these people exist, but major tech companies still cannot at least build a ratio of tech employees that mirrors what’s coming out of colleges.

But they totally could – if they really wanted to.

As Martin Fowler points out in his DiversityMediocrityIllusion post,

To understand why this is an illusionary concern, I like to consider a little thought experiment. Imagine a giant bucket that contains a hundred thousand marbles. You know that 10% of these marbles have a special sparkle that you can see when you carefully examine them. You also know that 80% of these marbles are blue and 20% pink, and that sparkles exist evenly across both colors [1]. If you were asked to pick out ten sparkly marbles, you know you could confidently go through some and pick them out. So now imagine you’re told to pick out ten marbles such that five were blue and five were pink.

I don’t think you would react by saying “that’s impossible”. After all there are two thousand pink sparkly marbles in there, getting five of them is not beyond the wit of even a man. Similarly in software, there may be less women in the software business, but there are still enough good women to fit the roles a company or a conference needs.

(By the way I love Martin Fowler)


 

The people are out there, they just take more effort to find. Part of it might include how a company finds their candidates – if they weigh references heavily, then that might only support the demographic that is most heavily represented.

If they advertise that they’re the “standard nerds” who love beer and bacon, that’s going to be a turn off to certain religions, as well as people who simply don’t enjoy alcohol (*raises hand*), and the idea of having social events at work centered around alcohol simply just doesn’t sound like much fun.

It could be where they’re posting their job ads. It could be the values that they present. It could be any number of things. But to build more diversity, some effort has to be put into it, rather than just maintaining the status quo and acting like, “well gee, why can’t these women and/or PoC just fit in with our status quo? Why do we have to change?!”

 

When I interview for a software job, I usually ask the people conducting the interview about diversity. How many women work there? What about other ethnicities, religions, and backgrounds? A majority of the time, I get a response akin to “We hire for talent, not diversity”.

That isn’t what I asked about.

During the interviews and walk-throughs, how many people are present who aren’t white men? Only one time have I been interviewed by a woman – and it was because the entire team interviewed me, not because she was the boss. At my last job, I think that there were maybe two software engineers who were women (including myself) in the group of maybe 10+ teams. There were women present as BAs and QAs, but so few as the developers.

What, are women just naturally more interested in quality assurance than software development? Back in the caves up through the agricultural revolution, women biologically evolved to QA the hunts and the crops and all of that, while men evolved the ability to program those… hunts and crops? (Seriously I’m sick of the “biological” argument in a multitude of ways, especially if we consider nonbinary genders and trans people.)


 

Ugh, ok. I’m hungry now, and I have to prep for my Java class on Thursday. I need to come up with more examples of using arrays in simple programs. Ĝis la.

Offices

Have you ever had a college instructor who didn’t have an office?

Most college instructors have office hours to help students outside of class. It’s required in most cases. So, therefore, instructors need offices. Sometimes it might be a room with several cubicles, or it could be their own room with lovely lovely sheetrock on all sides and a door.

The office also provides a nice, quiet space for the instructor to get their planning, grading, etc. done.

Is being a teacher an antisocial job? No, who would say that? You have to interact with people a lot, from your students to the other teachers and faculty of the school.

Being a teacher requires a lot of people interaction, and yet, having an office isn’t seen as somehow making a teacher less able to do their job. The office is a required part of the job.

So how come software developers are thrown in open floor-plan large rooms? The justification is usually in favor of collaboration between the developers, but if teachers get offices and can still talk to people, why can’t developers?

If it helps to have quiet while an instructor is planning, grading, or otherwise doing their non-people work, why do we not treat developers the same way, giving them a nice quiet area to get their non-people work done?

And that’s not even getting into how I can choose the hours I’m in my office, and I can choose when and where I get my non-people work done as an instructor. I do most of my class preparation at home, on my laptop that runs Linux, with my kitty cat and tea and food that I can prepare in my own kitchen.

If teachers can have this freedom and get their work done, why can’t software developers?

Visual problem solving with SDL2

I am assembling some projects in my Challenge Topics repository on GitHub (https://github.com/Rachels-Courses/Challenge-Topics). These are projects that I’ve written to show in class, asking the students to come up with a better algorithm to solve some problem.

Here are some examples:

Screenshot-Searching

With this one, a linear and a random search are implemented to search a sorted list. The challenge is to ask students how a better searching algorithm can be done for our sorted list, where we do searching more intelligently than just going from the beginning to the end.

You can also expand this to talk about creating a data structure that auto-sorts when items are inserted, and whether to implement this by sorting immediately after an insert, or do a smart-insert and look for the appropriate position for the new object.

 

Screenshot-Travelling Salesperson

For this one, a list of cities are generated at random points on a map. The random paths generator essentially adds paths between cities in the order that the cities were generated. The challenge here is to ask students how to build a more intelligent route, visiting all cities once, and returning home afterward.

So for example, in the above screenshot, the salesperson goes from Grandview to Leawood to Raymore, which is a bit nonsensical.

You can also demonstrate Dijkstra’s Algorithm as well.

 

Screenshot-Collision Detection

Another problem we can look at is detecting how two objects are colliding, such as in a game. There are multiple ways to handle it – for example, you could do bounding-box collision detection and check the perimeter of the images themselves, each edge. Pros and cons? Could be empty space colliding, such as the top-right of the bunny and bottom-left of the dog.

Another option is to use the distance formula and figure out what a good distance is before considering the two images colliding. This works well for circular objects, but might not work as well for an oblong object.

Or, you could do a combination of both, maybe each object has several bounding boxes within it (like the dog’s head, and dog’s torso).


 

The idea behind these exercises isn’t to necessarily get the “most efficient” algorithm to any given problem, but to have students brainstorm and actually think about the problem visually, instead of having everything be intangible. Having pure console-based applications using just cin and cout can be boring, and even when implementing something modelled on a real-life system, it can be hard to really get into it. Even many command-line programs use something like pdcurses to give more organization to the presentation of the program.

So by using the SDL library, we can still write C++ code and demonstrate some problems in a more graphical way. Even if SDL is not available on the students’ school computers, if the teacher has a laptop they can install SDL2 on their own and display it to the entire class for a more social lesson.

Learn more about SDL at: https://www.libsdl.org/

And my challenge repository is at: https://github.com/Rachels-Courses/Challenge-Topics

Software

The software industry is such an exhausting one. If I could, I would work in another field, but I don’t have training in any other fields so I would not be able to make even half of what I make as a software development.

 

One of the constant frustrations is pay. It seems like when I check Glassdoor, I’m always paid less than the average software engineer, and definitely less than a senior software engineer. At this point, I probably should be hired as a senior but I never am.

Everyone puts the onus on the individual; You should have asked for that title or You should have asked for more money. I try, but it feels like I’m driving blind. Nobody is out there to support you or help you make that decision.

Nobody ever taught me negotiation skills. I’ve never negotiated a salary, even though this past year I’ve become aware that perhaps everybody else does, every time. But what are the rules? What are the methods? I don’t know. And with a recruiter in the mix, it seems even more difficult to negotiate a salary. Sometimes it seems like they might even be pitching me low to make me more desirable. But I can’t say for sure.

When you’re a minority in the field, you’re constantly hearing about how other women are usually paid less than men (and I have it the best-of-the-worst, as a white woman, many women of color get paid a huge amount less than the average white man in a given field). It’s such an unfriendly place to be. Everybody is so secretive about their salary, companies don’t want you to discuss it, it feels like the cards are stacked against you. How are you supposed to get ahead when you don’t have the resources you need to work towards it?

I like the Clef Handbook – which they have made Open Source. I sincerely hope that one day, Moosader becomes self sufficient and I can hire other people. I would like to make salaries transparent – it might not appeal to everybody, but I’m certain that there are people out there like me who are tired of feeling kept in the dark and taken advantage of.

I have such a different mindset for how a company ought to operate than the standard business.  I really hope my company can make a difference. It’s clear to me that no company is going to give me the kind of work environment I need in order to be happy, and I have to make it myself. Flexibility, freedom, fairness. I’m so tired of the 8-to-5, open plan layout, no-telecommuting style of job. I’m ready to work for myself – but I need to have an income. So I need to keep working.

I like Martin Fowler

I often want to reference these articles but forget the name (and sometimes Martin Fowler’s name, so then I have to go do a search for that one book I have that he wrote). This post is mostly for my own reference, but if you are interested, here are some really good posts on diversity in tech.