Some ICS3 assignments in Java

I wrote a few practice tasks for my online ICS class for using loops and arrays, as well as a challenge task for anyone who’s interested. You’re welcome to use them in your classes if you like.

LoopPractice

ArrayPractice

ChallengeProblems-Quadratics

Advertisements

Using Java and NetBeans to Teach High School Computer Science

First Question

Another teacher recently asked about my experiences teaching CS and for a description of the tools and language that I used. I thought I might share my response on here, in case anyone can add to the conversation.

First response

I used Java with NetBeans for development. This was my first time through the courses (ICS3U/3C) and it was by e-Learning, so I wanted to stick with something that was fairly standard. NetBeans was really flexible and was fairly nice for building GUIs as well. I hadn’t used a development environment with such effective refactoring capabilities before, so that was a treat. JavaDoc templates were generated automatically, and documentation look up was fast and reliable.

NetBeans_StartPage

Some other CS teachers use Eclipse, JCreator, or something else. NetBeans does have an Android development plugin, although I haven’t used it. If I were to teach the grade 12 course, I might consider focusing on Android development with the Android SDK/Studio IDE. There is a lot more to think about for app development, but I think there would be a significantly increased level of engagement. Also, those skills should be highly marketable for students if they pursue programming or software engineering as a career.

AndroidStudio

If you want to see what it look like while I was coding and developing user interfaces in NetBeans, I have a bunch of videos in a playlist on my YouTube channel.

It was helpful to have the students building GUIs right away in some respects. However, because they didn’t already understand objects when they started this, it was difficult in the later stages of the course to have them create GUI elements programmatically instead of with drag-and-drop tools. For example, one student was creating a game that required playing cards to be displayed, but he needed to create (up to) 52 UI objects to represent them. That screams arrays/lists, but he didn’t know how to instantiate those elements based on what we had already learned. I might try a slightly different approach, rather than changing IDE though.

If you have specific questions I can answer, let me know. I’ll be teaching this course again next year, so talking about this is good for me too! If you want the content/activities I developed, I’m happy to share that as well.

Second Question

Later the teacher asked about whether I had used Python, and if I had thoughts about Python vs. Java. Here’s what I said:

Second Response

I haven’t worked in Python, but I understand that it is fairly powerful and straightforward. I talked to the other CS teacher here and he recommends Java, and I think I do too.

Some points to consider:

  • Python has very forgiving syntax; the argument is that this may allow students to focus on concepts.
  • Java is strongly- and statically-typed, but Python is strongly- and dynamically-typed.
  • Java has a longer history, so there are “more” resources available for support (might not matter – “enough” and “good” are more important than “more”)
  • Java is used for more application types (desktop, web, Android, non-computing devices) and is available on most platforms.
  • Python tends to be used server-side – it’s a scripting language.
  • Python applications tend to be shorter
  • Python uses indentation to describe code structure; Java uses braces.

I use Java because I’m used to it, I understand it well, and it’ll be a nice transition to mobile development for the kids.

Let me know what you decide – it’s interesting!

Your turn

If I have made a mistake above, or if you have thoughts about IDEs/Java/Python/Android/etc., please add a comment and I’ll pass it along!

Why I’m happy with the design of my first e-Learning course

I’m teaching ICS3C/3U (Computer Programming/Computer Science) online this semester. I was the e-Learning Contact for my board for several years, but this is my first time teaching online in “real life” (i.e. not a professional learning session).

Overall I’m fairly happy with how I approached the design of my course, and I’ve also learned a few things that I’ll improve upon.

I work in Ontario using the Desire2Learn/Brightspace platform. The Ministry of Education here has provided a “starter course” for each of my classes. I’ve discussed the problems with the format of that course before (see here), and thoughts I had about improving on it. I mostly followed my own advice.

In the end, there were significant differences between the provided course materials and the approach I wanted to take with the course, so I ventured out on my own.

News

I use the News area to share interesting links, reminders, and extra details. Notice I don’t post a news item every day; I’ve decided that’s too much without a real payoff.

A screen capture of a news feed.

 

YouTube

I post a lot of “instructional videos” in the course. The videos show me coding applications live, so students can hear my thinking while I work, see the errors I make and how I correct them, and see how the development environment works visually.

A screen capture of a link to a YouTube playlist.

Of course, playing videos successfully in the online learning environment is a bit device-dependent, so I also post every video to YouTube. I maintain them in a playlist (here) and I post a link in a widget on the course homepage. The YouTube videos also have the advantage of sometimes being faster to download, and users can change the resolution on the fly (not very helpful for code, I suppose).

And most importantly, those videos are available for anyone on the Internet to use. That makes me feel good in my heart.

Other Resources

In an out-of-the-way place on the course homepage I maintain a Padlet. I use this to post related-but-not-necessary links.

A screen capture of a Padlet.

Calendar

I don’t use the Calendar directly, but I do use due dates for Content items so they show up in the Upcoming Events list. More on that later.

 

A screen capture of a calendar and upcoming events list.

 

Units, Activities, Modules

I divide up a Unit into Activities, and I number everything:

 

A screen capture showing the activities of a unit.

 

Within each Activity I also “letter” my items sequentially (3.1A, 3.1B, etc.):

 

A screen capture showing activities organized into modules.

Due Dates

I used to only put due dates on the items that needed to be submitted/completed, like Dropboxes and Discussions. After helping an e-Learning student in the library here with her English class, I realized that students were using the Upcoming Events list in the Content area. I had never explored it before, but it was a sparse list in my course.

Now I add due dates to Content items which I want students to consume as well; for example, I put a due date on 3.2E, which is a video I want them to watch by the end of today. They don’t have to submit anything, but I’m hoping the due date helps to keep them on track.

(Note: This is not an “end date”, which would make the item unavailable after the date has passed.)

A screen capture showing upcoming events.

 Content in PDF

I have tried to use HTML, Word documents, and PDF files to post CS content, but I’m happiest posting a PDF that I generate in Word. I get excellent control over the look and feel of the text/images, but the links I put in there still work. It’s also universally-readable.

HTML takes too long to format correctly/beautifully, and Word documents are rendered as images by D2L (disabling any links).

In the end I think the videos are more valuable for the students, especially later in the course. I have several students now requesting videos explaining a certain aspect of the course, but not a lot of PDF requests.

A screenshot showing a PDF file from the course

Still Thinking

I have a lot more to learn, but I’m pretty happy with the workflow I’ve developed now. Suggestions are very welcome!

 

 

 

 

 

 

 

Screencasts for teaching Computer Science online

I’m teaching ICS3C/ICS3U online using the Java programming language to 24 students whom I never see, ever. ICS has a lot of technical components, and computer programming can be finicky. In a face-to-face class you can help a student debug (troubleshoot) their code while looking over their shoulder.

Online isn’t like this. It’s not exactly a disadvantage, though – students are solving their own problems more often because they don’t want to take the time to write an email or because I take too long to respond (i.e. more than 15 minutes – jokes!).

So, how do I teach students the mechanics of coding in Java without making them read a book?

I take a screencast of myself coding and talking about it. I use Screencast-O-Matic because it’s very, very reliable and awesome (on my own laptop I install the application so I’m not using Java in the browser).

an image showing a program being written in the NetBeans IDE

Are your videos excellent?

No, I don’t believe the videos are compelling in the way that a Hollywood film is, but they’re at least useful. Students can see the order in which I solve a problem, hear my thinking as I work, and see the mistakes I make.

Mistakes?!?

Yup, I make mistakes when I code. I get error messages. Java throws Exceptions. Flashing red lights, irritating Microsoft “dings”, and all that.

They’re not on purpose (I’m not trying to make mistakes), but they’re beautiful opportunities for incidental learning. Students will make the same mistakes too, so I think this will help them to recognize these types of errors and be able to correct them.

What do you do with them?

I post the videos in two places:

First I post them into my e-Learning course in the Content area, mixed in with text explanations, assignments, discussions, and so on. I’ll usually also post the code that I write in these screencast sessions.

an image showing content items in an e-Learning course

