January 10, 2017 / by Drew Wheeler / In coding , education

Creating My Class Website - Why and How?

Update September 2017 - My school has moved to Microsoft Education 365 so there is no longer any need for me to update and maintain my site. The site was shortlived, but it was a great learning experience.

I’ve spent the last few weekends putting some extra time into building a website for the math courses that I teach. While doing this there have been several moments where I think to myself, “Is what I am doing ridiculous? There are so many tools and applications out there that can probably do what I’m trying to do much better.” I actually asked my partner on multiple occasions if I was crazy, to which she clearly replied “Yes, but not because of this.” So I thought I would take a little time to reflect on my desire and reasons for building my course site and what I hope it ends up accomplishing.

Feels Good to Make Stuff

I originally had this section at the end of my post because I thought that I should save the best reason for last. But then I realized that a good proportion of anyone who reads this post won’t actually read the entire thing (that is ok - I know what it is like!). So what is this amazingly important reason that I had to move to ensure that everyone actually reads? Well, the title already gave it away, it is the fact that it just feels darn good to make things. It really is hard to beat the feeling of dreaming something up and then taking the action of making it into reality. And this was no different, it just felt good to see a problem that I wanted to solve and create my own solution for it (even if my own solution isn’t as perfect as other ‘store bought’ options).

Many of my students were surprised and a little impressed that I built the site myself. I got quite a few comments similar to “Wow, you actually made this?” and “But how long did it take you?”. This definitely helped to give me a little 5 minute ego boost but it also reinforced for me the idea that students should be given the opportunity to make more stuff. They were impressed with me making this site because they have no experience or context to understand how difficult it was. It really wasn’t all that hard, assuming that you have been given the opportunity to learn and experiment with some coding concepts and skills.

I Need That and I Really Want This / Have My Own Specific Requirements

I have some specific requirements and ideas for what I want my site to be able to do and I have not yet to found a tool that checks off these boxes. Some of these specifications are listed below:

  • Easy for students to view the “big picture” for each unit. Being a mathematics teacher there is a fair bit of content that needs to be covered within each of my units. I’m really striving to approach my teaching from concept based approach. I feel that when students view each lesson as a stand alone they will tend to avoid looking at the big picture and connecting all the concepts together. This is why I wanted a site where students can see all the individual subtopics within a unit on one page and click between the individual content quickly and easily.
  • Transparency for students (and parents). Everyone should have access and know exactly where to find the lesson material for any given topic. If a student loses a handout or misses a class they will know where they can find the information that they need.
  • No need to have to download files. I wanted something that allows for handouts and materials to be viewable directly on my site without the need to download files. But with that said, I also want there to be the option to download the files.
  • Ability to make it personalized. I wanted something that I could style and design to be my very own. I don’t pretend to be a skilled web designer, but it is nice to be able to customize the look and feel of your site to make it feel a little extra special.
  • Finally, I wanted the only barriers to what the possibilities are with my site to be my own skills and knowledge. As I discover new requirements I want to be able to implement them without having to worry about how it will fit into some other application. For example, as I was building my site I realized that I wanted a good way to give credit to anyone who created and shared out their resources. I believe in sharing and reusing excellent resources but I also did not want it to seem like I was trying to take credit for something that I did not create. I was able to make a little tab on my site that gives the creator’s name and links to their website or social media accounts.
Continuing My Coding Learning Journey

I’ve learned so much about coding in the past several years but I obviously have so much to still learn. This project gives me another concrete opportunity to further develop my knowledge and skill set. The ‘things I’ve had to learn’ list for this project is growing steadily and I expect it to continue to grow as I discover new features that I want to incorporate.

The things I’ve had to learn so far include:

  • I’ve gained further experience working with Jekyll, which is a static website framework. I used it to build my personal site (along with a little help from a basic template). I also used a very simple free template for my course site.
  • Diving into AWS S3 and hosting a subdomain. I had previously been hosting my personal site on Github Pages. It is a great service and totally free! But I now wanted to be able to use my personal domain to host separate projects (my personal site and now my course site). I felt that this might be a limitation of Github pages and moving things over to AWS might make sense. I’m sure that there are workarounds that would have allowed me to continue to use Github pages but I have been looking for an excuse to dive into AWS.
  • Striving to write maintainable and scalable code. My list of weaknesses as a developer is quite long but one of my main struggles is writing code that keeps my projects maintainable and scalable. I’m going to need to continually add and update this course website, so I really need a system that is relatively streamlined and simple. My project is not there yet, but I feel like it is at least starting off in a reasonable place.