Computer Programming

I’m taking a beginner course in computer programming so that I understand it well enough to help my son take the same course in the future. In the meantime, I’m really enjoying the course (Programming for Everybody through Coursera), especially how each assignment is a mini-project in problem solving. I also like how it’s either right or wrong – no grey area here! I’ve found that programming has a lot in common with homeschooling:

1. If you want to write a good computer program, you first need to define what you want to do. Although this definition will not be seen in the actual program, if you don’t know where you’re headed then you don’t know where to start and you’re likely to write a bunch of lines of code that don’t get you anywhere. In homeschooling, we have overall goals for our children and then each year we set goals for each of them (with their help). Then we make weekly goals that help them get to their year-end goals. As Stephen Covey talks about in his 7 Habits books, “Begin with the end in mind”. If you write a computer program without a defined goal, you often end up with a page of messy code that makes no sense when you look at it the next day. Try to run it and it will be full of errors that you can’t fix because you don’t remember what it was that you were trying to achieve. So you have to start over. Starting over is easy with programming but not so fun with homeschooling; it’s better to set some goals.

2. When writing a longer program, it works best to check it at the end of each stage because the program will only tell you about one error at a time. If you finish the program without checking it, you may get an error that only occurs because another error occurred earlier that you are missing. In homeschooling, this translates to checking our child’s progress against our goals on a regular basis. I always have to adjust our year-end goals! We either get too much done, or, wait, that has never happened, we often go off into an area of interest and then I adjust our goals to fit what we are currently doing. Or we get stuck in advancing in writing or math and have to pause to develop skills before moving on. This is one of my favourite things about homeschooling; we don’t have to push forward, we can stall wherever needed to master skills.

3. In the programming language Python, you can place a hashtag before a line of programming to remove it from the program without deleting it. It’s very helpful in telling others what you were trying to achieve, it’s also a good way to remind yourself what was happening before taking a break. I also think of it as a check or pause for the program (not in the program – they don’t stop time) that enables me to make sure I’m on track. I think of it in homeschooling like taking a day off to do something fun or not doing math lessons for a week while we play games. A pause is a welcome distraction and a fun break from the daily and weekly routines. Too many #s in the code and it gets hard to see what’s actually happening, just like how too many breaks from routine destroy the routine and become the norm.

4. In programming we can write a ‘function’ and then call that function when we need it. Like in parenting and homeschooling, we have days where we are either distracted or ill and need to call on some old favourites to get us through the day. In our house, that was a few videos when the kids were little, or board games, or colouring pages, or a bag of my old toys. Whatever would help us still have a good day without just lying around in front of the TV. We can’t call a function for everything, and we have to write it first, but when we do need them they are really handy to have around.

If you have found other things that relate to homeschooling, I would love to hear them!