CS 200 presents fundamental mathematical elements, data structures, and algorithms useful for animating and viewing two dimensional primitives. The course aims to fulfill two objectives. The first objective is to provide students with a sufficient mathematical and algorithmic background to design and implement 2D graphics applications. The second objective is to prepare students with the knowledge required for writing three dimensional graphics applications. The first half of the course deals with scan-conversion algorithms for rasterizing 2D primitives such as lines, circles, ellipses, triangles, and arbitrary polygons. The second half of the course is concerned with the viewing and animation of these 2D primitives. The course covers topics such as interpolation techniques, transformations, culling, clipping, animation techniques, and the 2D viewing pipeline.