NEW: For a prettier blog interface, see the Wordpress version!

Tasks

Priorities - A: high, B: medium, C: low; Status - _: unfinished, X: finished, C: cancelled, P: pending, o: in progress, >: delegated. Covey quadrants - Q1 & Q3: urgent, Q1 & Q2: important
B_Write J. Angelo Racoma about the tutor portal (2005.05.25)
BX@web Read Slashdot: Improving Education (2005.07.16 TeachingIdeas)
A6XReview Levitin, A. and Papalaskari, M.-A., "Using Puzzles in Teaching Algorithms," Technical Symposium on Computer Science Education, Covington, Kentucky 2002 {{Tasks:27}} (2004.04.15)
A7XCheck out Guiding students through programming puzzles: value and examples of Java game assignments {{Tasks:74}} (TeachingIdeas) (2004.04.15)
A1CFind Terry, R. E. and Harb, J. N., "Using Learning Style Theory to Improve Learning and Teaching in the Engineering Classroom," Frontiers in Education 1993 (2004.04.15)
A2CReview Herr, N., "The Sourcebook for Teaching Science: Strategies, Activities, and Internet Resources," California State University, Northridge, Available at http://www.csun.edu/~vceed002/ (2004.04.15)
A3CCheck out Vexed puzzle solver: developing a program incrementally {{Tasks:73}} (2004.04.15)
B1CCheck out EClass again from 2003.11.11 {{Tasks:876}} (TaskPool) (2004.04.15)
A5XBrowse Games in the Classroom {{Tasks:22}} (2003.11.30)
A4XCheck out Puzzles and games: addressing different learning styles in teaching operating systems concepts {{Tasks:72}} (2003.11.29)

Notes

7. Education brainstorming

Categories: 2006.01.07#3 -- Permalink
Big thanks to Cindy A. Trinidad, Roy C. Nicolas, Dominique Cimafranca, Charo Nuguid, JM Ibanez, and Clair Ching for sharing their education-related insights with me. They helped me think about what I want to do after graduation. =)

Cindy shared how seminars on teaching technique greatly helped her manage her classes. She runs an end-user training company that caters to children and adults. This is how her new hires learn how to teach:

  1. Take a course even if you already know the content. You need to learn about technique.
  2. Practice and play around with the product until you feel comfortable with it.
  3. Practice teaching the subject to your teacher, who can give you feedback on unclear or incorrect things.

We all think that teachers have to spend a lot of time walking around, keeping an eye on students' progress and making sure everyone can keep up. =)

Cindy also shared with us her thoughts on the need for good textbooks, and the abysmally low pay for writing such!

By asking questions, Roy helped me narrow down what I want to do. We came up with something along the lines of:

  1. Find out who my market is and what they need. I'd like to focus first on finding highly-motivated teachers in private technical/vocational schools and colleges. I want to find out what they need.
  2. ...
  3. Profit! ;)

Heh. Well, must figure that out sometime.

That isn't the only way, though. Dominique told me about Positive(?), an initiative to help improve computer science education in colleges. (Whee! I'll just piggyback on that.) Charo told me about Voice of America(?) and that one can actually do quite a lot without major financial backing.

Anyway, here are the main insights:

  • I might be able to turn this into a business. A business means I might be able to attract other people to get into it.
  • I might also be able to get this funded by philanthropists. To do that, I need a good program.
  • I can start small. Let's change my corner of the world first.
  • Motivation is key. We spent a bit of time talking about how to deal with closed-minded people and people who don't want to share their knowledge. I'm in favor of going after people who don't need to be persuaded to share their knowledge. I want to find people who can't help but teach.
  • Mentoring is very important, but most teachers are on their own in classrooms. Waah. Maybe there should be something like Toastmasters, but for teachers... ;)

On Technorati: ,

6. EClass

Categories: 2004.04.15#9 -- Permalink
I can't quite get EClass to work. It looks rather promising, though. Do you know of anything similar? I'd like to be able to write and publish my courseware with a neat interface for browsers - collapsible tables of contents, that sort of thing.

5. Using puzzles in teaching algorithms

Categories: 2004.04.15#8 -- Permalink
http://www.csc.vill.edu/~map/sigcse02/

These ideas are perfect for CS110! I can't wait to discuss the general algorithm strategies in terms of real-life puzzles.

