Showing posts with label Teaching. Show all posts
Showing posts with label Teaching. Show all posts

Saturday, April 08, 2023

A General Update on Code Doodling

Doodle Code is my “knitting” project, where I dabble in programming while watching TV or during family gatherings (hey, it works for my family), and I haven’t had any really goals, so I haven’t had a point to stop and update. It also turns out I’ve been a bit forgetful and messy, but oh well. Now seems like time to dust it off and share it with anyone who’s interested, even if it's not the repository of useful teaching code I'd thought it might be originally.

Graph of Languages for the Github repository, showing Java at 77.1%, Processing at 18.8% and Python at 4.1%.
Can you tell I'm a programmer who did most of his learning in the late 90s and early 2000s?

There are about 15 doodles, in various states of completion. Dunking on the dumb mathematical things sports casters say has been a bit of a theme and beyond that playing with colours. Everything else is things I thought would be interesting or just stuff I’ve been meaning to do (like the Coding Train Challenges).

I’d drifted away from doodling for a while, so back in February I thought it was time to start again. Then I came to the realisation that basically nothing was organised, documented or finished. I’ve started poking at that, but as it turns out it’s more fun to do new things than it is to go and clean up my own mess.

Graph of GitHub Commits showing tjkendon with 251 commits from January 2022, to April 2023, 6739 lines of code added and 1464 lines of code removed.
Github is always good for that endorphin rush of numbers go up.

Each doodle now has at least a description and a Readme, some are better documented than others, but that’s a starting point. I’m trying to strike a balance between working on new stuff and cleaning up what’s there so that it might be useful for someone else at some point. It may not be good for my existing habit of not getting stuff done, but I’m honestly feeling quite happy doodling around with stuff and I’m not feeling that compelled to “finish” anything. I am slowly learning to unlink my feelings of self-worth and happiness from productivity and I must say it’s quite refreshing and the project is leaving me feeling pretty good even if it may not be that actually useful.

Tuesday, January 18, 2022

Project 21 - Code Doodle - Introduction

 As I've mentioned in my last few updates I'm starting to get a little bit more done on some of my *other* projects. Despite my best efforts though, some of those projects are big, and hard to finish and they need me to learn things, even when I think I've kept them small. 


The solution to that is *clearly* to start doing something else as well. Because spreading myself thinly has really been a key to my success. 


Oh.


Right.


No, it's definitely the other thing where I'm not great at finishing things and it's easier to play with the new shiny thing than it is to get shit done.


That being said, I am starting a new project and I have a bunch of ideas whey I think it's a good idea.


Ok Fine. I'll bite, what are you doing?

I'm writing a bunch of tiny programs. They may help me do other jobs or they may just be things that seem cool to play with. Basically, I want them to be simple, easily completed, code doodles.

A cartoonish drawing of the word Code surrounded my some doodles of squares, lines and toast.



You Mentioned You Had Ideas as to Why This Wasn't a Bad Idea

Aha. Actually I said I have ideas as to why this is a *good* idea. Take that, Scalziesque interlocutor!

Still.

The biggest reason I want to write tiny programs is that I want to write tiny programs. I don't write that many programs and programming is fun.Sometimes your brain is a little bit on automatic and you want to engage it just enough to to have done something. It's knitting basically. Programming, fun times.

The second reason is that I'm working on *another* project, related to teaching people to code and I think one of the things we do very poorly when programming is teaching new programmers to read other peoples' programs. I've never had time when I'm teaching to get beyond the bare basics of what I need written for the students to work with, and so this seems like a great time to just build up a repository of interesting programs so that people can *look* at them at some point. In fact, at some point, I hope to have other people contribute interesting tiny programs too. (I don't know what that point is, so if you're interested in publicly sharing the code for a tiny program, drop me a line.)

The third reason is that there's a ton of things I still need to learn. Also there's a not insignificant list of things I've forgotten to a greater or lesser extent. And much as I hope Game Tracker will be great for teaching me, it's *already* too big and complicated for what I'd hoped to do for a lot of things and I need some places to play before I build those things.

The fourth reason is just to give myself practice finishing things. I'm bad at it. I've been bad at it for most of my life and so keeping the programs tiny seems like a good way to finish them.

The fifth (and for now final) reason is that it's a fun way to run into more interesting things I haven't had a chance to think about before. For example, how similar *are* the sets of {1, 2, 3, 4} and {3, 4, 5, 6}. So the fifth reason really ties the other together a bunch of the others in a way that should hopefully keep my brain moving.

So What Are You Doing?

I've made a GitHub repository and I'm uploading stuff there. No guarantees any of it's good or interesting (and if I've solved any of your intro to programming assignments by accident, (Sorry!) I'm not doing it on purpose. - Hit me up and we'll chat assessments in programming.) Feel free to keep an eye on it if that's the kind of thing that interests you.

So far I have 2 programs in the repo.
  • List Difference - takes a look at two lists and lets you see how similar they are. It's intended to help statistically mock sports casters. This one's pretty finished.
  • Food-o-rac-o-cycle - named for the food machine on the Jetsons (I think). This will tell me what to make for breakfast. This one's off to a good start.
I'm also planning to add a couple of other programs that I'm working on to help with the Chrono Sprites. I started them separately, but they fit the model for Code Doodling, so I'm going to drop them in too.

I'll update from time to time, but if you're interested in what I'm up to looking at the repository is probably the best place to see the latest.





Wednesday, January 06, 2021

Blog Post: Teaching Online in Fall 2020

Having made it through Fall 2020, a bit by the skin of my teeth, I thought I would write up the things that seemed important to me. I'm not sure if these would be a lot of help to anyone else, but it seems worth having a record of how I was feeling. In particular as I'm moving away from teaching undergraduates, I thought having a record of how the last time went from my own perspective would be a good idea.


