How to teach debugging in undergraduate computer graphics courses?
OpenGL is the primary programming language taught in undergraduate computer graphics courses. Debugging OpenGL programs can be particularly difficult because of the parallel processing nature of GPU programming and the complexity of writing programs for two processors: CPU and GPU. Computer graphics programs also require special debugging techniques and debugging tools. Many students told us that they spent hours or even days to fix a program. We believe they can save a lot of time if they learn common errors and a more systematic debugging method.
However, most computer graphics textbooks and programming guides do not provide sufficient coverage on debugging. They rarely discuss errors in computer graphics programming. Therefore, when students encounter errors in their own programs, they can't easily find a reference that guides them to locate and fix the bugs.
This project is an attempt to address this issue by providing materials for teaching and learning how to debug computer graphics programs.
The goals of this project are:
1. Provide a comprehensive analysis of common errors in computer graphics programming.
2. Provide a comprehensive reference that helps students avoid common errors and learn how to debug computer graphics programs.
3. Provide materials for instructors to teach debugging techniques.
1. We collected and analyzed programs and questions submitted by our students.
2. We surveyed online Q&A web sites such as stackoverflow.com, stackexchange.com, and opengl.org for questions related to computer graphics programming.
3. We identified common errors in computer graphics programming.
4. We published checklists, tutorials, and sample programs on a web site.
5. The web site has been tested in three courses at GSU.
The main outcome of this project is the web site https://sites.google.com/site/debuggpuprograms/.
Students can use this web site as a reference to help them avoid common errors and debug their programs.
Instructors can use this web site as a supplement to their regular computer graphics curriculum.
We will add more checklists and tutorials on WebGL, OpenCL, and CUDA.
The web site is under review by external consultant Dr. Ed Angel. We plan to recruit more instructors to test and evaluate our project.
The web site can be a useful resource for students and instructors all over the world. So far over 200 students at GSU have used this web site in their study of computer graphics.
In addition to publishing the web site, we also presented a poster at ACM SIGCSE 2015 conference.
My plan was to focus on creating educational materials for OpenGL and OpenCL, both of which are GPU programming languages. A somewhat unexpected challenge is the emerging of WebGL as a programming language used in undergraduate level computer graphics courses. A major textbook based on WebGL by Angel and Shreiner was published in late 2014. I will need to add educational materials on WebGL.
Ying Zhu and Scott Owen, Teaching Debugging Skills in Shader-Based Computer Graphics Programming, a poster presented at ACM SIGCSE conferene, 2015.