Delivering the fundamentals of software architecture, design and abstraction by developing a ray tracer for 3‐dimensional graphical scenes
Elishai Ezra Tsur · Computer Applications in Engineering Education · 2018
Abstract Software architects and designers develop abstract models of problems in the aim of designing software‐based solutions in the context of customer's needs. Current paradigms for software engineering education are often providing a narrow interpretation of the field, neglecting the art of conceiving useful abstractions of new—often discipline‐oriented—problems. Here, an introductory course to software engineering, design and architecture is described. The course is based on designing and modeling a ray tracer for a virtual 3‐dimensional graphical renderer, including the realization of the physics involved (light sources, rays, reflections, refractions, colors, occlusions, etc.). During the course, students integrate their fundamental knowledge of mathematics and physics, with their basic understanding of algorithms, data structures, object‐oriented design and programming. Multi‐phase surveys (n = 312) show increased level of interest, challenge, and relevance. Course materials are available in NBEL‐lab.com and shared under the creative common agreement.