Surprise class prep time
Between the bout of depression and the fact that I have some weird thing going on that bloodwork apparently cant figure out I have accomplished roughly zero of the prep I need for my surprise class (more here). So how do I come up with four classes worth of material in just a few hours… magic! I wish, but really I think the best thing for me to do is come up with an outline and then just focus on the first lecture (of four). Since I try to write daily, I figure we can go through my thought process together!
For completeness let’s do a quick recap of the past four days. My main-PI gave me a surprise teaching job to do. For the next two weeks I will be teaching a MATLAB course for people who’ve never used MATLAB before. I will have two, two hour lectures each week, or four classes in total. I was told about this roughly four days ago and have been dealing with a serious case of depression and my autoimmune (??) issue lately, which has been perfect timing and how these things usually work out so I’ve gotten somewhere between 0 and -10% of the work done I need to do for tomorrow. Yes, tomorrow is my first class and I’ve done absolutely nothing, less than nothing, but I’m checking two things off my to-do list for the day and we’re going over the plan!
This is going to be tough because no matter how this works, I’m going to be dealing with people who have a certain level of MATLAB experience already. I know this because two of them are people I mentor on a long-term basis, one I’ve been mentoring for almost two years now. So I need to make sure we cover the basics, but in a way that people that have experience won’t be bored the full time. Two hours of recapping stuff you already knew is not my idea of a fun summer.
Okay so breaking this down into classes today we’ll cover just the first one. The first class will obviously cover the basic, basics. How to orient yourself while using MATLAB, basically where everything is, how to add a path, change the look of the software, and just making sure that the people who are using it know what the heck is going on. That will hopefully be quick enough that the people who have no clue about MATLAB will be ready to go and the people who already know this stuff will not be bored.
Since each class is two hours (ugh!!) and that should be 10-15 minutes worth of work, we can move into different data types and how to make them. So going in order of least complex to most (IMO) creating a variable, creating a vector, a 2-D matrix, a 3-D matrix, a n-D Matrix, cell arrays, and my personal favorite as of late, creating a structure. As one of my many asides, structures are awesome for data organization, the problem is when you create a bunch of custom kinds and not a standard type, then it’s a headache.
Next it wouldn’t hurt to get into best practices when using MATLAB. Namely anything you do should be in the form of a script. Scripts are little bits of code you can save and use for later. The fact is that if you do something once, you’ll probably need to change a thing, fix a thing, or reuse the thing. Having a script written out means all you need to do is hit run, or make the small changes to the code.
This all will probably take the rest of the class, but I should also touch on the fact that you should comment the crap out of your code. I comment my code like I’m writing a novel. I explain at the beginning before I have a single command what the code is for, what it does, and what project I wrote the code for (if applicable, which that is usually the case). Then I break my code into sections depending on the “step” I’m on, each “step” is just one major change I’m making to the data or a major process I’m doing. So at the top of each step I break down what that step is about and I talk about how I do it.
Now the catch is I am the furthest thing from professional when I add comments to my code (see this post). I mean why do we have to take ourselves seriously when we code? My style is just to include how I’m feeling when I write it for a couple of reasons, one if I share this with people I mentor they get a laugh. More importantly it lets them know that I have frustrations about things I’m doing and that they can be worked through with a little bit of effort. I’m not embarrassed by the comments I leave in my code and I don’t think I should be. But it’s probably not the way things are done normally.
The thing is if you don’t comment your code you’ll forget. Seriously, I can go a few days without working on a piece of code I wrote and be lost as to what I was doing. If I didn’t have comments on how it worked or what code I should run before I use that piece of code I would be lost. Getting into the habit of listing which code I ran before the code I have open has saved my so much frustration FYI. I highly recommend it.
Okay so I’m fairly certain between questions, demos, and just general getting things working properly this will take the full two hours or at least somewhat close to it. I don’t want to overwhelm my students since the bulk of them are literally high school students. Teaching a course with people who have variable amounts of experience isn’t ideal and certainly not easy, but I think doing it this way will be good for everyone involved. I know the few people I mentor that will be attending could use a refresher on some of this stuff and I believe they are the most experienced in the course.
Now that I’ve slyly done my self imposed blogging obligation AND covered my first class, I should prep for tomorrow. Nothing major, just making an intro slide or two about me and probably a few lines of code that people can run to get a feel for how MATLAB works.