Tuesday, May 3, 2016

Teaching College-Level Web Scripting

A year ago, when I was graduating from college, I didn't expect that only one more semester would go by before I would be back in the classroom at Pace University. I always demonstrated a penchant for teaching and expressed admiration for my professors and the careful thought that they put into creating lessons, exercises, and grading our work. I was so honored to be asked to come back this semester and teach CIT336, Web Scripting to undergraduate students.

I had experience teaching throughout university, and had been gaining experience as a web developer. I taught a lot of coding classes to all ages; as young as 2nd grade and as old as mid-40's. The idea of teaching the more advanced end of web development was so exciting to me!

Starting from scratch was an interesting challenge. I didn't have access to any previous lessons or curriculum, so with very loose guidelines, I developed a curriculum, syllabus, and lesson plans for the semester. As I usually do when teaching a series of classes, I started by giving my students a survey to find out what they already knew, what they wanted to learn, and what trepidations they had about learning it. 

The biggest challenge that I had to overcome in teaching this class is my concern about what my students think about having such a young professor. However, because I was a student not so long ago, I remembered clearly what I loved about my favorite teachers, and what I wished some teachers would have done. I am more familiar with what's going on in their lives, and in their heads, and what value they need to get from this class. 

My goal was to teach the concepts of web development, with language agnosticism. The fact of the matter with learning programming is that in a few years, the languages will be different. That is why I take the approach of making sure that the students understand why they're doing what they're doing, and why they're learning it. I taught about how the internet works: HTTP requests and responses, RESTful applications, open-source communities, server-side code vs. client-side code, how browsers work, etc. It is important to understand these concepts more than to be able to push out code with flawless syntax. I tell my students that syntax is the hardest to learn and the easiest to fix.

I also wanted to talk to my students about how I use what I'm talking about as a web developer. I was able to make the course material relevant by telling them how I was using the libraries that I was showing them, funny stories about the first time I was using a framework, bugs that I caused by not understanding something and how I fixed them and learned from my mistake. I loved that I got to show my students how their coursework is relevant.

I learned a lot while I was creating lesson plans. It takes a lot of practice to be able to communicate technical information to people who may not have all of the background knowledge. I wanted to provide my students with slides, so that they had comprehensive notes, but also be able to talk about interesting things in class. Another part of providing my students with resources was finding great tutorials. Sometimes tutorials are a lot of copying and pasting. I liked to go over the tutorials in class so that I could add extra information, and then have my students do the tutorials for practice at home. The following class we would then try using the new skill from scratch. I also frequently asked my students to come up with their own ideas for what they wanted to build. I had them all build websites to tell me about themselves, while I taught JavaScript and jQuery, and about how the DOM works. For every assignment, I asked them to make it about their interests. Practicing SQL queries? Do them on a database full of data about your favorite thing. For their final project, I asked them to create a web application that would make their lives easier. 

The students really impressed me with their creativity and openness to trying new things. They completed some great projects, asked interesting questions, and explored a lot of different web development tools. I'm so grateful to have had such a great class!

Monday, April 4, 2016

Lessons Learned In Finland

Last week, the Codapillar team had the awesome opportunity to visit Finland, one of the top countries in the world for education and technology. We met with a few other startups that shared our vision of revolutionizing education, an accelerator that focuses on developing education tools using the most advanced pedagogy possible, and a couple of experts on the startup scene in Europe, as well as teaching engineering and technology.

One of the Codapillar team's past projects together was a part of the Product Development Project at Aalto University in Otaniemi, Espoo, Finland. While participating in this project, aside from gaining valuable product development experience, we made some friends who share our passion for fantastic education and empowering others with technology.

First we spoke with Ville Taajamaa, who is doing research on the most effective pedagogy for teaching engineering in schools. He brought in a couple more fresh minds to join a great conversation about what the educational needs of adolescents are, and how we might address them. We also spoke about how to make sure our tool show young women that coding is not just for boys. Ville introduced us to a team he worked with at University of Turku, who was working on a visual learning tool that allowed for collaborative work.

The next day, we took the bus over to Turku to meet with the ViLLE team. We spoke with them about their research, and their progress with the platform that they are developing. Several of their developers are teachers as well, and encountered the same problems in Finland that we were running into in the United States. Because of increased use of mobile devices in schools, many students didn't have the basic computer skills we were anticipating they would have. We discussed how we might adapt. It turned out that ViLLE was working through a lot of the same challenges that Codapillar is in regards to product development, and making the most useful tool. We're very happy to be able to put our minds together to try to find good solutions.

We also had a visit to xEdu, a new education technology accelerator program based out of Helsinki. We loved talking with them, because we got the opportunity to hear about what makes Finland's education system so successful, and how Finland plans to use their learnings around the world. Finland is the third country to sign a law that mandates a computer science education at all grade levels, acknowledging that technical literacy is becoming critical in the blossoming digital world. Finland is also in the process of reforming their entire education system, focussing more on project-based learning, and the blending of subjects. Coding is extremely well suited to this, since technology is a part of all disciplines. xEdu focuses heavily on applying top-notch pedagogy, testing heavily, and building the products of the future that can be adapted to other education systems around the world.

One of the companies we met through xEdu is BomberBot, a tool that teaches programming skills in early elementary classrooms through a game. BomberBot is a very visual tool, and includes lesson plans for instructors as well. We had a chat with them to hear about some of the lessons they've learned in the education technology sphere.

Codapillar is very appreciative of everyone who took the time to chat with us, and share with us their insight. We are so impressed with all of the work going on around the world to help unite us all with code!

Wednesday, March 2, 2016

The Argument For Learning How To Code

Technology develops rapidly, and the world is abuzz constantly with new ideas. Software developers are the backbone that allow all of this progress to take place. The Global Developer Population and Demographic Study by Evans Data Corp. reports that there are 18.2 million software developers worldwide. This is a small portion of the population, responsible for the technology that impacts so many consumers' lives.

The technology is pervasive. Many of our day-to-day functions have been and continue to be transferred to a digital format. For people as young as toddlers, to people who have only seen computers for a fraction of their lives, it is impossible to function without some computer interaction. But is learning how to use the computer as far as these day-to-day functions enough? Is it necessary to learn the inner workings of the applications on which we rely so heavily?

In 2013, we were producing 2.5 exabytes, or 2.5 billion gigabytes, of data every day, according to a study by IBM. This number grows exponentially every year. So much information about each one of us is being sent through cyberspace. But what percentage of the population is really understanding what that data is, where it's being sent, how it is being transferred, and why it has such a high value attached to it? When so many people have to spend so much time to learn how to perform the basic operations on computers and smart phones, they are not encouraged to learn more. It's not a requirement to understand how the software is working in order to use it, so people rarely look further.

This data captures the reality of what humanity is doing every day, what they're thinking and feeling, and even how their bodies are working. This information could be used to conduct major sociological studies that reveal patterns in society that have not yet been recognized. It could be used to create policy and legislature that is based on true statistics, in order to create a better society as a whole. As more technology is being distributed to the masses, this data could be used to improve that technology to work better for us, and to better protect our true interests. However, it is mostly being used to better target advertising. If more people were a part of the conversation about this data, would we be doing more things that improve our quality of life? Even more importantly, if more people understood how this data is being moved and how it is being used, would we be coming up with solutions to better protect our privacy, and secure our personal information?

Working in technology, we so often forget how much of the population is in the dark, viewing their experiences with web and mobile applications as a sort of magic. We also forget that most of the population has been told that the technologies they are using every day are too complicated to understand. They're being told to leave it to the developers, and that as consumers, they don't need to know how the apps that they are buying into are working. This is discouraging people from taking ownership of the future.

But does everyone need to be able to code? To be honest, probably not everyone needs to be writing code on a daily basis. However, it is critical that people who engage with technology have some understanding of how it is working. Exposure to at least basic coding is important in creating the foundational comprehension of how the world of technology operates. Through learning how to code, the way people understand technology, and think about the world, transforms. The more people learn about technology, the more people are thinking about how we can use it to solve problems.  Even if everyone isn't coding every day, to have the knowledge of how it works allows people to move forward as quickly as technology does: very, very quickly. This is why it is crucial that we begin introducing coding to young, developing minds, while they're at their creative peak! 

While not everyone will become a software engineer, and it is not reasonable to expect everyone to have the skills of one, the importance of being exposed to coding cannot be understated. No one should feel like they are incapable of learning about the technology that they are using. We need to encourage creators and consumers alike to be a part of the technology community, so that we can address real problems together, and create optimal solutions.