In this assignment, students will create geometric tilings in Python. Students work to draw tessellations whose specifications are provided, and have the opportunity to design their own. Students practice problem decomposition to build logic that draws a single element, a row of elements and finally a plane tiled with rows.
This assignment is essentially Robert Muller's "Problem Set 2: Tessellation" assignment, available in the EngageCSedu repository. We scaffold that material and add additional resources: (i) background materials are provided to help students with the geometry of the four mandatory elements to be tiled (squares, rings, hexagons, octagons); (ii) the assignment flow starts with simple shapes before moving to complex ones; (iii) a template is provided that gives function specifications, scaffolding the decomposition; (iv) test cases are given that allow students to check the correctness of their individual functions as they build them; and (iv) a potential grading rubric is provided.
Invite faculty from the Math, Art or Art History department to talk about tilings and build interest and context for the assignment.
This assignment is heavily scaffolded. Scaffolding can be removed to make the assignment more appropriate for where it appears in your class. For example, if your students already are comfortable with writing functions, you may ask them to decompose the problem into functions themselves without guidance; or you may scaffold the first part ("tiling squares"), but ask them to design the later parts following that pattern.
If you credit this assignment in any way, please be sure to credit Muller's original assignment too.
This assignments uses meaningful and relevant context as well as interdisciplinary connections by working with tessellations and relating them to math and art. Students are given a choice by allowing them to use some tessellations of their choosing and to participate in extra credit used as the basis of a "most interesting tessellation" contest in class.
Materials and Links
Computer Science Details