Friday, January 28, 2022

Computational Thinking and Solving Problems

In my last post I shared how I am taking a programming class. We're a couple weeks in now, and it's all going well enough. (So far, so good!) 

Yesterday I wrote a fun little program to help with planning a hot dog roast. (Why do hot dogs come in packages of 10, and buns in packages of 8???) It's not the most elegant code ever, I'm sure, but I tested it with a dozen or so inputs, and the math checks out. It's a functional program. I'm feeling proud of myself, even though it's a relatively small thing.

Here's the output for the program I wrote. Fun, right?

I'm learning the syntax of Python, the "grammar" of the language. And I'm learning strategies to build code that is readable by both the computer (obviously) but also humans who might need to understand the code as well. And I'm learning about software development environments, and just how many places Python is used today. (It's a lot--a really useful language!)

But as interesting as it is for me to think through what I'm learning...it's even more interesting to me to reflect on how I'm learning.

I've taken programming before, and I'm finding myself calling back to the last time I took a course that involved hacking code, over 25 years ago now. The language is obviously different. But I'm thinking about the habits of mind I'm re-encountering as I'm taking this course. There is quite a bit of discourse in STEM education today about teaching what is called "computational thinking." This is the idea that we can break down problems into "computable" steps--algorithms, heuristics, and patterns that can help us solve the problem. 

I'm finding that more than learning coding in a particular language, I'm (re)learning some computational thinking strategies by taking this course. 

We're at a point in the semester where we are learning techniques for branching and iteration--"if-else" statements, and "while" loops--and the logic of understanding how the computer will process our code. This has me thinking about how I break the problem down, and how I attack the specific aspects of the problem to find a workable result.

My professor is fantastic at helping us think through "pseudocode" in class, where we take a problem, and collectively analyze the steps we might need to take to solve the problem, and sort of code it out as a series of algorithms, without actually writing all of the code in Python. Then we can work through the specifics of turning that pseudocode into the actual grammar of the language. It's a really effective teaching technique! And then, the practice: we use an online platform to practice writing small snippets of code and get immediate feedback. Because I get immediate feedback on whether my code "worked" or not, I can either move on to another exercise, or rework it, or if I really get stuck, it even offers some hints to get me thinking in a different direction. It's a pretty smart approach. This is really helping me to sharpen up my skills at attacking smaller scale problems that I can then bring to bear on the bigger coding problems that we do, like the hot dog cookout program I shared above.

When it comes to the exercises for homework, it's amazing to me how often find this pseudocode approach working--and it's also amazing to me how frustrated I get when I don't slow down and think computationally. There have been a few times where I read the problem in our online coding platform, immediately make an intuitive leap to how I think the code should function, hack out a solution to the exercise, and hit submit. And sometimes this works great! But other times...well, let's just say I hit "submit" 23 times for one exercise the other night, tweaking the code just a bit each time before hitting the button again. Ooof. I was getting a little frustrated, but when I finally got the right answer, I laughed...because I realized that I had been banging my head against the wall because I had missed a step in the initial framing of the problem, and in my rush to start hacking code, I didn't slow down to think through the steps.

And that, to me, is the most important thing I'm learning: I am often quick to make snap judgments, and I think this course has already been opening my eyes to the importance of slowing down and understanding the real situation of the problem before I just barrel on to a solution.

It's a lesson that I am going to need to keep relearning, I think. 

But I'll celebrate the small steps that I'm taking in this (re)learning process. And if you are planning a hot dog roast, I have a piece of code that might help you in the planning process.

Sunday, January 16, 2022

My Latest Adventure in Learning

 I am a learner at heart. 

Having taken the StrengthsFinder assessment a couple of times now, it's been confirmed for me: "learner" is one of my top five strengths. I didn't really need the assessment to tell me this. I love to learn new things, and even re-learn things I've learned before.

Perhaps that's part of the appeal of academia for me: there is always something more for me to learn. And sometimes, it's the teaching that actually leads to more learning.

That's the case for me this semester. I'm teaching a new course--new to me, but also brand new to our institution: Robotics for K-12 Education. I'm right on the edge of my comfort zone for teaching this one. Honestly, I'm just a little anxious about it. I love robotics as a way of bringing the STEM disciplines (science, technology, engineering, and mathematics) together. But I also recognize that I have some learning to do.