4. Guiding students through programming puzzles: value and examples of Java game assignments

Categories: 2004.04.15#7 -- Permalink
http://doi.acm.org/10.1145/820127.820175

The paper describes three puzzles. Students are expected to code programs that try to find solutions to these puzzles. Hmmm... I think that's a bit too advanced for CS21, but I should be able to structure some exercises like higher/lower, rock-paper-scissors and tic-tac-toe for simple AI.

2. Puzzles and games: addressing different learning styles in teaching operating systems concepts

Categories: 2003.11.10#3 -- Permalink
http://doi.acm.org/10.1145/611892.611964

Lots of ideas for teaching operating systems. I remember the crosswords from CS161 and I intend to have crossword and find-and-match exercises. (Should go through the word puzzle book) The paper described a process state transition game and a battlethreads game. The Battlethreads game looks like a good way to emphasize the difference between processes and threads. The process state transition game looks a bit complex and the paper has some cautionary notes.

I'd like to learn under these teachers.

_Very_ interesting citations.

Link: Local copy

1. Discovery Learning in Introductory Operating System Courses

Categories: None -- Permalink
http://doi.acm.org/10.1145/299649.299797

Although we probably won't have computers during class sessions - this is, after all the IBM Room, and we'll probably have a sucky projector too - students might be able to do programming exercises in order to understand operating systems concepts. Students will need Knoppix or another Linux distribution; if I have them install it early, then they can get a quick introduction to C and system calls.

Could this be a potential overlap with systems programming? OS is supposed to prepare them for that anyway. Who knows, they might even replace parts of the OS in their systems programming course. We discussed pairing the operating systems course with the systems programming course during the curriculum review, so it's probably not a bad idea.

Local copy

ID005: Physical sorting with diskettes

ID004: Secret pen pals

ID003: Whole-class bubble sort (given input)

Mario Carreon suggested a better idea. Written as ID004.

Objectives

After this exercise, students should be able to

- perform array assignments and trace their output - explain bubble sort in terms of English and pseudocode

Materials

- For the whole class: a presentation with code to set each element in the array - For each student: one small piece of paper or flashcard - Two balls or other brightly colored tokens to designate i and j

Instructions

The teacher introduces the exercise and outlines the objectives.

Array initialization

The teacher then flashes the array initialization code briefly on the screen. This can be treated as a 1 point quiz or bonus.

<blockquote> Now we're going to check if everyone has been initialized correctly. This token represents i. If i is 0, then it should be held by the person corresponding to that number. This is the loop we'll use to print out all the elements in the array.</blockquote>
for (int i = 0; i < names.length; i++)
{
   System.out.println(names[i]);
}

The teacher will highlight int i = 0.

<blockquote> i starts out at 0. Who will hold it? </blockquote>

The teacher will highlight the condition.

<blockquote> What is the value of names.length? Is i less than it? </blockquote>

The teacher will highlight the statement

<blockquote> When you're asked to print something, just shout your word. </blockquote>

and cue the student. After that, the teacher will highlight i++ and coach the students until they finish the exercise. If some people made a mistake, the teacher should skip back to that slide and sort it out.

Sorting

Now comes the tricky part - sorting...

Code

for (int i = 0; i < names.length; i++)
{
   for (int j = 0; j < names.length - 1; j++)
   {
       if (names[j].compareTo(names[j + 1]) > 0)
       {
           String temp = names[j];
           names[j] = names[j + 1];
           names[j + 1] = temp;
       }
   }
}

ID002: Debugging by the light of pseudocode

Teaching objectives:

- Demonstrate the usefulness of pseudocode. - Develop debugging skills - comparing pseudocode with Java code.

  • carefully reading code
  • identifying errors
  • fixing errors - Develop pseudocode->Java->pseudocode translation skills - Develop ability to guess the - Introduce a new concept by demonstrating it in a program - Highlight areas for review and provide self-checking homework

Method:

I prepared one program to demonstrate action listeners. I included pseudocode for practically every line of code. Their exercise was to match the pseudocode comments to the Java code (which included some new things, like events). They did that by copying and pasting the comment to the line before the code. Students who finished early were encouraged to delete and rewrite lines in the program.

