Start by implementing spatially inhomogeneous atmospheric attenuation. Divide each ray into intervals. For each interval, interpolate between the ray's color and some constant fog color based on a procedurally computed opacity for that location in space. Experiment with opacity functions. Implement a class of more complicated primitives from Hanrahan's chapter in Glassner's book.
Fractals are relatively easy to implement and fun to use.
For extra fun, map textures onto your patches or fractals. Mimic the object's appearance as closely as you can. You will be graded on the difficulty of your object and the accuracy of your depiction. Since this is a rendering course, we're looking mainly for rendering complexity, not geometric complexity. Use a scanner to input the cover design.