Teaching Iteration and Recursion in Chapter 7

Today I taught the first part of chapter 7, which focused on introducing iteration and recursion through evaluating palindromes.  I essentially used the monitor to type my code for the three different methods on the screen.  The python web browser we originally used appeared to be for python 3, so my code did not properly run, but I was still able to take my participants through the mechanics of creating the functions.  I introduced the first method, which creates a copy of the word, reverses it, and compares it to the original.  I introduced iteration, which compares the first letter to the last, second letter to second to last, etc.  Finally I introduced recursion, in which the function calls itself to complete a task.  I also went over some of the costs and benefits of each method.  For example, the first method looks neat and clean, but could hog up memory by having to create a copy.  In contrast, iteration creates a longer method, but resolves the memory issue.  My main self-criticism is that I only have a more general understanding of recursion as a principle and I was not able to fully explain each individual component of the recursion method.  But my hope is that my examples were able to provide my participants with a solid overview of iteration and recursion as problem-solving methods and coding tools.  The following are screenshots of my version of the three functions, which I retyped and displayed during the lesson.

palindrome-1 palindrome-2

Moving Right Along With Python

This week has really been about solidifying some Python coding basics.  On the teaching days I’ve been a part of groups reviewing/reiterating material from chapters 5 and 6.  My hope is that this helps us move forward with more creatively oriented concepts in chapter 7 and beyond.  A lot of coding depends on syntax and correct structure, and it’s very easy to get an error from very simple mistakes.  My hope is that after this week I’ll have obtained the tools I need in order to avoid some of these errors in the future.

On Monday we had time to discuss our projects.  I had a really great conversation with Ahad.  My project is video-oriented, and I’ll be filming original content.  While I’m very familiar with video-editing, I’m not as familiar with audio-editing and audio recording, and I know that having quality audio is very important in creating a professional-grade video.  Ahad was able to provide some advice about some tips/tricks I could use to improve audio quality, and reiterated some of the microphone/camera advice I had gotten earlier.  I think he’ll be a resource I use in the future if I run into issues with my project.

Progress Report 1

For my big project I’m hoping to create a video filmed and edited entirely by myself, with post-production being conducted with more sophisticated video-editing software.  My project has remained pretty consistent in my overall goal, though I’ve come up with a few different options as far as the type of content I may shoot as I’ve been looking into the practical aspects of completing my filming and subsequent editing.  I contacted a friend of mine who works at the Digital Knowledge Center to get some advice for which equipment to use.  I was already leaning towards using the EOS Rebel T5i cameras (as I have experience using them over the summer), but hadn’t really used them for recording audio in conjunction with video.  She indicated that the audio capabilities of the camera are okay, but suggested looking into a usb mic to hook on top of it (specifically a rode mic which I should be able to check out from the HCC or potentially borrow from Jesse Stommel).  She further suggested looking up online videos for the equipment (which I think would be especially helpful for the microphone).  In the event that I am unable to successfully record audio simultaneously with the visuals, I could potentially record voiceovers and use music in post-production to create a mocumentary/documentary type feel (similar to BBC nature documentaries or the True Facts YouTube videos).  This will be a good backup plan if I’m unable to find the right microphone or if I later determine the audio that I do gather is of subpar quality.  This will mean that during filming I need to make sure I have a mixture of audio-centered footage and more visually-centered footage to ensure that I am prepared for either type of video end product.  My next step will be to look into securing one of these rode mics and watching some tutorials on how to successfully couple them to a camera.  As my project progresses, my guess is that it will be the audio component that I will need the most help with, so I will hopefully keep in contact with my more audio-experienced friend to help with trouble-shooting.

 

More Python

This week was a shorter week due to Fall Break, but we still went over some new information.  On Wednesday I learned more about the conditional, and on Friday I learned more about creating functions, the cultural implications of coding, and examining and manipulating strings (which I taught on Friday, which is covered in this post).  In some ways I’ve progressed faster and yet paradoxically more slowly than I thought I would.  It seems like I’ve started to cover some more creative aspects of coding, such as moving into the text chapters.  In this regard, I’m excited for the next few weeks, as I think I’m going to be exploring more complex and creative topics.  At the same time, many of the chapters we’ve covered so far have almost been review for me (covering the conditional, creating functions, etc.).  While this means I may not have learned as much new content as I was expecting, this is perhaps a testament to the coding skills I’ve already built over the past year or so.  I didn’t realize how translatable they would be to other languages, so this has been a pleasant surprise.  Overall, I look forward to continuing to progress in Python, and delving into the big project for the semester.

