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…)

Lecture sucks

Scribbles on a slide that is incomprehensible if you're viewing independent of the class.

Scribbles on a slide that is incomprehensible if you’re viewing independent of the class.

One of my classes (that I’m a student in) is split into a lecture and a lab. The lecture is three days a week for one hour, and it is only lecture – slides without a theme (black text, white background), instructor talking, stuff from the textbook, occasional review questions.

They’re so boring. They suck. I can’t focus on them.

As a teacher, a lot of my teaching philosophy has been shaped by the frustrations I had as an undergrad — quizzes worded specifically to trick you, tests where the teacher doesn’t give you any clue as to what they think is important and what they will cover on the exam, boring-ass lectures…

Admittedly, since I teach at a community college, all of my classes are held in computer labs. It is wonderful. I have the ability to flip my classroom, record video lectures to watch as homework, and do programming during class. At university, there are too many students to have all computer science courses in labs – this is true at KU and at UMKC. Still, even though we are constrained to classrooms with desks instead of school computers, it would be nice to try to shake up the class in other ways.

My math classes aren’t just me lecturing the entire session. I give a short lecture, the video lectures that I recorded last semester are available online, and each week I write up an “in-class exercise“, which contains introduction text and examples, and then a series of questions. The students work in groups, and submit only one copy per team. They’re free to ask me questions as well. We spend time learning and practicing in the classroom, instead of putting all the onus on them figuring it out totally alone from the homework questions.

I resent pure lectures. They feel like a waste of my time. If the lectures are just going to reiterate content from the book, why not just let me read the textbook instead? Another big issue I have with lectures are that (1) I never go back and reference my notes. I just don’t. Over my 7 – 8 years as a college student, I just never go back, and (2) When I have taken notes in the past, any time I’m trying to recall something really specific, I can never find it. Probably because I cannot write as fast as teachers can talk.

This is why I record video lectures.

Students can watch again, pause, and watch when it is best for them.

Some teachers in previous classes would just record their in-class lecture – all 1+ hours of it – and post it as-is. You can’t find shit by sifting through such a long video, and it’s still boring as hell. It isn’t concise at all.

This is why I edit my video lectures.

I pre-script them. Usually, this means my slides are pretty detailed and it’s my main script. I export my slides to image files, put them in the video editor, then record my audio in Audacity. That way, I cut out all that is extra. Those go in the video lecture, too.

Then, if it’s a programming class, I use OBS to screen capture while I do some example coding – this is less scripted, but gives the same kind of example coding you’d get from a lecture. If it’s math, I open up GIMP and plug in my Wacom tablet and work some example problems. I further edit these down to get rid of long pauses and excess “ums” and speed up sections where I’m only writing stuff out or coding stuff after I have explained what I am doing.

I comb several books to figure out what points I need to make on the topic, and I put my slides together. Everything I would test over, I mention. I want my students to get everything they need, and be able to access that information at any time.

But it sucks for me.

I’m already the type of person who likes to control things, and gets annoyed when Redbox’s user interface isn’t as streamlined as I would like. (Brightspace has inconsistencies in user interface that drive me up a freaking wall!!!)

This means that when I’m a student rather than a teacher, I get really frustrated by the classes I take. I’m frustrated by the boredom, the inefficiency, the unknown, the schedule.

Best I can do? Basically go through the course content the way I would as a teacher – and write my own notes. Basically come up with the same sort of resources that I would as a teacher (because sometimes we have to teach ourselves the content while teaching, too – do you think I really remembered discrete math from when I took it 10+ years ago??)

