Image processing

You know, we really can teach image processing as part of an
introductory CS course. It opens avenues for creativity and makes
mathematics less intimidating. The BlueJ book talked about it; it
really does make sense. Histograms, gamma correction, posterization,
etc… fun!

On Technorati:

On computer science education

In response to Neil Santos’ rant about computer science education:

What a pity it is that you’ve never had a good teacher. A good teacher can help you grow immensely. I’ve had great teachers, and they really changed my life. Let me share with you some things I’ve learned from them and why I’m crazy about computer science.

When you meet a lot of brilliant people, you’ll quickly realize that technical skills do not guarantee people skills and vice versa. One of the best ways to meet brilliant people is through open source. Look at Richard Stallman: undoubtedly a genius, but his personality rubs a lot of people the wrong way. (He’s really cool, though.) On the other hand, there are people who combine both technical know-how with passion and great communication skills; these are the teachers who can change your life.

I owe so much to the teachers I’ve learned from inside and outside the classroom. The best teachers I’ve had taught me that I’m not limited to the classroom. They helped me gain the confidence to try things on my own. They showed me things I didn’t know about and might not have discovered on my own. They questioned my assumptions and challenged me to do better. I remember when I was in first year college and I was slacking off in subjects like English; it was my computer science
teacher who told me that I should pay attention to details!

My teachers really helped me deal with my insecurities about our curriculum. I always kept my eye on schools abroad, and because I was already working on open source in college, I could see how people my age were doing really fantastic things like maintaining the Linux kernel or writing their own operating systems. My teachers helped me take advanced classes and get into extracurricular projects and
competitions. When I started working on things on my own, they gave me encouragement and great recommendations.

I’ve heard many, many stories about teachers who aren’t as good as the ones I had, though. Most teachers don’t seem to care about their students or their subjects. I want to help change that.

Computer science changes every day. The accelerating pace may make you think that it’s impossible to keep up. The truth is, as things get faster and faster, a strong foundation becomes more and more important.

That’s what I’d like to think I teach. I do not teach how to program in Java or C++ or Perl. I teach people how to _think_, how to break a problem down into solvable parts, how to learn more and more and more. My job is not to pour information into passive students, but rather I am here to show them the basics and then challenge them, make them hungry for more, guide them through questions and hints. I don’t know everything, but I love sharing whatever I know, and I love learning new things from students and the world.

I messed up a lot as a beginning teacher, too. There were days when the explanations I prepared the night before didn’t work and everyone was just confused. There were days when I’d just get so frustrated with my inability to express something or to convince people that copying isn’t going to teach them as much as actually sticking it out and solving the problem. But still, there were days when I’d see students get that Aha! moment, and that made things worthwhile.

I enjoy computer science so much that I cannot think of _not_ teaching it. I want to get other people hooked. I want people to fall in love with learning and problem-solving. I want people to discover that they too are capable of mental wizardry; that they too can make the computer dance to their tune. I want to be a fantastic teacher. In order to do that, I’m working on not only getting the theoretical and practical background to share with my students, but also learning how to teach and teach well.

Let me tell you that computer science education doesn’t have to be like what you’re suffering. I know it can be good, and I want to make it even better.

What does this mean for you, now, while you’re taking up your degree at Adamson University?

Well, if you can’t do anything about your teachers right now, you have many ways of coping. Open source gives you an opportunity to test your knowledge and make a difference world-wide. Even as a student, you can work on really cool things! Come hang out with us, too. We can challenge you. We can help you stay enthusiastic and passionate about computers. When are you usually free?

On Technorati: , ,

On teaching programming

why do I have to write all this syntactic sugar to just do the canonical “Hello, world”?

I firmly believe that the canonical “Hello, world” program is one of
the worst ways to introduce Java, or even programming in general.

I like BlueJ. It’s a nice, clean, object-oriented environment that
immediately visualizes the difference between objects and classes and
allows students to interact with objects before they even see Java
code. I like the way BlueJ lets you interact with complex systems,
learning about control structures and logic along the way.

A popular Python tutorial starts with using Python as a calculator
instead of just getting it to print strings. Isn’t that a great way
for people to see how immediately useful a programming language can
be?

I wouldn’t start an Emacs Lisp tutorial with (print “Hello, world!”).
I would start it by taking a look at an existing function and
modifying it.

Languages should not all be taught the same way. Just because we might
have learned with “Hello, world” doesn’t mean that “Hello, world” is
the best way to learn how to program. I think there are better ways to
teach computer science, and I want to spend a fairly significant chunk
of my life looking for them.

You can, too. Just remember that you can improve on the way things
have always been done.

E-Mail to True Computer Science Mailing List

彼女は娘のためにパソコンを買ってやった。 She got her daughter a personal computer.

On Technorati: , ,

Advice to IT students: Learning to love what you might hate right now

After I gave a talk at the Toronto College of Technology on how IT students can get ready for the workplace, I asked two of my virtual assistants (both educators) to follow up with some advice that they could share with their students and with students around the world. This post was contributed by Rose Andrade-Calicdan, who connected with me on oDesk. I think it’s not only an excellent insight into how IT courses can help one prepare for life’s twists and turns, but also a glimpse into the lives of wonderful people who offer virtual assistance.

