Skip to content

Homework

South Carolina law requires a full high school credit to be 120 hours of work with a passing grade. That time is easy to spend in a public school, but home school requires home work.

Administrivia

Some of the homework requires, what we call, "administrivia." That is, work that must be done, but isn't terribly challenging. Often these assignments are self-explanatory but may require reading the assignment in detail. Some of these will be like "make sure you have installed this program" or "turn in this assignment in Google Classroom." Not completing a simple assignment results in zeroes for homework grades.

Typing (aka Keyboarding)

Some of the homework will be assigned typing practice. We expect that new students in this class can comfortably type in the double-digits range. By the end of the school year, if they keep up with their typing homework, they should reach 30-60 WPM.

Why teach typing?
  • Faster typing speed helps all other high school and college homework complete faster
  • Typing is a professional skill that everyone should have, especially highly paid office workers
  • Typing proficiency produces improved test scores on computerized tests
  • It creates more confidence with a computer and less frustration

Programming Puzzles

Most of the work we assign is in the form of actual coding and programming assignments. Some of these will be completing a programming puzzle or working on a big project like a website or a game. Some of these may take minutes if there's a strong grasp of what's happening. Some of them may take hours of frustration.

Some of these assignments are hard!

Yes! And we can do hard things. It's challenges like this that cause our brains to grow. Without this struggle, no one can expect to become smarter.

Find out if you are stuck. How do you know? Staring at it for 10 minutes without typing anything is a good sign. If you're stuck, do this:

  1. Review the slides from the current week. Check the speaker notes. There are a lot of answers in there.

  2. Are you getting any errors? Google the error messages to see how to resolve it.

  3. Try explaining the problem to someone older than you. This almost always helps.

  4. As a last resort, try explaining the problem to an AI chat assistant. This sometimes helps.

  5. Show any work or progress you've made. Don't erase, comment your code out and try again. After an hour or 4, just turn in what you have. 5-10 points is way better than a zero, and I tend to grade on effort, not necessarily on results.

Using Technology Responsibly

Googling

Real programmers do not know the answer to every complex programming question. Nor do they memorize everything about a programming language or every feature. Sometimes, even the best professionals are dumb. What do we do?

We Google things!

One of the best skills that programmers have developed over the last 20 years is how to form an effective search phrase in order to find the most helpful results.

Googling is fine. Google as wide as you like, or as narrow. If you can find the answer to your problem, it's fair game.

Plagiarism

Plagiarism is rarely a problem in the world of programming. If someone has written it already, why should someone else also have to write it? This is counterintuitive from other subjects. Copying homework in Math is cheating. Copying an English paper will get you into trouble. But copying a small computer program? We call that "reuse" and pat programmers on the back for it!

Copying a part of a program is usually good. It helps get unstuck. Finding snippets on stackoverflow — even asking questions — is great.

Copying an entire program is where we start to get into the danger zone. If you copy the whole thing, then what have you learned?

So what's the limit?

Probably about 100 lines of code. Any more and it's not even your program anymore.

AI Chat

AI Chat (like Chat GPT, Microsoft Copilot, Google Gemini, etc.) is a new technology that can answer all kinds of general questions. It is fully capable of writing good code, thanks to it's large language model (LLM) that was fed a heavy diet of general knowledge, technical documentation, and code. I love this technology for some things:

  • Writing filler copy for a website - the assignment is the website, not the content, and I encourage students to use it for this
  • Generating images, especially when the task is not the images, but again, something like making a website
  • Answering questions about how to use a specific feature, or how to modify my code to accomplish a specific task

This last point is important. It has the knowledge to help, but if you let it, AI can also write the entire assignment. And this is where you have to be careful. Often we will start with some context that the AI chatbot won't have. Then the application that's generated is wrong.

The truth is, I am hesitant to set any absolutes on the use of AI because it can be so helpful, and it can explain to you what's wrong with your code in a way that I can't for every student. Also, because LLM "AI" is so helpful, we're going to see it more pervasively. This unavoidability means we all have to learn how to work with it, which creates a challenge. How can we balance learning against a tool that can do it better than us?

This is a question that educators and futurists everywhere are concerned about. What if humanity stops learning because somebody already invented the learning machine? So the answer for today is to learn how to use it responsibly, and we have to hold ourselves to a higher standard, even if it's more difficult.

Real change, real learning, is hard. It may produce tears. It can bubble over in a fit of anger or a desire to utterly quit. It's when we push through these emotions that real education happens, and we are made into better versions of ourselves.