Learning to Code Online

When I started out in ECI 831, we were asked to consider a learning project.  The goal was to learn something new that we had never tried before.  Through documentation of our learning in an online setting, we would not only be learning something new but also reflecting on the process online.  I decided I would start learning to code.  I had a student in my class who was quite keen on it so I decided I would give it a try.  It was a bit of a rocky start, I have to say, because I was unaware of the sheer number of different programming languages available.  It was tough to know which one would be the best to use.  In addition, there were so many different places to learn as well.  From open online courses to dedicated sites for coding like CodeAcademy, and Hour of Code.  I started with Java and Javascript as a base because of the ability to do simple animations on websites etc.  It took me a while to be able to get a handle on how to give commands to the computer.  In this sense, as I’ve alluded to in the past on this blog, it really is like learning a new language.  Each function also has specific parameters that allow you to fine tune the action.

Once I completed a few smaller projects, I decided I would try to write a program that explained what I had learned during the term.  I used javascript to start writing a program with the help of some tutorials from Kahn Academy.  I have to say that the online coding community is awesome and very helpful when it comes to new learners in coding.  Below you can see an example of some issues I had with my program.  Within a few hours, several people had offered advice and one person had even sent me an example of his program to look at.  I have to say that overall the learning has been augmented by the social features built into the various online learning websites.  It’s imperative that learning takes place alongside others, even if you aren’t face to face.   Screen Shot 2016-04-10 at 1.43.09 PM

In the first blog post in this series, I stated some of my goals for this learning project.  Firstly, I wanted to learn about different coding languages and choose one to learn.  Secondly, I wanted to get a a basic understanding in a programming language to the point where I could carry out a basic task like creating a simple program.  Lastly, I wanted to learn a little about the basis for teaching in schools, the value in it and how I could possibly incorporate coding into my classroom.  Having set all these goals, I set to work learning to code.  Even after the coding for the course of this term, I still have a lot to learn.  In retrospect, it may have been a good idea to join an online open course dedicated to coding but I had little available time to commit to this so I chose to learn at my own pace.  Making connections online was at times difficult because I lacked a certain vernacular to participate in online chats and forums.  Twitter and coding chatrooms became a great source of information for me and I soon began connecting and asking questions of other coders.

Yoda_meme

Photo Credit

After a few initial projects, I started working on an interactive story that would serve as a summary of learning for the class.  It became apparent immediately that even to make a simple program would require hours and hours of coding.  Calling images or animating them was another process altogether.  One of the biggest things I learned during this whole process was patience.  It took a lot of patience to keep plodding along even though at some points, all I was able to accomplish was to make a simple button that clicked to the next screen.  I hope that this is something that will help me in the future as I teach my students how to use online spaces for learning.  These online contexts are so rich for reflection and documentation of learning and collaboration.  I still have lots to learn with regard to coding but in reflection on my goals set out at the beginning of the term, I feel that I have definitely, solidified in my mind the importance and benefits of teaching coding in the classroom, become familiar with coding on a basic level, and participated in online learning and documentation.  So, without further ado, have a look at my first interactive story.  I programmed this using Kahn Academy.  Hope you enjoy it!  

Luke Learns About Social Media

https://www.khanacademy.org/computer-programming/luke-learns-about-social-media/2956636555/embed.js?editor=yes&buttons=yes&author=yes&embed=yes

Made using: Khan Academy Computer Science.

Featured Image Credit

  

 

Advertisements

Creating a Computer Program Can’t Be That Hard, Can It?

For the past few weeks I’ve been working on coding my summary of learning project so I thought I’d share a little bit about the process of setting up your own program.  I decided to use Kahn Academy programming interface to set up the program which in my head would run like an interactive story of sorts.  The idea was to have characters in the story and include some animations and basic functions.  I chose to start with Javascript because so far it’s the language I’ve used the most and it allows for simple animations and basic functions like mouse clicks.  I have to admit that initially I had bitten off more than I could chew.  Mouse click functions turned out to be fairly straightforward.  The key is to make sure that the correct page is called up when the button is clicked.  Going through the process reminded me again of the connections between editing skills in writing and combing through your code to see where the problem is.  It takes a keen eye.  Sometimes it’s as simple as a missing semi-colon or an un-closed bracket.

