CS2 Data Structures Activity
|Title||CS2 Data Structures Activity|
|Overview||Using the HFOSS OpenMRS project to illustrate the use of data structures in a complex system|
|Prerequisite Knowledge||CS1 and Java|
Data structures are widely used in the development of large complex software systems. The decision to use a particular data structure is made by the programmer or in many cases a development team. Several factors must be considered including storage requirements, time requirements of the various operations that will be performed on the data, and usage patterns (i.e. the number of deletions, insertions, updates, etc.).
This activity will explore a class within the OpenMRS code base where a number of data structures are utilized. As such, it is expected that the students will have some general knowledge about the OpenMRS project.
Go to the DataExportFunctions.java class (link provided below) defined in the Reporting Compatibility module.
- Examine the import statements found at the beginning of the file. Provide the class names of four data structures that are used in DataExportFunctions.java. Note: You will need to refer to the Java APIs; also, note that an interface is not a class.
- Go to the following link to answer the questions below:
<ToDo: insert URL here> a. What is meant by the term key? The term value? b. If you wanted to store student information such as a student id, name, major, and gpa, which one of these would you choose as a key? Given that choice of a key, which of the remaining ones could be used as the associated value? c. Given, Map<String, int> populations = new HashMap<String, int> (); populations.put(“11530”, 27273); populations.put(“28601”, 50026); populations.put(“38111”, 41742);
What would the following call to the get method return?
System.out.println(“The population for Memphis, TN is “ + populations.get(“38111”);
3. These data structures are used in a multitude of ways and it is likely that you are unfamiliar with some of the syntax. The clearMap method (link below) uses wildcard characters (‘?’). https://github.com/openmrs/openmrs-module-reportingcompatibility/blob/master/api/src/main/java/org/openmrs/module/reportingcompatibility/reporting/export/DataExportFunctions.java#L754 a. Briefly explain what each of the following means and explain the benefit of using them. i. ‘?’ (hint: wildcards) ii. ‘? Extends Map’ b. Determine whether each of the following calls to clearMap is valid or invalid. If a call is invalid, explain why. i. Map = ii. Call 2 iii. Call 3 iv. Call 4 c. Write a Javadoc comment for the clearMap method. 4. The getLastEncounterAttr method (link below) declares two reference variables, types and encounterTypes. https://github.com/openmrs/openmrs-module-reportingcompatibility/blob/master/api/src/main/java/org/openmrs/module/reportingcompatibility/reporting/export/DataExportFunctions.java#L352-L387 a) Can you determine what type of object each refers to? If yes, then specify the type of object. If not, then in your opinion what type of object it is most likely to refer to. Explain your answer. b) Why do you think these data structures were selected by the developers? 5. Analysis question…I’m not sure this method is a good choice for analysis. Thoughts? Would some other code segment within this class be better suited for this type of question?
Written artifact to Instructor
How will the activity be graded?
How will learning will be measured?
Include sample assessment questions/rubrics.
|Criteria||Level 1 (fail)||Level 2 (pass)||Level 3 (good)||Level 4 (exceptional)|
|The purpose of the project|
|Why the project is open source|
What should the instructor know before using this activity?
What are some likely difficulties that an instructor may encounter using this activity?
|ACM Knowledge Area/Knowledge Unit||What ACM Computing Curricula 2013 knowledge area and units does this activity cover? ACM_Body_of_Knowledge|
|ACM 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||Varies, designed as one assignment or laboratory activity|
|Materials/Environment||Access to OpenMRS codebase|
|Author||Who wrote this activity?|
|Source||POSSE 201405 Workshop Activity|
|License||Licensed CC BY-SA|
Suggestions for Open Source Community:
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