Computer Sciences Department logo

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

Due Monday, December 10, at the start of class.

Goal

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.

Tasks

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:

cx–0.5
cy0
w1
p400
n2

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:

Reminders

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

All homework assignments must be turned in by email! See the email page for more details about formatting, etc.

For this assignment, submit your Python script and any required support files (templates, HTCondor submit files, whatever).