animation

Photo Credit

The second new trick I learned was how to make things move on the screen.  This was a bit more difficult because there are more parameters to keep in mind with the movements.  You have to basically tell the computer where you want the image to move, for how long, where to start, where to end, etc.  This took quite a bit longer than expected because I was reading and watching tutorials but I eventually had to take a look at some sample code to get me started.  This is where a open education course may have helped to give some further direction for my learning.  It becomes difficult to self motivate when you get stuck.  The beauty of online learning is that you do have access to a wealth of network options to ask questions.  It was great to go on some of the coding forums and ask questions to get clarification for how to set this up.  Twitter was also a huge help in finding great little nuggets and tidbits of information such as the one below.  This was a good article to read because it helped me realize how my program was being slowed done by clunky pieces of code.  For a smooth running program it is so important that the code is as succinct as possible.

The experience has been meaningful in many ways.  It has taught me patience, persistence, and has given me pride in learning a new skill.  It has also given me an appreciation for online learning and the importance of networks.  They give insights that would otherwise take years to uncover.  It’s a wealth of interactive knowledge that we have access to at any time of day or night.  In the end I will hopefully have the program finished in the next few days and will post the link when it is finished.  Although it has been a long and sometimes frustrating process, I feel as though I have definitely learned a lot and hope to continue with coding in the future.

coding-super-power

Photo Credit

Learning to Code, or Coding to Learn?

Over the past couple weeks I’ve turned my attention toward coding an interactive summary of some of the big concepts we’ve covered over the course of this term in ECI 831.  I have found that Javascript has been a lot of fun to use and has also allowed me to focus on one programming language in greater detail.  It has been interesting to read some of the other learning projects over the past few weeks as well.  In many ways, learning to play music or learning a new language has many similarities with learning to code.  The only difference is the type of language.  While Sarah Wandy and Logan Petlak are learning to read and speak using notes and bars, Amy Singh and Ashley Murray are learning a whole new set of vocabulary.  The language of computers is an interesting one because it is the means to communicate with an inanimate object.  I sometimes catch myself muttering to the computer incessantly as I try to get the coding errors to resolve themselves.

The reality is that unlike when I was learning French, there is no one there to tell you if you are giving the computer the correct commands.  The program either works or it doesn’t.  The lack of direction or interaction when learning online has been a challenge but I have appreciated the opportunity to slowly increase my understanding of coding with Javascript as it applies to animations and drawing.  As with anything that’s worth doing, it takes an incredible amount of time.  As a dad with young kids, it’s difficult sometimes to work on coding projects during the week.  So, I’ve learned to set reasonable goals for myself.  This helps me to stay positive and not to get frustrated when the program isn’t running the way that I want it to.  It’s been great getting inspiration from other developers online and chat rooms and communities of coders are a huge advantage when it comes to resolving issues.  In the end, learning anything new is going to be risky.  But, as Einstein once said…

einstein

Photo Credit

It gives me great encouragement watching young students get excited about programming because it is a skill that is so much more than simply learning to give commands to a computer.  As Jonathan Buchanan describes here, the skills used in programming are skills that can be applied to a variety of situations.  If a 10 year old can create their own app on the app store, surely I can learn to make a simple program of some kid right?

I was never a student who excelled in Math or Science so this has been especially challenging at times.  I have had to push myself to dive into the functions and how they work in order to understand the order in which to do things.  It is at times intimidating and I can not begin to tell you how much I have appreciated having the internet as a resource to look things up or to post a question about my progress.  I’m not really sure if I’m making good headway or not but I feel like every time I sit down at the computer to work on coding, I’m coming away with a a new tidbit so that feels good.  This short video sums up in some ways how I feel about coding but I know in the end it will be worth it.

I definitely don’t believe I could have gotten as far as this in one day without some help but on the other hand, it is always useful to remember that the networks of fellow coders are constantly posting and updating endless streams of code.  In this way, as is shared in the video, we can build on the work of others without having to start from scratch.  I’m constantly reminded that learning is a connected activity.  This is really comforting and makes me realize that in the end, it’s not me against the machine.  It’s me and a network of humans interacting with machines to help make the world a better place.

