Tag Archives: website

Your website, in one form or another

You need a website.

…or at least someplace to store your stuff. Your content. Your links. Your learning materials for your students.

Let’s take a look at some of your options. These are in subjective order, from most preferred to least.

1. Domain of one’s own

You can call it a “vanity domain” if you like, but it’s my firm belief that every educator should have their own domain, a place where they can hang their educational hat.

Here’s mine. And this one. And the one you’re reading, maybe.

This solution is intimidating for some people, and it’s true, getting a website set up requires some small degree of technology know-how. Purchasing a domain, finding a host, picking a server-style, setting up DNS… and that’s just to get the server running! Then you have to create HTML/CSS documents and upload them to the server… It’s no wonder people just decide to set up a WordPress blog and call it a day.

Still, if you are interested in learning how to manage a server, this is the best solution around.

2. GitHub

If you’re a CS teacher and you know about GitHub, hosting a site on GitHub may be a great option for you. GitHub, now owned by Microsoft, is a relatively stable organization and offers a nice free tier, as long as you don’t mind all your files/pages/materials being publicly available. Of course if you’re posting stuff on the Internet it’s probably all public anyway, so… You can pay them a little money if you want to keep some of your stuff private. (Or, you can just not post it in the first place, right?)

The obvious downside to hosting a website at GitHub is that you (probably) need to know about GitHub a little. Reading about repositories and commits and pushing is a little off-putting for most people, so I’m not sure how practical this solution is for mere mortals. Still, take a look at pages.github.com and see if any of that makes sense to you. It could be just the solution you need.

3. sites.google.com

Google’s venerable website platform hasn’t been yanked yet, but you never know. (Anyone hear remember Google’s Wave project? Reader? The Picasa photo platform? Google+?) Google is well known for killing off projects, so who knows how long sites.google.com will be around, but if you’re willing to take a chance, it’s hard to beat the simplicity of their tools there.

4. Google Doc page

Well, I guess this beats the simplicity of a Google site: a simple page, with links you create to other sites, or other Google Doc pages that you create. This really is about as simple as it gets, as long as you are comfortable navigating Google’s perplexing Drive structure. Make your page public and share the link with whomever you wish. It’s not an actual website, of course, but it’s gosh-darned close. Look at you! You’re on the Internet!

Why now?

There are a variety of other solutions out there as well: WordPress, SquareSpace, and the like. The point is, you really need one place to keep all your educational materials online, both so you can keep it organized and so you can make it publicly available to your students (and their parents?) as needed.

The reason we’re having this conversation now is not that you’ve secretly always wanted to be a webmaster. No, the real reason is that now, in April 2020, we’ve all become distance teachers, and we’re desperately trying to find ways to help out students become better distance learners. Having an online presence gives you a solid way of addressing that need.

It won’t all happen at once. But it needs to start happening now.

Don’t you think?!

My CS classes before distance teaching happened

I want to talk a little about CS distance-teaching, and I realize that this is kind of a niche topic given that teaching CS at all is a niche endeavor. I teach other classes–I’ve been a high school science teacher for much of my career–but teaching CS is what makes up most of my day now, so I suppose this is a good place to start.

I’ll talk about teaching Physics classes online in another post soon.

Conflated with the question of “what are some great ways of distance-teaching computer science?” is the deeper, darker question that haunts each of us: “Can you just help me identify some great ways of teaching CS under any circumstances, even those not involving a pandemic?” Because I don’t think we’ve really got that figured out yet, either.

There is some great research being done out there, and a lot of it gets presented at the annual SIGCSE convention each year. You need to go. There are other conventions as well, but SIGCSE is arguably the best, and you’ll get some great ideas, meet some great people, and have the chance to reflect more deeply on what we do–teaching CS–and how we might go about doing it better.

For today, I’ll just tell you what I’ve been doing for the past few years in teaching my own CS classes, and after that, we can talk about what changed when I had to start distance-teaching.

For context, after a long career teaching in public schools, I have taught at an independent school in southern California for the last 15 years. I have an incredibly supportive administration that has supported the growth of the school’s CS “program” (three classes) even when that sometimes results in class sizes that are quite small. Just as importantly, I work with an amazing IT director who has provided so much for our program, from hardware to servers to off-campus network access for students. Some key elements of our program wouldn’t be possible without support from higher-ups at my school, and without that, my teaching strategies, and even parts of the curriculum, would look very different.

