Many systems in real life are composed of a multitude of identical objects, each with simple behavior. However, as a whole, complicated or unexpected group behavior emerges. Consider traffic (automobile, or information packets on a computer network). Consider a market economy. Or consider a school of fish or an army of ants. This behavior is called emergent behavior.
Emergence rules: Consider a group of creatures. They can be a flock of birds or a school of fish. In either case, they are only aware of their immediate surroundings. We can describe their behavior using three simple rules:
The final project for the Python part of this course is to implement Emergence, satisfying these core requirements.
Much of your work on this project will be figuring out how to translate the emergence rules into a working design and implementation. If you are having trouble planning or getting started, get help. It is much better (and easier) to get help early and start off with a good plan than to try to hack a poor design into a semi-functional program in the final days before it is due.
On Day 16, your team should determine what you expect to have done by the beginning of each subsequent class day! Each milestone will contribute to your overall project grade. Each milestone must be done before the specified class session unless specified otherwise. You should describe each milestone in terms of something that is testable. I.e., is should be something that the user of the program can see happening. For each milestone, you must commit your work to your team's repository and include a clear commit message stating that this milestone is completed. Your team's repository is named csse120-201010-teamXY, where X is your section number, and Y is your team number within that section.
http://svn.cs.rose-hulman.edu/repos/csse120-201010-team
XY
where X is your section number and Y is your team number as announced by your instructor.
The team should check out the Emergence project.. In addition to main.py, the project contains a document that you can use for recording your milestones for each session. Each team member should independently add his or her name to the comments at the top of the main.py file. This involves each of you editing the file, so it requires careful use of SVN. Detailed instructions for how to do this were given for the Tic-Tac-Toe project. The slides for that session are located here.Follow the SVN cycle of update-edit-commit whenever you make changes to your program. You should definitely commit your work after each milestone beginning with the milestone for session 17.
Before the end of class, you should read and understand the documents. You should figure out your Milestones, what is to be completed before each session, and record it on the Milestones document in your repository. You should do as much program design as you have time for. Perhaps you should do a little coding.
Session 19 — TBD by you in Session 16
Project grades will be based on both individual and group results. We will check off each project milestone, to make sure you are making steady progress. The final project program will be graded based on both the proper functioning of your program and an evaluation of your design, coding style, and documentation (including SVN commit messages).
Each team member will be required to complete an evaluation survey about his or her own performance and that of each of his or her teammates. We will use these surveys and our own observations to assign individual project grades. Individual grades will be based on your contributions to the project, how well you work with your teammates, and your understanding of all parts of your team's code. If is not obvious from our work with you that you understand the code, we may ask to meet with you before assigning a grade.
Once you are done with the basic version, you may want to add some enhancements for extra ctredit. You will earn a higher grade for doing more challenging ones, and the more, the better. Be creative. What's cool and challenges you? Discuss your ideas with your instructor.