Is Learning to Code Purely an Individual Endeavour?

As I’ve explored different platforms for learning to code, it has been a rather solitary experience.  Aside from following the odd Twitter chat about coding or reading through comments and questions of coding forums, most of the exploration has been on my own.  Websites like Code Academy, Code Avengers, or Kahn Academy have geared their lessons towards individual learners although they do have comment sections to facilitate questions, it is hard to make real connections with others. This week I used Code Avengers to learn how to make simple games.   Here is a 2 player game that I finished this week using Javascript.

So, is learning to code purely an individual activity?  After all, there is usually only 1 person behind a computer.  True, it is sometimes in your best interests to challenge yourself to be able to finish the tasks on your own and to see how you’ve grown as a coder but, the puzzle type nature of coding makes it a lot of fun to work on with a partner or a small group as well.  Check out how these students from Phoenix, Arizona responded to questions about coding in groups.

Clearly even young coders enjoy the opportunity to code together or to use collective reasoning to solve more complex problems.  Experimentation has been a useful tool in my own learning as I have several students who also enjoy coding.  We have started a type of coding club at lunch a few times a week in which we experiment with different code languages and share what we’ve learned.  We are all at different levels.  I find myself at the lower end of the spectrum when it comes to coding skills.  The other students have been teaching me a lot about HTML especially.  It is great to be face to face and able to share problems and success stories with each other but there are many tools online that allow collaborative coding a well.  For example, Code Share is a site that allows you to video conference with a friend or co-worker as you both have access to the same code page.  Changes can be made in real time by either person, similar to google docs.  For younger students, there are introductory coding activities like Ozobot that allow students to learn coding strategies through drawing code for a robot to scan and follow.  How cool is that!

One of my students in particular has been extremely helpful throughout this journey and it was actually his idea for me to try to learn coding.  When I taught him last year, he would often finish his work and start working on coding projects.  He seems to have an incredible knack for the various coding languages and love solving problems.  Here he is sharing about how he got started with coding and why he enjoys it.

Aside from coding with some of my students, I also wanted to be able to connect with some other online coding communities.  I think the learning is going much better with additional supports just as in any learning endeavour.  It’s been great to be able to connect with other coders and ask questions when I get stuck.  I used the list below to find some different sources that looked interesting.  Ultimately, I settled on the  Google+ community as well as on Reddit.  Both of these communities are platforms I am familiar with and so I decided to start here.  I wanted a space where I can ask questions without feeling  Below I’ve included a list of other online communities that cater to coders both professional and beginner.

Programming-Communities-by-Popularity

Once I started connecting with coders online, I quickly realized there was a vernacular that I did not know and therefore I was less able to grow my network.  Luckily, I came across a great post on the CodeCondo website that gave a list of common coding phrases for beginners.  I started to understand that learning to code has so much to do with languages.  Not only the different coding languages (Python, HTML, Java, Ruby, CSS, etc) but also the phrases used to describe the code itself.

Dialect-of-Programmers

Photo Credit: CodeCondo.com

Coders seem to have a very dry sense of humour as I quickly discovered.  However, coding communities do have one thing in common, they are extremely open and will often collaborate on code together.  Pieces of code are reworked and shared back and forth constantly.  Code that is broken or needing an overhaul is quickly adopted by others as a personal project.  Bugs are worked out through suggestions on online forums.  As the Open Education movement becomes increasingly popular, the world of coders has many insights to share.  These are perfect examples of people from all over the world devoted to helping one another learn and meet challenges together.  Isn’t that exactly what we want for our students?

Featured Image Photo Credit: Wikimedia via CC

(De)Coding Animation : Setting the World in Motion

Over the past few weeks, I have been working on some animation in my coding project.  It was the next logical step in manipulating graphics for a specific purpose.  In this case the process was a little more involved and required 2 sets of code.  I decided to try to create a working model of the solar system since it is one of the required units of study in the Saskatchewan Grade 6 Science Curriculum.  For this project, I required the use of html to call up certain web images to represent the planets and the sun.  This was relatively simple as url’s could be used once the suitable image was found.  The second batch of code was slightly more complicated as the animations for the orbits had to be adjusted to represent the speeds at which the planets orbit the sun.  Below is a video explaining what the different parts of the code represent on the screen.

