Target Audience: Undergraduate with 3D math and physics background (senior)
Description: Medium-sized project that simulates the n-body problem (multiple non-colliding celestial objects influencing each other through gravity). Uses OpenGL and FreeGlut for visualization. Includes three versions for both Windows and Linux: serial, OpenMP, and CILK.
Target Audience: Undergraduate with college math background (sophomore/junior)
Description: Small project that visualizes the computation of the 2D Mandelbrot set. Uses OpenCV for visualization. Includes three versions for both Windows and Linux: serial, OpenMP, and CILK.
Target Audience: Graduate with 3D math and Linear Algebra background
Large project with feature-rich ray tracer (including anti-aliasing, glossy reflections, translucency, depth of field, soft shadows, and median-split volume hierarchy acceleration structure). Does not include visualization, but can easily be converted to support OpenCV. Reads Pixar Renderman (*.RIB) files and outputs *.PPM image files. Includes three versions for both Windows and Linux: serial, OpenMP, and CILK.
Intel® Cilk™ Plus employs work stealing, where threads steal work from other threads. Though a good Intel Cilk Plus program should not depend on whether work is stolen or not, you might be curious about when it occurs in a program. This blog shows how to satisfy that curiousity with a holder hyperobject, a generally useful abstraction that I'll abuse somewhat to detect stealing.