Ray tracing as an object-oriented example for CS 1 (original) (raw)
Related papers
A library to support a graphics-based object-first approach to CS 1
2001
Abstract In this paper we describe a library we have developed that supports an" OO-from-the-beginning" approach to CS 1. The use of real graphics" objects" and event-driven programming are important components of our approach. The design of interactive graphical programs helps students to both use objects and write methods early while designing and implementing interesting programs.
Rayground: An Online Educational Tool for Ray Tracing
Eurographics, 2020
In this paper, we present Rayground; an online, interactive education tool for richer in-class teaching and gradual self-study, which provides a convenient introduction into practical ray tracing through a standard shader-based programming interface. Setting up a basic ray tracing framework via modern graphics APIs, such as DirectX 12 and Vulkan, results in complex and verbose code that can be intimidating even for very competent students. On the other hand, Rayground aims to demystify ray tracing fundamentals, by providing a well-defined WebGL-based programmable graphics pipeline of configurable distinct ray tracing stages coupled with a simple scene description format. An extensive discussion is further offered describing how both undergraduate and postgraduate computer graphics theoretical lectures and laboratory sessions can be enhanced by our work, to achieve a broad understanding of the underlying concepts. Rayground is open, cross-platform, and available to everyone. CCS Concepts • Social and professional topics → Computer science education; • Computing methodologies → Ray tracing; • Software and its engineering → Software prototyping;
Using graphics to support the teaching of fundamental object-oriented principles in CS1
Companion of the 18th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications - OOPSLA '03, 2003
Teaching object-oriented programming in CS1 is hard. Keeping the attention of CS1 students is perhaps even harder. In our experience the former can be done successfully with very satisfying results by focusing on the fundamental principles of object-orientation, such as inheritance, polymorphism and encapsulation. The latter can be done by having students create graphical event-driven programs. Care must be taken, however, since teaching graphics can easily distract students and certainly takes time away from the fundamentals being taught. We use Java as a vehicle for OO instruction, but rather than expose CS1 students to the intricacies of Swing we employ an elegant and small graphics package called NGP. NGP allows students to create event-driven graphical programs using only inheritance and method overriding. We describe how we use NGP to enhance rather than detract from our teaching of fundamental OO principles.
Introducing object-oriented programming into the computer science curriculum
ACM SIGCSE Bulletin, 1987
In recent years, object-oriented programming languages and object-oriented program design have become increasingly popular. Dialects of many popular programming languages are now available which support the major concepts of object-oriented programming; namely message-passing, classes, generic operations and inheritance. Experience in the paradigm is increasingly supporting the view that object-oriented programming may be to the 80's what structured programming was to the 70's in terms of its influence on software development. After reviewing the notions of object-oriented programming, we describe our experiences in introducing the object-oriented paradigm into the Computer Science curriculum. The impact was felt in four courses dealing with data types and data structures, programming languages, software engineering, and compiler construction. In addition, we describe the use of the Smalltalk environment in advanced course and project work. We chronicle our experiences in th...
Introduction to programming with objects
There are many low-level syntactic and algorithmic details one feels obligated to present in any CS1 course. An objects-first approach adds even more topics. What gives? We believe many details can give. But more importantly, there is a set of higher-level software development concepts, supported by object-orientation, that can be used as a framework on which to develop traditional programming topics. Among these are the development and use of abstract data types, by means of objects; the design-specify-implement-test iterative cycle for software development; and fundamental architectural and software design patterns for structuring programs.
A new algorithm for object oriented ray tracing
Computer Vision, Graphics, and Image Processing, 1986
A new algorithm for ray tracing object oriented environments is presented. The new algorithm promises significant savings in CPU time compared with the standard Constructive Solid Geometry (CSG) algorithm. In particular, fewer ray-surface intersections are calculated, all sorting is eliminated, and there is no binary tree traversal. The new algorithm is bounded in CPU cost by O(N) for N objects compared with O(N 2) for CSG.
Assignments for an Objects-First Introductory Cumputer Science Curriculum
Designing an effective curriculum to teach programming and software engineering to beginning students is challenging. An objects-first course prepares students in an excellent way for the requirements in industry and academia by focusing on program design, thereby enabling students to write correct, robust, flexible, and extensible software. This paper outlines the effects of an object-oriented approach on software quality and describes five assignments that can be used as teaching tools in an objects-first course to evaluate and reinforce the students’ understanding.
Evaluating OO example programs for CS1
ACM SIGCSE Bulletin, 2008
A significant part of learning to program is to be exposed to examples that may work as templates, guidelines and inspiration for the students' own programs. It is therefore important that textbooks provide high quality examples. In this paper, we discuss properties of example programs that might affect the teaching and learning of object-oriented programming. Furthermore, we present an evaluation instrument for example programs and report on initial experiences of its application to a selection of examples from popular introductory programming textbooks.
Object-centered design: a five-phase introduction to object-oriented programming in CS12
ACM SIGCSE Bulletin, 1996
With Pascal waning in popularity as the CS1 language of choice, many colleges and universities are considering the adoption of C++ (an imperative and object-oriented hybrid language) as its replacement. An important issue that must be addressed in making such a change is the question of what software design methodology should be taught to CS1 students. Two common answers are (i) continue teaching structured design in CS1 and switch to object-oriented design in CS2; or (ii) teach object-oriented design from the outset in CS1. We believe that both of these approaches have significant drawbacks. To avoid these drawbacks, this paper describes a graduated approach to object-oriented design that we call object-centered design. The approach introduces students to object-oriented design by the end of CS2 without an abrupt paradigm shift, and without requiring an early introduction of inheritance.
Designing and Coding Object-Oriented Systems: An Introductory Course Experience Report
ctp.di.fct.unl.pt
An emphasis on design issues along with introductory programming courses is fundamental for students to envision "the big picture". Teaching with the object-oriented paradigm from the start pays-off. An introductory course (CS/1 like), where this approach was adopted during three school years, is outlined. A detailed look on archetype problems solved at this course is presented.