CSSE 220 – Object-Oriented Software Development 
  Homework 
21 
  Objectives 
 
	Practice object-oriented design. 
 Tasks 
 
	-  If you haven't already done so, do the quite brief
			Cycle 0 Evaluation of Team Performance survey
			on Angel, under Lessons → Assignments (at the top of the list).
		
		  -  Please complete this item ASAP; don't wait until this homework is due. 
 
- 
		Complete the assigned  reading  for the next session:  Big Java  §13.4–13.5 and §14.1–14.3.
		
			-  As you read, see if you can answer the self-check questions. 
-  Bring your questions to class! 
 
- 
		Complete the  assessment exercises over this reading  on ANGEL (under Lessons → Assignments).
	
- 
		 Team Assignment: Working with your team, complete the assigned milestone of the  Vector Graphics:
			
			  -  Per the milestones chart in  Vector Graphics, this means:
				
				  -  Complete all Cycle 1 code deliverables — the code and status report (and at the end of Cycle 1,
						do the Cycle 1 Evaluation of Team Performance survey on Angel). 
 
 
- 
		 Solo programming:  Make a “good faith effort” on the following exercises from the  Recursion 
				project that you checked out in class.   Your solutions to all the following must be recursive. 
			
			  -  This exercise is  not due until Session 23 (Tuesday). 
-  However, you are expected to attempt the exercises, so that you can bring your questions to class. 
-  Don't get stuck on these exercises! Give them a try, and then bring questions to class! 
-  Recursion is very easy once you have the hang of it, but very hard until that point.
					Take advantage of the extra time on these exercises by attempting them before Monday, bringing your questions to class. 
 
		  -  Complete the isPalindrome() and isPalindrome(int first, int last) methods
				in the  Sentence  class of the  examples  package, if you have not already done so.
		  
-  Implement, including JUnit tests, the  reverse()  method in the  Sentence  class.
		  
-  Complete the recursive  drawSierpinski()  method in the  SierpinskiRenderer  class
				in the  sierpinski  package. This method should render the Sierpiński Triangle as shown in the figure below. The triangle is rendered by following these steps: 
				
					- 
						Draw a solid equilateral triangle. 
					
- 
						In a contrasting color, draw another solid equilateral triangle whose corner points are the midpoints of the original’s sides. 
					
- 
						Repeat this process recursively for each of the three corner triangles. That is, you will need three recursive calls in your method. 
					
- 
						Technically speaking, this process is repeated an infinite number of times to create the true Sierpiński triangle, but we don’t have that much time. So, stop your recursion when the length of a side of the triangle becomes shorter than some fixed constant, say 5.
   
  Turn-in Instructions 
	Turn in your programming work by committing it to your SVN repository.