Backwardly Compatible Code (Activity)

From Foss2Serve
Revision as of 16:09, 27 May 2015 by Evelyn.Brannock (Talk | contribs)
Jump to: navigation, search
Title Backwardly Compatible Code
Overview The learner will examine the code for the Color class from the Java API and make determinations about its content and why it was designed as it was
Prerequisite Knowledge Mid-level CS1 to beginning CS2 language skill sets, including basic javadoc
Learning Objectives The learner should be able to understand code, read javadoc comments, infer the coding standards used, and understand how backward compatibility can be supported after the activity.

Background:

The rationale of the activity is to provide an example in which a class was not correctly written when it was first published. The Color class source code in Java SE provides an example in which the code was updated in version 1.4 to correctly support coding standards, but the code is still backwardly compatible for application written using the class in version 1 through 1.3.

Directions:

  1. Even Experts Make Mistakes
    1. You can download the source code for the Java classes in Java SE. Where is the source code located?
    2. Find the Color class for Java 7. Read and understand the code.
    3. Answer the following questions from the code:
      1. What does the first 20 or so lines contain?
      2. When was the Color class written?
      3. Who are the author/s?
      4. What is sRGB?
      5. What interface/s does the Color class implement?
      6. How many public instance variables are contained in the Color class? What are the name/s of the instance variables?
      7. How many public static variables are contained in the Color class? List the variables that are have a constant value. What is the naming standard for constants in Java 7?
      8. How many private instance variables are contained in the class?
      9. How many private static variables are contained in the class?
      10. Go to the Java API for the Color class. Can you find any reference to the instance variable named falpha? Why or why not? Find falpha in the java code. Does the code tell you what the falpha variable does?
      11. Are there any private methods? What do these method/s do? Are the comments sufficient?
      12. It seems like each color is defined twice (such as RED and red). What version implemented the uppercase name of the color?
    4. Thought questions about the code:
      1. Why do you think there are two “versions” (that are the same, except for the name) of each color? What happened?
      2. After the uppercase version of the Color was created, why didn’t the authors just delete the lowercase version?
      3. Do you think there were probably lots of lines of Java code in production as of version 1.4? Would it have been wise to just drop support of the colors written using names in camel case?
      4. Define backward compatibility. How does the Color class demonstrate the concept of backward compatibility?

Deliverables:

A document that contains the answers to each of the questions.

Assessment:

How will the activity be graded?

How will learning will be measured?

Include sample assessment questions/rubrics.

Comments:

Coding standards were not originally followed when the Color class was created. The naming standard for static final variables is that they should be all uppercase, with words separated by _. To rectify this error and still allow the class to support backward compatibility for the thousands of lines of code in production already, the class now supports two names for each constant color.

Additional Information:

Knowledge Area/Knowledge Unit What ACM Computing Curricula 2013 https://www.acm.org/education/CS2013-final-report.pdf knowledge area and units does this activity cover?
Topic What specific topics are addressed? The Computing Curriucula 2013 provides a list of topics - https://www.acm.org/education/CS2013-final-report.pdf
Level of Difficulty Is this activity easy, medium or challenging?
Estimated Time to Completion How long should it take for the student to complete the activity?
Materials/Environment What does the student need? Internet access, IRC client, Git Hub account, LINUX machine, etc.?
Author Who wrote this activity?
Source Is there another activity on which this activity is based? If so, please provide a link to the original resource.
License Under which license is this material made available? (http://creativecommons.org/licenses/)


Suggestions for the Open Source Project:

Suggestions for an open source community member who is working in conjunction with the instructor.



This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License

CC license.png

Personal tools
Namespaces
Variants
Actions
Events
Learning Resources
HFOSS Projects
Evaluation
Navigation
Toolbox