Teachers Get the Most from Teaching


Two years ago, I was offered an opportunity to teach CS students some “practical” programming. Being a self-taught programmer, I felt unsure about my qualification to teach the bright and diligent to-be computer scientists in the prestigious institute. But I also felt compelled to say something to those who want to learn programming, given the twenty years of coding for some very interesting problems. The numerical, scientific, and engineering problems in real world are much more interesting than what we read in the textbooks! They are from everywhere. The industries need to solve the problems using computers but most of them do not know how. And many students pay attention to the popular IT (Internet, web, mobile, and “cloud”, “AI”, “ML”, etc.) without knowing the problems, which will change our world in very different ways than ordering food online. This is a pity.

So I took the challenge. I think perhaps some organized introduction to the art of writing numerical codes might help computer scientists appreciate the special branch of software development. Although it is impossible for a single course to cover everything, I can try to introduce from the software engineering point of view. This might also be one of the least addressed in scientific computing. Many disciplines have curriculum for numerical analysis, but numerical methods alone do not build the software for the calculations. Obviously, like all software, fundamental engineering is required for robust development. But the numerical software also requires unique structures and patterns. Failure to comply with them leads to a mediocre system which fails when the problems become critical. More discussions about the software development will prevent the sad stories from happening so often.

Teaching is an amazing experience. I enjoy the time organizing the notes, trying to explain and give examples for what I learned in the field, and guiding students to discuss and plan. I am very grateful to Prof. Shih-Kun Huang for his inviting me to teach in NCTU/NYCU and the support from the department. While I play the role of a teacher, the students in the past two years have taught me so much with their creativity and growth. The course does not only deliver the organized contents to the audience, but also deepens my own understandings to the matter of writing code to run fast and solve problems.

I will continue the course in the next semester (2021 autumn) [1]. As long as the students like it, I will be happy to teach it. If you are interested in writing code for solving interesting but not-so-computer-science problems, come take a look. It’s gonna be fun.

[1]Numerical Software Development