The application of these types of animations are especially usefully when certain scientific principles can not be concretely tested or viewed.  Several examples from the middle years or high school curriculum would be units on the Solar System or cell structures.  As we have seen from Gardner’s Multiple Intelligences Theory, it is widely accepted practice to allow students to demonstrate their learning in various ways so as to promote deeper understanding.  If a student is a visual learner, they will perhaps have a better understanding of the inner workings of a cell through the use of pictures/animations or videos than they would through text.

Multiple Intelligences Model

The ability to animate structures, at the microscopic level in this case, allows students an inside look at something that they would not otherwise have access to.  Teachers could potentially even use flipped classroom strategies to allow students to view the animations at home and then go through group activities in class the next day.  This technology also comes in handy when learning the workings of things like the Solar System.  Animation of the macro level of science is also extremely useful for student understanding.  Here is one example of an animation of cell structure for a high school Science class.

Amjad Desai, a computer animation professor and technology blogger, has outlined the benefits of animation as a learning tool for both elementary and high school students.

Benefits of Animation as an Affective Learning tool

  • Emphasizes development of students’ skills and understanding of creating and responding.
  • Enables students to apply Imagination & Rational Thinking.
  • Enables students to invent and explore multiple solutions to a problem.
  • Enables students to understand the value of reflection and critical judgment in creative work.
  • Facilitates positive peer interaction, including receiving and using feedback.
  • Encourages self-motivation to create and problem solve.
  • Uses artistic literacy as a natural enhancement to learning in other content areas.
  • Fosters positive attitudes toward Art & Animation.
  • Introduces career possibilities.

Advantages for Primary Students

  • Ignite the creative potential of your students at a young age.
  • Perfect introductory tools to learn animation.
  • Can be used for presentations/ assignments in science,history,geography classes as well as in after school programs.
  • Contribute to increase focus and concentration in class while having fun

Advantages for Secondary Students

  • Strengthen your students talent and skill set
  • Strong tools to teach foundation of animation
  • Promote creativity and motivate students
  • Incorporate animation into different subjects to create more engaging presentations
  • Develop story telling skills

There are also many instances in which animation can be used for teaching history/geography as well.  Again, this becomes useful when students who are primarily visual learners are studying events that happened well before photography or television. The following is an example of an animation of the disappearance of Pompei.  These types of animations of historical events can be powerful starting points for reflective writing pieces/journals or even blogs.  Historical events can be presented with a mix of authentic source documents and animations of how the events transpired.  Therefore, it becomes a powerful teaching tool for educators to add to their toolkits.

As I continue to reflect on the use of animation and coding in education, it strikes me as a great way for students to demonstrate their learning or to create something new. Animations also have numerous advantages when it comes to student engagement.  This is especially true in an age when students are used to being engaged by technology at all times.  As mentioned in previous blog posts, the time it takes to finish a coding project is substantial and this has caused me to reevaluate the final product for my learning project. As I explore possible ideas for an end product to demonstrate my learning, I will have to decide what will be beneficial and also useable in my teaching practice.  I will also be working with a few students and speaking with them about the benefits of coding for their learning.

 

Line by Line

Photo Credit: http://www.codinggeek.com

Well it has been just under a week now and I have been exploring the many different languages of coding, the uses of each language, and deciding where I should focus my attention. An obvious start was looking into Java because of it’s prevalence on the web, it’s relative ease of use and it’s compatibility with other programming languages such as HTML.  Since I am starting this adventure with zero knowledge of how to code or even what coding was, I started with a short Hour of Code lesson that I came across on the Kahn Academy site.   As a preface, the Hour of Code initiative is a promotion of Computer Science Week in December in which schools and institutions worldwide take part in an hour of introductory coding.  My first lesson was a drawing lesson in which I learned the basics of how to make shapes appear on the screen using code.  It took some time to get used to how the functions worked but after a few tries I was able to create a simple but rather cute penguin.  Here are my first ever lines of code and the resulting penguin.