Second I post them to YouTube and add them to a playlist I’ve been maintaining for this course. This is so that other people can use them if they want (including parents), and so that students can possibly download them more quickly or on different devices. I think it’s worth the extra time to cross-post.

An image showing a YouTube playing for ICS3C/ICS3UDo they use the videos?

They certainly do. I surveyed my students early in the course and most wanted the videos as well as PDF files with code examples and screenshots. Most students access the videos in the online learning environment, which probably makes sense since there’s more structure there. The number of views on YouTube isn’t very high, but it’s not zero :)

Hasn’t someone done this already? YouTube is FULL of stuff like this!

I know. There is a lot already out there, and a lot of that is “better” than what I’m making.

But there are some distinct advantages to doing this myself:

  • I run into the snags that students would run into, and I fix them
  • They can hear my voice and get to know me a bit, hopefully making other communication easier
  • I use the same IDE they do, so it’s up-to-date, not version 6.8 or whatever
  • I can focus my videos on the course concepts and not other stuff (like some tough math)

Are you going to keep doing this?

For this semester I will. In the future offerings of this course I hope to be able to reuse at least some of these videos, although I know they will become obsolete in some ways. And if I get a chance to teach ICS4C/4U I’ll get to work on a whole new round of concepts, which is kind of fun for a geek like me.

#CS teachers: I need help developing an inquiry task

I am trying to develop a task for my online ICS3C/3U Computer Programming/Science class, and I need the students to be deeply “engaged”.

I return again to my latest, favouritest definition for student engagement: “A student is engaged in learning when they feel a compulsion to pursue the learning apart from external motivations.” That is, not just for marks, and not just because Mr. G said they have to. I want them to want to learn.

So I want the students to pursue their own interests as much as possible. I believe giving students the freedom to choose will be a lot more likely to kindle that compulsion I want to see in them, and will result in deeper learning and, rather importantly, more fun for all of us.

My challenge is figuring out how to frame that task so that I give them

  • enough latitude to pursue whatever interests them (knowing that I can’t predict these things!)
  • enough guidance to help them formulate their plans (so they can learn from the experience)
  • enough restrictions to ensure that they are learning for this course (since I have to assess and evaluate them).

So I’m a little stuck. I’ve created an openly-editable Google Doc with their learning goals and my initial thoughts. I would be very, very pleased if you would take a look and add comments, ideas, criticisms… anything that can help me move forward with this. I’m trying to plan very carefully to minimize the chance that this wastes my students’ time and effort, and to minimize any unnecessary frustrations they experience.

Here’s the document; please share widely: Learning Computer Science Through Inquiry

Much thanks in advance, from me and from my students!

Accessing student interests in ICS3C/3U

I’m thinking about trying to tap into the students’ interests in my online computer science course. We’re at the point now where the [up-to-date] students have enough of the basics to be able to pursue topics of their choosing.

I was considering making a discussion forum/topic where they can share ideas they’re interested in, and then encouraging them to pursue that learning. I’m not sure how to word it, or manage it, or what exactly I hope to get from it, except that it’s important for students to take charge of their own learning. Maybe several students will have similar interests and be able to pursue them together.

Suggestions are welcome ;)

Introductory Computer Programming in Java – video playlist on YouTube

I’m teaching ICS3C/3U online right now, and I’ve been making videos for my students to learn from. I realize there are good resources online for this stuff already, but there are three reasons I’m making my own instead of curating other sources:

  1. The Java language has evolved, so some things are done differently now (e.g. String comparison)
  2. The development environment has had major updates (NetBeans)
  3. It’s nice to personalize things for my students so they can connect with me a little better

I’m trying to post my videos to YouTube as well as in the virtual Learning Environment. I don’t want to use just one or the other; YouTube is blocked in some school boards, and the vLE is harder to access from a mobile device. Crossposting seems like a good idea.

If you’re interested, here is the playlist I’ll add to this semester. I’ll warn you that they’re not “polished”, although that’s partly intentional: I don’t have time for a lot of re-takes, and I want students to see coding errors and their fixes too.

https://www.youtube.com/playlist?list=PLfd-5Q3Fwq0WGwNp-Ef9OubhMxwM8bROj