Another important factor in all of this is the students’ access to technology. The Upper School in which I teach is a Bring Your Own Device (BYOD) school that requires students to have their own Apple or Windows laptop on campus with them every day. Having students work on their own machines, and then take them home where they can continue working, goes a long way toward facilitating the work we’re able to do. Without a BYOD program, I’d be working with a roomful of computers and having students either carry data back and forth on flash drives or interact with data directly on our server. We’d make it work, but it would change some of what we can do.

Some notes on infrastructure

As classroom teachers we know very well that the curriculum for a course is supported by all sort of infrastructure, what a textbook publisher would call ancillary materials.

For my courses, I post the vast majority of the materials I present to materials on a website that is available to them throughout the course. New material is presented in class using an LCD projector displayed on a whiteboard at the front of the room, supplemented with comments and lots of drawing with whiteboard markers. Live-coding demonstrations of syntax and coding strategies, or public decoding of students’ programs, likewise happens using the LCD projector.

Speaking of textbooks, after struggles with availability of a seemingly endless series of editions of Horstmann’s excellent Java Concepts: Early Objects, I chose to move to a free, open-source textbook that seemed to satisfy most of the needs for that course… and subsequently shifted to free, open-source textbooks for the other classes as well.

I include appropriate sections for reading in the course calendar, but most students seem to rely more heavily on the online materials I’ve prepared for presentations anyway.

Intro to Computer Science, AP Computer Science A

These courses are both taught at the introductory level, and both cover approximately the same curriculum. The year-long AP course uses Java, and introduces objects near the beginning of the course and covers object-oriented design principles and algorithms in much greater depth than the Intro class, and students are formally tested along the way. The single-semester Intro to CS class uses Python and blitzes along quite quickly, with an occasional quiz to help keep students honest.

For both courses, programming problems are assigned on a daily basis, and students use the Terminal on their own computers to upload assignments to a server maintained by me. I can run auto-graders on their assignments and/or look at their code as desired.

An important preface to each course is an introductory unit that includes lessons on computational thinking, the filesystem on their computers (mostly Apple, some Windows, an occasional Linux), the and Terminal. As more students come into the course with little experience using local files (music and movies are streamed! Google Docs are in the cloud!), it’s critical for me to give them experience thinking about files and directories for them to be able to manage these courses.

Here then, are the topics covered in both courses, approximately in chronological order.

  1. Introduction
    1. Computer Science vs. Computer Programming
    2. Intro to Computational Thinking
    3. Encapsulation, Binary numbers
    4. The filesystem, using GUI to navigate the system, organizing files in directories
    5. The Terminal
      1. Navigating the local (client) computer
      2. Logging on to a server
      3. Navigating the server
    6. Text editors
    7. Integrated Development Environments (AP course)
  2. Computer Programming Principles
    1. Output
    2. Input
    3. Data Types
    4. Math operations
    5. Implementing classes (AP course only)
    6. Functions (Static methods for AP course)
    7. Conditionals
    8. Loops
      1. while
      2. for
    9. Graphics (using Processing.org)
    10. Object-oriented design principles (AP course only)
    11. String functions
    12. Lists (Arrays, ArrayLists)
    13. Algorithms
      1. Recursion
      2. Sorting
      3. Searching
    14. Objects (for Python course)
    15. Graphical programs (Graphics-based game)

Advanced Topics in Computer Science

This course picks up where either of the other two leaves off. After (re-)acquainting students with Python and object-oriented programming, it covers:

  1. Algorithm analysis; Big-O notation
  2. Recursion
  3. Linear Data Structures
    1. Stacks
    2. Queues
    3. Deques
    4. Linked lists
  4. Algorithms
    1. Sorting
    2. Searching
    3. Hashes (Map or Dictionary)
  5. Trees
    1. Binary Trees
    2. Heaps
    3. Binary Search Trees
  6. Graphs (introduced)

A note on providing a course website

I consider the website for each of my courses to be the logistical hub for what I do–it’s not uncommon for me to begin class by calling up the course calendar from the site and asking out loud, “So, what are we going to be doing today?”

I’m no genius in website design, and at least one of my students will attest to that: in a classroom presentation, he used one of my course websites as an example of “an okay site that could be so much better.”

Thanks for that, Ikenna. :)

And you may not be a rockstar at writing HTML/CSS/JavaScript code, but there are ways of making a website happen.

A course website will have a profound effect on how easily you can transition to distance-teaching.

If you don’t currently have a website that you use as a focal point for your teaching, you might not feel like now is the time to take that on. That makes sense. And yet…

We’ll talk about this more in the next post.