Teaching Examining and Manipulating Strings

Today I chose to teach a chapter 5 text topic.  This section essentially discussed how to navigate different strings and adjust outputs from them.  During my teaching I went over the basic structure of creating different string outputs, which I outlined as ‘string’ [ _ _ _ ]

I described how the first blank essentially tells the program when to begin, the second blank tells the program where to stop, and the last blank tells where to skip (where applicable).  In these spaces, you can have integers corresponding to the list number of each letter (0 for the first letter, ect).  If you are starting from the very beginning or the very end, you can use a colon.  And finally, if you wish to begin counting from the back, you can use a negative number (so -4 would tell the program to start 4 letters from the end).

After going over the basics of navigating strings, I was interested in further exploring skipping.  The immediate application that I could envision was using the feature to create a sort of secret code.  I encouraged my participants to create a function with what was essentially a nonsense list, where with a skip function, a message could be revealed.

secret-code

The above is a copy of the example I did to demonstrate the task I had in mind.  I used ls as my filler letters to make what I was doing easier to visualize.  My group seemed pretty impressed, and I thought it was a rather neat way to apply a creative/functional task from the skip feature.  Furthermore one of my participants said she now understands this section of the book, which really pleased me as a teacher.

Our table had 3 teachers today, and I was last, so I was a bit pressed for time.  Furthermore, not everyone had immediate access to their Python programs, so I essentially had to provide the demonstration (as opposed to having all of my participants create their own personal secret code).  However, my hope is that some of my participants might be interested in exploring this task or other applications of the topic on their own time, now that I’ve hopefully provided them with the tools to successfully do so.

Continuing Programming

This week has been an interesting dive into programming with Python.  In our first class, I was leading a discussion of patterns of code that went pretty well.  These sections of code were laying the foundations of programming, including covering the basics of organization and formatting (from content to spaces).  In our second class, I joined a fascinating discussion about the cultural and social context of programming.  We talked about how sometimes, choices in coding can leave people out, whether it be people with disabilities, nonbinary individuals, or senior citizens.  We ultimately talked about how capitalism makes it difficult to create the motivation to address these issues.  If the end goal is to make a profit, it’s easiest to sell to the easiest/most profitable/the majority market.  That ends up having consequences for those who are left behind in terms of access.  Finally, on Friday we had quick paired-up discussions of our project proposals.  These were very quick conversations that introduced our ideas and led to some back and forth with some suggestions.  I was able to run into a few other individuals working on video-related projects.  I’m excited to hear from these individuals when we get to the project-related teaching sections.  Overall I’m excited to start applying the foundations of Python and start delving into my individual project.

Proposal

Executive Summary: I am proposing a video-based project where I create a short film created from footage shot and edited by myself.  This will require video-editing, audio-editing, and filming skills, with the audio component (and any image-related editing), having the potential to be the most challenging.  The content of the film itself will most likely revolve around the DKC, with shooting taking place largely in October and editing taking place largely in November.   This video should be evaluated based on both quality and evidence of effort.

Rationale: The purpose of this project would be to elevate my video-editing skills to a more professional level.  To accomplish this, I would create a video using Adobe Premiere and potentially Photoshop.  The footage used would be footage shot by me, as opposed to existing footage.  I have lots of experience creating fanmade and mashup movie trailers, but not much experience in shooting my own footage.  This experience would potentially prepare me for an internship I’ve applied for in the spring with a short film/documentary company.  I would be gaining some practical experience both with shooting footage and editing it.  The theme of the video may be a sort of “A Day in the Life of the DKC”, which will hopefully be released on YouTube.