In total, it took her 1.5 hours to write, and about .5 hours of my time to give her feedback and polish the results. My conclusion: I think it was worth investing that time in bringing this story out, and I learned a lot in the process.

Also, I feel tremendously unqualified to be delegating tasks to her, but that’s okay; I can think of it as making excuses for her to develop her skills, gain even more experience (and have more anecdotes to share with her students!), and teach me something cool. =)


Advice to IT students: Learning to love what you might hate right now

by Rose Andrade-Calicdan

Teaching is a rewarding career, but it can be frustrating if your students are unmotivated and uninterested in their course. Many students registered for courses they hated, because of their parents’ demands. Some just tagged along with friends. Others had no other choice or had no idea what to pursue. Many of these students are in my class. My challenge is: how can I motivate these students to like my programming course (which they despise) and teach them the skills they need for work?

Even during the first few days of classes, I could feel some students’ boredom. They wouldn’t participate in discussion or join the classroom interactions. I needed to encourage involvement in my class as part of the student-centered approach to class management. I love sharing my knowledge, and I also enjoy growing this knowledge by collecting others’ ideas. My personal belief is that the more you share what you have, the more you learn and gain.  

How could I stimulate interaction and participation? Initially, I tried to let them see the significance of each lesson, demonstrating how those lessons related to their lives. If they understood how something affects them personally, they would be more likely to pay attention to the lesson.

How could I enthusiastically share my own experience in order to heighten their interest in continuing learning? I shared how I started working in the academe, how I had experienced working on various IT-related and non-IT related jobs, and how I learned the skills to compete with other applicants.

I told my students about my first non-IT related job, which was at the hospital. I was in charge of receiving and filing health forms submitted by patients in order to claim medical benefits. Although this task was not directly related to my course, it was my first stepping-stone to more work opportunities. Even though the job was simple, I tried to find ways to gain more experience and get the ‘know-how’ of real work scenarios. By keenly observing how the hospital generated related information, I was able to study the ‘ins and outs’ of real computer-based information systems, which during my studies were all theories and intangible concepts.

Later, I had my first break: my first programming job. At the same hospital where I had worked, I was asked to create a database of patient information that could record medical treatment received by patients, monitor doctors’ consultations, and generate relevant reports. That was my first real taste of IT work.

But I still wanted to teach. Taking advantage of time flexibility, I applied as a college instructor. It was difficult to adjust to working in the academe and going back to the same routine of studying and learning new lessons, but I got used to it. During this time, preparing lessons for my students was a burden. The Internet wasn’t available then, so I had to bring home several books from the library. Even though it was difficult, I gained a lot from the experience. I improved my ability to write course manuals specifically designed to suit my students’ needs and enhance their learning. And as an IT graduate, I had an advantage: I could use tools to help me develop these materials. Combining my new technical writing skills with my IT knowledge, I wrote an IT textbook and prepared modules for IT-related courses.

The biggest break in my IT career took place when I was teaching. I wanted to personally experience real IT work. During my first summer break, I took a big programming job at my own risk! I was given a deadline to develop the application in less than two months. With guts, brainstorming sessions, and careful analysis and design, I completed a school program for assessing student fees. I found it quite complicated as the school had different schedules of fees for different type of students: government scholars, siblings discount, and various types of installment programs. This really tested my expertise. I remembered all my classes in database and programming concepts, system analysis and design knowledge, project management and software engineering. I conducted several stakeholders’ meetings, gathered users’ requirements and specifications, developed, debugged, constructed and tested–all by myself!  Whew! I not only survived the six-week project, I delivered what the school needed just in time for their school enrollment.

When I had several years of experience in the academe, I was given the opportunity to manage a school as the College Dean. My position called for greater responsibility. I had to run the school, implementing policies while ensuring that quality education was being provided to our students. Schools face very stiff competition. Most of the time, I needed to ensure that we had updated curricula and course materials, well-maintained school facilities, and qualified professors. Even as a college dean, I still needed to keep myself up to date with new IT trends. I learned more about various e-learning and IT technologies, and I continued writing tips and advice for my students.  

Due to some personal constraints, I needed to go back to teaching. To maximize my use of time, I’m working outside school as well, accepting simple home-based jobs that use my skills in IT: data entry, research, writing, website quality assurance, document specification, virtual assistance, and so on.

My experiences showed that with an IT course, jobs are indeed unlimited! There are a lot of job opportunities that, in the beginning, you might have never imagined to be your means to earn a living.

With these stories, many of my students who had been thinking of shifting to a different course were inspired to imagine themselves in various IT work opportunities. In fact, I think that among the accomplishments in my career are students of mine who landed their dream jobs, whether in the IT industry, the academe, or elsewhere: students who have learned to love the course they hated in their first few days of college.


Rose is currently enjoying her teaching profession at Lyceum of Subic Bay while working as a Virtual Assistant and a Web Researcher at Odesk. Her dedication to teaching and her passion for sharing things she knows inspire her to continuously explore and study things relevant to her career.