After everyone finished, we worked on the second Java file (closed notes, ~10 minutes). This had exactly the same pseudocode as the first one, but the Java code had many errors. Again, their task was to match the pseudocode to the Java code by copying and pasting the comments. In the process, they discovered a number of errors that they tagged by prepending FIXME to the pseudocode comment. I reminded the students to postpone fixing the errors until after they'd identified all they could, as they might spend too much time trying to fix one error. After they identified all the errors they could, they went back and started fixing the errors, changing FIXME to FIXED in the process.

Example:

- http://sacha.sachachua.com/cs21a/exercises/AddJApplet/AddJApplet.java - http://sacha.sachachua.com/cs21a/exercises/AddJApplet/BrokenAddJApplet.java

Experience:

Out of 14 entries: 126 answers total, 44 fixed, 33 fixme, 83 missed. 2 hours to review and comment on each submission. Feedback mailed the same day with strong suggestions to review and find missing entries.

Questions:

- I still need to measure how well it has sunk in. I think it will

show up in their <nop>BuyAndSellJApplet projects. If all of the students in the class get their buttons to work, it could mean any of the following:

  • Events are an easy topic to teach
  • My students are brilliant.
  • They figured out events from the exercise even if I never formally discussed it in class.

Things to improve:

- Clearer, _shorter_ instructions. I write too much.

- Use this earlier in the sem instead of in the last two weeks of class! ;)

- Must learn how to measure effect of module. Oops. Should have

pretested to check how many people knew about events, then compared that with the number of people who finished the exercise.

Variations / other ideas:

- You can add a few steps between the correct program and the broken program:

jumbled pseudocode, correct program correct pseudocode, jumbled program jumbled pseudocode, jumbled program

- Make a scavenger hunt. Provide a large but correct program and a list of

pseudocode snippets.

- Make a scavenger hunt. Provide buggy source code and a list of

different types of errors.

- Make this a group contest. Then again, high achievers will

dominate the activity if it's competitive.

ID001: Me, me! --- inheritance, OOP

Teaching objectives:

- Help students internalize objects, inheritance, encapsulation, and cohesion

  • Each class has an identity (a reason for existence!)
  • The methods and attributes the class has must fit with its identity
  • Superclasses have the common code for the subclasses

Ideally:

A lively discussion will ensue as to which class a method belongs to.

Method:

The teacher starts out by talking about objects. (Objects have an identity.) The teacher can give an example by describing the role of a class and asking students to guess what that class is.

The next rounds can involve the teacher calling out any of the following:

- a role: The class that fulfills that role should shout "Me!" and

raise his/her hand within five seconds. If two classes disagree, a discussion begins. If no class currently has that role and the classes correctly keep silent, then the teacher confirms that, asks the students what class fulfills that role, and asks a volunteer to join the group of classes.

- a method or an attribute: The class that has it should shout "Me!"

and raise his/her hand within five seconds. If two classes have that it, then the teacher can begin a discussion about inheritance and superclasses. The teacher can either tell the students what the superclass is or have the other students quickly search for the information in the Java API. The teacher will then ask for another volunteer.

Reflections:

I haven't tried this out yet. I plan to use it in CS21B when we teach inheritance. It requires heavy class participation, so you'll want to establish rapport with your class first.

May require convincing students to volunteer. ;)

The students still sitting down will be asked to referee or research. They should have a window with the API reference open so that they can quickly check the class's claims. If the "classes" are seated apart, then you can involve the audience by asking them to point at the classes.

Mostly kinesthetic / auditory exercise, although can be audio if questions are prepared on slides.

Logistics:

Students will probably get tired if they're standing all the time, and the usual classroom arrangement of chairs does not allow them to see each other easily. Suggested arrangement: stools or chairs in front, or a circular arrangement.

Classes will be easier to identify if they are named. You can quickly write labels with a marker and a large sheet of paper. Bring tape.

Previous day | Next day

I'd love to hear about any questions, comments, suggestions or links that you might have. Your comments will not be posted on this website immediately, but will be e-mailed to me first. You can use this form to get in touch with me, or e-mail me at sacha@sachachua.com .

Page: Teaching Ideas
Updated: 2006-01-0723:48:2123:48:21+0800
NOTE: ANTI-SPAM MEASURE NOW IN PLACE. Please answer the following question with the right number in order to send me your comment.
What is two minus one? (hint: one ;) )
Name:
E-mail:
URL:
Comments: