Reflecting on Computational Thinking and Computer Science
The "Finished" Product
These weeks fly by when you try to "casually" approach a programming activity. Something to note is that a programming project involves specific and dynamic thought which is difficult to step away from and pick up where you left off. Although I have more goals for adjusting my Python project of the Visible Light Spectrum, I was able to figure out solutions to my issues. Last week, my main issue was figuring out a way to display colors in the proper frequency and wavelength ranges to represent the colors of the visible light spectrum. I wanted to try to fill in the area under the curve with multiple colors at the associated wavelength and frequency. Originally, I was plotting frequency (x-axis) against wavelength (y-axis). However, I realized that colors are primarily defined by their frequency and can have altering wavelengths through different mediums. Therefore, I decided to use frequencies as a label on the x-axis, thereby treating them as independent variables. In addition, I felt that a line graph could be a bit misleading since wavelength (height of the graph) could imply that it is a "less common color". Therefore, I changed the graph type into a bar graph. On this bar graph, frequency ranges of each color were depicted both by a label along with setting an approximate width to each bar. I made sure to change the position of each bar so that each of them were connected. This would help to connect to the idea that there are no gaps between the transition between colors. The one thing I worry about with this image is that students will think that there is a positive relationship between wavelength and frequency. This could be adjusted by flipping the bar graph if necessary but I wasn't sure which would be easier to comprehend. Here is where I stand with this project...
My code was simplified by using the bargraph function of the Matplotlib library. Although it was simplified, this is a totally acceptable phenomenon that I believe gets overlooked. Just because a process is simplified does not mean that it is a "cheat" or a "shortcut". Sometimes, simple is better! Although the project is complete for this class, I plan to continue to update this model by adding the slider "widget" and having it associated with frequency. When interacting with the slider, it would show the wave change in frequency and wavelength (in a vacuum), and show the color of the frequency in the background. This would ideally take place right above my other graph. Takeaways from the project
As stated earlier, one of the main takeaways from this project is that working simple is the best way to approach programming. There are an infinite amount of ways to complete a project, but the best way is to follow your thought process and think of the least convoluted solutions. It can be easy to look up the code online and find someone else's strategy for completing the project. However, by doing this, we may not be aware of all of the ins and outs of the project if we ever wanted to change something, nor is it safe to say that the project is performing what we intended it to perform. Working out the details on your own allows for you to know exactly what is happening at each step. Another takeaway is that patience is key. It is easy to become overwhelmed and frustrated while coding. However, when something works, it is an amazing feeling. The frustration component is definitely why I chose not to pursue it as a career. If someone is telling you that you need a program that produces x, y, and z, then it can be extremely stressful. When programming for your own use, you can pivot, change course, and learn about something completely different. Programming is practically an art form for this reason. I am glad that we took on this open ended project as it got me to think about the foundations of programming in a deeper sense. I now know more about what a library consists of and how to troubleshoot in simpler ways. In addition, I now see a larger spectrum of programming. Inexperienced people can jump into coding with libraries that simplify the process. These same people can gradually increase the difficulty of their projects. There is no threshold that makes someone a programmer. We are all programmers when we look to solve problems with this systematic and robust process.
Engaging Students
I would love to get students to practice programming more often in schools. However, I feel like we have been trying to incorporate computers into education for a long time but have had little progress. There needs to be more aggressive changes in curriculum flexibility so that teachers can incorporate this further. Perhaps computer science should be its own course that becomes a staple to every education. In my class, if I cannot get kids to utilize programming to work with data, I will make sure to incorporate the style of thinking into as many lessons as possible. This means that students will create their own instructions when appropriate. For example, most lab experiments are "cookie-cutter" projects guided by explicit instruction. Instead, students may be able to better portray their understanding of a topic by creating their own process that is unique to them (provided they follow basic principles of scientific method). Students should learn to troubleshoot when they are stuck and should be encouraged to explore their interests and find their own unique answers to share with others. I believe that this style of learning is what can change kids' perception of school. Too many students coast through school, saying how boring and useless it is, and how they are only there for the diploma. School's primary purpose should not be the diploma, but it should be a place for students to test their limits, develop new skills, and understand realistic problem solving. If we truly stick to the "non-cookie cutter" model, I think that school can start to become enjoyable for many students.
Next Steps in Learning
I want to learn more about how to successfully implement computer science practices into the classroom. I know that there are many schools that promote science research and design, allowing for students to be flexible learners and serve as the leaders of their own education. However, I know that a lot of this opportunity likely comes from a budget. Lower income areas may not have access to such opportunities. In addition, many students and parents want an education that will translate to getting into a good college. I would like to know more about how colleges perceive the more progressive programs. If we can establish more of a relationship between universities and grade schools, perhaps students will get more out of their education. This could include the sharing of resources, thereby creating a larger learning community. There is an unfortunate amount of politics that dictates policies within this scope. Learning more about this could help me to figure out more solutions on how to implement computer science thinking into education at a larger scale.
Comments
Post a Comment