Computer Sciences Department logo

CS 368-4 (2011 Fall) — Day 13 Homework

Due Tuesday, December 13, at the start of class.


Create a pretty image by running a Mandelbrot generator on several “tiles” and then stitch the tiles together to create a single, large image.

This exercise is an extension of Homework #12 to create the entire workflow.

Background Information

See Homework #12 for background information, which is still relevant here.


There are two main tasks to complete: design a workflow to solve this problem, and then implement it with a Python script and, depending on your design, perhaps some other supporting files.

Part I: Design

As in Homework #12, your final script must accept the following command-line arguments, which define what to draw. Keep them in mind as you design your solution.

Consider a fairly simple set of command-line arguments:


Sketch your workflow for this scenario, using circles for nodes and arrows to connect them. Be sure each node is needed — avoid extraneous nodes. Give each node a unique label.

Next, write down the details for each step: prerequisites or preconditions, inputs (including command-line arguments), process (i.e., executable), and output. Do you want or need any pre- or post-scripts on any nodes? If so, write down the same details for them. The clearer you can be about this part of the design, the easier the implementation will be. However, if you are not sure of details now, you can always come back and figure them out later.

Finally, consider the DAGMan design of your solution. We have talked about lots of different approaches to building a DAG. Which will you use? Some questions to consider:

There is not one correct answer to these questions! Each decision has pros and cons. Do your best to consider your options and make choices. Again, you can always defer some decisions until later, or change decisions already made!

Part II: Implementation

Given your experience with Homework #12 and your design decisions, implementation should be fairly straightforward. Be sure to reuse as much code from Homework #12 as possible! Do not reinvent the wheel. Of course, some things will certainly change for this assignment.

Some important notes (read carefully!):

Extra Challenges

Some ideas for extra learning:


Do the work yourself, consulting reasonable reference materials as needed. Any resource that provides a complete solution or offers significant material assistance toward a solution not OK to use. Asking the instructor for help is OK, asking other students for help is not. All standard UW policies concerning student conduct (esp. UWS 14) and information technology apply to this course and assignment.

Hand In

A printout of your script, and any required support files (templates, Condor submit files, whatever), ideally on a single sheet of paper (double-sided is great!). Be sure to put your own name clearly on each piece of paper, regardless; identifying your work is important, or you may not receive appropriate credit.