I cant stand teachers that don't know how to teach, don't have their own ideas, and ask students for help. Especially in this subject.
But here's my tips:
1. Master algorithms.
2. Master situation/scenario-based problems.
3. Learn to understand their cryptic syllabus.
4. Get the past HSC exams, go through the questions and the standards packages, work out exactly WHY this person only got this band, bitch about the board's marking guidelines, complain and argue that they haven't even marked to their own syllabus. When everyone realises how things are done, people will start to get things right.
5. Do the online multi-choice questions on board's website.
6. Just like you would in maths, use a number of textbooks and sources. Dont just focus on one. Use Sam Davis' SDD book as a basis, then get other ones as well. I think the Heinemann book does the Hardware option topic well.
7. Sign up to teachers boards/web-rings/mailing lists.
Projects:
My major tip here is to base the projects around what the syllabus will ask as an algorithm or scenario based question in an exam.
So for example: In the syllabus, there is this section which lends itself wonderfully to in class programming projects. This is the section that mentions: string manipulation, file handling, etc.
In whichever language you are using, do a one or two lesson project based around each syllabus point which may even SLIGHTLY suggest a programming project.
People will remember MUCH better something which they have actually written in code in class, and will produce much better algorithms from something like this.
SO some examples:
1. Give people a random list of words. Tell them to concatanate random words together to make other random phrases.
2. Give every person the same text file, a sequential file, with data on every line, separated by a new line. Get people to read the data from the file, place it into an array, and print the array. This may be this simplest idea, but you will be surprised how many people doing this course actually cant program at all. You need these people to be able to do this tasks.
3. Repeat above with a random file.
4. Do a LOTTO number generator. This will get people working with random numbers.
5. Get people to figure out how errors have occured in some software that you have coded and get them to fix it.
Eg: Interminable loops, syntax errors, logic errors.
6. Either using the results from 2/3 or a new array of strings (or numbers) get people to implement a linear search to find a certain value.
Now get them to find out how many of that value are in the array.
Now get them to find where each occurance is.
Now get them to print out these results: Value, Occurances, Array locations.
7. Get them to do a random number generator (for simplicity sake limit it to 100 numers) and dont allow them to get the same number twice. So in all effect it will generate a random order of 100 numbers. This is a good one because they have to detect when a number has already occured, use a loop to generate a different number, and so on.
8. Make a fully functional Clock(digital, unless you want to waste time on graphics as well.)/Stopwatch/Timer. You may use system.Now only once in this project, to get the initial time.
This will prove helpful for everyone in the major project you will give them, which will no doubt use a number of methods from this little project. Everyone will need to know how to time an event sometime or other.
If you are doing the Hardware option topic:
9. Give people a string. Delegate how many characters (...bits/bytes - get them to figure that out as another part of the project) make up the header/data/trailer parts of the datastream and get them to separate it into sections.
Then get them to decode what you have put in the stream.
10. Use any language, and 'control' the printer using code... Whilst its not 'strictly' what the syllabus wants, it will give an idea of how control codes control a device.
11. For each of these ideas used, send me $50.
There was another cool project that took me 20 mins to get working and about 20 mins to 'touch up' which was on here before, you could probably do it in a lesson or two, but it will cover a few of the above things. Take a string, get the frequency of each letter in the string, and graph it. Graph it either as a cumulative total or a relative frequency.
Leave it to later in the year, but have a look and download the solution:
http://www.boredofstudies.org/community/showthread.php?s=&threadid=20294
There are things that need to be demonstrated, but which are beyond an in-class programming project, such as all of the sorting routines. I take this chance to plug my program, which you can use to demonstrate them, which is at
http://fosweb.com/portfolio.html
under the Programming section.
Read through the other threads here. Make sure you GIVE everyone a FULL copy of the syllabus, the MAD document (Methods of Algorithm Description - see other thread:
http://www.boredofstudies.org/community/showthread.php?s=&threadid=6467 )
and the address to this forum.
Oh: and I wouldnt tell them that you will be leeching on this forum either, it may stop them using it... You may also find out interesting things about your teaching if you find they use it... ('our idiot teacher...' or 'wow, we jsut got this cool project...')
I think if you do even some of the things above, you class will benefit. We had 30% in band 6 and 80% in band 5/6.
Also dont forget that their is a lot of theory in SDD, and a good set of notes covering the syllabus will help.
-Michael