Selfie of the author, wearing a gamer headset in front of a desk artfully messy with computers and programming books.
That first day.



Things That Probably Apply to All Emergency Online Teaching

    • Students appreciated the amount of empathy and flexibility I brought to the class. 
    • Flipping two classes, while moving online and trying to be very on top of assessment was really, really hard. 
      • I ended up giving myself significantly more work than I could really manage and it made handling everything the whole semester harder than it should have been.  I ended up having to slip deadlines and cut elements from the course on the fly. In the end I think the damage was contained, but I definitely didn't have the semester I was hoping for.
      • Generally, smaller one-topic videos are the best fit to what students are looking for.
    • Students generally found that a flipped experience online (recorded lectures, with readings and quizzes) was a lot of work. I've lost the reference, but this seems to be due more to the introduction of a flipped classroom forcing them to actually do the learning activities more regularly.
      • It was hard for both the students and I to assess how long things would take for them to do.
      • In the long term I think this works out, but you definitely have to adjust your assumptions about how much work a student can get done in a week and make sure they have some time to breath around your constant low level work.
      • That being said, videos, especially where I worked topics and examples on paper were very well received and usually the things students pointed out as working very well for them.
    • I found my first year (first semester) students were much more willing to adapt and work in an online context than my returning students. This was true for the first few months, but flipped as we got into the end of the semester.
      • That may have been that I had trouble keeping up with the schedule myself, and the returning students had more context for that situation.


    Things that Apply to Learning Technology in an Emergency Online Classroom

    • Make sure you understand what the student experience of each piece of technology you use.
      • Using Blackboard, I discovered that the feedback I was writing to students, and which appeared alongside their grade in *my* view, were not shared with the students unless you changed *several* configurations.
      • Using Blackboard, I also discovered that if students are using their phone to look at the course (and they are) then details under items aren't shown, so they often didn't see links available in the description of an item.
    • Have Plan B in place, even if you don't think you need it.
      • Our primary tool for practicing coding shutdown in October. The effort to replace it was astronomic and took myself and one of our staff the better part of 2 weeks to replace. Even then, we didn't get the system really nailed down until the last few weeks of class.
    • If you happen to be teaching at Mount Royal University:
      • You are not supposed to "title" your questions in a Blackboard assessment.
    • If you happen to be using Blackboard:
      • You should, under no circumstances name a question "null".

    Things that Apply to a Programming One Class

    • Trying to stay language agnostic and approach the basic concepts of computing and problem solving using Karel the Robot worked fairly well.
      • I regretted not having a perfectly functioning Karel tool, but I started working with the students moving paper doll Karels around and I think that worked well.
    • Transitioning into Java was a bit rough. We had some tech problems (See plan B above) and that slowed us down, but also the sheer amount of extra stuff Java needs for basic programming concepts makes it harder to pick up.
      • Honestly this is the part of the course I'm least sure about. The transition to Java was rougher, but transition students on Python hasn't been as smooth as I want either.
      • I really want to have students writing 1/2 drills a day, maybe only 5 lines of code, but I just want to see them keep working on stuff.
    • I think a Programming One can do without a lot of larger assignments or projects. Generally I think the focus should be on becoming fluent and then in Programming Two they can apply it to something interesting.
    • A lot of the above things are based on the idea that the bulk of the class can't program already. I'm not convinced that's true. I did a survey at the beginning of the semester and the bulk of the students described themselves as having some programming experience.
      • I also struggled a bit keeping the more confident programmers from running away with the thread in class. I think everyone ended up well enough this semester, but I think we need to be cognizant about how experience is handled coming into a Programming One class. 
      • Worth noting that several of the more experienced programmers appreciated how Karel forced them to be clear in their programming thoughts.

    Things that Apply to a Programming Two Class

    • I'd like a giant pool of drills to draw from. Giving students a selection of application areas for a given programming topic would help broaden their perspective. One thing I didn't manage to do but want to do is show them the different solutions they produce for a drill and that generally is easier if you have 4 answers each for 5 questions rather than 20 answers for 1.
    • I like the idea of a semester long assignment or project for students, but I've struggled to find a way to introduce it effectively. This year. particularly, trying to do an assignment along side my students was a real struggle. In the future I'd rather have all of the pieces done, but I will say the students seemed to appreciate watching me build my solution to the assignment as well.

    Sunday, November 10, 2019

    Project 20 - That Code Click - Introduction

    I like it when things click. When I’m programming I love that moment where things go together perfectly, and I love that moment in my own brain when a topic suddenly snaps into focus. I also like when I’m working with students and I see that moment for them.


    This next project is my attempt to share that feeling and to help people learn about all of the stuff in computing that I think is really cool. It’s a chance to look at how things work, how things fit together, how things were designed and how those elegant moments in problem solving come to be.

    I hope this is a chance for me to stretch my writing, teaching and communication skills. Additionally there are a lot of other technical skills I should pick up such as video production and things like that. It’ll also be a nice chance to chase down those topics I’m interested in, but never really have the time to manage while I’m teaching (and then forget about when I’m not teaching).

    For the short term I’m going to simply create a few written articles and upload them here while I start building out the idea. In the longer term I’d like to see a blog and then maybe a fully dedicated website to host those articles and other supporting material.

    For this first iteration of the project, I’m planning to write one article on “Counting in Binary on Your Fingers” a fun trick I always enjoy using to introduce binary numbers. I’d like to get that finished some time before November 29, including text and my own photos to illustrate. I'll also put together a list of future topics I'm thinking of. If you happen to have a great computing "click" you'd like to suggest, let me know.

    Reading

    I’m not sure that anyone, myself included, really needs this post. On the other hand, I read a thing about re-reading and I want to write ab...