BACK TO SCHOOL SALE!
50% OFF for the first month on all servers with CODE: SCHOOL
The Apex Hosting 2017 Scholarship Winner Has Been Chosen!
We have been overwhelmed this year by the number of submissions we have received to our scholarship program, but we have finally chosen a winner!
The winner of our scholarship 2017 is Mr Ryan Wheeler for his essay on Minecraft in education and development.
Here is Mr. Wheeler’s winning essay:
Learning how to code can be a very daunting task. Not only do you have to essentially learn a new language, you must grasp abstract, complicated concepts. When I decided to take a computer science course as a freshman in college, I went in blind. I had never taken a computer science course before and knew virtually nothing about computers. Naturally, that semester was extraordinarily challenging. However, my biggest challenge was not learning the key coding words or memorizing public static void main(String args); my biggest challenge was wrapping my mind around the abstract concepts of the course. Each line of code tells a story, and I didn’t know how to visualize this story; therefore, the line of code never came to life. When I tried to learn difficult concepts through “brute force,” or simply memorizing everything and then hoping what I memorized would be used on a test, it led to hours and hours wasted. If you can’t conceptualize the abstract concepts of code, such as for/while loops, recursion, data structures, and trees, your computer will end up in a crumpled heap (where you threw it out of frustration), or you will likely fail the course and thereby fail to advance as a computer scientist.
After that first semester I was very frustrated with coding, but also very intrigued by it. I recognized the beauty of code as I imagine a baby recognizes the beauty of a Picasso piece. I saw the ooh’s and aah’s of others, I saw there were pretty colors, but I didn’t have the depth of understanding to sense the breadth of beauty before me. I decided to try another semester of computer science so I could have a chance to discover that beauty for myself. I recognized the obvious shortcomings of brute force memorization; I knew I had to find a way to make the code come to life. My second semester I started to draw the code out in a picture. The pictures allowed me to transform the words and figures in a line of code into a coherent story. As I saw the story, the beauty shown through and the code finally clicked.
A revelation I received that second semester which seems rather obvious is this: it’s necessary to look at the art piece in order to understand it, and once you begin to understand it, its beauty shines through. Code is an art piece and if you simply look at it as a series of words, organized in lines, organized in paragraphs, then you will never understand it and consequentially won’t see its beauty. My first semester I didn’t look at the art of code, I looked at words in a line. My second semester I drew out the picture behind the words, and the beauty shined through.
I learned how to code and fell in love with it because of visualization. This is precisely why Minecraft is a fantastic way to teach how to code. Minecraft is visually appealing and fantastically open to creativity and ingenuity. This makes it a perfect platform to transform the abstract into visual. The wide variety of textures and colors make it easy to demonstrate how classes and methods are related or how parameters are used in methods by relating them with color in a structure. Additionally, different colored blocks can be used to demonstrate the different execution of if/else statements. The three-dimensional nature of Minecraft makes it a great way to visualize how certain loops will execute if you create pseudo-code that involved for/while loops and a command to place blocks in those loops. The 3D nature of Minecraft also would allow a visual demonstration of how to print, traverse, and shift items in an array. Pistons and blocks could be used to demonstrate how different data structures are created and how items are removed from different data structures, such as the difference between stacks and queues. Even the difference between linked and array based data structures could be built out using blocks and fences to represent links. The visualization of these links would also provide insight into why linked data structures cost more memory than array ones (except if the array is not close to full but even this could be visually shown). Different colored blocks associated with different values along with fences could be used to demonstrate how heaps are created. A similar system could be used to create a visual of trees and a visual of how an array is sorted. Each step in the sorting process could be built out with colored blocks associated with values, which would illustrate the efficiency and process of different sorting methods. Even recursion, a concept especially difficult to visualize, can be represented in Minecraft by using different colored blocks to represent each level of recursion. A pseudo-code method that commanded placing blocks using a recursive call could then be subsequently built by students. On top of all of this, the Redstone system in Minecraft is a great way to build out the difference between certain loops and see how if/else impacts the execution of loops. Indeed, every concept I struggled with my first semester and even my second can be visually created in Minecraft. The utilization of this visual platform is a great way to give students such as myself a new perspective on hard to grasp concepts. With a visual platform, corrections to student mistakes would be much easier to explain and understand.
The key for my understanding and subsequent passion for coding was recognizing code’s beauty. And I see no better way to portray the beauty of code than through the alluring visual world of Minecraft. By building the concepts of coding in the Minecraft world, there is a physical representation of the code in front of students. Students are engaged and creatively challenged. This is a recipe for understanding and subsequent passion for code. I want to become a computer science teacher after I graduate because I want to share my love for coding with others. I now see how using Minecraft could transform my classroom. By having to creatively build out concepts and not just write them down on a piece of paper, the concepts will not only make more sense, but they will stick in memory. Students have done an unthinkable number of worksheets, but they have never been able to use a virtual world to simulate core concepts of their learning. Engagement is key to learning anything, so using an engaging platform like Minecraft would be of great use to keep students interested in the material. The visually appealing nature of Minecraft combined with the creativity and ingenuity of using Minecraft blocks and objects to build out code will make the challenging fun and the mundane exciting. Minecraft would make class fun and fun necessarily leads to a liking of a subject. Not only can I use Minecraft now as a student to visualize concepts on my own, I see how I can use Minecraft in my future career as a computer science teacher to pass on the fun in coding, and hopefully the subsequent passion and love for it.