So, just like I make repositories for my courses and throw all the content I make, available for anyone at any time (https://github.com/Rachels-Courses), I do the same with my classes. My notes, the code I write to try to learn the content, and so on. (https://github.com/Rachels-studies).

Road map

Next week, I begin my first semester as a grad student at KU, and my second semester teaching full time, teaching two sections of Discrete Math, and one each of Data Structures and Programming II. Moosader is also on my mind, and I feel like I have a bit more of a focus for what we should do in 2017. Marriage is also on my mind, though I’ve never been engaged before or planned for such a thing before.

 

Grad School

kuOrientation at KU opened my eyes to some possibilities that I had not thought of; I had originally just planned on doing it for the paper, to push forward my career, but talking to the EECS faculty inspired me a bit.

I like watching Day9’s Mostly Walking series, and one of the guests on that web show is Sean Bouchard. Sometimes he talks about his work, and though I don’t know much about it, it had piqued my interest prior to even thinking about grad school, and going to orientation made me think of some of the things he had talked about, which got me excited.

Now I see grad school as more of a journey than just a means to an end. Perhaps at some point I will switch from working full time and studying part time to vice versa – going back to being an adjunct and studying full time so that I can spend time on a research project, centered around software and education.

 

Teaching

This year, I’m an assistant professor. The previous semester, I was a full-time-temp, so I worked full time but I didn’t have the same responsibilities; it was like being an adjunct but with more hours.

I’ve been with my community college for a full year now – all of 2016. I really enjoy the teaching aspects, but this is the first place I’ve worked where I keep being put in the middle of faction politics. Perhaps I just hadn’t been at any software companies long enough to experience this, or I was always really low on the totem pole.

It isn’t making my job unpleasant at this point, per se; I mostly see it as weird, bizarre entertainment. But, it has affected my long-term goals there. That, and also being full time means I have more responsibilities now, such as attending meetings and a “butt-in-seat” policy (having to be physically present at the workplace to “prove” that you’re working, when really it just proves that you know how to look busy.)

I left the software industry to get away from arbitrary things that kill my productivity, such as required work hours and require work locations. If you want me to create my best work, you need to trust that I know how to best produce that productivity in me, rather than restrict me to silly standards that make no sense.

Anyway, this is part of why I’ve shifted my excitement towards grad school, and why I’m thinking of adjuncting after my year-and-a-half contract is up. Keep a foot in the door, but put my efforts elseware.

 

Moosader

fdeIn 2016, I was convinced that I could put out Fin ‘N’ Kit, rewriting it in C++ so that I could control more of its features than what the original engine had allowed for. However, this just ended up meaning I was the bottleneck and my team didn’t have anything they could work on. In 2016, we basically just re-released Gift Grab with new graphics as a free game with ads, since in 2015 we basically had about 12 sales.

So one of the things I’ve learned is that, this early in, we need to be building games with tools that increase our speed. Visual Novels in RenPy, or maybe using other engines or languages, rather than rewriting a full engine in C++. Fin ‘N’ Kit is in alpha, but there just isn’t much interest, so I guess it is suspended for now.

I put out a survey – in English and in Esperanto – with a list of some of the games we have prototyped, or just ideas for, to see where the interest lies. Mostly, the interest is around the language learning educational apps, moreso than anything that we’ve worked on purely for entertainment. Sure, there’s a little interest in a game where you’re a courier in a post-apocalyptic setting, handing out bills for peoples’ still-active student loans, and returning the payments back to the student loan H.Q. — Because, even after the apocalypse, student loans will continue to exist. Get it? 😛

And, honestly, it is hard for me to find inspiration for the “purely for fun” types of games anymore. This inspiration was severely killed off during my years as a software developer, as my soul was slowly killed as I zombied through the days. It was language learning that rekindled any sort of passion in me. As a result, I can easily think of games that I would like to play to help me learn languages, in the style that I best learn, so designing these sorts of games comes much more naturally. Coming up with something purely fun for fun’s sake outside the context of learning, my brain just doesn’t do that anymore.

 

Marriage?
rai22016 had mostly been good to me, up until a certain point. I began taking antidepressants/antianxiety meds, started my new job as an adjunct instructor, which I really enjoyed, and started my relationship with Rai, whom I met on Tinder. I had not been intending to find a serious boyfriend, and only date around to fill time, but we actually hit it off really well, and it had been the most healthy, supportive relationship I had ever been in.

In late October, however, the company that Rai was subcontracted under had budget cuts and rolled him off the project. He was given two weeks to return back to India. So, November 1st, he returned, where he continues waiting for another assignment and spending time training on Selenium.

We are still together, though “together” through WhatsApp. He is 11-and-a-half hours away, which is a difficult schedule. There is a chance that the company that rolled him off the project will be reassessing their budget from Q1, and be up for hiring him back in Q2.  I hate having to rely on corporations, they never come through and they have no respect or care for their employees.

Beyond that, I need to renew my passport, and I’m planning on booking a trip to India in May of this year, where we will go to Uttarakhand and meet his parents. I need to make sure to study Hindi daily, as his parents do not speak English. We’ve gotten approval from them already, but it is good to meet.

IMG-20170111-WA0016The marriage I’m willing, but weddings are a pain in the butt, and even more so now that we have to think of weddings in two countries. I like to keep things simple, but simple does not describe an Indian wedding. In the U.S., I figured it would be my parents, his parents, my sister, her bf, and my cousin and her husband. I do not want any more people than that. Simple, clean, low-stress, mostly casual. But how far apart would we have the two weddings, getting visas, and how all of this works, is just another stress on my plate when I already have so much to think about.

I finally am working full time so I can actually feasibly pay for flight(s) to India, but trying to fly myself and my parents, or flying his parents over, so many flights! So much money! Blarg.

You rock

I had a student who wrote some notes on their recent exam that expressed frustration and embarrassment over some problems. I haven’t returned the exams yet (it’s a once-a-week class), but I sketched in their exam and left positive notes. I scanned the exam for this student and sent it to them, and let them know that these next chapters will be easier – no holiday getting in the middle of the class, I’m doing video lectures to help students out more, and we’ll work together to iron out tough bits.

The response I got back was “you rock”, so that was nice. 🙂

 

Rachel,
I really appreciate this email and thank you for your positive attachment! That was nice, but I can be really self-deprecating, so that’s where that came from.
I will let you know if I have any questions. I will get to my Discrete Math ASAP today; I’m such a procrastinator:(
You rock.

Video Lectures

A screenshot of a video being rendered

When I was a student, it was aggravating to no end, just knowing that I heard my professor say something in class, but not having it in my notes and not remembering what exactly it was.

I know I’ve dealt with being confused on a math topic and pouring through the book and examples and still not understanding; trying to find YouTube videos on the same topic that wouldn’t confuse me further.

Some teachers would record their entire in-class lecture and post those up online, but these were often over an hour long and difficult to parse; if it were a class session where the teacher was just coding the entire time, it would be hard to figure out what part of the class they said the thing I was looking for!


 

However, done right, video is a great medium for presenting information. For my CS 200 (JCCC) and CS 201R (UMKC) classes I taught in Spring 2016, I spent every weekend writing and recording lecture videos for them to watch as homework – then we’d spend the class period actually coding. This also means that I can reuse these videos – both for any other CS 200 sessions I’m teaching, but also to provide as review videos for classes after CS 200 – such as data structures, if the students need to review some core C++ topics!

More recently, as a result of having a Monday-only three-hour Discrete Math class and Labor Day nuking the class period for the week, I ended up recording a video lecture for the class that should have been that week. And, actually, I recorded video lectures for that entire chapter, to help my students study for the exam the following week. And it was pretty well received.

Part of building lecture videos is boiling down the book’s contents to its important bits; like panning dirt to find gold… or at least some cool pebbles.

An in-class lecture can be boiled down to 10 minutes when you’re building a lecture video by a script, rather than just hitting record and going for it. It also results in cleaner, easier to follow content.

The downside, however, is just that it takes time to do. For a standard lecture, I will…:

  • Go through the book, figuring out the important parts.
  • Write some presentation slides, then export them as separate images.
  • Throw those slides in my video editor (kdenlive).
  • For each slide, record narration (with audacity).
  • Then to work examples of the problems, record myself writing out and solving the problems in a paint program. (This requires GIMP, my Wacom tablet, and OBS) – If it’s a programming class, then Code::Blocks and OBS to record coding through some problems.
  • Putting it all together in the video editor, making sure it flows well.
  • Rendering!
  • Uploading to my server and/or YouTube.

Unfortunately, it can be a lot to ask any random teacher to build something like this. But I have the capability (I guess I’m from the “YouTube Generation” so a lot of us can handle a video editor), and the drive to do so. I feel like creating the video lectures also helps me understand the content even better, so that in class I can give a better lecture and answer questions better.

It also means that, even though it is a lot of work now, it will be less work in the long run.


 

You can view my educational content over at http://edu.moosader.com/

Programming Poems

Was just playing around with words to try to think of ways to get students to remember that they need == when comparing two values.

To compare if two values are equal,
Your equal sign needs a sequel. (==)

 

I posted it on FB, and was given the response “===” so then I wrote:

If you need to check the type and value both,
your equal signs will need another growth?

 

But a friend of mine, Chris M, also wrote a poem:

If checking type is on your minds,
why don’t you use three equal signs?

 

I just thought it was funny and cute. ^_^

 

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.”

Programming for Discrete Math

  • Josephus Game
  • Magic Trick
  • Tennis Matches

I like using programming in the classroom. I’ve never seen programming really used much in any of the math classes I’ve had in the past, save from some odd MatLab projects (of course I opt for NumPy or SciLab – Go FOSS!), and sometimes reading paragraphs of math problem examples in a textbook just makes my eyes glaze over. Rather than try to demonstrate this stuff on the whiteboard, I decided to write some quick Python/PyGame programs for the examples from the textbook we’re using.

Another pro of this is that it helps me “grok” the content. I might read over something and think “yeah, that makes sense”, but I don’t really know it until I put it into practice, and the best way for me to put it into practice is to make it a program. When applying it in code, it’s more likely I’ll remember the fine details much better, just through the entire process of working on the program step-by-step.

Not sure if I’ll have my students do any coding (various prereqs, they might all know different languages), but it might be nice in the future!

random test generator

random test generator

What do you do when you want to write a take-home exam, but want to discourage students from simply copying off each other?

If you’re a programmer, you write a random exam generator. 🙂 If you’re not a programmer, then you can probably find an existing one out there much nicer than mine… but oh well.

This is a C++ program that reads in text files – each question position has a “deck”, and a deck file has a list of questions that are interchangible (e.g., “declare an int”, “declare a double”), and then you have a series of decks that represent the amount of questions in the exam. Each question item in a deck has a serial number as well.

The exams are generated and output to .html files (I decided to do this because it’s easier to maintain the formatting if I copy it into a LibreWriter file), and a key is also generated, with all the decks and all the questions and their answers.

I’ll probably go extend this to list point values as well, I like putting that on exams. Then I have to go write my Programming Fundamentals exam 1. Whee!

Jeopardy for Computer Science

Sometimes, class gets quiet. Especially during review days, students usually don’t speak up on their own to ask questions. So, this semester I wrote a little Jeopardy program and used it for both of my classes.

The students at the community college I’m teaching at seemed to enjoy it; I was even asked to make more questions and come back with candy as a reward next class. So I will. I upgraded the Jeopardy program and wrote new questions dealing with different topics in Computer Science / C++, and it’s all ready to go!

This program is written with C++ and SDL2, as well as my Kuko framework. Since the class is about C++, I thought that it would be good to write the program with C++, instead of doing it as a webapp (which would have taken less time, admittedly!)

You can download the game code here: https://github.com/Rachels-Courses/CompSci-Jeopardy

It also requires the Kuko library: https://github.com/moosader/kuko

As well as SDL2 and Lua 5.2!