Lab9: Mandelbrot Explorer Debugging ################################### This is a group project. Here are the invitation links: * `COSC1337-002 (HLC) `_ You and your team have been hired by the Mandelbrot company to get their new application running. The project is supposed to let users easily explore the world discovered by the company founder's Grandfather. The project is in trouble, because a senior designer, who was terrible at documenting what was being done, quit the company in the middle of patching the project to add new features. Your team's job is to study this project code, and see if you can get it running. Each team member should accept the above invitation and clone the project repository onto their workstation. Clone the Project Code ********************** The project is currently available in a public Repository on GitHub at https://github.com/rblack42/Mandelbrot.git You need to clone this project into onto one team member's workstation, then copy files (carefully, so you do not create a repo inside of another repo). Once the first team member does this step, and pushes the code to GitHub, the others in the team should run "git pull" to update their working copy on their individual workstations. Testing the Project ******************* .. warning:: You need to have Python3 installed on your development system for the Makefile tools to work properly. See me for help with this after ou get set up. First, run "make help" to see what commands are available for this project. Then test the basic code by running "make run" and "make test" to make sure it runs on your system. See me if you run into problems getting this running. Your Job ******** Beyond fixing the code so it works better, you should add to the test set, and add some documentation explaining what is going on. You should also explore new features that make the application more interesting. The current Graphics library has been extended to allow more control over animation, and to allow the user to control things using a keyboard and mouse. You should think about how these could be used, beyond what seems to work now. For example, it appears that the old developer was working on using the mouse to navigate around in the Mandelbrot world, with a few keys being used to zoom and translate the code. The current setup is messy, and work was underway to provide a cleaner way to navigate around. The Transform class was being introduced to make coordinate transformations work better. Think about how you feel the code should run. The basic logic is in place to give you access to the keyboard and mouse for input controls. You also might consider using a different scheme (or schemes) to color the display. The current scheme uses the iteration count, and converts that to some color for display. Look at how others display images from the Mandelbrot world, and see if you can come up with a better scheme. Code Cleanup ************ The current code is not very well organized. The ``Makefile`` system included in the project lets you split up the ``lib`` folder any way you like, with subdirectories used to keep things logically separated. You should use this feature to clean up the project so it can be maintained. When we discuss your team's findings, we will conduct a "peer review" in class. You will show off your code, and your "peers" will critique it. This experience is a bit daunting at first, but you will get over it. In the end, this kind of discussion turns you into a better programmer. That applies both to the person being critiqued, and the people doing the review. You both learn something through this process! When Is This Due? ***************** We have four weeks remaining in the class. Obviously, this should be completed by the end of the term. We will have one other group project, which will involve writing some code on a microcontroller board (probably not the Raspberry Pi, I do not have enough free for the classes). Instead, we will use an Arduino, commonly programmed using C/C++ to control some hardware you can select. More on that soon.