I've taught math. I've taught science. I've taught technology applications. I've read books on design thinking, and problem-based learning, and I love projects as a way of building understanding. But I recognize the limitations of my current experience with actually building and programming robots.

It's not that I have no training or experience with building and programming robots. I've taught science and engineering principles at the middle school level with Lego robotics kits. I've used block-based coding tools to build Android apps. I've played around with Arduino micro-controllers. At a conference a couple years ago, I participated in a substantial workshop related to teaching computational thinking that involved programming simple robots. All of this helps.

But I realized the other day that it is 27 years ago since I took a true programming class, way back when I was a computer science major in my first year of college. Ooof.

And so...with the recognition that my students taking this Educational Robotics course have had programming MUCH more recently than I have (and it's actually a pre-requisite for this course!)...I've decided that I should retake Programming I, just to brush up on my own skills.

So here's to learning a new language (Python), and revisiting computer science principles I've likely forgotten in the intervening decades, and updating my skillset to be better equipped to serve my students! I'm hoping to document my ongoing learning here as part of my reflective practice--both in taking the programming course, as well as in the first go at teaching the robotics course.

Hooray for adventures in learning!

I'm ready for it...bring on the Python!

Tuesday, January 4, 2022

Rhythms, and Resting, and Taking Breaks

I'm back in the office. It was a lovely Christmas Break for me. And...it was a true break for me. From December 23 through January 3, I did not come to campus at all. I didn't even check my email.

Wow, I needed that.

Don't hear me wrong, it's not as though I was trying to avoid work because I dread it, or dislike it, or anything like that. (I suspect if you've read this blog for any length of time, you know just how much I LOVE what I get to do as a professor!) I've written before here on the blog about how I don't like the term "work-life balance" and prefer to talk about "work-life rhythm" instead. Maybe that's just semantics, but I think it is true, because my work is an incredibly important part of my life, and not something I feel like I need to "balance" with other things. But as soon as I say that...I know I really did need the break, perhaps more than usual. I needed to rest.

Teaching is always hard work, but the past two years have been doubly so. And, challenging as teaching in higher education has been for me, I know it's been even more demanding for my colleagues in PreK-12. I've written before about the emotional labor of teaching, and I think 2020 and 2021 only exacerbated the already challenging work in this regard. I know I've felt it too, and though I find deep joy in my work--and take tremendous pleasure in it--it's been, well, a LOT.

And so, a true break. Truly resting from being "productive." No real "work." Not even checking the email.

It wasn't easy for me at first. I actually had to remove my email app from my phone, because I realize that there is a weird magnetism that just draws my thumb to that app icon. In the first few days, I noticed just how often I pick up my phone and check my email, because with that app icon's absence, I found myself accidentally opening other apps where I just naturally tap. Odd how easily I was conditioned to do this. (And now that I've disrupted that habit? I'm wondering if I should even put the app back in place once the new term begins.) Is it silly for me to go on and on about how big a deal this was for me? Maybe. But I think it's part of a mindshift for me from that "always on" part of working to a real break.

So, instead of working all the time...I was deliberately non-productive. I played games with family and friends. I read a novel. I did jigsaw puzzles. I ate a lot of Christmassy treats. (Ooof...and I got on the treadmill...) I took my kids out for breakfast, just the three of us. I got coffee with friends a couple of times, just to talk and connect. I finally started watching Ted Lasso, which so many people had recommended. (And I'm definitely enjoying it!) So much good stuff, and it was lovely to make space to do this instead of working.

And now I'm reflecting a bit: why is it that I need to give myself permission to do this kind of break-taking?

I heard a great sermon this past Sunday, a message about ensuring we have margin in our lives for the things that we really care about and that really matter to us. I needed to hear this. One phrase that has kept ringing in my head since hearing it Sunday morning was a call out of the "Cult of Productivity" that is so, so prevalent in our culture. And...ooof...that's me, a priest in the Cult of Productivity. How much do I prioritize being productive? What would it look like for me to cultivate being present first and foremost? What would I have to say "no" to--limiting my productivity--in order to have more of this kind of margin in my life?

I don't really have any New Year's Resolutions this year, not formally anyway. But I'm already thinking about things I can, and should, say "no" to, not bowing to the cult of productivity. I've already said one "no" to a great opportunity, and it's only January 4. What else will I say "no" to this year? And how will that help me continue to find better rhythms?

We'll see where I'm at come Summer Break!

Image by Ralf Designs via Pixabay