Risks and Rewards: I think the biggest challenge with this project will be the audio component.  With existing footage the audio is usually already clear and set, so I may have to experiment with different pieces of equipment to ensure that any audio I collect is clear.  Additionally if I choose to edit my footage visually, I will need to incorporate Photoshop and enhance my image-editing skills.  Since I don’t have a ton of Photoshop experience, this may be a challenge.  If the project is successful, it could serve as a sort of bonding video for the DKC, and potentially as a sort of advertisement.

Resources: To complete this project I will need video-editing, audio-editing, photo-editing, and filming/recording skills.  Needed software will include Adobe Premiere and potentially Photoshop.  I may also need to check out camera equipment from the HCC front desk.

Schedule: Ideally by November 8th I will have completed all filming.  This will give me about three weeks to work on editing, leading to a completed project by December 1st.

Assessment: The final product should be evaluated based on quality and evidence of effort.  My hope is to make a professional-looking final product that shows quality in both the shots themselves and the subsequent editing.  There should be a variety of visually-appealing shots, a coherent storyline, and good transitions/flow.

Entering Exploratory Programming

Last week we began to actually turn to the more hands-on section of coding.  This included downloading the software required.  I actually began by downloading version 3, but after consulting with a computer science major redownloaded version 2.  In beginning Nick Montfort’s book, it’s clear that it’s unlike most computer science textbooks.  It’s very wordy, often using analogies to illustrate various points.  Interestingly the book will often have you complete exercises incorrectly so you have a familiarity with different types of errors.  Furthermore, I appreciated Montfort’s justifications for learning coding more so then some of the articles we read last week.  It provided good arguments about the benefits of coding without necessarily using apocalyptic type arguments.  I also really enjoyed our exercise in editing existing code to create our own poems.  The poetry reading in particular was very engaging and helped us to visualize the creative aspects of coding and how the arts can apply to this discipline.

The First Day of Teaching Python

Teaching in this portion of the class is fairly different from the first portion.  Our peripheral teaching days were discussion based, and often involved facilitating conversations and creating connections to outside pieces of media/the real world.  In contrast, teaching code involves a bit more of me explaining things to my participants, and ending with some exercises.  In this way, the first portion was perhaps more “englishy” and the second is more formal.  I began my teaching process by discussing pitfalls I personally ran into during this chapter, and linking them to the Chapter 3 concept: Patterns in Code.  This included the importance of proper naming and spacing.  I also discussed how it seems like Python has combined the idea of spacing and brackets, which were separate entities in Java (another form of code I have some experience in).  This makes the spacing essentially more practical and important, rather than merely organizational.  We also discussed how it can be difficult to find errors in code that you’ve written, and some potential strategies include taking a break and looking at the code with fresh eyes later, or finding a friend to take a look, who may catch an error that you overlooked.  Finally we ended by incorporating the calculating chapter, editing the function and name to create new outputs.  From this experimentation we determined that the term “element” could be added multiple times to the mathematical expression, that negative numbers could be generated, and that division results in no decimal places.  I’m hoping that my student had a better understanding of the formulating a function, and was able to better apply the calculating chapter.

Manifesto

Ahad, myself, and Nicco constructed a minifesto from our respective ones we created before class.  The result was the following: “Coding is a valuable skill utilizing a blank canvas, creating something tangible from the nearly intangible.”  I believe this serves as a great jumping off point for my manifesto.  The phrase “valuable skill” suggests that learning coding is practical and has importance, adding a certain amount of imperative to mastering it.  The phrase “blank canvas” suggests a certain freedom to craft what you desire.  Finally, I believe the last section, “creating something tangible from the nearly intangible” can serve as a goal for the coding section of the class.  Essentially I hope to use the language of coding (the nearly intangible) to create a product that can successfully accomplish some task.  A “reach goal” would perhaps be to make my way to the Text III and/or the Statistics and Visualization chapters.  I have some basic knowledge, having had some exposure to html and having taken an intro to computer science lass over the summer (which utilized Java Applets), but have never worked with Python before.  I would love to be able to have a high enough proficiency with Python by the end of this semester to be able to put it as a skill on my resume.  But on a more philosophical note, I would love to be able to have a deeper understanding of computer programming and further my knowledge of the digital.