Penguin

“Project: Wild animal”

This second bit of code written in Java script, allows the animation of text.  When you hover the mouse over the name the text scatters and reorganizes.  This took a little longer but the possibilities of something like this for website development are very open.
(Unfortunately Javascript can not be embedded into wordpress.com pages)

This bit of coding made me realize a few things very quickly:

A) Coding is insanely addicting and you have to be very careful to set limits on the time you’re are willing to spend on coding projects.

B) Coding is, at the same time, great fun and quite frustrating.

The fun lies in the small perceived rewards gained by watching shapes and colours appear based on the codes that are typed into the computer.  Type ellipse and a circle appears, type rect and a square appears.  The tricky part is setting the right parameters in the parentheses in order for the shape to appear on the screen.  I was never much of an artist when I was in school.  I couldn’t seem to make my hands create the things I was seeing in my head.  It is interesting using computer code to create art without using my hands.  In this sense it seems that the interaction between artist and medium is more complex but at the same time very rewarding.  Patience becomes the key factor in designing and creating using Java or Java Script.

As I reflect on the possibilities of drawing or animating using code in an educational setting, it occurred to me that the potential for teaching coding through art to master key concepts is tangible and relatable to students.  The language of the code itself is fairly straightforward once you learn the different commands.  I have decided to look into the graphics possibilities and interactivity that can be built into websites and logos using some simple animations.  My next step will be to access a few other tutorial sites such as Code Academy to further my learning about the functionality of this code language.  As I continue to learn I will try to create something each week to share on this blog site whether it be a simple animation, a graphic, or maybe even a game.  Stay tuned as I dive deeper into the world of coding.  If you have suggestions of types of code or projects I should explore, please leave them in the comments section below.    

To Code or Not to Code?

source-code-583537__180

“I think everybody in this country should learn how to program a computer because it teaches you how to think.”-Steve Jobs

In recent years it seems as though school systems are slowly realizing that the way we are preparing our students for the future is no longer beneficial.  In fact the Province of British Columbia recently announced that they will be implementing mandatory coding for students K-12.   Students have to be prepared to succeed in a world which is changing much faster than in the past.  Students can no longer be expected to be static learners in a singular space and time.  A basic understanding of technology and how computer systems work are skills that schools must begin to promote if students are to have success in the job market.  Coding has been seen in the past to be a skill required for jobs in the tech industry, however, the applications across curricula are astounding.  As seen in edutopia’s recent blog post, by @coolcatteacher15+ Ways of Teaching Every Student to Code, there are even teachers developing lesson plans that teach coding skills and basics without the use of computers.

The principles of the process are fairly straightforward and can be linked to a variety of subject matter and added onto numerous skills sets.  As shared in this Connected Learning Podcast below, the skills that are being taught are not simply those need to program a computer but instead are the skills needed to tackle everyday problems in life.  This focus on problem solving is just one of the many advantages of learning to code.  Coding will also have a direct impact on math and science   Imagine students learning how to look back through their work, find errors or make suggestions, and improve on what they’ve done through collaboration with other students.  The future will be dominated by the need for people who understand how and why programs work the way they do.

 

Problem solving then becomes one of the secondary skills learned through coding.  This ensures that students will be prepared for a career or set of multiple careers in which they are able to easily adapt to difficult situations and solve complex problems by breaking them down into smaller pieces.  As shared in the video below, almost any career you can think of has been infiltrated by technology in some form.  Canada’s technology industry is seeing a major need for people with experience in programming and computer science. Our students are using more technology every day.  Wouldn’t behove us to teach them why and how their devices, laptops and cellphones actually function.

Is coding a necessary skill to enhance the prospects and skills sets of our students? Should we teach coding in schools?  Well, lets think of it this way.  Do we want future Canadian citizens who can solve complex problems, collaborate, create, enhance, and express themselves in new ways?  My goal for the next 3 months is to dive into this world of coding with the aim of eventually introducing coding to my middle years students.  The prospect of learning to code alongside my students is exiting and I will be documenting my learning as I increase my problem solving skills through the power of coding.