Weeks 4 and 5 Fall 2015

and Miniproject Specifications.

Last edited 20sep15
\begin{document} \maketitle \section{Introduction} One way to prepare for doing a project for Hypergraphics is to produce a miniproject over a fixed period of time on a topic from a small list of prescribed topics. A few of the miniprojects completed by past students in the course subsequently evolved into their major project, but that is not its principal purpose. This exercise is to work out the technical kinks so that \begin{itemize} \item You can formulate and explore a project of your choice with some confidence that you will not be unprepared. \item Your mentors can advise me in assessing your proposal for its feasibility and your ability of completing its various steps in a timely manner. \item You'll get feedback on how you're doing without the implicit penalty later of having to revise major parts of a suboptimal project in the last minute. \end{itemize} This assignment comes in a diverse format suitable to your prior experience and ambition. Pick one appropriate to yourself and complete it in the coming week. Since it doesn't involve much math, you may still submit the documentation as a .pdf generated by any word processor you feel comportable with. But, since the next assignment will be a be start on your webpage beginning with its index.html file you are invited to start using that format for the documentation. We will go over this issue on W5 and answer questions in Piazza on that topic. Remember, the entire project will be in submitted in your repo \texttt{class198f15/ivanho2/public_html/} (except that you use your own netid), and all the files for your project which you chose to publish to the world will have a copy (not a link !) in your public_html. If you're new to programming and not sure how to edit given examples to create new ones using a text editor, do just Problem 1. If you're ready to tackle a language but are not very experienced with the process, take on a version of Problem 2. If you are an experienced programmer, consider doing Problem 3 for something of a challenge. \section{Three Choices: Novice, Journeyman, Expert} Be realistic, neither overly ambitious or cautious in placing yourself at one of these levels. \subsection{Problem 1: Using Turtle Geometry: Novice Level } Use Turtle Geometry, either as in the earlier lesson in Python or with Bob Illyes's turtle graphics, which understands Javascript, to invent an interesting design of your own. Explain in the documentation what mathematical idea it expresses. You do not need to modify any code, nor even look at any. You can include screen shots of your common input and of the output figures, instead of submitting a whole program in your documentation. \subsection{Problem 2: Modifying a Given Program: Journeyman Level} Choose 2a if you are leaning towards towards using Javascript for your project, and 2b if you are leaning towards Python. \subsubsection{Version 2a} Study the Python script on the torus/hypercube rotating in 4D and modify the geometrical part to show a different surface in 3D or in 4D. You may use your DPgraph explorations as the subject. You may, but probably should not, modify the part of the program that handles the interactive input or the OpenGL output unless you have experience with OpenGL. Discuss the mathematics of your surface in the documentation. \subsubsection{Version 2b} Version 2b. Modify the Gregg Tavares Javascript which displays a rotating cube to displaing a rotating hypercube. You should use Steve Kommrusch's idea of tracing the hypercube in a single continuous polygon which visits each edge exaclty once (Eulerian Path). If you don't feel you can do this, you may use the approach taken in the Python torus/hypercube approach in Amy Klobuchar's Python program. Either way, you're translating a mathematical idea originally encoded in C, respectively in Python, to implement in Javascript. You should use proper mathematical notation for the common objects, functions and equations. \subsection{ Version 3: Expert} Study Bob Illyes's code, and by all means reformat it according to the style presented by Vassi and Graham on F4, if you wish. They made an eloquent case for contemporary programminging styles customary in computer science. Then modify it. At the least you might write a better but still single page help() function. Add a few new items, a rotating hypercube for example. Or, provided you complete it in time, implement some other "language" that produes figures of your own design. A simple game that teaches some geometry? \section{Where to find the Bodies} The folders I used during Week 4 and this assignment refers to are in the foyer of the repository. Although you can, please to not modify anything in these folders. Along with the folder itself, there is a .zip file of it in the zipper/. Copy that to your own repo space and unzip it, if you plan to experiment or modify it. For example, for Python graphics, \texttt{cd class198f15/} ;; or whatever you named it
\texttt{cp zipper/OpenGL.zip ivanho2/python/ } ;; use your own netid
\texttt{cd ivanho2/python} ;; ditto
\texttt{unzip OpenGL.zip} ;; so your Py/OpenGL scripts will work.
Be sure to svn-add anything you might want to work on in the lab/at home, but, please, DO NOT add large unoriginal items like the OpenGL/ folder or its zip file! I will leave these folders on the world visible class pages a while longer, but then remove them again at the end of the week. \end{document}