http://foss2serve.org/api.php?action=feedcontributions&user=Josh.dehlinger&feedformat=atomFoss2Serve - User contributions [en]2024-03-28T20:49:32ZUser contributionsMediaWiki 1.18.1http://foss2serve.org/index.php/Instructor_ExperiencesInstructor Experiences2017-11-20T15:54:19Z<p>Josh.dehlinger: </p>
<hr />
<div>Below are reports from POSSE alumni who are using HFOSS within their courses. The reports range from new POSSE graduates to folks who attended POSSE several years ago. If you are a POSSE alum with an experience to share, please add your course below.<br />
-----------------------<br />
'''Course Name:''' Data Structures<br />
<br />
'''Level:''' Freshman to Seniors<br />
<br />
'''HFOSS Project:''' OpenMRS and Mifos<br />
<br />
'''HFOSS Activity:''' Students read the source code of open source projects an examples of the "real life" use of the data structures<br />
and Java language features that they are learning about. At the beginning of the semester it is very much "hand holding", i.e. look at the line such and such in file such and such and tell me what is there. By the end of the semester they are browsing GitHub repositories on their own searching for use examples of given data structures.<br />
<br />
The students do not interact with the community and they do not contribute. <br />
<br />
'''Instructor:''' Joanna Klukowska<br />
<br />
'''Academic Institution:''' New York University<br />
<br />
'''Observations:''' This works great to satisfy the students' requests for connecting the material to the real life situations. It also illustrates the fact that other people also document the code and write input validations, etc.<br />
I think that this has been of great educational benefit to my students, even though they sometimes do not even realize that.<br />
<br />
'''Other Comments:''' It takes more than a few months to a point of using (H)FOSS with students, so be patient.<br />
------------------------<br />
'''Course Name:''' Dickinson College Senior Seminar - This is a year-long two course sequence required of all Computer Science majors.<br />
<br />
'''Level: ''' Seniors<br />
<br />
'''HFOSS Activity:''' Students complete a series of structured activities that guide them toward deeper engagement in and contributions to an H/FOSS community. Teams for 4-8 work through a sequence of 3 project selection activities (explore, review, rank & select). They then complete two installation activities (user install, developer install) followed by two bugs activities (bug gardening, bug fix). Finally they propose additional contributions that they would like to work on. During all of the activities they are encouraged and rewarded for engaging with the community of their selected project..<br />
<br />
'''HFOSS Project: ''' Teams in 2016-17 worked on: OpenMRS, Sugar Labs, React Native<br />
<br />
'''Instructor Name:''' Grant Braught, John MacCormick<br />
<br />
'''Academic Institution:''' Dickinson College<br />
<br />
'''Experience:''' We were happy with the general sequence of activities that students completed and very happy with their level of engagement with their H/FOSS communities. We also allowed teams to progress through the installation and bugs activities at different paces, which worked well. However, we had pushed teams to be ready to propose additional contributions by the end of the first semester. This worked well for one team, but was too soon for the two other teams. We will be allowing the bugs activities to extend into the second semester in our next iteration. Hopefully this will allow all of the teams to gain enough experience and engagement with their projects to make more informed proposals for additional contributions.<br />
<br />
------------------------<br />
'''Course Name:''' Open Source Software Development<br />
<br />
'''Level:''' Senior<br />
<br />
'''HFOSS Activity:''' Students participated in Mozilla. we started by using several POSSE assignments to learn about the tools of being part of a FOSS community. We also have access to mentors in the community. Students have been able to contribute varying levels of documentation, translation, bug reports, and bug patches.<br />
<br />
'''HFOSS Project:''' Mozilla<br />
<br />
'''Instructor Name:''' Becka Morgan<br />
<br />
'''Academic Institution:''' Western Oregon University<br />
<br />
'''Experience:''' Access to POSSE assignments made introduction of tools really clear. Having a mentor is a really big help if you can find the right mentor and if they know how to mentor. It helps to know what to ask from mentors. I have found that having mentors who can point students to a particular bug or project, like incorporating them into a project they have is the best.<br />
--------------------------<br />
'''Course Name:''' Requirements Engineering<br />
<br />
'''Level:''' Graduate<br />
<br />
'''HFOSS Activity:''' reengineering of requirements specifications<br />
<br />
'''HFOSS Project:''' OpenMRS<br />
<br />
'''Instructor Name:''' Birgit Penzenstadler<br />
<br />
'''Academic Institution:''' California State University Long Beach<br />
<br />
'''Experience:''' It was good having a real system under development and having to dig through their documentation but it turns out the reengineering is a little dull. Contributing to resolving issues (whether code or documentation) may be more rewarding.<br />
<br />
'''Other Comments:''' It probably won’t go perfectly the first time but trust the learning experience, and being open to students about this being a first attempt at including very cool, really life OSS development into the curriculum was received very well.<br />
-------------------------<br />
'''Course Name:''' Software Engineering<br />
<br />
'''Level:''' Junior<br />
<br />
'''HFOSS Activity: ''' Using OpenMRS to illustrate certain design patterns in large-scale Java project. In particular Factory pattern. MVC (Spring framework),<br />
DAO (Hibernate), and REST API<br />
<br />
'''HFOSS Project:''' OpenMRS<br />
<br />
'''Instructor name:''' Tom Naps<br />
<br />
'''Academic Institution:''' UW Oshkosh<br />
<br />
'''Experience: ''' Keep expectations of students toned down. Don't let them think they will actually contribute developed software to such a large project as<br />
part of their work in a one-semester course. I do try to emphasize<br />
that, should they want to go further, they could do that as part of<br />
their senior-level independent capstone.<br />
----------------------<br />
'''Course Name:''' Software Analysis & Design 2<br />
<br />
'''Level:''' Sophomore<br />
<br />
'''HFOSS Activity:''' Students did two exercises. <br />
* The first was an introduction to the concepts of open source development<br />
and community, located here:<br />
http://www.compsci.hunter.cuny.edu/~sweiss/course_materials/csci235/assignments/hwk1.pdf.<br />
* The second was an exercise in code reading of an open source (HFOSS)<br />
project, the Insight Segmentation and Registration Toolkit (ITK),<br />
located here:<br />
http://www.compsci.hunter.cuny.edu/~sweiss/course_materials/csci235/assignments/hwk2.pdf.<br />
<br />
'''Instructor Name:''' Stewart Weiss<br />
<br />
'''Academic Institution:''' Hunter College of the City University of New York<br />
<br />
'''Experience:''' The first homework worked very well, though a few of the questions need to be changed for clarity. The second worked really well.<br />
<br />
'''Other Comments:''' It is a slow and painstaking process to insert FOSS and HFOSS material into courses that are packed with content, but patient planning seems to work.<br />
-----------------------<br />
'''Course Name:'''Software Engineering (CSCI 430)<br />
<br />
'''Level:''' Upper-division, undergraduate<br />
<br />
'''HFOSS Activity:''' Students contributed as teams on a semester long project of maintaining software.<br />
<br />
'''HFOSS Project:''' Spyral (https://github.com/platipy/spyral)<br />
<br />
'''Instructor Name:''' Kevin Buffardi<br />
<br />
'''Academic Institution:''' California State University, Chico<br />
<br />
'''Experience:''' Remote interaction made it difficult for students to experience Agile Development practices, however, they did contribute to a real project that entailed familiarizing themselves with someone else's code. Unfortunately, the project was superseded by a different project near the end of the semester so student motivation went down the tubes once they discovered that the project was becoming obsolete<br />
<br />
'''Other Comments:''' It helped to reach out and find additional HFOSS projects that required different languages/technology that appealed to students wanting to learn Python<br />
<br />
---------------------------<br />
'''Course Name:''' Software Engineering (CSCI 630)<br />
<br />
'''Level:''' graduate (MS)<br />
<br />
'''HFOSS Activity:''' Students worked in small groups but were required to demonstrate their independent, technical contributions to an existing open source project<br />
<br />
'''HFOSS Project:''' MouseTrap<br />
<br />
'''Instructor Name:''' Kevin Buffardi<br />
<br />
'''Academic Institution:''' California State University, Chico<br />
<br />
'''Experience:''' The project team was good at responding to students' questions and pull requests and students got meaningful exposure to the challenges of working on a real product with challenging needs/requirements.<br />
<br />
'''Other Comments:''' Since MouseTrap was really only active via Stoney and my efforts, it was not as rich of an experience as other open source communities that have large, active teams. When a project depends on professors to keep it alive, it is not likely to survive. It is best to attach students to a project that has a large community that is willing to take them under their wings. I have since offered MouseTrap (and the other HFOSS projects) as options to choose from in new semesters, but no students have chosen it as the open source project they want to work on for the semester.<br />
<br />
---------------------------<br />
'''Course Name:''' Software Quality Assurance and Testing (COSC 442)<br />
<br />
'''Level:''' Undergraduate<br />
<br />
'''HFOSS Activity:''' Semester capstone project that spans ~6 weeks in which students work in groups of 3-4 to identify an open-source project, using [http://foss2serve.org/index.php/Project_Evaluation_Activity_V2 FOSS Project Evaluation Activity, and then developing and implementing a software quality assurance plan to improve the software quality through refactoring, documenting, testing, static analysis, etc. <br />
<br />
'''HFOSS Project:''' Various<br />
<br />
'''Instructor Name:''' Josh Dehlinger<br />
<br />
'''Academic Institution:''' Towson University<br />
<br />
'''Experience:''' Students realize the inherent complexity in going from testing small, "toy" applications to that of a large, real-world system. <br />
<br />
'''Other Comments:''' I have used several approaches to this project in the past - from dictating the FOSS project to work on to allowing them to select a project and found that students find their own project, from [https://sourceforge.net/ Sourceforge] or [https://openhatch.org/ OpenHatch] works well as it gives them the choice to work on something they are passionate/interested in. However, this loses the community aspect of working in with a FOSS community.</div>Josh.dehlingerhttp://foss2serve.org/index.php/Stage2_GroupsStage2 Groups2017-10-16T12:57:41Z<p>Josh.dehlinger: /* Other course (include the name of the course) */</p>
<hr />
<div>__NOTOC__<br />
<br />
='''Instructions:''' =<br />
During POSSE Stage 2, we will do a variety of small group exercises. To help organize the small groups, please sign up for one project and one course by entering your name below.<br />
<br />
<br />
== Projects ==<br />
<br />
=== [http://openmrs.org/ OpenMRS] ===<br />
<br />
* S. Fashoto<br />
* Kuljit Kaur Chahal<br />
* Gianluca Torta<br />
* Gustavo Pinto<br />
<br />
=== [https://www.ushahidi.com/ Ushahidi] ===<br />
<br />
* Gustavo Pinto<br />
* Shobha Tyagi<br />
* Sabine Wojcieszak<br />
* Priti Narwal<br />
* Josh Dehlinger<br />
<br />
=== [http://www.htbox.org/ allReady] ===<br />
<br />
* <Name><br />
<br />
=== [https://developers.google.com/blockly/ Blockly] ===<br />
<br />
* Michael Scott, Falmouth<br />
* Deepti Reddy<br />
* Mark Zarb<br />
* Josh Dehlinger<br />
<br />
=== [http://mifos.org/ Mifos] ===<br />
<br />
* <Name><br />
<br />
=== [https://sahanafoundation.org/ Sahana] ===<br />
<br />
* Marcos Sanchez-Elez<br />
* Sara Roman<br />
* Samah Al Sabbagh<br />
* Vangel Ajanovski<br />
<br />
== Courses ==<br />
We know that undergraduate curriculum structure varies some across institutions, but do what you can to pick from the general course categories below.<br />
<br />
=== Introductory Programming I ===<br />
A first course for computing majors; typically with no computing course pre-requisites<br />
* Mark Zarb<br />
<br />
=== Introductory Programming II/Data Structures ===<br />
A second course for computing majors<br />
* S. Fashoto<br />
* Deepti Reddy<br />
* Gustavo Pinto<br />
<br />
=== Algorithms ===<br />
A second or third year course for computing majors <br />
* Gustavo Pinto<br />
<br />
=== Object-Oriented Design ===<br />
A second or third year course for computing majors<br />
* Kuljit Kaur Chahal<br />
* Gustavo Pinto<br />
<br />
=== Software Engineering/Capstone ===<br />
An advanced undergraduate course for computing majors; often involves a team project<br />
* Greg Hislop<br />
* Shobha Tyagi<br />
* Vangel V. Ajanovski (courses Software Construction; Teamwork - development projects, teams up to 10)<br />
* Priti Narwal<br />
* Gianluca Torta<br />
* Josh Dehlinger<br />
<br />
=== Stand-alone HFOSS/Openness ===<br />
An elective course that might be targeted at computing majors or non-majors; covers broader concepts of open source<br />
* Samah Al Sabbagh<br />
* Marcos Sanchez-Elez<br />
* Sara Roman<br />
* Sabine Wojcieszak<br />
* Gabor Laszlo<br />
<br />
=== Other course (include the name of the course) ===<br />
* Michael Scott - Distributed Systems<br />
* Vangel V. Ajanovski - Information Systems / Information Systems Development Process (Inception and Analysis projects, Modelling, smaller teams)<br />
* Josh Dehlinger - Software Quality Assurance & Testing<br />
<br />
[[Category:POSSE]]</div>Josh.dehlingerhttp://foss2serve.org/index.php/Stage2_GroupsStage2 Groups2017-10-16T12:57:13Z<p>Josh.dehlinger: /* Software Engineering/Capstone */</p>
<hr />
<div>__NOTOC__<br />
<br />
='''Instructions:''' =<br />
During POSSE Stage 2, we will do a variety of small group exercises. To help organize the small groups, please sign up for one project and one course by entering your name below.<br />
<br />
<br />
== Projects ==<br />
<br />
=== [http://openmrs.org/ OpenMRS] ===<br />
<br />
* S. Fashoto<br />
* Kuljit Kaur Chahal<br />
* Gianluca Torta<br />
* Gustavo Pinto<br />
<br />
=== [https://www.ushahidi.com/ Ushahidi] ===<br />
<br />
* Gustavo Pinto<br />
* Shobha Tyagi<br />
* Sabine Wojcieszak<br />
* Priti Narwal<br />
* Josh Dehlinger<br />
<br />
=== [http://www.htbox.org/ allReady] ===<br />
<br />
* <Name><br />
<br />
=== [https://developers.google.com/blockly/ Blockly] ===<br />
<br />
* Michael Scott, Falmouth<br />
* Deepti Reddy<br />
* Mark Zarb<br />
* Josh Dehlinger<br />
<br />
=== [http://mifos.org/ Mifos] ===<br />
<br />
* <Name><br />
<br />
=== [https://sahanafoundation.org/ Sahana] ===<br />
<br />
* Marcos Sanchez-Elez<br />
* Sara Roman<br />
* Samah Al Sabbagh<br />
* Vangel Ajanovski<br />
<br />
== Courses ==<br />
We know that undergraduate curriculum structure varies some across institutions, but do what you can to pick from the general course categories below.<br />
<br />
=== Introductory Programming I ===<br />
A first course for computing majors; typically with no computing course pre-requisites<br />
* Mark Zarb<br />
<br />
=== Introductory Programming II/Data Structures ===<br />
A second course for computing majors<br />
* S. Fashoto<br />
* Deepti Reddy<br />
* Gustavo Pinto<br />
<br />
=== Algorithms ===<br />
A second or third year course for computing majors <br />
* Gustavo Pinto<br />
<br />
=== Object-Oriented Design ===<br />
A second or third year course for computing majors<br />
* Kuljit Kaur Chahal<br />
* Gustavo Pinto<br />
<br />
=== Software Engineering/Capstone ===<br />
An advanced undergraduate course for computing majors; often involves a team project<br />
* Greg Hislop<br />
* Shobha Tyagi<br />
* Vangel V. Ajanovski (courses Software Construction; Teamwork - development projects, teams up to 10)<br />
* Priti Narwal<br />
* Gianluca Torta<br />
* Josh Dehlinger<br />
<br />
=== Stand-alone HFOSS/Openness ===<br />
An elective course that might be targeted at computing majors or non-majors; covers broader concepts of open source<br />
* Samah Al Sabbagh<br />
* Marcos Sanchez-Elez<br />
* Sara Roman<br />
* Sabine Wojcieszak<br />
* Gabor Laszlo<br />
<br />
=== Other course (include the name of the course) ===<br />
* Michael Scott - Distributed Systems<br />
* Vangel V. Ajanovski - Information Systems / Information Systems Development Process (Inception and Analysis projects, Modelling, smaller teams)<br />
<br />
[[Category:POSSE]]</div>Josh.dehlingerhttp://foss2serve.org/index.php/Stage2_GroupsStage2 Groups2017-10-16T12:56:35Z<p>Josh.dehlinger: /* Blockly */</p>
<hr />
<div>__NOTOC__<br />
<br />
='''Instructions:''' =<br />
During POSSE Stage 2, we will do a variety of small group exercises. To help organize the small groups, please sign up for one project and one course by entering your name below.<br />
<br />
<br />
== Projects ==<br />
<br />
=== [http://openmrs.org/ OpenMRS] ===<br />
<br />
* S. Fashoto<br />
* Kuljit Kaur Chahal<br />
* Gianluca Torta<br />
* Gustavo Pinto<br />
<br />
=== [https://www.ushahidi.com/ Ushahidi] ===<br />
<br />
* Gustavo Pinto<br />
* Shobha Tyagi<br />
* Sabine Wojcieszak<br />
* Priti Narwal<br />
* Josh Dehlinger<br />
<br />
=== [http://www.htbox.org/ allReady] ===<br />
<br />
* <Name><br />
<br />
=== [https://developers.google.com/blockly/ Blockly] ===<br />
<br />
* Michael Scott, Falmouth<br />
* Deepti Reddy<br />
* Mark Zarb<br />
* Josh Dehlinger<br />
<br />
=== [http://mifos.org/ Mifos] ===<br />
<br />
* <Name><br />
<br />
=== [https://sahanafoundation.org/ Sahana] ===<br />
<br />
* Marcos Sanchez-Elez<br />
* Sara Roman<br />
* Samah Al Sabbagh<br />
* Vangel Ajanovski<br />
<br />
== Courses ==<br />
We know that undergraduate curriculum structure varies some across institutions, but do what you can to pick from the general course categories below.<br />
<br />
=== Introductory Programming I ===<br />
A first course for computing majors; typically with no computing course pre-requisites<br />
* Mark Zarb<br />
<br />
=== Introductory Programming II/Data Structures ===<br />
A second course for computing majors<br />
* S. Fashoto<br />
* Deepti Reddy<br />
* Gustavo Pinto<br />
<br />
=== Algorithms ===<br />
A second or third year course for computing majors <br />
* Gustavo Pinto<br />
<br />
=== Object-Oriented Design ===<br />
A second or third year course for computing majors<br />
* Kuljit Kaur Chahal<br />
* Gustavo Pinto<br />
<br />
=== Software Engineering/Capstone ===<br />
An advanced undergraduate course for computing majors; often involves a team project<br />
* Greg Hislop<br />
* Shobha Tyagi<br />
* Vangel V. Ajanovski (courses Software Construction; Teamwork - development projects, teams up to 10)<br />
* Priti Narwal<br />
* Gianluca Torta<br />
<br />
=== Stand-alone HFOSS/Openness ===<br />
An elective course that might be targeted at computing majors or non-majors; covers broader concepts of open source<br />
* Samah Al Sabbagh<br />
* Marcos Sanchez-Elez<br />
* Sara Roman<br />
* Sabine Wojcieszak<br />
* Gabor Laszlo<br />
<br />
=== Other course (include the name of the course) ===<br />
* Michael Scott - Distributed Systems<br />
* Vangel V. Ajanovski - Information Systems / Information Systems Development Process (Inception and Analysis projects, Modelling, smaller teams)<br />
<br />
[[Category:POSSE]]</div>Josh.dehlingerhttp://foss2serve.org/index.php/Stage2_GroupsStage2 Groups2017-10-16T12:55:59Z<p>Josh.dehlinger: /* Ushahidi */</p>
<hr />
<div>__NOTOC__<br />
<br />
='''Instructions:''' =<br />
During POSSE Stage 2, we will do a variety of small group exercises. To help organize the small groups, please sign up for one project and one course by entering your name below.<br />
<br />
<br />
== Projects ==<br />
<br />
=== [http://openmrs.org/ OpenMRS] ===<br />
<br />
* S. Fashoto<br />
* Kuljit Kaur Chahal<br />
* Gianluca Torta<br />
* Gustavo Pinto<br />
<br />
=== [https://www.ushahidi.com/ Ushahidi] ===<br />
<br />
* Gustavo Pinto<br />
* Shobha Tyagi<br />
* Sabine Wojcieszak<br />
* Priti Narwal<br />
* Josh Dehlinger<br />
<br />
=== [http://www.htbox.org/ allReady] ===<br />
<br />
* <Name><br />
<br />
=== [https://developers.google.com/blockly/ Blockly] ===<br />
<br />
* Michael Scott, Falmouth<br />
* Deepti Reddy<br />
* Mark Zarb<br />
<br />
=== [http://mifos.org/ Mifos] ===<br />
<br />
* <Name><br />
<br />
=== [https://sahanafoundation.org/ Sahana] ===<br />
<br />
* Marcos Sanchez-Elez<br />
* Sara Roman<br />
* Samah Al Sabbagh<br />
* Vangel Ajanovski<br />
<br />
== Courses ==<br />
We know that undergraduate curriculum structure varies some across institutions, but do what you can to pick from the general course categories below.<br />
<br />
=== Introductory Programming I ===<br />
A first course for computing majors; typically with no computing course pre-requisites<br />
* Mark Zarb<br />
<br />
=== Introductory Programming II/Data Structures ===<br />
A second course for computing majors<br />
* S. Fashoto<br />
* Deepti Reddy<br />
* Gustavo Pinto<br />
<br />
=== Algorithms ===<br />
A second or third year course for computing majors <br />
* Gustavo Pinto<br />
<br />
=== Object-Oriented Design ===<br />
A second or third year course for computing majors<br />
* Kuljit Kaur Chahal<br />
* Gustavo Pinto<br />
<br />
=== Software Engineering/Capstone ===<br />
An advanced undergraduate course for computing majors; often involves a team project<br />
* Greg Hislop<br />
* Shobha Tyagi<br />
* Vangel V. Ajanovski (courses Software Construction; Teamwork - development projects, teams up to 10)<br />
* Priti Narwal<br />
* Gianluca Torta<br />
<br />
=== Stand-alone HFOSS/Openness ===<br />
An elective course that might be targeted at computing majors or non-majors; covers broader concepts of open source<br />
* Samah Al Sabbagh<br />
* Marcos Sanchez-Elez<br />
* Sara Roman<br />
* Sabine Wojcieszak<br />
* Gabor Laszlo<br />
<br />
=== Other course (include the name of the course) ===<br />
* Michael Scott - Distributed Systems<br />
* Vangel V. Ajanovski - Information Systems / Information Systems Development Process (Inception and Analysis projects, Modelling, smaller teams)<br />
<br />
[[Category:POSSE]]</div>Josh.dehlingerhttp://foss2serve.org/index.php/User:Josh.dehlingerUser:Josh.dehlinger2017-10-16T12:54:12Z<p>Josh.dehlinger: </p>
<hr />
<div>==== Josh Dehlinger ====<br />
<br />
Josh Dehlinger is an Associate Professor and Director of the Undergraduate Program in Computer Science in the [http://www.towson.edu/cosc/ Department of Computer and Information Sciences] at [http://www.towson.edu Towson University]. Before joining Towson University in 2008, he was a Research Associate in the [http://www.ece.virginia.edu/ Charles L. Brown Department of Electrical and Computer Engineering] at [http://www.virginia.edu/ The University of Virginia]. He received his Ph.D. in Computer Science from [http://http://www.iastate.edu/ Iowa State University] in 2007 working under the advisement of [http://web.cs.iastate.edu/~rlutz/ Dr. Robyn Lutz].<br />
<br />
<br />
----<br />
<br />
<br />
'''Part A, Part 1, Activity 4: [http://foss2serve.org/index.php/Intro_IRC_Activity Introduction to IRC] - Walk through of IRC Conversation'''<br />
<br />
* ''How do people interact?'' Interaction is quite informal, conversational and concise. <br />
<br />
* ''What is the pattern of communication?'' The pattern of communication follows a typical [https://en.wikipedia.org/wiki/Stand-up_meeting stand-up meeting] in [https://en.wikipedia.org/wiki/Scrum_(software_development) Scrum] where each developer talks about: 1. What did I accomplish; 2. What obstacles are impeding my progress; and, 3. What will I work on next. Clearly, in this meeting Darci is the coordinator/project manager since she is leading the meeting and keeping it focused. <br />
<br />
* ''Are there any terms that seem to have special meaning?'' There are several IRC [http://wiki.debian.org/MeetBot meetbot] specific terms that have special meeting, including ''#topic'', ''#info'', ''#action'' and ''#link''. There are also some notation to indicate non-verbal types of communication, including ''name:'' to direct a comment to a person (i.e., equivalent to the Twitter version of @name). <br />
<br />
* ''Can you make any other observations?'' None.<br />
<br />
'''Part A, Part 3, Activity 3: [http://foss2serve.org/index.php/Intro_IRC_Activity Introduction to IRC] - Join and Observe Channel Discussion'''<br />
<br />
* ''Summarize your observations of a selected HFOSS project(s).'' Between 7/18/15 - 7/20/15, I observed the #foss2serve, #openmrs and #ushahidi IRC channels using the [https://kiwiirc.com Kiwi IRC] web application. During this period, there was very little / no activity on both the #foss2serve and #openmrs channels, but the #openmrs channel was somewhat active with most of the messages seeming to be automated bot messages from a build/repository/issue tracker agent indicating pull requests were made, commits were made or files changed.<br />
<br />
'''Part A, Part 6, Activity 4: [http://foss2serve.org/index.php/Project_Anatomy_Activity Anatomy of a FOSS Project] - Guided Tour: Sugar Labs Project'''<br />
<br />
* '' Community''. The Activity Team develops and maintains many of the activities available for Sugar and recruits, mentors and supports folks who develop Sugar activities. The Development Team implements, builds and maintains the core Sugar environment and works with the [http://wiki.sugarlabs.org/go/Design_Team Design Team]. Finally, the Documentation Team provides the Sugar community with high quality documentation, including learners' manuals, programming references, and tutorials. All of the teams have clearly defined mission statements and distinct roles within the Sugar Project and collaborate/coordinate with other teams. Both the Activity and Development team utilize IRC for meetings (its not immediately clear what the Documentation Team uses).<br />
<br />
* ''Tracker''. The Sugar Project uses an installation of [http://http://trac.edgewall.org/ Trac] as their bug tracker and utilizes defect/enhancement/task ticket types/categories. Within each ticket, the information includes: Reported By, Priority, Component, Severity, Bug Status, Owned By, Milestone, Version and Description. Each ticket also includes a change history with comments and/or screenshots. <br />
<br />
* ''Repository''. The Sugar Project uses a [https://git-scm.com/ GIT]-based repository that seems to be local to Sugar Labs and not utilizing a common web-based repository site, such as [http://sourceforge.net/ Sourceforge].<br />
<br />
* ''Release Cycle''. It appears that the Sugar Project develops a short-term roadmap at the beginning of each development cycle outlining the features to be included in the current release cycle. <br />
<br />
'''Part A, Part 6, Activity 4: [http://foss2serve.org/index.php/Project_Anatomy_Activity Anatomy of a FOSS Project] - Guided Tour: The Sahana Eden Project'''<br />
<br />
* '' Community''. The Developers, Testers and Designers for The Sahana Eden Project all seem to conform to their role (i.e., the developers are mainly responsible for development). However, unlike the [http://sugarlabs.org/ Sugar Project], the team descriptions are less clear as there are no clear mission statements for the teams, it is not apparent how to join a team nor are there explicit meeting venues (e.g., IRC). <br />
<br />
* ''Tracker''. Like the The Sugar Project, The Sahana Eden Project seems to use an installation of [http://http://trac.edgewall.org/ Trac] as their bug tracker and utilizes defect/enhancement/task ticket types/categories. I also noticed that they include a documentation type/category. Within each ticket, the information includes: Reported By, Priority, Component, Severity, Bug Status, Owned By, Milestone, Version and Description and each ticket also includes a change history with comments and/or screenshots as seen in the previous project. This is expected since they seem to be utilizing the same tracker software. The only immediate difference is that the tracker in The Sahana Eden Project first presents the user with a menu to view tickets organized by various statuses (e.g., milestone, version, etc.). <br />
<br />
* ''Repository''. The Sahana Eden Project seems to use a web-based [https://git-scm.com/ GIT] repository hosted at [https://github.com/ GitHub].<br />
<br />
* ''Release Cycle''. The Sahana Eden Project has a long-term roadmap that provides a listing of features to be included in several minor and major future versions of the software.<br />
<br />
'''Part B, Part 4, Activity 4: [http://foss2serve.org/index.php/FOSS_In_Courses_Activity FOSS in Courses Activity]'''<br />
<br />
* I have utilized FOSS projects in the software testing / software quality assurance classes that I teach for the last 3 years. However, in most semesters, I allow the student groups to browse/select an FOSS from SourceForge with the goal of improving the FOSS project’s software quality through the contribution of tests, refactorings, documentation, bug fixes, etc. In general, I don’t require students to actually contribute back to the FOSS community; rather, I encourage the better groups to contribute there work (although, I believe very few actually follow through). The main reason for this was because, often times, the projects that the student groups selected were small, inactive and trivial games. My goal for the project(s) was more focused on exposure to FOSS projects and working with others’ code rather than being involved in the FOSS community.<br />
<br />
* After looking at the existing assignment/project ideas, in particular the [http://teachingopensource.org/index.php/RIT/The_Course RIT class], I feel more confident in requiring my students to contribute back to active FOSS projects, such as the OpenMRS FOSS project. I can see that using some of the assignments/materials from the RIT course would be appropriate for these classes.<br />
<br />
Since the original POSSE I attended, I have worked on and off with Ushahidi; in particular, we set up our own instance of Ushahidi and developed Android and iOS mobile applications to report and map an invasive plant species and utilized Ushahidi as the web application to map/visualize its spread. <br />
<br />
<br />
[[Category:POSSE 2015-09]]</div>Josh.dehlingerhttp://foss2serve.org/index.php/POSSE_2017-11_ParticipantsPOSSE 2017-11 Participants2017-09-28T14:33:20Z<p>Josh.dehlinger: </p>
<hr />
<div>The participants in [[POSSE 2017-11]] are:<br />
* [[User:Darci.burdge|Darci Burdge]] - email: Darci.Burdge@ncc.edu<br />
* [[User:Josh.dehlinger|Josh Dehlinger]] - email: jdehlinger AT towson DOT edu<br />
* [[User:Heidi.ellis|Heidi Ellis]] - email: ellis at wne.edu, Blog: [https://heidiellis.wordpress.com/ Heidi Ellis' blog]<br />
* [[User:Sobeidat|Suhaib Obeidat]] - email: suhaib underscore obeidat at bloomfield dot edu</div>Josh.dehlingerhttp://foss2serve.org/index.php/POSSE_2017-11_ParticipantsPOSSE 2017-11 Participants2017-09-28T14:32:51Z<p>Josh.dehlinger: </p>
<hr />
<div>The participants in [[POSSE 2017-11]] are:<br />
* [[User:Darci.burdge|Darci Burdge]] - email: Darci.Burdge@ncc.edu<br />
* [[User:Josh.dehlinger|Josh Dehlinger]] - email: jdehlinger@towson.edu<br />
* [[User:Heidi.ellis|Heidi Ellis]] - email: ellis at wne.edu, Blog: [https://heidiellis.wordpress.com/ Heidi Ellis' blog]<br />
* [[User:Sobeidat|Suhaib Obeidat]] - email: suhaib underscore obeidat at bloomfield dot edu</div>Josh.dehlingerhttp://foss2serve.org/index.php/User:Josh.dehlingerUser:Josh.dehlinger2017-09-28T14:29:46Z<p>Josh.dehlinger: /* Josh Dehlinger */</p>
<hr />
<div>==== Josh Dehlinger ====<br />
<br />
Josh Dehlinger is an Associate Professor and Director of the Undergraduate Program in Computer Science in the [http://www.towson.edu/cosc/ Department of Computer and Information Sciences] at [http://www.towson.edu Towson University]. Before joining Towson University in 2008, he was a Research Associate in the [http://www.ece.virginia.edu/ Charles L. Brown Department of Electrical and Computer Engineering] at [http://www.virginia.edu/ The University of Virginia]. He received his Ph.D. in Computer Science from [http://http://www.iastate.edu/ Iowa State University] in 2007 working under the advisement of [http://web.cs.iastate.edu/~rlutz/ Dr. Robyn Lutz].<br />
<br />
<br />
----<br />
<br />
<br />
'''Part A, Part 1, Activity 4: [http://foss2serve.org/index.php/Intro_IRC_Activity Introduction to IRC] - Walk through of IRC Conversation'''<br />
<br />
* ''How do people interact?'' Interaction is quite informal, conversational and concise. <br />
<br />
* ''What is the pattern of communication?'' The pattern of communication follows a typical [https://en.wikipedia.org/wiki/Stand-up_meeting stand-up meeting] in [https://en.wikipedia.org/wiki/Scrum_(software_development) Scrum] where each developer talks about: 1. What did I accomplish; 2. What obstacles are impeding my progress; and, 3. What will I work on next. Clearly, in this meeting Darci is the coordinator/project manager since she is leading the meeting and keeping it focused. <br />
<br />
* ''Are there any terms that seem to have special meaning?'' There are several IRC [http://wiki.debian.org/MeetBot meetbot] specific terms that have special meeting, including ''#topic'', ''#info'', ''#action'' and ''#link''. There are also some notation to indicate non-verbal types of communication, including ''name:'' to direct a comment to a person (i.e., equivalent to the Twitter version of @name). <br />
<br />
* ''Can you make any other observations?'' None.<br />
<br />
'''Part A, Part 3, Activity 3: [http://foss2serve.org/index.php/Intro_IRC_Activity Introduction to IRC] - Join and Observe Channel Discussion'''<br />
<br />
* ''Summarize your observations of a selected HFOSS project(s).'' Between 7/18/15 - 7/20/15, I observed the #foss2serve, #openmrs and #ushahidi IRC channels using the [https://kiwiirc.com Kiwi IRC] web application. During this period, there was very little / no activity on both the #foss2serve and #openmrs channels, but the #openmrs channel was somewhat active with most of the messages seeming to be automated bot messages from a build/repository/issue tracker agent indicating pull requests were made, commits were made or files changed.<br />
<br />
'''Part A, Part 6, Activity 4: [http://foss2serve.org/index.php/Project_Anatomy_Activity Anatomy of a FOSS Project] - Guided Tour: Sugar Labs Project'''<br />
<br />
* '' Community''. The Activity Team develops and maintains many of the activities available for Sugar and recruits, mentors and supports folks who develop Sugar activities. The Development Team implements, builds and maintains the core Sugar environment and works with the [http://wiki.sugarlabs.org/go/Design_Team Design Team]. Finally, the Documentation Team provides the Sugar community with high quality documentation, including learners' manuals, programming references, and tutorials. All of the teams have clearly defined mission statements and distinct roles within the Sugar Project and collaborate/coordinate with other teams. Both the Activity and Development team utilize IRC for meetings (its not immediately clear what the Documentation Team uses).<br />
<br />
* ''Tracker''. The Sugar Project uses an installation of [http://http://trac.edgewall.org/ Trac] as their bug tracker and utilizes defect/enhancement/task ticket types/categories. Within each ticket, the information includes: Reported By, Priority, Component, Severity, Bug Status, Owned By, Milestone, Version and Description. Each ticket also includes a change history with comments and/or screenshots. <br />
<br />
* ''Repository''. The Sugar Project uses a [https://git-scm.com/ GIT]-based repository that seems to be local to Sugar Labs and not utilizing a common web-based repository site, such as [http://sourceforge.net/ Sourceforge].<br />
<br />
* ''Release Cycle''. It appears that the Sugar Project develops a short-term roadmap at the beginning of each development cycle outlining the features to be included in the current release cycle. <br />
<br />
'''Part A, Part 6, Activity 4: [http://foss2serve.org/index.php/Project_Anatomy_Activity Anatomy of a FOSS Project] - Guided Tour: The Sahana Eden Project'''<br />
<br />
* '' Community''. The Developers, Testers and Designers for The Sahana Eden Project all seem to conform to their role (i.e., the developers are mainly responsible for development). However, unlike the [http://sugarlabs.org/ Sugar Project], the team descriptions are less clear as there are no clear mission statements for the teams, it is not apparent how to join a team nor are there explicit meeting venues (e.g., IRC). <br />
<br />
* ''Tracker''. Like the The Sugar Project, The Sahana Eden Project seems to use an installation of [http://http://trac.edgewall.org/ Trac] as their bug tracker and utilizes defect/enhancement/task ticket types/categories. I also noticed that they include a documentation type/category. Within each ticket, the information includes: Reported By, Priority, Component, Severity, Bug Status, Owned By, Milestone, Version and Description and each ticket also includes a change history with comments and/or screenshots as seen in the previous project. This is expected since they seem to be utilizing the same tracker software. The only immediate difference is that the tracker in The Sahana Eden Project first presents the user with a menu to view tickets organized by various statuses (e.g., milestone, version, etc.). <br />
<br />
* ''Repository''. The Sahana Eden Project seems to use a web-based [https://git-scm.com/ GIT] repository hosted at [https://github.com/ GitHub].<br />
<br />
* ''Release Cycle''. The Sahana Eden Project has a long-term roadmap that provides a listing of features to be included in several minor and major future versions of the software.<br />
<br />
'''Part B, Part 4, Activity 4: [http://foss2serve.org/index.php/FOSS_In_Courses_Activity FOSS in Courses Activity]'''<br />
<br />
* I have utilized FOSS projects in the software testing / software quality assurance classes that I teach for the last 3 years. However, in most semesters, I allow the student groups to browse/select an FOSS from SourceForge with the goal of improving the FOSS project’s software quality through the contribution of tests, refactorings, documentation, bug fixes, etc. In general, I don’t require students to actually contribute back to the FOSS community; rather, I encourage the better groups to contribute there work (although, I believe very few actually follow through). The main reason for this was because, often times, the projects that the student groups selected were small, inactive and trivial games. My goal for the project(s) was more focused on exposure to FOSS projects and working with others’ code rather than being involved in the FOSS community.<br />
<br />
* After looking at the existing assignment/project ideas, in particular the [http://teachingopensource.org/index.php/RIT/The_Course RIT class], I feel more confident in requiring my students to contribute back to active FOSS projects, such as the OpenMRS FOSS project. I can see that using some of the assignments/materials from the RIT course would be appropriate for these classes.<br />
<br />
<br />
[[Category:POSSE 2015-09]]</div>Josh.dehlingerhttp://foss2serve.org/index.php/Category_talk:Create_Unit_Tests_(Pathway)Category talk:Create Unit Tests (Pathway)2017-03-09T00:52:35Z<p>Josh.dehlinger: </p>
<hr />
<div>Consider rebranding this pathway to "quality assurance", which could include static analysis, refactoring, unit testing, etc.<br />
*There is overlap of this pathway with the adding new feature pathway because, ideally, with each feature the associated unit tests should be developed.</div>Josh.dehlingerhttp://foss2serve.org/index.php/Category:Create_Unit_Tests_(Pathway)Category:Create Unit Tests (Pathway)2017-03-09T00:34:03Z<p>Josh.dehlinger: </p>
<hr />
<div>__NOTOC__<br />
<br />
'''The contributor will''': create unit tests for a software module (class, file, etc).<br />
'''The contribution is''': unit tests accepted into the project's codebase, and test results logged on issue tracker or otherwise accepted by the community.<br />
<br />
=== Prerequisites ===<br />
<br />
{| {{Pathway Prerequisite Table}}<br />
|-<br />
| Software Configuration<br />
| <br />
* Download and install the development environment.<br />
* Run the program.<br />
|-<br />
| Issue Tracker<br />
|<br />
* Describe issue trackers and how they are used.<br />
* Access the issue tracker with appropriate permissions.<br />
* Read, create, and update issues in a tracker.<br />
|-<br />
| Community<br />
| <br />
* Describe the community guidelines for bug management and triage.<br />
* Participate in a community which is open to code contributions.<br />
* Describe community policy on testing. <br />
* Time a contribution within the project's release cycle.<br />
|}<br />
<br />
=== Pathway Steps, Outcomes, & Learning Activities ===<br />
<br />
Follow the project’s policies and practices to complete the steps below.<br />
<br />
{| {{Pathway Step Table}}<br />
|-<br />
| <br />
1. Download and install the project<br />
| Project is installed<br />
| <br />
* [[:Category:Information Processing|Info Proc]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
2. Build and run the project<br />
| Project is built and executed<br />
|<br />
* [[:Category:Information Processing|Info Proc]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
3. Identify module(s) that lack tests, need improved and/or additional unit tests. For example:<br />
*Examine test plan/documentation, if it exists. <br />
*Seek advice of community members for necessary testing<br />
*Identify test framework and run test coverage tools<br />
| Module that needs unit tests is identified <br />
|<br />
* [[:Category:Problem Solving|Prob Solv]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
*[[Unit Test With GoogleTest Activity]]<br />
*[[Examine Branch Test Coverage (Activity)]]<br />
*[[Test Coverage Activity]]<br />
<br />
|-<br />
|<br />
4. Add or improve unit tests, as previously identified, and evaluate results<br />
*Ensure appropriate branch/statement coverage criteria is met<br />
*Run regression tests<br />
| Improved set of unit tests is developed for the module(s)<br />
|<br />
* [[:Category:Written Communication|Writ Comm]]<br />
* [[:Category:Critical Thinking|Crit Think]]<br />
|<br />
*[[Introduction to Test Driven Development]]<br />
*[[Regression Test Assignment]]<br />
*[[Test Driven Development]]<br />
*[[Testing And Coverage Assignment]]<br />
|-<br />
| <br />
5. Post results on the issue tracker<br />
| Results posted to the issue tracker<br />
| <br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
*[[Write a Bug Report (Activity)]]<br />
|}<br />
<br />
=== Notes for Learning Activities Related to this Pathway ===<br />
<br />
When creating and revising activities:<br />
<br />
# Interact with the community to identify likely modules for testing. <br />
# Use an activity that reviews existing unit cases to provide students with an understanding of what they are trying to accomplish. <br />
<br />
[[Category:Pathways]]<br />
[[Category:Critical Thinking]]<br />
[[Category:Information Processing]]<br />
[[Category:Problem Solving]]<br />
[[Category:Written Communication]]</div>Josh.dehlingerhttp://foss2serve.org/index.php/Category:Create_Unit_Tests_(Pathway)Category:Create Unit Tests (Pathway)2017-03-09T00:33:14Z<p>Josh.dehlinger: </p>
<hr />
<div>__NOTOC__<br />
<br />
'''The contributor will''': create unit tests for a software module (class, file, etc).<br />
'''The contribution is''': unit tests accepted into the project's codebase, and test results logged on issue tracker or otherwise accepted by the community.<br />
<br />
=== Prerequisites ===<br />
<br />
{| {{Pathway Prerequisite Table}}<br />
|-<br />
| Software Configuration<br />
| <br />
* Download and install the development environment.<br />
* Run the program.<br />
|-<br />
| Issue Tracker<br />
|<br />
* Describe issue trackers and how they are used.<br />
* Access the issue tracker with appropriate permissions.<br />
* Read, create, and update issues in a tracker.<br />
|-<br />
| Community<br />
| <br />
* Describe the community guidelines for bug management and triage.<br />
* Participate in a community which is open to code contributions.<br />
* Describe community policy on testing. <br />
* Time a contribution within the project's release cycle.<br />
|}<br />
<br />
=== Pathway Steps, Outcomes, & Learning Activities ===<br />
<br />
Follow the project’s policies and practices to complete the steps below.<br />
<br />
{| {{Pathway Step Table}}<br />
|-<br />
| <br />
1. Download and install the project<br />
| Project is installed<br />
| <br />
* [[:Category:Information Processing|Info Proc]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
2. Build and run the project<br />
| Project is built and executed<br />
|<br />
* [[:Category:Information Processing|Info Proc]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
3. Identify module(s) that lack tests, need improved and/or additional unit tests. For example:<br />
*Examine test plan/documentation, if it exists. <br />
*Seek advice of community members for necessary testing<br />
*Identify test framework and run test coverage tools<br />
| Module that needs unit tests is identified <br />
|<br />
* [[:Category:Problem Solving|Prob Solv]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
*[[Unit Test With GoogleTest Activity]]<br />
*[[Examine Branch Test Coverage (Activity)]]<br />
*[[Test Coverage Activity]]<br />
<br />
|-<br />
|<br />
4. Add or improve unit tests, as previously identified, and evaluate results<br />
*Ensure appropriate branch/statement coverage criteria is met<br />
*Run regression tests<br />
| Complete set of unit tests is developed for the module<br />
|<br />
* [[:Category:Written Communication|Writ Comm]]<br />
* [[:Category:Critical Thinking|Crit Think]]<br />
|<br />
*[[Introduction to Test Driven Development]]<br />
*[[Regression Test Assignment]]<br />
*[[Test Driven Development]]<br />
*[[Testing And Coverage Assignment]]<br />
|-<br />
| <br />
5. Post results on the issue tracker<br />
| Results posted to the issue tracker<br />
| <br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
*[[Write a Bug Report (Activity)]]<br />
|}<br />
<br />
=== Notes for Learning Activities Related to this Pathway ===<br />
<br />
When creating and revising activities:<br />
<br />
# Interact with the community to identify likely modules for testing. <br />
# Use an activity that reviews existing unit cases to provide students with an understanding of what they are trying to accomplish. <br />
<br />
[[Category:Pathways]]<br />
[[Category:Critical Thinking]]<br />
[[Category:Information Processing]]<br />
[[Category:Problem Solving]]<br />
[[Category:Written Communication]]</div>Josh.dehlingerhttp://foss2serve.org/index.php/Category:Create_Unit_Tests_(Pathway)Category:Create Unit Tests (Pathway)2017-03-09T00:32:55Z<p>Josh.dehlinger: </p>
<hr />
<div>__NOTOC__<br />
<br />
'''The contributor will''': create unit tests for a software module (class, file, etc).<br />
'''The contribution is''': unit tests accepted into the project's codebase, and test results logged on issue tracker or otherwise accepted by the community.<br />
<br />
=== Prerequisites ===<br />
<br />
{| {{Pathway Prerequisite Table}}<br />
|-<br />
| Software Configuration<br />
| <br />
* Download and install the development environment.<br />
* Run the program.<br />
|-<br />
| Issue Tracker<br />
|<br />
* Describe issue trackers and how they are used.<br />
* Access the issue tracker with appropriate permissions.<br />
* Read, create, and update issues in a tracker.<br />
|-<br />
| Community<br />
| <br />
* Describe the community guidelines for bug management and triage.<br />
* Participate in a community which is open to code contributions.<br />
* Describe community policy on testing. <br />
* Time a contribution within the project's release cycle.<br />
|}<br />
<br />
=== Pathway Steps, Outcomes, & Learning Activities ===<br />
<br />
Follow the project’s policies and practices to complete the steps below.<br />
<br />
{| {{Pathway Step Table}}<br />
|-<br />
| <br />
1. Download and install the project<br />
| Project is installed<br />
| <br />
* [[:Category:Information Processing|Info Proc]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
2. Build and run the project<br />
| Project is built and executed<br />
|<br />
* [[:Category:Information Processing|Info Proc]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
3. Identify module(s) that lack tests, need improved and/or additional unit tests. For example:<br />
*Examine test plan/documentation, if it exists. <br />
*Seek advice of community members for necessary testing<br />
*Identify test framework and run test coverage tools<br />
| Module that needs unit tests is identified <br />
|<br />
* [[:Category:Problem Solving|Prob Solv]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
*[[Unit Test With GoogleTest Activity]]<br />
*[[Examine Branch Test Coverage (Activity)]]<br />
*[[Test Coverage Activity]]<br />
<br />
|-<br />
|<br />
4. Add or improve unit tests, as previously identified, and evaluate results<br />
*Ensure appropriate branch/statement coverage criteria is met<br />
*Run regression tests<br />
*<br />
| Complete set of unit tests is developed for the module<br />
|<br />
* [[:Category:Written Communication|Writ Comm]]<br />
* [[:Category:Critical Thinking|Crit Think]]<br />
|<br />
*[[Introduction to Test Driven Development]]<br />
*[[Regression Test Assignment]]<br />
*[[Test Driven Development]]<br />
*[[Testing And Coverage Assignment]]<br />
|-<br />
| <br />
5. Post results on the issue tracker<br />
| Results posted to the issue tracker<br />
| <br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
*[[Write a Bug Report (Activity)]]<br />
|}<br />
<br />
=== Notes for Learning Activities Related to this Pathway ===<br />
<br />
When creating and revising activities:<br />
<br />
# Interact with the community to identify likely modules for testing. <br />
# Use an activity that reviews existing unit cases to provide students with an understanding of what they are trying to accomplish. <br />
<br />
[[Category:Pathways]]<br />
[[Category:Critical Thinking]]<br />
[[Category:Information Processing]]<br />
[[Category:Problem Solving]]<br />
[[Category:Written Communication]]</div>Josh.dehlingerhttp://foss2serve.org/index.php/Category:Create_Unit_Tests_(Pathway)Category:Create Unit Tests (Pathway)2017-03-09T00:25:59Z<p>Josh.dehlinger: </p>
<hr />
<div>__NOTOC__<br />
<br />
'''The contributor will''': create unit tests for a software module (class, file, etc).<br />
'''The contribution is''': unit tests accepted into the project's codebase, and test results logged on issue tracker or otherwise accepted by the community.<br />
<br />
=== Prerequisites ===<br />
<br />
{| {{Pathway Prerequisite Table}}<br />
|-<br />
| Software Configuration<br />
| <br />
* Download and install the development environment.<br />
* Run the program.<br />
|-<br />
| Issue Tracker<br />
|<br />
* Describe issue trackers and how they are used.<br />
* Access the issue tracker with appropriate permissions.<br />
* Read, create, and update issues in a tracker.<br />
|-<br />
| Community<br />
| <br />
* Describe the community guidelines for bug management and triage.<br />
* Participate in a community which is open to code contributions.<br />
* Describe community policy on testing. <br />
* Time a contribution within the project's release cycle.<br />
|}<br />
<br />
=== Pathway Steps, Outcomes, & Learning Activities ===<br />
<br />
Follow the project’s policies and practices to complete the steps below.<br />
<br />
{| {{Pathway Step Table}}<br />
|-<br />
| <br />
1. Download and install the project<br />
| Project is installed<br />
| <br />
* [[:Category:Information Processing|Info Proc]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
2. Build and run the project<br />
| Project is built and executed<br />
|<br />
* [[:Category:Information Processing|Info Proc]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
3. Identify module(s) that lack tests, need improved and/or additional unit tests. For example:<br />
*Examine test plan/documentation, if it exists. <br />
*Seek advice of community members for necessary testing<br />
*Identify test framework and run test coverage tools<br />
| Module that needs unit tests is identified <br />
|<br />
* [[:Category:Problem Solving|Prob Solv]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
*[[Unit Test With GoogleTest Activity]]<br />
*[[Examine Branch Test Coverage (Activity)]]<br />
*[[Test Coverage Activity]]<br />
<br />
|-<br />
|<br />
4. Write complete set of unit tests for the module<br />
| Complete set of unit tests is developed for the module<br />
|<br />
* [[:Category:Written Communication|Writ Comm]]<br />
* [[:Category:Critical Thinking|Crit Think]]<br />
|<br />
*[[Introduction to Test Driven Development]]<br />
*[[Regression Test Assignment]]<br />
*[[Test Driven Development]]<br />
*[[Testing And Coverage Assignment]]<br />
|-<br />
| <br />
5. Post results on the issue tracker<br />
| Results posted to the issue tracker<br />
| <br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
*[[Write a Bug Report (Activity)]]<br />
|}<br />
<br />
=== Notes for Learning Activities Related to this Pathway ===<br />
<br />
When creating and revising activities:<br />
<br />
# Interact with the community to identify likely modules for testing. <br />
# Use an activity that reviews existing unit cases to provide students with an understanding of what they are trying to accomplish. <br />
<br />
[[Category:Pathways]]<br />
[[Category:Critical Thinking]]<br />
[[Category:Information Processing]]<br />
[[Category:Problem Solving]]<br />
[[Category:Written Communication]]</div>Josh.dehlingerhttp://foss2serve.org/index.php/Category:Create_Unit_Tests_(Pathway)Category:Create Unit Tests (Pathway)2017-03-09T00:25:01Z<p>Josh.dehlinger: </p>
<hr />
<div>__NOTOC__<br />
<br />
'''The contributor will''': create unit tests for a software module (class, file, etc).<br />
'''The contribution is''': unit tests accepted into the project's codebase, and test results logged on issue tracker or otherwise accepted by the community.<br />
<br />
=== Prerequisites ===<br />
<br />
{| {{Pathway Prerequisite Table}}<br />
|-<br />
| Software Configuration<br />
| <br />
* Download and install the development environment.<br />
* Run the program.<br />
|-<br />
| Issue Tracker<br />
|<br />
* Describe issue trackers and how they are used.<br />
* Access the issue tracker with appropriate permissions.<br />
* Read, create, and update issues in a tracker.<br />
|-<br />
| Community<br />
| <br />
* Describe the community guidelines for bug management and triage.<br />
* Participate in a community which is open to code contributions.<br />
* Describe community policy on testing. <br />
* Time a contribution within the project's release cycle.<br />
|}<br />
<br />
=== Pathway Steps, Outcomes, & Learning Activities ===<br />
<br />
Follow the project’s policies and practices to complete the steps below.<br />
<br />
{| {{Pathway Step Table}}<br />
|-<br />
| <br />
1. Download and install the project<br />
| Project is installed<br />
| <br />
* [[:Category:Information Processing|Info Proc]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
2. Build and run the project<br />
| Project is built and executed<br />
|<br />
* [[:Category:Information Processing|Info Proc]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
3. Identify module(s) that lack tests, need improved and/or additional unit tests. For example:<br />
*Examine test plan/documentation, if it exists. <br />
*Seek advice of community members for necessary testing<br />
*Identify test framework and run test coverage tools<br />
| Module that needs unit tests is identified <br />
|<br />
* [[:Category:Problem Solving|Prob Solv]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
*[[Unit Test With GoogleTest Activity]]<br />
*[[Examine Branch Test Coverage (Activity)]]<br />
*[[Test Coverage Activity]]<br />
<br />
|-<br />
|<br />
4. Write complete set of unit tests for the module<br />
| Complete set of unit tests is developed for the module<br />
|<br />
* [[:Category:Written Communication|Writ Comm]]<br />
* [[:Category:Critical Thinking|Crit Think]]<br />
|<br />
*[[Introduction to Static Analysis]]<br />
*[[Introduction to Test Driven Development]]<br />
*[[Regression Test Assignment]]<br />
*[[Test Driven Development]]<br />
*[[Testing And Coverage Assignment]]<br />
|-<br />
| <br />
5. Post results on the issue tracker<br />
| Results posted to the issue tracker<br />
| <br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
*[[Write a Bug Report (Activity)]]<br />
|}<br />
<br />
=== Notes for Learning Activities Related to this Pathway ===<br />
<br />
When creating and revising activities:<br />
<br />
# Interact with the community to identify likely modules for testing. <br />
# Use an activity that reviews existing unit cases to provide students with an understanding of what they are trying to accomplish. <br />
<br />
[[Category:Pathways]]<br />
[[Category:Critical Thinking]]<br />
[[Category:Information Processing]]<br />
[[Category:Problem Solving]]<br />
[[Category:Written Communication]]</div>Josh.dehlingerhttp://foss2serve.org/index.php/Category:Create_Unit_Tests_(Pathway)Category:Create Unit Tests (Pathway)2017-03-09T00:22:53Z<p>Josh.dehlinger: </p>
<hr />
<div>__NOTOC__<br />
<br />
'''The contributor will''': create unit tests for a software module (class, file, etc).<br />
'''The contribution is''': unit tests accepted into the project's codebase, and test results logged on issue tracker or otherwise accepted by the community.<br />
<br />
=== Prerequisites ===<br />
<br />
{| {{Pathway Prerequisite Table}}<br />
|-<br />
| Software Configuration<br />
| <br />
* Download and install the development environment.<br />
* Run the program.<br />
|-<br />
| Issue Tracker<br />
|<br />
* Describe issue trackers and how they are used.<br />
* Access the issue tracker with appropriate permissions.<br />
* Read, create, and update issues in a tracker.<br />
|-<br />
| Community<br />
| <br />
* Describe the community guidelines for bug management and triage.<br />
* Participate in a community which is open to code contributions.<br />
* Describe community policy on testing. <br />
* Time a contribution within the project's release cycle.<br />
|}<br />
<br />
=== Pathway Steps, Outcomes, & Learning Activities ===<br />
<br />
Follow the project’s policies and practices to complete the steps below.<br />
<br />
{| {{Pathway Step Table}}<br />
|-<br />
| <br />
1. Download and install the project<br />
| Project is installed<br />
| <br />
* [[:Category:Information Processing|Info Proc]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
2. Build and run the project<br />
| Project is built and executed<br />
|<br />
* [[:Category:Information Processing|Info Proc]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
3. Identify module(s) that lack tests, need improved and/or additional unit tests. For example:<br />
*Examine test plan/documentation, if it exists. <br />
*Seek advice of community members for necessary testing<br />
*Identify test framework and run test coverage tools<br />
| Module that needs unit tests is identified <br />
|<br />
* [[:Category:Problem Solving|Prob Solv]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
*[[Unit Test With GoogleTest Activity]]<br />
|-<br />
|<br />
4. Write complete set of unit tests for the module<br />
| Complete set of unit tests is developed for the module<br />
|<br />
* [[:Category:Written Communication|Writ Comm]]<br />
* [[:Category:Critical Thinking|Crit Think]]<br />
|<br />
*[[Examine Branch Test Coverage (Activity)]]<br />
*[[Introduction to Static Analysis]]<br />
*[[Introduction to Test Driven Development]]<br />
*[[Regression Test Assignment]]<br />
*[[Test Coverage Activity]]<br />
*[[Test Driven Development]]<br />
*[[Testing And Coverage Assignment]]<br />
|-<br />
| <br />
5. Post results on the issue tracker<br />
| Results posted to the issue tracker<br />
| <br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
*[[Write a Bug Report (Activity)]]<br />
|}<br />
<br />
=== Notes for Learning Activities Related to this Pathway ===<br />
<br />
When creating and revising activities:<br />
<br />
# Interact with the community to identify likely modules for testing. <br />
# Use an activity that reviews existing unit cases to provide students with an understanding of what they are trying to accomplish. <br />
<br />
[[Category:Pathways]]<br />
[[Category:Critical Thinking]]<br />
[[Category:Information Processing]]<br />
[[Category:Problem Solving]]<br />
[[Category:Written Communication]]</div>Josh.dehlingerhttp://foss2serve.org/index.php/Category:Create_Unit_Tests_(Pathway)Category:Create Unit Tests (Pathway)2017-03-09T00:22:23Z<p>Josh.dehlinger: Undo revision 9750 by Josh.dehlinger (talk)</p>
<hr />
<div>__NOTOC__<br />
<br />
'''The contributor will''': create unit tests for a software module (class, file, etc).<br />
'''The contribution is''': unit tests accepted into the project's codebase, and test results logged on issue tracker or otherwise accepted by the community.<br />
<br />
=== Prerequisites ===<br />
<br />
{| {{Pathway Prerequisite Table}}<br />
|-<br />
| Software Configuration<br />
| <br />
* Download and install the development environment.<br />
* Run the program.<br />
|-<br />
| Issue Tracker<br />
|<br />
* Describe issue trackers and how they are used.<br />
* Access the issue tracker with appropriate permissions.<br />
* Read, create, and update issues in a tracker.<br />
|-<br />
| Community<br />
| <br />
* Describe the community guidelines for bug management and triage.<br />
* Participate in a community which is open to code contributions.<br />
* Describe community policy on testing. <br />
* Time a contribution within the project's release cycle.<br />
|}<br />
<br />
=== Pathway Steps, Outcomes, & Learning Activities ===<br />
<br />
Follow the project’s policies and practices to complete the steps below.<br />
<br />
{| {{Pathway Step Table}}<br />
|-<br />
| <br />
1. Download and install the project<br />
| Project is installed<br />
| <br />
* [[:Category:Information Processing|Info Proc]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
2. Build and run the project<br />
| Project is built and executed<br />
|<br />
* [[:Category:Information Processing|Info Proc]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
3. Identify module(s) that lack tests, need improved and/or additional unit tests. For example:<br />
*Examine test plan/documentation, if it exists. <br />
*Seek advice of community members for necessary testing<br />
*Identify test framework and run test coverage tools<br />
| Module that needs unit tests is identified <br />
|<br />
* [[:Category:Problem Solving|Prob Solv]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
4. Write complete set of unit tests for the module<br />
| Complete set of unit tests is developed for the module<br />
|<br />
* [[:Category:Written Communication|Writ Comm]]<br />
* [[:Category:Critical Thinking|Crit Think]]<br />
|<br />
*[[Examine Branch Test Coverage (Activity)]]<br />
*[[Introduction to Static Analysis]]<br />
*[[Introduction to Test Driven Development]]<br />
*[[Regression Test Assignment]]<br />
*[[Test Coverage Activity]]<br />
*[[Test Driven Development]]<br />
*[[Testing And Coverage Assignment]]<br />
*[[Unit Test With GoogleTest Activity]]<br />
|-<br />
| <br />
5. Post results on the issue tracker<br />
| Results posted to the issue tracker<br />
| <br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
*[[Write a Bug Report (Activity)]]<br />
|}<br />
<br />
=== Notes for Learning Activities Related to this Pathway ===<br />
<br />
When creating and revising activities:<br />
<br />
# Interact with the community to identify likely modules for testing. <br />
# Use an activity that reviews existing unit cases to provide students with an understanding of what they are trying to accomplish. <br />
<br />
[[Category:Pathways]]<br />
[[Category:Critical Thinking]]<br />
[[Category:Information Processing]]<br />
[[Category:Problem Solving]]<br />
[[Category:Written Communication]]</div>Josh.dehlingerhttp://foss2serve.org/index.php/Category:Create_Unit_Tests_(Pathway)Category:Create Unit Tests (Pathway)2017-03-09T00:21:42Z<p>Josh.dehlinger: </p>
<hr />
<div>__NOTOC__<br />
<br />
'''The contributor will''': create unit tests for a software module (class, file, etc).<br />
'''The contribution is''': unit tests accepted into the project's codebase, and test results logged on issue tracker or otherwise accepted by the community.<br />
<br />
=== Prerequisites ===<br />
<br />
{| {{Pathway Prerequisite Table}}<br />
|-<br />
| Software Configuration<br />
| <br />
* Download and install the development environment.<br />
* Run the program.<br />
|-<br />
| Issue Tracker<br />
|<br />
* Describe issue trackers and how they are used.<br />
* Access the issue tracker with appropriate permissions.<br />
* Read, create, and update issues in a tracker.<br />
|-<br />
| Community<br />
| <br />
* Describe the community guidelines for bug management and triage.<br />
* Participate in a community which is open to code contributions.<br />
* Describe community policy on testing. <br />
* Time a contribution within the project's release cycle.<br />
|}<br />
<br />
=== Pathway Steps, Outcomes, & Learning Activities ===<br />
<br />
Follow the project’s policies and practices to complete the steps below.<br />
<br />
{| {{Pathway Step Table}}<br />
|-<br />
| <br />
1. Download and install the project<br />
| Project is installed<br />
| <br />
* [[:Category:Information Processing|Info Proc]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
2. Build and run the project<br />
| Project is built and executed<br />
|<br />
* [[:Category:Information Processing|Info Proc]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
3. Identify module(s) that lack tests, need improved and/or additional unit tests. For example:<br />
*Examine test plan/documentation, if it exists. <br />
*Seek advice of community members for necessary testing<br />
*Identify test framework and run test coverage tools<br />
| Module that needs unit tests is identified <br />
|<br />
*[[Unit Test With GoogleTest Activity]]<br />
|<br />
* [[:Category:Problem Solving|Prob Solv]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
4. Write complete set of unit tests for the module<br />
| Complete set of unit tests is developed for the module<br />
|<br />
* [[:Category:Written Communication|Writ Comm]]<br />
* [[:Category:Critical Thinking|Crit Think]]<br />
|<br />
*[[Examine Branch Test Coverage (Activity)]]<br />
*[[Introduction to Static Analysis]]<br />
*[[Introduction to Test Driven Development]]<br />
*[[Regression Test Assignment]]<br />
*[[Test Coverage Activity]]<br />
*[[Test Driven Development]]<br />
*[[Testing And Coverage Assignment]]<br />
|-<br />
| <br />
5. Post results on the issue tracker<br />
| Results posted to the issue tracker<br />
| <br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
*[[Write a Bug Report (Activity)]]<br />
|}<br />
<br />
=== Notes for Learning Activities Related to this Pathway ===<br />
<br />
When creating and revising activities:<br />
<br />
# Interact with the community to identify likely modules for testing. <br />
# Use an activity that reviews existing unit cases to provide students with an understanding of what they are trying to accomplish. <br />
<br />
[[Category:Pathways]]<br />
[[Category:Critical Thinking]]<br />
[[Category:Information Processing]]<br />
[[Category:Problem Solving]]<br />
[[Category:Written Communication]]</div>Josh.dehlingerhttp://foss2serve.org/index.php/Category:Create_Unit_Tests_(Pathway)Category:Create Unit Tests (Pathway)2017-03-09T00:20:13Z<p>Josh.dehlinger: </p>
<hr />
<div>__NOTOC__<br />
<br />
'''The contributor will''': create unit tests for a software module (class, file, etc).<br />
'''The contribution is''': unit tests accepted into the project's codebase, and test results logged on issue tracker or otherwise accepted by the community.<br />
<br />
=== Prerequisites ===<br />
<br />
{| {{Pathway Prerequisite Table}}<br />
|-<br />
| Software Configuration<br />
| <br />
* Download and install the development environment.<br />
* Run the program.<br />
|-<br />
| Issue Tracker<br />
|<br />
* Describe issue trackers and how they are used.<br />
* Access the issue tracker with appropriate permissions.<br />
* Read, create, and update issues in a tracker.<br />
|-<br />
| Community<br />
| <br />
* Describe the community guidelines for bug management and triage.<br />
* Participate in a community which is open to code contributions.<br />
* Describe community policy on testing. <br />
* Time a contribution within the project's release cycle.<br />
|}<br />
<br />
=== Pathway Steps, Outcomes, & Learning Activities ===<br />
<br />
Follow the project’s policies and practices to complete the steps below.<br />
<br />
{| {{Pathway Step Table}}<br />
|-<br />
| <br />
1. Download and install the project<br />
| Project is installed<br />
| <br />
* [[:Category:Information Processing|Info Proc]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
2. Build and run the project<br />
| Project is built and executed<br />
|<br />
* [[:Category:Information Processing|Info Proc]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
3. Identify module(s) that lack tests, need improved and/or additional unit tests. For example:<br />
*Examine test plan/documentation, if it exists. <br />
*Seek advice of community members for necessary testing<br />
*Identify test framework and run test coverage tools<br />
| Module that needs unit tests is identified <br />
|<br />
* [[:Category:Problem Solving|Prob Solv]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
4. Write complete set of unit tests for the module<br />
| Complete set of unit tests is developed for the module<br />
|<br />
* [[:Category:Written Communication|Writ Comm]]<br />
* [[:Category:Critical Thinking|Crit Think]]<br />
|<br />
*[[Examine Branch Test Coverage (Activity)]]<br />
*[[Introduction to Static Analysis]]<br />
*[[Introduction to Test Driven Development]]<br />
*[[Regression Test Assignment]]<br />
*[[Test Coverage Activity]]<br />
*[[Test Driven Development]]<br />
*[[Testing And Coverage Assignment]]<br />
*[[Unit Test With GoogleTest Activity]]<br />
|-<br />
| <br />
5. Post results on the issue tracker<br />
| Results posted to the issue tracker<br />
| <br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
*[[Write a Bug Report (Activity)]]<br />
|}<br />
<br />
=== Notes for Learning Activities Related to this Pathway ===<br />
<br />
When creating and revising activities:<br />
<br />
# Interact with the community to identify likely modules for testing. <br />
# Use an activity that reviews existing unit cases to provide students with an understanding of what they are trying to accomplish. <br />
<br />
[[Category:Pathways]]<br />
[[Category:Critical Thinking]]<br />
[[Category:Information Processing]]<br />
[[Category:Problem Solving]]<br />
[[Category:Written Communication]]</div>Josh.dehlingerhttp://foss2serve.org/index.php/Category:Create_Unit_Tests_(Pathway)Category:Create Unit Tests (Pathway)2017-03-09T00:19:49Z<p>Josh.dehlinger: </p>
<hr />
<div>__NOTOC__<br />
<br />
'''The contributor will''': create unit tests for a software module (class, file, etc).<br />
'''The contribution is''': unit tests accepted into the project's codebase, and test results logged on issue tracker or otherwise accepted by the community.<br />
<br />
=== Prerequisites ===<br />
<br />
{| {{Pathway Prerequisite Table}}<br />
|-<br />
| Software Configuration<br />
| <br />
* Download and install the development environment.<br />
* Run the program.<br />
|-<br />
| Issue Tracker<br />
|<br />
* Describe issue trackers and how they are used.<br />
* Access the issue tracker with appropriate permissions.<br />
* Read, create, and update issues in a tracker.<br />
|-<br />
| Community<br />
| <br />
* Describe the community guidelines for bug management and triage.<br />
* Participate in a community which is open to code contributions.<br />
* Describe community policy on testing. <br />
* Time a contribution within the project's release cycle.<br />
|}<br />
<br />
=== Pathway Steps, Outcomes, & Learning Activities ===<br />
<br />
Follow the project’s policies and practices to complete the steps below.<br />
<br />
{| {{Pathway Step Table}}<br />
|-<br />
| <br />
1. Download and install the project<br />
| Project is installed<br />
| <br />
* [[:Category:Information Processing|Info Proc]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
2. Build and run the project<br />
| Project is built and executed<br />
|<br />
* [[:Category:Information Processing|Info Proc]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
3. Identify module(s) that lack tests, need improved and/or additional unit tests. For example:<br />
*Examine test plan/documentation, if it exists. <br />
*Seek advice of community members for necessary testing<br />
*Identify test framework and run test coverage tools<br />
| Module that needs unit tests is identified <br />
|<br />
* [[:Category:Problem Solving|Prob Solv]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
5. Write complete set of unit tests for the module<br />
| Complete set of unit tests is developed for the module<br />
|<br />
* [[:Category:Written Communication|Writ Comm]]<br />
* [[:Category:Critical Thinking|Crit Think]]<br />
|<br />
*[[Examine Branch Test Coverage (Activity)]]<br />
*[[Introduction to Static Analysis]]<br />
*[[Introduction to Test Driven Development]]<br />
*[[Regression Test Assignment]]<br />
*[[Test Coverage Activity]]<br />
*[[Test Driven Development]]<br />
*[[Testing And Coverage Assignment]]<br />
*[[Unit Test With GoogleTest Activity]]<br />
|-<br />
| <br />
6. Post results on the issue tracker<br />
| Results posted to the issue tracker<br />
| <br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
*[[Write a Bug Report (Activity)]]<br />
|}<br />
<br />
=== Notes for Learning Activities Related to this Pathway ===<br />
<br />
When creating and revising activities:<br />
<br />
# Interact with the community to identify likely modules for testing. <br />
# Use an activity that reviews existing unit cases to provide students with an understanding of what they are trying to accomplish. <br />
<br />
[[Category:Pathways]]<br />
[[Category:Critical Thinking]]<br />
[[Category:Information Processing]]<br />
[[Category:Problem Solving]]<br />
[[Category:Written Communication]]</div>Josh.dehlingerhttp://foss2serve.org/index.php/Category:Create_Unit_Tests_(Pathway)Category:Create Unit Tests (Pathway)2017-03-09T00:17:50Z<p>Josh.dehlinger: </p>
<hr />
<div>__NOTOC__<br />
<br />
'''The contributor will''': create unit tests for a software module (class, file, etc).<br />
'''The contribution is''': unit tests accepted into the project's codebase, and test results logged on issue tracker or otherwise accepted by the community.<br />
<br />
=== Prerequisites ===<br />
<br />
{| {{Pathway Prerequisite Table}}<br />
|-<br />
| Software Configuration<br />
| <br />
* Download and install the development environment.<br />
* Run the program.<br />
|-<br />
| Issue Tracker<br />
|<br />
* Describe issue trackers and how they are used.<br />
* Access the issue tracker with appropriate permissions.<br />
* Read, create, and update issues in a tracker.<br />
|-<br />
| Community<br />
| <br />
* Describe the community guidelines for bug management and triage.<br />
* Participate in a community which is open to code contributions.<br />
* Describe community policy on testing. <br />
* Time a contribution within the project's release cycle.<br />
|}<br />
<br />
=== Pathway Steps, Outcomes, & Learning Activities ===<br />
<br />
Follow the project’s policies and practices to complete the steps below.<br />
<br />
{| {{Pathway Step Table}}<br />
|-<br />
| <br />
1. Download and install the project<br />
| Project is installed<br />
| <br />
* [[:Category:Information Processing|Info Proc]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
2. Build and run the project<br />
| Project is built and executed<br />
|<br />
* [[:Category:Information Processing|Info Proc]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
3. Identify module(s) that lack tests, need improved and/or additional unit tests<br />
*Examine test plan/documentation, if it exists. For example:<br />
*Seek advice of community members for necessary testing<br />
*Identify test framework and run test coverage tools<br />
| Module that needs unit tests is identified <br />
|<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
4. Locate the code for the module<br />
| Source code for the module is located<br />
|<br />
* [[:Category:Problem Solving|Prob Solv]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
5. Write complete set of unit tests for the module<br />
| Complete set of unit tests is developed for the module<br />
|<br />
* [[:Category:Written Communication|Writ Comm]]<br />
* [[:Category:Critical Thinking|Crit Think]]<br />
|<br />
*[[Examine Branch Test Coverage (Activity)]]<br />
*[[Introduction to Static Analysis]]<br />
*[[Introduction to Test Driven Development]]<br />
*[[Regression Test Assignment]]<br />
*[[Test Coverage Activity]]<br />
*[[Test Driven Development]]<br />
*[[Testing And Coverage Assignment]]<br />
*[[Unit Test With GoogleTest Activity]]<br />
|-<br />
| <br />
6. Post results on the issue tracker<br />
| Results posted to the issue tracker<br />
| <br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
*[[Write a Bug Report (Activity)]]<br />
|}<br />
<br />
=== Notes for Learning Activities Related to this Pathway ===<br />
<br />
When creating and revising activities:<br />
<br />
# Interact with the community to identify likely modules for testing. <br />
# Use an activity that reviews existing unit cases to provide students with an understanding of what they are trying to accomplish. <br />
<br />
[[Category:Pathways]]<br />
[[Category:Critical Thinking]]<br />
[[Category:Information Processing]]<br />
[[Category:Problem Solving]]<br />
[[Category:Written Communication]]</div>Josh.dehlingerhttp://foss2serve.org/index.php/Category:Create_Unit_Tests_(Pathway)Category:Create Unit Tests (Pathway)2017-03-09T00:17:00Z<p>Josh.dehlinger: </p>
<hr />
<div>__NOTOC__<br />
<br />
'''The contributor will''': create unit tests for a software module (class, file, etc).<br />
'''The contribution is''': unit tests accepted into the project's codebase, and test results logged on issue tracker or otherwise accepted by the community.<br />
<br />
=== Prerequisites ===<br />
<br />
{| {{Pathway Prerequisite Table}}<br />
|-<br />
| Software Configuration<br />
| <br />
* Download and install the development environment.<br />
* Run the program.<br />
|-<br />
| Issue Tracker<br />
|<br />
* Describe issue trackers and how they are used.<br />
* Access the issue tracker with appropriate permissions.<br />
* Read, create, and update issues in a tracker.<br />
|-<br />
| Community<br />
| <br />
* Describe the community guidelines for bug management and triage.<br />
* Participate in a community which is open to code contributions.<br />
* Describe community policy on testing. <br />
* Time a contribution within the project's release cycle.<br />
|}<br />
<br />
=== Pathway Steps, Outcomes, & Learning Activities ===<br />
<br />
Follow the project’s policies and practices to complete the steps below.<br />
<br />
{| {{Pathway Step Table}}<br />
|-<br />
| <br />
1. Download and install the project<br />
| Project is installed<br />
| <br />
* [[:Category:Information Processing|Info Proc]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
2. Build and run the project<br />
| Project is built and executed<br />
|<br />
* [[:Category:Information Processing|Info Proc]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
3. Identify module(s) that lack tests, need improved and/or additional unit tests<br />
*Examine test plan/documentation, if it exists<br />
*Seek advice of community members for necessary testing<br />
*Identify test framework and run test coverage tools<br />
| Module that needs unit tests is identified <br />
|<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
4. Locate the code for the module<br />
| Source code for the module is located<br />
|<br />
* [[:Category:Problem Solving|Prob Solv]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
5. Write complete set of unit tests for the module<br />
| Complete set of unit tests is developed for the module<br />
|<br />
* [[:Category:Written Communication|Writ Comm]]<br />
* [[:Category:Critical Thinking|Crit Think]]<br />
|<br />
*[[Examine Branch Test Coverage (Activity)]]<br />
*[[Introduction to Static Analysis]]<br />
*[[Introduction to Test Driven Development]]<br />
*[[Regression Test Assignment]]<br />
*[[Test Coverage Activity]]<br />
*[[Test Driven Development]]<br />
*[[Testing And Coverage Assignment]]<br />
*[[Unit Test With GoogleTest Activity]]<br />
|-<br />
| <br />
6. Post results on the issue tracker<br />
| Results posted to the issue tracker<br />
| <br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
*[[Write a Bug Report (Activity)]]<br />
|}<br />
<br />
=== Notes for Learning Activities Related to this Pathway ===<br />
<br />
When creating and revising activities:<br />
<br />
# Interact with the community to identify likely modules for testing. <br />
# Use an activity that reviews existing unit cases to provide students with an understanding of what they are trying to accomplish. <br />
<br />
[[Category:Pathways]]<br />
[[Category:Critical Thinking]]<br />
[[Category:Information Processing]]<br />
[[Category:Problem Solving]]<br />
[[Category:Written Communication]]</div>Josh.dehlingerhttp://foss2serve.org/index.php/Category:Create_Unit_Tests_(Pathway)Category:Create Unit Tests (Pathway)2017-03-09T00:11:27Z<p>Josh.dehlinger: </p>
<hr />
<div>__NOTOC__<br />
<br />
'''The contributor will''': create unit tests for a software module (class, file, etc).<br />
'''The contribution is''': unit tests accepted into the project's codebase, and test results logged on issue tracker or otherwise accepted by the community.<br />
<br />
=== Prerequisites ===<br />
<br />
{| {{Pathway Prerequisite Table}}<br />
|-<br />
| Software Configuration<br />
| <br />
* Download and install the development environment.<br />
* Run the program.<br />
|-<br />
| Issue Tracker<br />
|<br />
* Describe issue trackers and how they are used.<br />
* Access the issue tracker with appropriate permissions.<br />
* Read, create, and update issues in a tracker.<br />
|-<br />
| Community<br />
| <br />
* Describe the community guidelines for bug management and triage.<br />
* Participate in a community which is open to code contributions.<br />
* Describe community policy on testing. <br />
* Time a contribution within the project's release cycle.<br />
|}<br />
<br />
=== Pathway Steps, Outcomes, & Learning Activities ===<br />
<br />
Follow the project’s policies and practices to complete the steps below.<br />
<br />
{| {{Pathway Step Table}}<br />
|-<br />
| <br />
1. Download and install the project<br />
| Project is installed<br />
| <br />
* [[:Category:Information Processing|Info Proc]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
2. Build and run the project<br />
| Project is built and executed<br />
|<br />
* [[:Category:Information Processing|Info Proc]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
3. Work with community (or check issue tracker?) to find module that needs unit tests <br />
| Module that needs unit tests is identified <br />
|<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
4. Locate the code for the module<br />
| Source code for the module is located<br />
|<br />
* [[:Category:Problem Solving|Prob Solv]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
5. Write complete set of unit tests for the module<br />
| Complete set of unit tests is developed for the module<br />
|<br />
* [[:Category:Written Communication|Writ Comm]]<br />
* [[:Category:Critical Thinking|Crit Think]]<br />
|<br />
*[[Examine Branch Test Coverage (Activity)]]<br />
*[[Introduction to Static Analysis]]<br />
*[[Introduction to Test Driven Development]]<br />
*[[Regression Test Assignment]]<br />
*[[Test Coverage Activity]]<br />
*[[Test Driven Development]]<br />
*[[Testing And Coverage Assignment]]<br />
*[[Unit Test With GoogleTest Activity]]<br />
|-<br />
| <br />
6. Post results on the issue tracker<br />
| Results posted to the issue tracker<br />
| <br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
*[[Write a Bug Report (Activity)]]<br />
|}<br />
<br />
=== Notes for Learning Activities Related to this Pathway ===<br />
<br />
When creating and revising activities:<br />
<br />
# Interact with the community to identify likely modules for testing. <br />
# Use an activity that reviews existing unit cases to provide students with an understanding of what they are trying to accomplish. <br />
<br />
[[Category:Pathways]]<br />
[[Category:Critical Thinking]]<br />
[[Category:Information Processing]]<br />
[[Category:Problem Solving]]<br />
[[Category:Written Communication]]</div>Josh.dehlingerhttp://foss2serve.org/index.php/Category_talk:Create_Unit_Tests_(Pathway)Category talk:Create Unit Tests (Pathway)2017-03-08T23:59:55Z<p>Josh.dehlinger: Created page with "Consider rebranding this pathway to "quality assurance", which could include static analysis, refactoring, unit testing, etc."</p>
<hr />
<div>Consider rebranding this pathway to "quality assurance", which could include static analysis, refactoring, unit testing, etc.</div>Josh.dehlingerhttp://foss2serve.org/index.php/Category:Create_Unit_Tests_(Pathway)Category:Create Unit Tests (Pathway)2017-03-08T19:30:36Z<p>Josh.dehlinger: </p>
<hr />
<div>__NOTOC__<br />
<br />
'''The contributor will''': create unit tests for a software module (class, file, etc).<br />
'''The contribution is''': unit tests accepted into the project's codebase, and test results logged on issue tracker or otherwise accepted by the community.<br />
<br />
=== Prerequisites ===<br />
<br />
{| {{Pathway Prerequisite Table}}<br />
|-<br />
| Software Configuration<br />
| <br />
* Download and install the development environment.<br />
* Run the program.<br />
|-<br />
| Issue Tracker<br />
|<br />
* Describe issue trackers and how they are used.<br />
* Access the issue tracker with appropriate permissions.<br />
* Read, create, and update issues in a tracker.<br />
|-<br />
| Community<br />
| <br />
* Describe the community guidelines for bug management and triage.<br />
* Participate in a community which is open to code contributions.<br />
* Describe community policy on testing. <br />
* Time a contribution within the project's release cycle.<br />
|}<br />
<br />
=== Pathway Steps, Outcomes, & Learning Activities ===<br />
<br />
Follow the project’s policies and practices to complete the steps below.<br />
<br />
{| {{Pathway Step Table}}<br />
|-<br />
| <br />
1. Download and install the project<br />
| Project is installed<br />
| <br />
* [[:Category:Information Processing|Info Proc]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
2. Run the project<br />
| Project is run<br />
|<br />
* [[:Category:Information Processing|Info Proc]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
3. Work with community (or check issue tracker?) to find module that needs unit tests <br />
| Module that needs unit tests is identified <br />
|<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
4. Locate the code for the module<br />
| Source code for the module is located<br />
|<br />
* [[:Category:Problem Solving|Prob Solv]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
5. Write complete set of unit tests for the module<br />
| Complete set of unit tests is developed for the module<br />
|<br />
* [[:Category:Written Communication|Writ Comm]]<br />
* [[:Category:Critical Thinking|Crit Think]]<br />
|<br />
*[[Examine Branch Test Coverage (Activity)]]<br />
*[[Introduction to Static Analysis]]<br />
*[[Introduction to Test Driven Development]]<br />
*[[Regression Test Assignment]]<br />
*[[Test Coverage Activity]]<br />
*[[Test Driven Development]]<br />
*[[Testing And Coverage Assignment]]<br />
*[[Unit Test With GoogleTest Activity]]<br />
|-<br />
| <br />
6. Post results on the issue tracker<br />
| Results posted to the issue tracker<br />
| <br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
*[[Write a Bug Report (Activity)]]<br />
|}<br />
<br />
=== Notes for Learning Activities Related to this Pathway ===<br />
<br />
When creating and revising activities:<br />
<br />
# Interact with the community to identify likely modules for testing. <br />
# Use an activity that reviews existing unit cases to provide students with an understanding of what they are trying to accomplish. <br />
<br />
[[Category:Pathways]]<br />
[[Category:Critical Thinking]]<br />
[[Category:Information Processing]]<br />
[[Category:Problem Solving]]<br />
[[Category:Written Communication]]</div>Josh.dehlingerhttp://foss2serve.org/index.php/Category:Create_Unit_Tests_(Pathway)Category:Create Unit Tests (Pathway)2017-03-08T19:29:47Z<p>Josh.dehlinger: </p>
<hr />
<div>__NOTOC__<br />
<br />
'''The contributor will''': create unit tests for a software module (class, file, etc).<br />
'''The contribution is''': unit tests accepted into the project's codebase, and test results logged on issue tracker or otherwise accepted by the community.<br />
<br />
=== Prerequisites ===<br />
<br />
{| {{Pathway Prerequisite Table}}<br />
|-<br />
| Software Configuration<br />
| <br />
* Download and install the development environment.<br />
* Run the program.<br />
|-<br />
| Issue Tracker<br />
|<br />
* Describe issue trackers and how they are used.<br />
* Access the issue tracker with appropriate permissions.<br />
* Read, create, and update issues in a tracker.<br />
|-<br />
| Community<br />
| <br />
* Describe the community guidelines for bug management and triage.<br />
* Participate in a community which is open to code contributions.<br />
* Describe community policy on testing. <br />
* Time a contribution within the project's release cycle.<br />
|}<br />
<br />
=== Pathway Steps, Outcomes, & Learning Activities ===<br />
<br />
Follow the project’s policies and practices to complete the steps below.<br />
<br />
{| {{Pathway Step Table}}<br />
|-<br />
| <br />
1. Download and install the project<br />
| Project is installed<br />
| <br />
* [[:Category:Information Processing|Info Proc]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
2. Run the project<br />
| Project is run<br />
|<br />
* [[:Category:Information Processing|Info Proc]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
3. Work with community (or check issue tracker?) to find module that needs unit tests <br />
| Module that needs unit tests is identified <br />
|<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
4. Locate the code for the module<br />
| Source code for the module is located<br />
|<br />
* [[:Category:Problem Solving|Prob Solv]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
5. Write complete set of unit tests for the module<br />
| Complete set of unit tests is developed for the module<br />
|<br />
* [[:Category:Written Communication|Writ Comm]]<br />
* [[:Category:Critical Thinking|Crit Think]]<br />
|<br />
*[[Examine Branch Test Coverage (Activity)]]<br />
*[[Introduction to Static Analysis]]<br />
*[[Introduction to Test Driven Development]]<br />
*[[Regression Test Assignment]]<br />
*[[Test Coverage Activity]]<br />
*[[Test Driven Development]]<br />
*[[Testing And Coverage Assignment]]<br />
*[[Unit Test With GoogleTest Activity]]<br />
|-<br />
| <br />
6. Post results on the issue tracker<br />
| Results posted to the issue tracker<br />
| <br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|}<br />
<br />
=== Notes for Learning Activities Related to this Pathway ===<br />
<br />
When creating and revising activities:<br />
<br />
# Interact with the community to identify likely modules for testing. <br />
# Use an activity that reviews existing unit cases to provide students with an understanding of what they are trying to accomplish. <br />
<br />
[[Category:Pathways]]<br />
[[Category:Critical Thinking]]<br />
[[Category:Information Processing]]<br />
[[Category:Problem Solving]]<br />
[[Category:Written Communication]]</div>Josh.dehlingerhttp://foss2serve.org/index.php/Category:Create_Unit_Tests_(Pathway)Category:Create Unit Tests (Pathway)2017-03-08T19:27:56Z<p>Josh.dehlinger: </p>
<hr />
<div>__NOTOC__<br />
<br />
'''The contributor will''': create unit tests for a software module (class, file, etc).<br />
'''The contribution is''': unit tests accepted into the project's codebase, and test results logged on issue tracker or otherwise accepted by the community.<br />
<br />
=== Prerequisites ===<br />
<br />
{| {{Pathway Prerequisite Table}}<br />
|-<br />
| Software Configuration<br />
| <br />
* Download and install the development environment.<br />
* Run the program.<br />
|-<br />
| Issue Tracker<br />
|<br />
* Describe issue trackers and how they are used.<br />
* Access the issue tracker with appropriate permissions.<br />
* Read, create, and update issues in a tracker.<br />
|-<br />
| Community<br />
| <br />
* Describe the community guidelines for bug management and triage.<br />
* Participate in a community which is open to code contributions.<br />
* Describe community policy on testing. <br />
* Time a contribution within the project's release cycle.<br />
|}<br />
<br />
=== Pathway Steps, Outcomes, & Learning Activities ===<br />
<br />
Follow the project’s policies and practices to complete the steps below.<br />
<br />
{| {{Pathway Step Table}}<br />
|-<br />
| <br />
1. Download and install the project<br />
| Project is installed<br />
| <br />
* [[:Category:Information Processing|Info Proc]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
2. Run the project<br />
| Project is run<br />
|<br />
* [[:Category:Information Processing|Info Proc]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
3. Work with community (or check issue tracker?) to find module that needs unit tests <br />
| Module that needs unit tests is identified <br />
|<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
4. Locate the code for the module<br />
| Source code for the module is located<br />
|<br />
* [[:Category:Problem Solving|Prob Solv]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
5. Write complete set of unit tests for the module<br />
| Complete set of unit tests is developed for the module<br />
|<br />
* [[:Category:Written Communication|Writ Comm]]<br />
* [[:Category:Critical Thinking|Crit Think]]<br />
|<br />
*[[Examine Branch Test Coverage (Activity)]]<br />
*[[Introduction to Static Analysis]]<br />
*[[Introduction to Test Driven Development]]<br />
*[[Regression Test Assignment]]<br />
*[[Test Coverage Activity]]<br />
*[[Test Driven Development]]<br />
|-<br />
| <br />
6. Post results on the issue tracker<br />
| Results posted to the issue tracker<br />
| <br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|}<br />
<br />
=== Notes for Learning Activities Related to this Pathway ===<br />
<br />
When creating and revising activities:<br />
<br />
# Interact with the community to identify likely modules for testing. <br />
# Use an activity that reviews existing unit cases to provide students with an understanding of what they are trying to accomplish. <br />
<br />
[[Category:Pathways]]<br />
[[Category:Critical Thinking]]<br />
[[Category:Information Processing]]<br />
[[Category:Problem Solving]]<br />
[[Category:Written Communication]]</div>Josh.dehlingerhttp://foss2serve.org/index.php/Category:Create_Unit_Tests_(Pathway)Category:Create Unit Tests (Pathway)2017-03-08T19:25:55Z<p>Josh.dehlinger: </p>
<hr />
<div>__NOTOC__<br />
<br />
'''The contributor will''': create unit tests for a software module (class, file, etc).<br />
'''The contribution is''': unit tests accepted into the project's codebase, and test results logged on issue tracker or otherwise accepted by the community.<br />
<br />
=== Prerequisites ===<br />
<br />
{| {{Pathway Prerequisite Table}}<br />
|-<br />
| Software Configuration<br />
| <br />
* Download and install the development environment.<br />
* Run the program.<br />
|-<br />
| Issue Tracker<br />
|<br />
* Describe issue trackers and how they are used.<br />
* Access the issue tracker with appropriate permissions.<br />
* Read, create, and update issues in a tracker.<br />
|-<br />
| Community<br />
| <br />
* Describe the community guidelines for bug management and triage.<br />
* Participate in a community which is open to code contributions.<br />
* Describe community policy on testing. <br />
* Time a contribution within the project's release cycle.<br />
|}<br />
<br />
=== Pathway Steps, Outcomes, & Learning Activities ===<br />
<br />
Follow the project’s policies and practices to complete the steps below.<br />
<br />
{| {{Pathway Step Table}}<br />
|-<br />
| <br />
1. Download and install the project<br />
| Project is installed<br />
| <br />
* [[:Category:Information Processing|Info Proc]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
2. Run the project<br />
| Project is run<br />
|<br />
* [[:Category:Information Processing|Info Proc]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
3. Work with community (or check issue tracker?) to find module that needs unit tests <br />
| Module that needs unit tests is identified <br />
|<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
4. Locate the code for the module<br />
| Source code for the module is located<br />
|<br />
* [[:Category:Problem Solving|Prob Solv]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
5. Write complete set of unit tests for the module<br />
| Complete set of unit tests is developed for the module<br />
|<br />
* [[:Category:Written Communication|Writ Comm]]<br />
* [[:Category:Critical Thinking|Crit Think]]<br />
|<br />
*[[Examine Branch Test Coverage (Activity)]]<br />
*[[Introduction to Static Analysis]]<br />
*[[Introduction to Test Driven Development]]<br />
*[[Regression Test Assignment]]<br />
*[[Test Coverage Activity]]<br />
|-<br />
| <br />
6. Post results on the issue tracker<br />
| Results posted to the issue tracker<br />
| <br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|}<br />
<br />
=== Notes for Learning Activities Related to this Pathway ===<br />
<br />
When creating and revising activities:<br />
<br />
# Interact with the community to identify likely modules for testing. <br />
# Use an activity that reviews existing unit cases to provide students with an understanding of what they are trying to accomplish. <br />
<br />
[[Category:Pathways]]<br />
[[Category:Critical Thinking]]<br />
[[Category:Information Processing]]<br />
[[Category:Problem Solving]]<br />
[[Category:Written Communication]]</div>Josh.dehlingerhttp://foss2serve.org/index.php/Category:Create_Unit_Tests_(Pathway)Category:Create Unit Tests (Pathway)2017-03-08T19:24:30Z<p>Josh.dehlinger: </p>
<hr />
<div>__NOTOC__<br />
<br />
'''The contributor will''': create unit tests for a software module (class, file, etc).<br />
'''The contribution is''': unit tests accepted into the project's codebase, and test results logged on issue tracker or otherwise accepted by the community.<br />
<br />
=== Prerequisites ===<br />
<br />
{| {{Pathway Prerequisite Table}}<br />
|-<br />
| Software Configuration<br />
| <br />
* Download and install the development environment.<br />
* Run the program.<br />
|-<br />
| Issue Tracker<br />
|<br />
* Describe issue trackers and how they are used.<br />
* Access the issue tracker with appropriate permissions.<br />
* Read, create, and update issues in a tracker.<br />
|-<br />
| Community<br />
| <br />
* Describe the community guidelines for bug management and triage.<br />
* Participate in a community which is open to code contributions.<br />
* Describe community policy on testing. <br />
* Time a contribution within the project's release cycle.<br />
|}<br />
<br />
=== Pathway Steps, Outcomes, & Learning Activities ===<br />
<br />
Follow the project’s policies and practices to complete the steps below.<br />
<br />
{| {{Pathway Step Table}}<br />
|-<br />
| <br />
1. Download and install the project<br />
| Project is installed<br />
| <br />
* [[:Category:Information Processing|Info Proc]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
2. Run the project<br />
| Project is run<br />
|<br />
* [[:Category:Information Processing|Info Proc]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
3. Work with community (or check issue tracker?) to find module that needs unit tests <br />
| Module that needs unit tests is identified <br />
|<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
4. Locate the code for the module<br />
| Source code for the module is located<br />
|<br />
* [[:Category:Problem Solving|Prob Solv]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
5. Write complete set of unit tests for the module<br />
| Complete set of unit tests is developed for the module<br />
|<br />
* [[:Category:Written Communication|Writ Comm]]<br />
* [[:Category:Critical Thinking|Crit Think]]<br />
|<br />
*[[Examine Branch Test Coverage (Activity)]]<br />
*[[Introduction to Static Analysis]]<br />
*[[Introduction to Test Driven Development]]<br />
*[[Regression Test Assignment]]<br />
|-<br />
| <br />
6. Post results on the issue tracker<br />
| Results posted to the issue tracker<br />
| <br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|}<br />
<br />
=== Notes for Learning Activities Related to this Pathway ===<br />
<br />
When creating and revising activities:<br />
<br />
# Interact with the community to identify likely modules for testing. <br />
# Use an activity that reviews existing unit cases to provide students with an understanding of what they are trying to accomplish. <br />
<br />
[[Category:Pathways]]<br />
[[Category:Critical Thinking]]<br />
[[Category:Information Processing]]<br />
[[Category:Problem Solving]]<br />
[[Category:Written Communication]]</div>Josh.dehlingerhttp://foss2serve.org/index.php/Category:Create_Unit_Tests_(Pathway)Category:Create Unit Tests (Pathway)2017-03-08T19:23:52Z<p>Josh.dehlinger: </p>
<hr />
<div>__NOTOC__<br />
<br />
'''The contributor will''': create unit tests for a software module (class, file, etc).<br />
'''The contribution is''': unit tests accepted into the project's codebase, and test results logged on issue tracker or otherwise accepted by the community.<br />
<br />
=== Prerequisites ===<br />
<br />
{| {{Pathway Prerequisite Table}}<br />
|-<br />
| Software Configuration<br />
| <br />
* Download and install the development environment.<br />
* Run the program.<br />
|-<br />
| Issue Tracker<br />
|<br />
* Describe issue trackers and how they are used.<br />
* Access the issue tracker with appropriate permissions.<br />
* Read, create, and update issues in a tracker.<br />
|-<br />
| Community<br />
| <br />
* Describe the community guidelines for bug management and triage.<br />
* Participate in a community which is open to code contributions.<br />
* Describe community policy on testing. <br />
* Time a contribution within the project's release cycle.<br />
|}<br />
<br />
=== Pathway Steps, Outcomes, & Learning Activities ===<br />
<br />
Follow the project’s policies and practices to complete the steps below.<br />
<br />
{| {{Pathway Step Table}}<br />
|-<br />
| <br />
1. Download and install the project<br />
| Project is installed<br />
| <br />
* [[:Category:Information Processing|Info Proc]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
2. Run the project<br />
| Project is run<br />
|<br />
* [[:Category:Information Processing|Info Proc]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
3. Work with community (or check issue tracker?) to find module that needs unit tests <br />
| Module that needs unit tests is identified <br />
|<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
4. Locate the code for the module<br />
| Source code for the module is located<br />
|<br />
* [[:Category:Problem Solving|Prob Solv]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
5. Write complete set of unit tests for the module<br />
| Complete set of unit tests is developed for the module<br />
|<br />
* [[:Category:Written Communication|Writ Comm]]<br />
* [[:Category:Critical Thinking|Crit Think]]<br />
|<br />
*[[Examine Branch Test Coverage (Activity)]]<br />
*[[Introduction to Static Analysis]]<br />
*[[Introduction to Test Driven Development]]<br />
|-<br />
| <br />
6. Post results on the issue tracker<br />
| Results posted to the issue tracker<br />
| <br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|}<br />
<br />
=== Notes for Learning Activities Related to this Pathway ===<br />
<br />
When creating and revising activities:<br />
<br />
# Interact with the community to identify likely modules for testing. <br />
# Use an activity that reviews existing unit cases to provide students with an understanding of what they are trying to accomplish. <br />
<br />
[[Category:Pathways]]<br />
[[Category:Critical Thinking]]<br />
[[Category:Information Processing]]<br />
[[Category:Problem Solving]]<br />
[[Category:Written Communication]]</div>Josh.dehlingerhttp://foss2serve.org/index.php/Category:Create_Unit_Tests_(Pathway)Category:Create Unit Tests (Pathway)2017-03-08T19:18:47Z<p>Josh.dehlinger: </p>
<hr />
<div>__NOTOC__<br />
<br />
'''The contributor will''': create unit tests for a software module (class, file, etc).<br />
'''The contribution is''': unit tests accepted into the project's codebase, and test results logged on issue tracker or otherwise accepted by the community.<br />
<br />
=== Prerequisites ===<br />
<br />
{| {{Pathway Prerequisite Table}}<br />
|-<br />
| Software Configuration<br />
| <br />
* Download and install the development environment.<br />
* Run the program.<br />
|-<br />
| Issue Tracker<br />
|<br />
* Describe issue trackers and how they are used.<br />
* Access the issue tracker with appropriate permissions.<br />
* Read, create, and update issues in a tracker.<br />
|-<br />
| Community<br />
| <br />
* Describe the community guidelines for bug management and triage.<br />
* Participate in a community which is open to code contributions.<br />
* Describe community policy on testing. <br />
* Time a contribution within the project's release cycle.<br />
|}<br />
<br />
=== Pathway Steps, Outcomes, & Learning Activities ===<br />
<br />
Follow the project’s policies and practices to complete the steps below.<br />
<br />
{| {{Pathway Step Table}}<br />
|-<br />
| <br />
1. Download and install the project<br />
| Project is installed<br />
| <br />
* [[:Category:Information Processing|Info Proc]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
2. Run the project<br />
| Project is run<br />
|<br />
* [[:Category:Information Processing|Info Proc]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
3. Work with community (or check issue tracker?) to find module that needs unit tests <br />
| Module that needs unit tests is identified <br />
|<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
4. Locate the code for the module<br />
| Source code for the module is located<br />
|<br />
* [[:Category:Problem Solving|Prob Solv]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
5. Write complete set of unit tests for the module<br />
| Complete set of unit tests is developed for the module<br />
|<br />
* [[:Category:Written Communication|Writ Comm]]<br />
* [[:Category:Critical Thinking|Crit Think]]<br />
|<br />
*[[Examine Branch Test Coverage (Activity)]]<br />
*[[Introduction to Static Analysis]]<br />
|-<br />
| <br />
6. Post results on the issue tracker<br />
| Results posted to the issue tracker<br />
| <br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|}<br />
<br />
=== Notes for Learning Activities Related to this Pathway ===<br />
<br />
When creating and revising activities:<br />
<br />
# Interact with the community to identify likely modules for testing. <br />
# Use an activity that reviews existing unit cases to provide students with an understanding of what they are trying to accomplish. <br />
<br />
[[Category:Pathways]]<br />
[[Category:Critical Thinking]]<br />
[[Category:Information Processing]]<br />
[[Category:Problem Solving]]<br />
[[Category:Written Communication]]</div>Josh.dehlingerhttp://foss2serve.org/index.php/Category:Create_Unit_Tests_(Pathway)Category:Create Unit Tests (Pathway)2017-03-08T19:18:19Z<p>Josh.dehlinger: </p>
<hr />
<div>__NOTOC__<br />
<br />
'''The contributor will''': create unit tests for a software module (class, file, etc).<br />
'''The contribution is''': unit tests accepted into the project's codebase, and test results logged on issue tracker or otherwise accepted by the community.<br />
<br />
=== Prerequisites ===<br />
<br />
{| {{Pathway Prerequisite Table}}<br />
|-<br />
| Software Configuration<br />
| <br />
* Download and install the development environment.<br />
* Run the program.<br />
|-<br />
| Issue Tracker<br />
|<br />
* Describe issue trackers and how they are used.<br />
* Access the issue tracker with appropriate permissions.<br />
* Read, create, and update issues in a tracker.<br />
|-<br />
| Community<br />
| <br />
* Describe the community guidelines for bug management and triage.<br />
* Participate in a community which is open to code contributions.<br />
* Describe community policy on testing. <br />
* Time a contribution within the project's release cycle.<br />
|}<br />
<br />
=== Pathway Steps, Outcomes, & Learning Activities ===<br />
<br />
Follow the project’s policies and practices to complete the steps below.<br />
<br />
{| {{Pathway Step Table}}<br />
|-<br />
| <br />
1. Download and install the project<br />
| Project is installed<br />
| <br />
* [[:Category:Information Processing|Info Proc]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
2. Run the project<br />
| Project is run<br />
|<br />
* [[:Category:Information Processing|Info Proc]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
3. Work with community (or check issue tracker?) to find module that needs unit tests <br />
| Module that needs unit tests is identified <br />
|<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
4. Locate the code for the module<br />
| Source code for the module is located<br />
|<br />
* [[:Category:Problem Solving|Prob Solv]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
5. Write complete set of unit tests for the module<br />
| Complete set of unit tests is developed for the module<br />
|<br />
* [[:Category:Written Communication|Writ Comm]]<br />
* [[:Category:Critical Thinking|Crit Think]]<br />
|<br />
[[Examine Branch Test Coverage (Activity)]]<br />
[[Introduction to Static Analysis]]<br />
|-<br />
| <br />
6. Post results on the issue tracker<br />
| Results posted to the issue tracker<br />
| <br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|}<br />
<br />
=== Notes for Learning Activities Related to this Pathway ===<br />
<br />
When creating and revising activities:<br />
<br />
# Interact with the community to identify likely modules for testing. <br />
# Use an activity that reviews existing unit cases to provide students with an understanding of what they are trying to accomplish. <br />
<br />
[[Category:Pathways]]<br />
[[Category:Critical Thinking]]<br />
[[Category:Information Processing]]<br />
[[Category:Problem Solving]]<br />
[[Category:Written Communication]]</div>Josh.dehlingerhttp://foss2serve.org/index.php/Category:Create_Unit_Tests_(Pathway)Category:Create Unit Tests (Pathway)2017-03-08T19:15:27Z<p>Josh.dehlinger: </p>
<hr />
<div>__NOTOC__<br />
<br />
'''The contributor will''': create unit tests for a software module (class, file, etc).<br />
'''The contribution is''': unit tests accepted into the project's codebase, and test results logged on issue tracker or otherwise accepted by the community.<br />
<br />
=== Prerequisites ===<br />
<br />
{| {{Pathway Prerequisite Table}}<br />
|-<br />
| Software Configuration<br />
| <br />
* Download and install the development environment.<br />
* Run the program.<br />
|-<br />
| Issue Tracker<br />
|<br />
* Describe issue trackers and how they are used.<br />
* Access the issue tracker with appropriate permissions.<br />
* Read, create, and update issues in a tracker.<br />
|-<br />
| Community<br />
| <br />
* Describe the community guidelines for bug management and triage.<br />
* Participate in a community which is open to code contributions.<br />
* Describe community policy on testing. <br />
* Time a contribution within the project's release cycle.<br />
|}<br />
<br />
=== Pathway Steps, Outcomes, & Learning Activities ===<br />
<br />
Follow the project’s policies and practices to complete the steps below.<br />
<br />
{| {{Pathway Step Table}}<br />
|-<br />
| <br />
1. Download and install the project<br />
| Project is installed<br />
| <br />
* [[:Category:Information Processing|Info Proc]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
2. Run the project<br />
| Project is run<br />
|<br />
* [[:Category:Information Processing|Info Proc]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
3. Work with community (or check issue tracker?) to find module that needs unit tests <br />
| Module that needs unit tests is identified <br />
|<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
4. Locate the code for the module<br />
| Source code for the module is located<br />
|<br />
* [[:Category:Problem Solving|Prob Solv]]<br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|-<br />
|<br />
5. Write complete set of unit tests for the module<br />
| Complete set of unit tests is developed for the module<br />
|<br />
* [[:Category:Written Communication|Writ Comm]]<br />
* [[:Category:Critical Thinking|Crit Think]]<br />
|<br />
[[Examine Branch Test Coverage (Activity)]]<br />
|-<br />
| <br />
6. Post results on the issue tracker<br />
| Results posted to the issue tracker<br />
| <br />
* [[:Category:Written Communication|Writ Comm]]<br />
|<br />
|}<br />
<br />
=== Notes for Learning Activities Related to this Pathway ===<br />
<br />
When creating and revising activities:<br />
<br />
# Interact with the community to identify likely modules for testing. <br />
# Use an activity that reviews existing unit cases to provide students with an understanding of what they are trying to accomplish. <br />
<br />
[[Category:Pathways]]<br />
[[Category:Critical Thinking]]<br />
[[Category:Information Processing]]<br />
[[Category:Problem Solving]]<br />
[[Category:Written Communication]]</div>Josh.dehlingerhttp://foss2serve.org/index.php/Talk:Examine_Branch_Test_Coverage_(Activity)Talk:Examine Branch Test Coverage (Activity)2017-03-08T17:46:29Z<p>Josh.dehlinger: Evaluated for adoption readiness</p>
<hr />
<div>* Process skills missing.<br />
* Assessment/rubric can be significantly improved.</div>Josh.dehlingerhttp://foss2serve.org/index.php/Examine_Branch_Test_Coverage_(Activity)Examine Branch Test Coverage (Activity)2017-03-08T17:45:47Z<p>Josh.dehlinger: Evaluated for adoption readiness</p>
<hr />
<div>__NOTOC__<br />
<br />
{{Learning Activity Overview<br />
|title=<br />
Branch Test Coverage<br />
|overview= <br />
Participants examine branch test coverage to discover potential errors in their code.<br />
|prerequisites=<br />
* GoogleTest must be installed (as instructed in [[Unit Test With GoogleTest Activity]])<br />
* Intermediate C++ and git expertise is needed.<br />
|objectives=<br />
* Examine the branch coverage of unit tests on a simple C++ class to discover and fix errors.<br />
|process skills=<br />
}}<br />
<br />
=== Directions ===<br />
<br />
==== Instructor ====<br />
*Pause when most students have reached the intermission (marked below) and explain the gcov results to demonstrate how branch coverage exposes more than line coverage<br />
<br />
==== Students ====<br />
<br />
* This exercise continues from [[Introduction to Test Driven Development]]<br />
* Fork and clone the upstream repository of [https://github.com/ChicoState/minefield Minefield].<br />
* Get the updates from the (upstream) Minefield and put it into a new branch called branchcov by using the following commands:<br />
<code><br/><br />
git remote add upstream https://github.com/ChicoState/minefield.git<br/><br />
git checkout -b branchcov upstream/master<br/><br />
This creates the new branch by pulling from the upstream master branch and checks out the new branch locally<br/><br />
</code><br />
* Look over the unit tests for the <code>revealAdjacent()</code> function and see what cases have been handled. Review the function within <code>Field.cpp</code> if you want to see how the solution is implemented.<br />
* Next, make the project and run the tests using <code>make test</code>. Do the tests pass? How confident are you in the solution?<br />
* Let's look at how comprehensively we've tested the function. Run the command: <code>gcov -b Field.cpp</code>. Note that the <code>-b</code> option is short for: <code>--branch-probabilities</code>. Within the results you should find:<br />
<br />
<code><br/><br />
File 'Field.cpp'<br/><br />
Lines executed:<br/><br />
Branches executed:<br/><br />
Taken at least once:<br/><br />
No calls<br/><br />
Field.cpp:creating 'Field.cpp.gcov'<br/><br />
</code><br />
<br />
* This summarizes the whole file, but we want to concentrate specifically on <code>revealAdjacent()</code> so open up <code>Field.cpp.gcov</code> in your editor. Find that function and look at the gcov analysis of it. You should see some lines that look like:<br />
<br />
<code><br/><br />
branch 0 taken 99%<br/><br />
</code><br />
What does the branch number correspond to? What do you think "taken" percentage refers to?<br />
<br />
'''STOP HERE AND WAIT FOR DISCUSSION'''<br />
<br />
* After we have refactored the code, you have some updates to retrieve so go to your <code>branchcov</code> branch and fetch from upstream<br />
* Now that you have a better understanding of how to read the results of gcov's branch coverage, continue testing until you have tested all the branches for <code>revealAdjacent()</code>. For this exercise, you may disregard the branches in the constructor. Upload your <code>Field.cpp.gcov</code> to complete this assignment.<br />
<br />
=== Deliverables ===<br />
<br />
Revised code in a C++ program to resolve an error.<br />
<br />
=== Assessment ===<br />
<br />
Students should look through branch coverage results to see where the logic does not work correctly for all possible cases and correct the problem.<br />
<br />
=== Comments ===<br />
<br />
{{Learning Activity Info<br />
|acm unit=<br />
Software Engineering / SE Software Verification Validation<br />
|acm topic=<br />
Unit Testing, Test Coverage, Branch Coverage<br />
|difficulty=<br />
|time=<br />
* 20-30 minutes to comprehend the branch coverage results, identify the error it exposes, and correct the solution.<br />
* 15-20 minutes to discuss.<br />
|environment=<br />
* Must have completed [Unit Test With GoogleTest Activity] installation process<br />
|author=<br />
Kevin Buffardi<br />
|source=<br />
|license=<br />
{{License CC BY SA}}<br />
}}<br />
<br />
<br />
[[Category:Learning Activity]]<br />
[[Category:Quality and Testing]]<br />
[[Category:CS2]]<br />
[[Category:Good Draft]]</div>Josh.dehlingerhttp://foss2serve.org/index.php/Evaluate_a_Project_(Activity)Evaluate a Project (Activity)2017-03-08T17:44:53Z<p>Josh.dehlinger: Evaluated for adoption readiness</p>
<hr />
<div>__NOTOC__<br />
=<span style="color:#ff0000"> This activity has been revised. The newer version is [http://foss2serve.org/index.php/Project_Evaluation_(Activity) here] </span>=<br />
<br />
{{Learning Activity Overview<br />
|title=<br />
Evaluate a Project<br />
|overview= <br />
Learners will gain an understanding of the breadth of available HFOSS projects. Learners will also gain an understanding of the identifying characteristics of HFOSS projects including pattern of contributions, patterns of commits, programming languages used, and more. <br />
|prerequisites=<br />
* Completion of [[FOSS Field Trip (Activity)]] or understanding of SourceForge and OpenHub; Understanding of the course in which students will be participating in an HFOSS project.<br />
|objectives=<br />
* Identify likely HFOSS projects. <br />
|process skills=<br />
}}<br />
<br />
=== Background ===<br />
<br />
This activity is intended to give you an overview of what to consider when evaluating an HFOSS project for student participation and for you to gain experience using the rubric.<br />
<br />
=== Directions ===<br />
<br />
==== Walk through of an evaluation of the OpenMRS project ====<br />
<br />
There are many criteria which should be looked at when determining if a project is appropriate to use in your class. These criteria are broken into two groups - mission critical and secondary.<br />
For this exercise, the secondary criteria are optional.<br />
<br />
:'''Mission Critical Criteria - Viability'''<br />
<br />
# Size/Scale/Complexity - An ideal project should be neither overly simple nor overly complex.<br />
## Go to the OpenMRS web page (http://openmrs.org/), scroll to the bottom and choose ''OpenMRS Wiki'' (under ''Other OpenMRS sites''). From the menu on the left expand the ''Developer Guide'' and the ''Getting Started as a Developer'' options and then choose ''Technical Overview''. From examination of the technology stack, the architecture looks modular and further search shows it is documented elsewhere on the site. This provides a first look at the complexity of the application and the number and various different technologies involved.<br />
## Based upon the results from OpenHub (gathered in the FOSS Field Trip activity) and the information from the OpenMRS Technical Overview page, think about the size of the code base and how many different technologies and layers are involved in the application. What would you score this project for size/scale/complexity on a scale of one to three where one is "low" and three is "high". <br />
# Activity - To support student participation a project should be reasonably active. Number of commits can be used as an indicator of activity. <br />
## Based upon the number of commits (gathered in the FOSS Field Trip activity) would you consider this project active? Why or why not?<br />
# Community - A suitable project has an active user community. While it is difficult to quantitatively evaluate the activity of a user community, some indicators include a regular history of project downloads and documentation updates over time, current activity on user mailing lists, and testimonials on the project web site.<br />
## Examine download activity<br />
### Go to [http://sourceforge.net/ sourceforge.net] and enter OpenMRS into the search box. <br />
### Choose OpenMRS from the search results.<br />
### Click on the number of downloads that is listed on the project page.<br />
### Change the date range to give a graph of downloads over the last year. <br />
## OpenMRS has begun migrating legacy mailing list activity to OpenMRS Talk. Examine [https://talk.openmrs.org/ discussion] activity<br />
## Examine the [https://botbot.me/freenode/openmrs/ IRC logs]<br />
## Based upon the download history, discussion activity, and IRC activity, do you feel this project has a good community? Why or why not?<br />
<br />
:'''Mission Critical Criteria - Approachability'''<br />
<br />
:Here you are evaluating a project's on-ramp to contribution, scoring as follows:<br />
<br />
::1 - Insufficient - Few or no pointers on how to become involved.<br />
<br />
::2 - Sufficient - Suggestions about how to get involved other than contributing money with accompanying high-level instructions.<br />
<br />
::3 - Ideal - Obvious link to get started, list of suggestions for things to do and detailed instructions.<br />
<br />
# Examine project on-ramp.<br />
## Link to getting started - The website has a [http://openmrs.org/help/ Get Involved page] with links to ways you can contribute and share your ideas. <br />
## Each of the links (Develop, Test, Document, Translate) contain more detailed information about what and how you can contribute. <br />
## The [https://wiki.openmrs.org/display/docs/Getting+Started+as+a+Developer Getting Started as a Developer] page contains a detailed list of how to get started including a list of introductory issues.<br />
## Detailed instructions - The [https://wiki.openmrs.org/display/docs/Developer+Guide Developer Guide] contains instructions and information in many areas including process, architecture, tools, and developer documentation.<br />
## Based upon the resources you looked at, how would you rate the approachability of the OpenMRS project? <br />
<br />
<br />
:'''Mission Critical Criteria-Suitability'''<br />
<br />
# Appropriate Artifacts - Since evaluation is dependent on class objectives, in this example we'll assume the objective is to learn the process of working in an authentic development environment by contributing bug fixes to OpenMRS.<br />
## Opportunities to contribute bug fixes - Examine the issues found at the bottom of the [https://wiki.openmrs.org/display/docs/Getting+Started+as+a+Developer getting started as a developer page]. How are the introductory issues categorized? How many issues are listed?<br />
## Documentation on how to contribute bug fixes - On the [https://wiki.openmrs.org/display/docs/Tickets Tickets page] there is information on how to create and work on an issue, including links to coding standards and the code submission process. Review this information.<br />
## Based upon the number of bugs suitable for students to tackle and information on the process of how to submit bug fixes, do you think this would be an appropriate project for your students? Why or why not?<br />
# Contributor Support - Does the project have a high volume of guidance to help students as they learn?<br />
## Communication Tools - Communication tools are directly available from any of the Wiki Spaces (Documentation, Projects, Resources). The [https://wiki.openmrs.org/display/RES/Home Resources page] contains links to OpenMRS Talk and IRC Chat, as well as links to group meetings (under Events), and training opportunities. <br />
## Web Presence - Examine the [https://botbot.me/freenode/openmrs/ IRC logs]. Has there been activity during the last week? <br />
## Operating Processes - Links to information about coding standards, the code submission process, and commit privileges can be found on the [https://wiki.openmrs.org/display/docs/How-To+Submit+Code How-To Submit Code page]. The process for making feature requests is available on the [https://wiki.openmrs.org/display/docs/Tickets Tickets page]. Are these processes well documented?<br />
## Response to Questions - Review a few of the posts on the OpenMRS [https://talk.openmrs.org/ discussion platform]. Do posts to this forum receive timely and supportive responses?<br />
## How would you rate the support that newcomers to OpenMRS receive?<br />
<br />
<br />
:'''On your wiki page, write a summary of why you think the OpenMRS project would be suitable for your course. Be sure to include information about the course and reasons why OpenMRS would be a good/poor match.<br />
<br />
<br />
:'''Overall evaluation for Mission Critical criteria''' - If the mission-critical criteria seemed reasonable, then you may want to evaluate the following secondary criteria. If the mission-critical was not reasonable then the project would not be considered suitable for student participation.<br />
<br />
<br />
:'''Secondary Criteria - Viability - Secondary criteria sections are OPTIONAL for the POSSE workshop assignment'''<br />
<br />
# Domain<br />
## Does this project require domain knowledge that may be difficult for students to learn? OpenMRS is a medical records system. Students should be able to grasp it well enough to contribute a bug fix, which is the learning objective assumed in this example.<br />
## How would you rate the understandability of OpenMRS?<br />
# Maturity<br />
## To have the organization support student learning, the project should have at least one stable production release. The [https://wiki.openmrs.org/display/RES/Platform+Release+Notes Platform Release Notes page] lists releases. <br />
## Does OpenMRS have enough of a stable base to support student learning? Why or why not?<br />
# User Support <br />
## The project should have clear instructions for downloading, installing, and using the project. As noted previously, the [https://wiki.openmrs.org/display/docs/Getting+Started+as+a+Developer Getting Started as a Developer page] provides detailed information about setting up and using the required tools, in addition there are detailed instructions related to installation, configuration, system requirements, and troubleshooting, including videos.<br />
## Does the documentation seem sufficient for getting students started?<br />
# Roadmap <br />
## Student learning is best supported by projects that have a roadmap that includes new feature development, a method for users to submit new feature requests and a process for identifying how new features are prioritized. Feature requests are made through JIRA, the OpenMRS issue tracker. Road map planning and the process for prioritizing feature requests is available on the [https://wiki.openmrs.org/display/docs/Technical+Road+Map+Planning Technical Roadmap Planning page]. Here you will find information about the planning process and how to participate in the planning process. The [https://wiki.openmrs.org/display/docs/Technical+Road+Map Technical Road Map page] identifies features, their current status, and a point of contact, in addition to expected dates of completion. <br />
##Does the roadmap provide you with enough information to make a decision about using it in your course?<br />
<br />
<br />
:'''Secondary Criteria - Approachability - Secondary criteria sections are OPTIONAL for the POSSE workshop assignment'''<br />
<br />
# Contribution Types<br />
## Does the project contain opportunities for multiple types of contribution and of the type that fits the class? There are multiple projects for testers, tech writers, and developers. These can be seen on the [http://openmrs.org/help/ Get Involved page]. Are the number of and type of bugs available suitable for students given your course and the class size? Are there other ways that students could contribute?<br />
# Openness to Contributions<br />
## Acceptance of a student contribution to a project provides valuable affirmation to student learning. Determine whether the project accepts student patches. The process for contribution is documented on the [https://wiki.openmrs.org/display/docs/Tickets Tickets page]. Does this project seem likely to accept student contributions?<br />
# Student Friendliness<br />
## Do community members moderate the tone of communication? Review the discussion platform and IRC to gauge tone. Review the [https://talk.openmrs.org/ discussion platform] and [https://botbot.me/freenode/openmrs/ IRC logs]. What was the tone of the communication?<br />
<br />
<br />
:'''Secondary Criteria - Suitability - Secondary criteria sections are OPTIONAL for the POSSE workshop assignment'''<br />
# Project Description<br />
## Students must be able to understand the purpose of the project. Does the project clearly describe the product? Can students understand the intended uses of the product? - The [http://openmrs.org/about/ About page] provides an overview of who, where, and what OpenMRS is, including a downloadable PDF file and a video. <br />
# Platform<br />
## What software and hardware platform does the FOSS project run on? Development environment can be built on Windows, Linux or Mac OS X completely with FOSS software. (Project development information found [https://wiki.openmrs.org/display/docs/Step+by+Step+Installation+for+Developers here])<br />
## Are there resources to support these platforms?<br />
## Are students familiar with the platforms?<br />
# Development Features - Is the class dependent on specific development features? (Project development information found [https://wiki.openmrs.org/display/docs/Step+by+Step+Installation+for+Developers here])<br />
## Programming language - What is the primary language?<br />
## Development environment - What environments are supported? <br />
## Supporting technologies - What technologies are suggested/required?<br />
<br />
=== Deliverables ===<br />
<br />
POSSE: On your user wiki page, a section describing your evaluation of OpenMRS as a suitable project for your course.<br />
<br />
= Notes for Instructors =<br />
<br />
The remaining sections of this document are intended for the instructor. They are not part of the learning activity that would be given to students.<br />
<br />
=== Assessment ===<br />
<br />
* How will the activity be graded?<br />
* How will learning will be measured?<br />
* Include sample assessment questions/rubrics.<br />
<br />
{| border="1" class="wikitable"<br />
! Criteria<br />
! Level 1 (fail)<br />
! Level 2 (pass)<br />
! Level 3 (good)<br />
! Level 4 (exceptional)<br />
|-<br />
| '''The purpose of the project'''<br />
| <br />
| <br />
|<br />
|<br />
<br />
|-<br />
| '''Why the project is open source'''<br />
| <br />
| <br />
| <br />
| <br />
<br />
|}<br />
<br />
=== Comments ===<br />
<br />
* What should the instructor know before using this activity?<br />
* What are some likely difficulties that an instructor may encounter using this activity?<br />
<br />
=== Variants and Adaptations ===<br />
<br />
[https://github.com/ChrisMurphyOnline/open-source-software-development-course/blob/master/activities/foss-evaluation-activity.txt POGIL-style combined FOSS Field Trip and Project Evaluation] used by [[User:Cmurphy|Chris Murphy]] in his [[FOSS Course, UPenn, Murphy]].<br />
<br />
=== Additional Information ===<br />
<br />
* Explore this list of [[HFOSS Projects]] that may be of interest.<br />
* Read the [http://foss2serve.org/images/foss2serve/a/ac/Evaluating_FOSS_Projects.docx SIGCSE paper on evaluating FOSS projects]<br />
* Watch these videos introducing the FOSS project evaluation criteria:<br />
*# [http://youtu.be/MAGet2D5o2c Mission critical criteria]<br />
*# [http://youtu.be/e4lnIXjqczU Secondary criteria]<br />
<br />
{{Learning Activity Info<br />
|acm unit=<br />
|acm topic=<br />
|difficulty=<br />
|time=<br />
60-90 minutes.<br />
<span style="color:#FF0000">This activity can take a significant amount of time. We only expect you to spend 60-90 minutes exploring.</span> <br />
You may not complete the activity within this time. Of course you are welcome to spend more time if you wish.<br />
|environment=<br />
* Access to Internet/Web and web browser<br />
* [[Media:Evaluating_FOSS_Projects.docx | SIGCSE paper on evaluating FOSS projects]]<br />
* [http://www.foss2serve.org/images/foss2serve/0/0c/Blank_Evaluation_Template.xlsx Blank evaluation template referred to in the SIGCSE paper]<br />
|author=<br />
Michele Purcell<br />
|source=<br />
|license=<br />
{{License CC BY SA}}<br />
}}<br />
<br />
<br />
=== Suggestions for Open Source Community ===<br />
Suggestions for an open source community member who is working in conjunction with the instructor.<br />
<br />
<br />
[[Category:Instructor Activities]]<br />
[[Category:Learning Activity]]<br />
[[Category:Use and Evaluate]]<br />
[[Category: Good Draft]]</div>Josh.dehlingerhttp://foss2serve.org/index.php/Talk:Evaluate_a_Project_(Activity)Talk:Evaluate a Project (Activity)2017-03-08T17:44:27Z<p>Josh.dehlinger: Evaluated for adoption readiness</p>
<hr />
<div>This has been renamed and now falls under Project Evaluation; this should be removed?</div>Josh.dehlingerhttp://foss2serve.org/index.php/Talk:Document_Code_with_Meaningful_Comments_(Activity)Talk:Document Code with Meaningful Comments (Activity)2017-03-08T17:42:23Z<p>Josh.dehlinger: Evaluated for adoption readiness</p>
<hr />
<div>* This activity would benefit from concrete code examples that could be used by instructors wanting to adapt it (preferably in Java, C++ and Python).<br />
* The activity is missing assessment.<br />
* Process skills are missing<br />
* Deliverables description should be improved.</div>Josh.dehlingerhttp://foss2serve.org/index.php/Document_Code_with_Meaningful_Comments_(Activity)Document Code with Meaningful Comments (Activity)2017-03-08T17:41:31Z<p>Josh.dehlinger: Evaluated for adoption readiness</p>
<hr />
<div>__NOTOC__<br />
{| border="1"<br />
|- <br />
|'''Title''' || A POGIL [https://pogil.org/] activity on documenting the code with meaningful comments!<br />
|- <br />
|'''Overview''' || In this POGIL activity students will define what "meaningful comments" mean and create a rubric for it. Then, they will create meaningful comments for a given source file with undocumented code. <br />
|-<br />
|'''Prerequisite Knowledge''' || The instructor can tailor this activity to match the current content being taught in a CS 2 course. Therefore it could be appropriate at any time during the CS 2 course.<br />
|-<br />
|'''Learning Objectives''' || This is a POGIL activity and students should define “meaningful comments”. They will create a rubric for this. Each team will make use of this rubric when commenting/documenting the second source file.<br />
|}<br />
<br />
=== Background: ===<br />
CS 1 background should suffice.<br />
<br />
<br />
Some possible reading the instructors only (students should discover the idea of "meaningful comments"!):<br />
<br />
- http://blog.codinghorror.com/coding-without-comments/<br />
<br />
- http://improvingsoftware.com/2011/06/27/5-best-practices-for-commenting-your-code/<br />
<br />
- http://www.hongkiat.com/blog/source-code-comment-styling-tips/<br />
<br />
- http://en.wikipedia.org/wiki/Comment_%28computer_programming%29<br />
<br />
- http://javarevisited.blogspot.com/2011/08/code-comments-java-best-practices.html<br />
<br />
- http://code.tutsplus.com/tutorials/top-15-best-practices-for-writing-super-readable-code--net-8118<br />
<br />
<br />
=== Directions: ===<br />
For this:<br />
<br />
- The entire class will be given a brief overview of a project. This can be chosen from the existing HFOSS projects that contain source files in the programming language used in the course. <br />
<br />
- Then the class will be split in teams of 2-3 students, and each team will be given one file of undocumented code that has an easy complexity level. Several teams will have the same assigned code!<br />
<br />
- Teams will then be asked to write comments for the given code. <br />
<br />
- Then, in class, students will present their work and define "meaningful comments". While presenting, based on students' reflections, the instructor will create a rubric to assess when a code has meaningful comments and when it does not.<br />
<br />
- Then, each team will be assigned a second file with undocumented code and they will be asked to write "meaningful comments". The students will meet again in one week and will have to present their work.<br />
<br />
--> All the students will have access to the entire project in case they want to look at the big picture while commenting the code. Depending on the complexity level, this may be a must have.<br />
<br />
--> During the presentation, the other teams will assess each team's work using the rubric created in the first phase. <br />
<br />
--> If time is available, it may be useful to compare the "meaningful comments" of students with the original comments existing in the code (but which was not made available to students).<br />
<br />
<br />
=== Deliverables: ===<br />
<br />
A rubric that can be used to assess "meaningful comments"<br />
<br />
Code with "meaningful comments" will be presented to the entire class.<br />
<br />
<br />
=== Assessment: ===<br />
<br />
=== Comments: ===<br />
<br />
=== Additional Information: ===<br />
{| border="1"<br />
|- <br />
|'''Knowledge Area/Knowledge Unit''' || Coding & Style<br />
|-<br />
|'''Topic''' || Meaningful Comments<br />
|-<br />
|'''Level of Difficulty''' || Medium/Hard<br />
|-<br />
|'''Estimated Time to Completion''' || A total of 120 minutes is suggested. The first part can be done in class, while the second part can be given as a week-long project and then in another class period each team will have to present their code. All students will rate (based solely on the comments) the readability of the code being presented by each team. <br />
|-<br />
|'''Materials/Environment''' || Each team will be given three materials:<br />
<br />
- a source file of a (more or less) complete project without any comments<br />
<br />
- a file with an easy code to understand and document<br />
<br />
- a file with a medium/hard code to understand and document<br />
<br />
|-<br />
|'''Author''' || Razvan A. Mezei<br />
|-<br />
|'''Source''' || 50 ways<br />
|-<br />
|'''License''' || Licensed CC BY-SA<br />
|}<br />
<br />
<br />
=== Suggestions for the Open Source Project: ===<br />
<br />
--------------------<br />
This work is licensed under a <br />
[http://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Attribution-ShareAlike 4.0 International License]<br />
<br />
[[File:CC_license.png]]<br />
<br />
[[Category: Learning_Activity]]<br />
[[Category: Coding and Style]]<br />
[[Category: Documentation]]<br />
<br />
[[Category: CS1]]<br />
[[Category: CS2]]<br />
[[Category: Minimal Sketch]]</div>Josh.dehlingerhttp://foss2serve.org/index.php/Talk:Deploy_and_Customize_UshahidiTalk:Deploy and Customize Ushahidi2017-03-08T17:39:42Z<p>Josh.dehlinger: Evaluated for adoption readiness</p>
<hr />
<div>Only thing missing is the process skills.</div>Josh.dehlingerhttp://foss2serve.org/index.php/Deploy_and_Customize_UshahidiDeploy and Customize Ushahidi2017-03-08T17:39:12Z<p>Josh.dehlinger: Evaluated for adoption readiness</p>
<hr />
<div>__NOTOC__<br />
<br />
{| class="wikitable"<br />
|- <br />
| '''Title''' || Deploy & Customize Ushahidi<br />
|-<br />
| '''Overview''' || Students will download Ushaidi and install it on either the cloud (using Heroku) or on a VM or on an actual Linux machine.<br />
|- <br />
| '''Prerequisite Knowledge''' || Understand client/server concept, how to install software, how to use command line interfaces, basic XML concepts.<br />
|-<br />
| '''Learning Objectives''' || 1. Implement and deploy a basic working Ushahidi server 2. configure Ushahidi server 3. Deploy a Ushaihid client<br />
|}<br />
<br />
=== Background ===<br />
<br />
''Is there background reading material?''<br />
<br />
Students should be read Ushahidi install documentation: https://www.ushahidi.com/support/install-ushahidi<br />
<br />
Readings on client/server architecture.<br />
<br />
Readings on the platform used.<br />
<br />
''Are there other activities the student should have done first?''<br />
<br />
Students should be familiar with Ushahidi and have examined or done an Ushahidi deployment. Example deployments can be found at https://wiki.ushahidi.com/display/WIKI/Types+of+Maps<br />
<br />
''What is the rationale for this activity?''<br />
<br />
This activity will give students a hands-on understanding of the Ushahidi server.<br />
<br />
''Include helpful hints to faculty here.''<br />
<br />
Installing on Heroku is very simple and can be done without configuration or through a terminal with configuration.<br />
<br />
Installing on an actual Linux box can be challenging (or impossible) without previous Linux experience.<br />
<br />
=== Directions ===<br />
<br />
''What should the student do?''<br />
<br />
Instructions for installing Ushahidi can be found at [https://www.ushahidi.com/support/install-ushahidi https://www.ushahidi.com/support/install-ushahidi]<br />
<br />
=== Deliverables ===<br />
<br />
''What will the student hand in?''<br />
<br />
# Students will provide the URL of their server.<br />
# Students will provide a 3 page reflection that includes<br />
## challenges encountered<br />
## reference to the instructions that they followed and comments on these<br />
## suggestions for others installing<br />
## configuration options that they used<br />
<br />
=== Assessment ===<br />
<br />
''How will the activity be graded?''<br />
<br />
Instructor will go to the URL and test the deployment.<br />
<br />
Students will perform an installation by following other student's instructions.<br />
<br />
''How will learning will be measured?''<br />
<br />
Learning will be measured through a reflective paper.<br />
<br />
''Include sample assessment questions/rubrics.''<br />
<br />
{| class="wikitable"<br />
! Criteria<br />
! Level 1 (fail)<br />
! Level 2 (pass)<br />
! Level 3 (good)<br />
! Level 4 (exceptional)<br />
|-<br />
| '''Ushahidi installed'''<br />
| Does not run<br />
| Runs with stock configuration<br />
| Runs with some configurations<br />
| Runs and is completely configured<br />
<br />
|-<br />
| '''Reflection'''<br />
| No information provided<br />
| Paper just provides available instructions and contains no hints or reflection<br />
| Paper provides enough information for a new user to perform a successful installation<br />
| Paper provides rich information and hints and reflections on the process that the student followed<br />
|}<br />
<br />
=== Comments ===<br />
''What should the instructor know before using this activity?''<br />
<br />
Instructor should perform the installation prior to the start of the class.<br />
<br />
''What are some likely difficulties that an instructor may encounter using this activity?''<br />
<br />
Instructors must be aware of versions; these can change during the course. <br />
<br />
Installation procedures change often.<br />
<br />
There are many dependencies which must be installed before Ushahidi can be installed. These dependencies can change during the project.<br />
<br />
=== Additional Information ===<br />
<br />
{| class="wikitable"<br />
|- <br />
| '''ACM Knowledge Area/Knowledge Unit''' || IM, information management, NC networking and communication [[ACM_Body_of_Knowledge]]<br />
|-<br />
| '''ACM Topic''' || Information Management Concepts, Networked Applications/client-server applications - https://www.acm.org/education/CS2013-final-report.pdf<br />
|-<br />
| '''Level of Difficulty''' || Basic configuration is easy, advanced configuration is medium.<br />
|-<br />
| '''Estimated Time to Completion''' || 2 hours<br />
|-<br />
| '''Materials/Environment''' || Students need a github account and access to either Heroku or a Linux box that can be configured.<br />
|-<br />
| '''Author''' || Alan Rea, John Barr, Ying Liu, Jiang Li, Jonathan Poritz<br />
|-<br />
| '''Source''' || None<br />
|-<br />
| '''License''' || http://creativecommons.org/licenses/<br />
|}<br />
<br />
=== Suggestions for Open Source Community ===<br />
<br />
Suggestions for an open source community member who is working in conjunction with the instructor.<br />
<br />
<br />
--------------------<br />
This work is licensed under a <br />
[http://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Attribution-ShareAlike 4.0 International License]<br />
<br />
[[File:CC_license.png]]<br />
<br />
[[Category:Learning Activity]]<br />
[[Category:Use and Evaluate]]<br />
[[Category:Ushahidi]]<br />
[[Category:Good Draft]]</div>Josh.dehlingerhttp://foss2serve.org/index.php/Talk:Data_Visualization_(Module)Talk:Data Visualization (Module)2017-03-08T17:37:55Z<p>Josh.dehlinger: Evaluated for adoption readiness</p>
<hr />
<div>Missing process skills and a majority of the activity (Day 1, task 2). No assessment/rubric or deliverables description.</div>Josh.dehlingerhttp://foss2serve.org/index.php/Data_Visualization_(Module)Data Visualization (Module)2017-03-08T17:36:49Z<p>Josh.dehlinger: Evaluated for adoption readiness</p>
<hr />
<div>__NOTOC__<br />
THIS MODULE IS CURRENTLY UNDER CONSTRUCTION<br />
<br />
{{Learning Activity Overview<br />
|title=<br />
CS Principles: Data Visualization<br />
|overview=<br />
This module aligns with CS Principles Big Idea #3: Data and Information.<br />
|prerequisites=<br />
None.<br />
|objectives=<br />
|process skills=<br />
}}<br />
<br />
=== Background ===<br />
<br />
;Background reading for teachers<br />
:<br />
<br />
;What is the expected knowledge level of the student?<br />
:This activity is appropriate for beginning level students<br />
<br />
;What is the rationale for this module?<br />
:This module is designed to meet the CS Principles essential knowledge tasks related to open source software using materials created by the FOSS community<br />
<br />
=== Sequence/Sub-Path ===<br />
<br />
This module uses two activities:<br />
* [[Blog and Infographic Project (Activity)]]<br />
* [[Think for Good - Hacking Government Open Data]]<br />
A suggested sequence of activities is provided with additional (optional) extensions below. <br />
The timeline given assumes two days of class work, but the activities could be condensed into one class period if necessary.<br />
<br />
{| class="wikitable"<br />
! Topic<br />
! Activity<br />
! Deliverable<br />
! Length<br />
! Notes<br />
|-<br />
| Pre-class work: Day 1<br />
| Visit DataKind http://www.datakind.org/projects and read the description of 1-2 project(s)<br />
| Come to class prepared to discuss (1) What your project was hoping to learn (2) what data they used (3) what tools were used to turn the data into information (4) what was learned as a result of the project (5) how was computer science/technology used in the collection of the data and the analysis process<br />
| 20 minutes of homework time<br />
| This can be done individually, or students can be paired/grouped and assigned to projects<br />
<br />
|-<br />
| In-class activity: Day 1, part I<br />
| Class Discussion<br />
| Each group should briefly present their findings from the pre-class work<br />
| 20 minutes of class time<br />
|<br />
<br />
|-<br />
| In-class activity: Day 1, part II<br />
| Data Exploration<br />
| <br />
| <br />
|<br />
<br />
|-<br />
| Pre-class work: Day 2<br />
| <br />
| <br />
| <br />
| <br />
<br />
|-<br />
| In-class activity: Day 2<br />
| <br />
| <br />
| <br />
| <br />
<br />
|}<br />
<br />
=== Potential Extensions ===<br />
<br />
<br />
=== Comments ===<br />
<br />
;What should the instructor know before using this module?<br />
: <br />
<br />
;What are some likely difficulties that an instructor may encounter using this module?<br />
: <br />
<br />
{{Learning Activity Info<br />
|acm unit=<br />
|acm topic=<br />
|difficulty=<br />
Easy<br />
|time=<br />
1-3 class periods depending on whether extensions are used<br />
|environment=<br />
Internet access. For some activities students will need administrator privileges on their machines (the ability to install software).<br />
|author=<br />
Kate Lockwood<br />
|source=<br />
This module includes lessons created by a number of POSSE/TOS members - all linked lessons contain attribution.<br />
|license=<br />
{{License CC BY SA}}<br />
}}<br />
<br />
=== Suggestions for Open Source Community ===<br />
<br />
Suggestions for an open source community member who is working in conjunction with the instructor.<br />
<br />
[[Category: Learning_Activity]]<br />
[[Category: Learning_Modules]]<br />
[[Category: LEARNING_ACTIVITY_SUBCATEGORY]]<br />
[[Category: CS Principles]]<br />
[[Category: Minimal Sketch]]</div>Josh.dehlingerhttp://foss2serve.org/index.php/Talk:CS2_Data_Structures_ActivityTalk:CS2 Data Structures Activity2017-03-08T17:35:39Z<p>Josh.dehlinger: Evaluated for adoption readiness</p>
<hr />
<div>This page name seems too broad - CS2 often covers many data structures.<br />
<br />
[[User:Clif.kussmaul|Clif.kussmaul]] 11:21, 8 February 2017 (UTC)<br />
<br />
Missing process skills, deliverables and assessment/rubric.</div>Josh.dehlingerhttp://foss2serve.org/index.php/Talk:Connect_with_the_Community_(Activity)Talk:Connect with the Community (Activity)2017-03-08T17:34:05Z<p>Josh.dehlinger: Evaluated for adoption readiness</p>
<hr />
<div>Deliverables and assessment/rubric, process skills, prerequisites are missing.</div>Josh.dehlingerhttp://foss2serve.org/index.php/Connect_with_the_Community_(Activity)Connect with the Community (Activity)2017-03-08T17:31:04Z<p>Josh.dehlinger: Evaluated for adoption readiness</p>
<hr />
<div>__NOTOC__<br />
<br />
{{Learning Activity Overview<br />
|title=<br />
Connect with the Community<br />
|overview= <br />
Learners should get familiar with communication tools (such as IRC, TitanPad, Skype, etc.) that are commonly used by FOSS communities.<br />
|prerequisites=<br />
|objectives=<br />
* Be familiar with different communication tools (such as iRC, TitanPad, Skype etc.) that are freely available for everyone. <br />
* Explore interactions and find out how different FOSS communities (HFOSS in particular) use these tools to communicate among their members.<br />
|process skills=<br />
}}<br />
<br />
=== Background ===<br />
<br />
If your class is embedded with an open source project, you should:<br />
# Join the comms channels for your project, <br />
# Discussed codes of conduct with your community liaison,<br />
# Discuss how to handle CoC violations when your students are involved.<br />
<br />
<br />
For general info on how open source projects use IRC, mailing lists and the like, there's a nice [[https://www.youtube.com/watch?v=0Z_KwdPvFy0 video]] on "how to communicate with your community" that Brian Proffitt at Red Hat has created that may be worth watching.<br />
<br />
=== Directions ===<br />
<br />
== PART 1: IRC ==<br />
<br />
'''This is the longest and most important part of this activity.'''<br />
<br />
IRC, which stands for Internet Relay Chat, is an essential tool used by open source software developers. It allows members of the community, or those interested in becoming involved in the community, to communicate 24/7, regardless of their geographic location. IRC is much like Instant Messaging with a group. Bear in mind that ‘talking’ is not always a requirement. You will learn a great deal by ‘listening’, especially in the beginning. <br />
<br />
* Choose a client from below<br />
** Web-based client: http://webchat.freenode.net <br />
** Web-based client: https://kiwiirc.com/client/irc.freenode.net <br />
** Windows: HydraIRC (http://www.hydrairc.com)<br />
** Linux: Konversation (http://konversation.kde.org)<br />
** Linux: xchat iRC (http://xchat.org/)<br />
** Mac OS X: Colloquy (http://colloquy.info)<br />
<br />
* Everybody should then<br />
** Connect to the server via the command: /server irc.freenode.net<br />
** Join our own (newly created) channel via the command: /join #chooseYourOwnChannel<br />
<br />
* Now let’s chat<br />
** each student should write at least one line, and use at least one command!<br />
** A list of useful iRC commands can be found here. http://www.ircbeginner.com/ircinfo/ircc-commands.html<br />
** Commands on using the Meetbot can be found here. https://wiki.debian.org/MeetBot<br />
<br />
* '''HOMEWORK 1''': join and observe an existing channel discussion<br />
** Connect to the '''freenode''' server via the command: '''/server irc.freenode.net'''<br />
** Join the '''foss2serve''' channel via the command: '''/join #sourceforge'''<br />
** Monitor, then write and return a 1-page paper on the discussion you discover in here for at least a couple of hours:<br />
*** Pay attention to the interactions that occur between community members. <br />
*** Ignore the technical terms you don't understand. <br />
*** Accept that the content may be beyond your understanding at this point<br />
*** Observe:<br />
**** How do people interact in this context? <br />
**** What is the pattern of communication you just observed? <br />
**** Can you make any other observations? <br />
<br />
<br />
== PART 2: Titanpad ==<br />
<br />
Titanpad allows authors to simultaneously edit a text document, and see all of the participants' edits in real-time, with the ability to display each author's text in their own color. There is also a chat box in the sidebar to allow meta communication.<br />
<br />
In this part of the activity you will need to:<br />
* use a web browser to connect to: https://titanpad.com/ChooseYourPage<br />
* let’s chat:<br />
** do you have any comments you would like to share here about what you just observed in the iRC channel? <br />
** every student should write at least one line!<br />
<br />
<br />
== PART 3: Alternatives ==<br />
<br />
Propose some alternatives ways team can collaborate such as: mailing lists, blogs, twitter, facebook, google+, skype, wiki, iRC, community sites, blogs, twitter, youtube, slideshare, vimeo, etc. which ones do you think are most effective and why?<br />
'''In-class discussion'''. <br />
* Split the class in teams of 2-3 students each. Each team should visit one the following websites and identify as many ways of communications as possible for this community:<br />
** https://wiki.gnome.org/Accessibility<br />
** http://mifos.org/ <br />
** http://openmrs.org/<br />
** http://sahanafoundation.org/<br />
** http://www.ushahidi.com/<br />
* Discuss, in class, your findings.<br />
* '''HOMEWORK 2''': Write a 1-page paper with these findings.<br />
<br />
<br />
== PART 4: Discussions ==<br />
<br />
* Describe the difference between synchronous and asynchronous communication.<br />
* Compare the HCI issues in individual interaction with group interaction.<br />
* Discuss several issues of social concern raised by collaborative software.<br />
* Discuss the HCI issues in software that embodies human intention.<br />
<br />
<br />
== OTHER REFERENCES ==<br />
<br />
* http://foss2serve.org/index.php/Intro_IRC_Activity <br />
* http://foss2serve.org/index.php/IRC_Meeting_1 <br />
* http://foss2serve.org/index.php/HFOSS_Communities<br />
<br />
<br />
== SOME IRC CHANNELS ==<br />
<br />
* '''#openstack''' <br />
* '''#openstack-101'''<br />
* '''#openstack-doc'''<br />
* '''#wikipedia'''<br />
* '''##java''' <br />
** only registered nicks are allowed!!! You must create a registered nick on iRC. <br />
* '''##C++'''<br />
* '''##c++-basic'''<br />
* '''#sagemath'''<br />
* '''#ubuntu'''<br />
* '''##linuxmint'''<br />
<br />
=== Deliverables ===<br />
<br />
A paper with students' findings, or a blog post.<br />
<br />
=== Assessment ===<br />
<br />
=== Comments ===<br />
<br />
Depending on the project that you've chosen, it may be worthwhile to spend some time talking with students about the sort of interactions they might see -- and the lens to view it through. If you are working with a project that is historically not very diverse, you may want to pay particular attention to women and other underrepresented groups and their experience in open source.<br />
<br />
Finally, it may be that some channels are quiet and there is little activity. Providing some alternative channels such as OpenHatch could introduce the culture in a fairly neutral way.<br />
<br />
=== Variants and Adaptations ===<br />
<br />
[https://github.com/ChrisMurphyOnline/open-source-software-development-course/blob/master/activities/foss-get-involved.txt Modified version of activity] used by [[User:Cmurphy|Chris Murphy]] in his [[FOSS Course, UPenn, Murphy]].<br />
<br />
{{Learning Activity Info<br />
|acm unit=<br />
HCI/Collaboration and Communication<br />
|acm topic=<br />
* Asynchronous group communication, e.g., e-mail, forums, social networks<br />
* Synchronous group communication, e.g., chat rooms, conferencing, online games<br />
* Social media, social computing, and social network analysis<br />
* Online collaboration, 'smart' spaces, and social coordination aspects of workflow technologies<br />
* Online communities<br />
|difficulty=<br />
Easy<br />
|time=<br />
50-120 minutes<br />
|environment=<br />
IRC client, email client, browser and web access<br />
|author=<br />
Razvan A. Mezei<br />
|source=<br />
[[50 Ways to be a FOSSer]]<br />
|license=<br />
{{License CC BY SA}}<br />
}}<br />
<br />
=== Suggestions for the Open Source Project ===<br />
<br />
Be prepared for the additional influx of students -- and although they are in lurk mode, there’s a possibility that someone will goof and send something to the list. <br />
<br />
Also, if you have a code of conduct, you need to know what your “enforcement” routes are, should an issue occur.<br />
<br />
[[Category:Learning_Activity]]<br />
[[Category:Communication and Tools]]<br />
[[Category:IRC]]<br />
[[Category:CS Principles]]<br />
[[Category:Good Draft]]</div>Josh.dehlingerhttp://foss2serve.org/index.php/Talk:Code_Base_UnderstandingTalk:Code Base Understanding2017-03-08T17:30:07Z<p>Josh.dehlinger: Evaluated for adoption readiness</p>
<hr />
<div>This activity has a sketch of things that others have done in projects or could do as a project, along with some pointers to tools that could be used but lacks good structure, assessment and directions.</div>Josh.dehlingerhttp://foss2serve.org/index.php/CS2_Data_Structures_ActivityCS2 Data Structures Activity2017-03-08T17:28:33Z<p>Josh.dehlinger: Evaluated for adoption readiness</p>
<hr />
<div>__NOTOC__<br />
{| border="1"<br />
|- <br />
|'''Title''' || CS2 Data Structures Activity<br />
|-<br />
|'''Overview''' || Using the HFOSS OpenMRS project to illustrate the use of data structures in a complex system<br />
|- <br />
|'''Prerequisite Knowledge''' || CS1 and Java<br />
|-<br />
|'''Learning Objectives''' || <br />
#Describe the difference between a data structure and the implementation thereof.<br />
#Explain the application of a data structure in a specific large complex software system.<br />
#Evaluate tradeoffs in selection of data structures.<br />
#Analyze the time complexity of an algorithm that uses the data structure.<br />
|}<br />
<br />
=== Background: ===<br />
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 and order of deletions, insertions, updates, etc.). <br />
<br />
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.<br />
<br />
=== Directions: ===<br />
# Go to the [https://github.com/openmrs/openmrs-module-reportingcompatibility/blob/master/api/src/main/java/org/openmrs/module/reportingcompatibility/reporting/export/DataExportFunctions.java DataExportFunctions] class and 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 may need to refer to the Java APIs and should recall that an interface is not a class.<br />
# Go to the following link and then answer the questions below: <br />
#: http://stackoverflow.com/questions/8315116/what-is-a-key-object-use-in-hashmap<br />
## What is meant by the term ''key''? The term ''value''?<br />
## Given,<br />
##:'''Map<String, int> populations = new HashMap<String, int> ();'''<br />
##:'''populations.put(“11530”, 27273);'''<br />
##:'''populations.put(“28601”, 50026);'''<br />
##:'''populations.put(“38111”, 41742);'''<br />
##:What would the following call to the get method return?<br />
##:'''System.out.println(“The population for Memphis, TN is “ + populations.get(“38111”);'''<br />
## 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?<br />
# The data structures within the DataExportFunctions class are used in a multitude of ways and it is likely that you are unfamiliar with some of the syntax. Go to the [https://github.com/openmrs/openmrs-module-reportingcompatibility/blob/master/api/src/main/java/org/openmrs/module/reportingcompatibility/reporting/export/DataExportFunctions.java#L754 clearMap method]. You will find that it uses wildcard characters (‘?’).<br />
#: Briefly explain what each of the following means and explain the benefit of using them.<br />
## ‘?’ (hint: wildcards)<br />
## ‘? Extends Map’<br />
## Determine whether each of the following calls to '''clearMap''' is valid or invalid. If a call is invalid, explain why. <br />
### Map =<br />
### Call 2<br />
### Call 3<br />
### Call 4<br />
## Write a Javadoc comment for the clearMap method.<br />
# Go to the [https://github.com/openmrs/openmrs-module-reportingcompatibility/blob/master/api/src/main/java/org/openmrs/module/reportingcompatibility/reporting/export/DataExportFunctions.java#L352-L387 getLastEncounterAttr method]. There are two reference variables declared, ''types'' and ''encounterTypes''.<br />
## 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 is it most likely to refer to. Explain your answer.<br />
## Why do you think these data structures were selected by the developers?<br />
# 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?<br />
<br />
=== Deliverables: ===<br />
Written artifact to Instructor <br />
<br />
<br />
=== Assessment: ===<br />
How will the activity be graded?<br />
<br />
How will learning will be measured?<br />
<br />
Include sample assessment questions/rubrics.<br />
<br />
{| border="1" class="wikitable"<br />
! Criteria<br />
! Level 1 (fail)<br />
! Level 2 (pass)<br />
! Level 3 (good)<br />
! Level 4 (exceptional)<br />
|-<br />
| '''The purpose of the project'''<br />
| <br />
| <br />
|<br />
|<br />
<br />
|-<br />
| '''Why the project is open source'''<br />
| <br />
| <br />
| <br />
| <br />
<br />
|}<br />
<br />
=== Comments: ===<br />
# You may choose to leave out analysis.<br />
# Depending on how many data structures you have covered, you may choose to reduce the number of data structures you are asking your students to identify.<br />
# This activity may be useful even for students who are not learning Java. For example, students who know C++ can, with reasonable effort, can learn enough about Java to complete the activity. The added benefit is that they can learn that concepts transcend the language.<br />
<br />
=== Additional Information: ===<br />
{| border="1"<br />
|- <br />
|'''ACM Knowledge Area/Knowledge Unit''' || Programming Languages / Object-Oriented Programming<br />
|-<br />
|'''ACM Topic''' || Using collection classes<br />
|-<br />
|'''Level of Difficulty''' || Medium <br />
|-<br />
|'''Estimated Time to Completion''' || Varies, designed as one assignment or laboratory activity <br />
|-<br />
|'''Materials/Environment''' || Access to OpenMRS codebase <br />
|-<br />
|'''Author(s)''' || Darci Burdge, Patricia Ordóñez, Jeff Ward, Mezei Razvan, Stewart Weiss, Joanna Klukowska<br />
|-<br />
|'''Source''' || POSSE 201405 Workshop Activity <br />
|-<br />
|'''License''' || Licensed CC BY-SA <br />
|}<br />
<br />
=== Suggestions for Open Source Community: ===<br />
Suggestions for an open source community member who is working in conjunction with the instructor.<br />
<br />
<br />
--------------------<br />
This work is licensed under a <br />
[http://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Attribution-ShareAlike 4.0 International License]<br />
<br />
[[File:CC_license.png]]<br />
<br />
[[Category: Learning_Activity]]<br />
[[Category: CS2]]<br />
[[Category: Good Draft]]</div>Josh.dehlingerhttp://foss2serve.org/index.php/Connect_with_the_Community_(Activity)Connect with the Community (Activity)2017-03-08T17:24:14Z<p>Josh.dehlinger: Evaluated for adoption readiness</p>
<hr />
<div>__NOTOC__<br />
<br />
{{Learning Activity Overview<br />
|title=<br />
Connect with the Community<br />
|overview= <br />
Learners should get familiar with communication tools (such as IRC, TitanPad, Skype, etc.) that are commonly used by FOSS communities.<br />
|prerequisites=<br />
|objectives=<br />
* Be familiar with different communication tools (such as iRC, TitanPad, Skype etc.) that are freely available for everyone. <br />
* Explore interactions and find out how different FOSS communities (HFOSS in particular) use these tools to communicate among their members.<br />
|process skills=<br />
}}<br />
<br />
=== Background ===<br />
<br />
If your class is embedded with an open source project, you should:<br />
# Join the comms channels for your project, <br />
# Discussed codes of conduct with your community liaison,<br />
# Discuss how to handle CoC violations when your students are involved.<br />
<br />
<br />
For general info on how open source projects use IRC, mailing lists and the like, there's a nice [[https://www.youtube.com/watch?v=0Z_KwdPvFy0 video]] on "how to communicate with your community" that Brian Proffitt at Red Hat has created that may be worth watching.<br />
<br />
=== Directions ===<br />
<br />
== PART 1: IRC ==<br />
<br />
'''This is the longest and most important part of this activity.'''<br />
<br />
IRC, which stands for Internet Relay Chat, is an essential tool used by open source software developers. It allows members of the community, or those interested in becoming involved in the community, to communicate 24/7, regardless of their geographic location. IRC is much like Instant Messaging with a group. Bear in mind that ‘talking’ is not always a requirement. You will learn a great deal by ‘listening’, especially in the beginning. <br />
<br />
* Choose a client from below<br />
** Web-based client: http://webchat.freenode.net <br />
** Web-based client: https://kiwiirc.com/client/irc.freenode.net <br />
** Windows: HydraIRC (http://www.hydrairc.com)<br />
** Linux: Konversation (http://konversation.kde.org)<br />
** Linux: xchat iRC (http://xchat.org/)<br />
** Mac OS X: Colloquy (http://colloquy.info)<br />
<br />
* Everybody should then<br />
** Connect to the server via the command: /server irc.freenode.net<br />
** Join our own (newly created) channel via the command: /join #chooseYourOwnChannel<br />
<br />
* Now let’s chat<br />
** each student should write at least one line, and use at least one command!<br />
** A list of useful iRC commands can be found here. http://www.ircbeginner.com/ircinfo/ircc-commands.html<br />
** Commands on using the Meetbot can be found here. https://wiki.debian.org/MeetBot<br />
<br />
* '''HOMEWORK 1''': join and observe an existing channel discussion<br />
** Connect to the '''freenode''' server via the command: '''/server irc.freenode.net'''<br />
** Join the '''foss2serve''' channel via the command: '''/join #sourceforge'''<br />
** Monitor, then write and return a 1-page paper on the discussion you discover in here for at least a couple of hours:<br />
*** Pay attention to the interactions that occur between community members. <br />
*** Ignore the technical terms you don't understand. <br />
*** Accept that the content may be beyond your understanding at this point<br />
*** Observe:<br />
**** How do people interact in this context? <br />
**** What is the pattern of communication you just observed? <br />
**** Can you make any other observations? <br />
<br />
<br />
== PART 2: Titanpad ==<br />
<br />
Titanpad allows authors to simultaneously edit a text document, and see all of the participants' edits in real-time, with the ability to display each author's text in their own color. There is also a chat box in the sidebar to allow meta communication.<br />
<br />
In this part of the activity you will need to:<br />
* use a web browser to connect to: https://titanpad.com/ChooseYourPage<br />
* let’s chat:<br />
** do you have any comments you would like to share here about what you just observed in the iRC channel? <br />
** every student should write at least one line!<br />
<br />
<br />
== PART 3: Alternatives ==<br />
<br />
Propose some alternatives ways team can collaborate such as: mailing lists, blogs, twitter, facebook, google+, skype, wiki, iRC, community sites, blogs, twitter, youtube, slideshare, vimeo, etc. which ones do you think are most effective and why?<br />
'''In-class discussion'''. <br />
* Split the class in teams of 2-3 students each. Each team should visit one the following websites and identify as many ways of communications as possible for this community:<br />
** https://wiki.gnome.org/Accessibility<br />
** http://mifos.org/ <br />
** http://openmrs.org/<br />
** http://sahanafoundation.org/<br />
** http://www.ushahidi.com/<br />
* Discuss, in class, your findings.<br />
* '''HOMEWORK 2''': Write a 1-page paper with these findings.<br />
<br />
<br />
== PART 4: Discussions ==<br />
<br />
* Describe the difference between synchronous and asynchronous communication.<br />
* Compare the HCI issues in individual interaction with group interaction.<br />
* Discuss several issues of social concern raised by collaborative software.<br />
* Discuss the HCI issues in software that embodies human intention.<br />
<br />
<br />
== OTHER REFERENCES ==<br />
<br />
* http://foss2serve.org/index.php/Intro_IRC_Activity <br />
* http://foss2serve.org/index.php/IRC_Meeting_1 <br />
* http://foss2serve.org/index.php/HFOSS_Communities<br />
<br />
<br />
== SOME IRC CHANNELS ==<br />
<br />
* '''#openstack''' <br />
* '''#openstack-101'''<br />
* '''#openstack-doc'''<br />
* '''#wikipedia'''<br />
* '''##java''' <br />
** only registered nicks are allowed!!! You must create a registered nick on iRC. <br />
* '''##C++'''<br />
* '''##c++-basic'''<br />
* '''#sagemath'''<br />
* '''#ubuntu'''<br />
* '''##linuxmint'''<br />
<br />
=== Deliverables ===<br />
<br />
A paper with students' findings, or a blog post.<br />
<br />
=== Assessment ===<br />
<br />
=== Comments ===<br />
<br />
Depending on the project that you've chosen, it may be worthwhile to spend some time talking with students about the sort of interactions they might see -- and the lens to view it through. If you are working with a project that is historically not very diverse, you may want to pay particular attention to women and other underrepresented groups and their experience in open source.<br />
<br />
Finally, it may be that some channels are quiet and there is little activity. Providing some alternative channels such as OpenHatch could introduce the culture in a fairly neutral way.<br />
<br />
=== Variants and Adaptations ===<br />
<br />
[https://github.com/ChrisMurphyOnline/open-source-software-development-course/blob/master/activities/foss-get-involved.txt Modified version of activity] used by [[User:Cmurphy|Chris Murphy]] in his [[FOSS Course, UPenn, Murphy]].<br />
<br />
{{Learning Activity Info<br />
|acm unit=<br />
HCI/Collaboration and Communication<br />
|acm topic=<br />
* Asynchronous group communication, e.g., e-mail, forums, social networks<br />
* Synchronous group communication, e.g., chat rooms, conferencing, online games<br />
* Social media, social computing, and social network analysis<br />
* Online collaboration, 'smart' spaces, and social coordination aspects of workflow technologies<br />
* Online communities<br />
|difficulty=<br />
Easy<br />
|time=<br />
50-120 minutes<br />
|environment=<br />
IRC client, email client, browser and web access<br />
|author=<br />
Razvan A. Mezei<br />
|source=<br />
[[50 Ways to be a FOSSer]]<br />
|license=<br />
{{License CC BY SA}}<br />
}}<br />
<br />
=== Suggestions for the Open Source Project ===<br />
<br />
Be prepared for the additional influx of students -- and although they are in lurk mode, there’s a possibility that someone will goof and send something to the list. <br />
<br />
Also, if you have a code of conduct, you need to know what your “enforcement” routes are, should an issue occur.<br />
<br />
[[Category:Learning_Activity]]<br />
[[Category:Communication and Tools]]<br />
[[Category:IRC]]<br />
[[Category:CS Principles]]<br />
[[Category:Ready to Use]]</div>Josh.dehlingerhttp://foss2serve.org/index.php/Comparable_Interface_-_Code_Reading-ActivityComparable Interface - Code Reading-Activity2017-03-08T17:21:50Z<p>Josh.dehlinger: Evaluated for adoption readiness</p>
<hr />
<div>__NOTOC__<br />
{| border="1"<br />
|- <br />
|'''Title''' || Comparable Interface - Code Reading Activity <br />
|-<br />
|'''Overview''' || Students learn about the Comparable interface in Java by looking at the code of OpenMRS and the actual implementation of the compareTo method in the String class of Java API. <br />
|- <br />
|'''Prerequisite Knowledge''' || Students should be familiar with the String class and string comparison in Java. They should understand the concept of classes and objects. <br />
|-<br />
|'''Learning Objectives''' || Understand the concept and purpose of the Comparable interface. Understand the benefits of defining classes that implement the Comparable interface. <br />
|}<br />
<br />
=== Background: ===<br />
<br />
* This activity could be done as a homework assignment (either done individually or by pairs of students), or as an inclass (lecture or recitation) activity. <br />
* This activity could be done either early in CS2 course or as a late semester CS1 activity. <br />
* This activity is designed to use OpenMRS, but there is nothing specific to OpenMRS. The instructor can use any open source project that has sufficient examples of use of Comparable interface.<br />
<br />
=== Directions: ===<br />
<ol><br />
<li> Go to openMRS-core GitHub repository at https://github.com/openmrs/openmrs-core and search compareTo </li><br />
<li> Locate 4 different examples of a call to the compareTo method, for each: <br />
<ol type="a"> <br />
<li> specify the filename and the line # on which the call occurs and write the line that contains the call<br />
<li> identify the type of the object the method is called on<br />
<li> locate the class associated with this datatype and <br />
<ol type='i'><br />
<li> write the header for this class<br />
<li> locate the implementation of the <code>compareTo</code> method and <br />
<ul><br />
<li>identify the parameter type<br />
<li>identify the return type <br><br />
</ul><br />
</ol><br />
</ol><br />
<br />
<li> Recall that you have used the <code>compareTo</code> method in the <code>String</code> class. Below is a partial class definition: <br />
<pre> <br />
public final class String <br />
implements java.io.Serializable, Comparable<String>, CharSequence<br />
</pre> <br />
<br />
<pre> <br />
public int compareTo(String anotherString) { <br />
<br />
int len1 = value.length;<br />
int len2 = anotherString.value.length;<br />
int lim = Math.min(len1, len2);<br />
char v1[] = value;<br />
char v2[] = anotherString.value;<br />
int k = 0;<br />
while (k < lim) {<br />
char c1 = v1[k];<br />
char c2 = v2[k];<br />
if (c1 != c2) {<br />
return c1 - c2;<br />
}<br />
k++;<br />
}<br />
return len1 - len2;<br />
}<br />
</pre> <br />
<ol type='a'> <br />
<li> What is the type of the parameter?<br />
<li> What is the return type?<br />
<li> given the following strings, determine the result of the method call<br />
<tt>String str1 = "hello";</tt><br />
<tt>String str2 = "help";</tt><br />
Call --> <tt>int result = str1.compareTo(str2);</tt><br />
</ol><br />
<li> Look at the class headers, what do they all have in common? <br />
<li> In general, what can be said about the parameter type for each of the compareTo methods<br />
<li> What can be said about the return type for all implementations of the compareTo methods<br />
<li> All of the classes that you looked at so far, implement the Comparable interface. Look at the API page for Comparable interface https://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html. WARNING: you will not understand everything on that page - do not worry about it just yet, just try to read through it and find the answers to the following questions.<br />
<ol type='a'><br />
<li> The first senctence of the descriptions states that "This interface imposes a total ordering on the objects of each class that implements it." What do you think is meant by "total ordering"?<br />
<li> The first sentence of the second paragraphs states that "Lists (and arrays) of objects that implement this interface can be sorted automatically by Collections.sort (and Arrays.sort)." What do you think is meant by "automatically"?<br />
<li> Locate the Method Detail for the compareTo method. Describe in your own words what is the meaning of the value that is returned by this method?<br />
<li> If a call is made to <code>Arrays.sort</code>, what do you think will happen to an array of strings?<br />
<li> Assume the <code>compareTo</code> method in the <code>String</code> class is modified as follows. What do you think the result of calling <code>Arrays.sort</code> on an array of strings will be now?<br />
<pre><br />
public int compareTo(String anotherString) { <br />
int len1 = value.length; <br />
int len2 = anotherString.value.length;<br />
int lim = Math.min(len1, len2);<br />
char v1[] = value;<br />
char v2[] = anotherString.value;<br />
int k = 0;<br />
while (k < lim) {<br />
char c1 = v1[k];<br />
char c2 = v2[k];<br />
if (c1 != c2) {<br />
return c2 - c1; ** modified<br />
}<br />
k++;<br />
}<br />
return len2 - len1; ** modified<br />
}<br />
</pre> <br />
</ol><br />
<li> What does the class implementing the Comparable interface have to provide?</li><br />
<li> What is the benefit of defining a class that implements the Comparable interface?</li><br />
</ol><br />
<br />
=== Deliverables: ===<br />
Student will submit a document containing answers to the above questions.<br />
<br />
=== Assessment: ===<br />
{| border="1" class="wikitable"<br />
! Criteria<br />
! Level 1 (fail)<br />
! Level 2 (pass)<br />
! Level 3 (good)<br />
! Level 4 (exceptional)<br />
|-<br />
| '''Does the student understand what it means to implement an interface?'''<br />
| <br />
| <br />
|<br />
|<br />
<br />
|-<br />
| '''Does the student understand what the compareTo method returns?'''<br />
| <br />
| <br />
| <br />
| <br />
<br />
|-<br />
| '''Does the student understand what the parameter for the compareTo method should be?'''<br />
| <br />
| <br />
| <br />
| <br />
<br />
|-<br />
| '''Does the student understand how the compareTo method is used to impose ordering on objects of the specified type?'''<br />
| <br />
| <br />
| <br />
| <br />
|}<br />
<br />
=== Comments: ===<br />
What should the instructor know before using this activity?<br />
<br />
What are some likely difficulties that an instructor may encounter using this activity?<br />
<br />
=== Additional Information: ===<br />
{| border="1"<br />
|- <br />
|'''ACM Knowledge Area/Knowledge Unit''' || Software Development Fundamentals / Fundamental Programming Concepts, Programming Languages / Object Oriented Programming<br />
|-<br />
|'''ACM Topic''' || interfaces, code reading and understanding, object oriented design<br />
|-<br />
|'''Level of Difficulty''' || Easy to moderate<br />
|-<br />
|'''Estimated Time to Completion''' || 2-3 hours<br />
|-<br />
|'''Materials/Environment''' || Any platform with a modern Internet browser.<br />
|-<br />
|'''Author(s)''' || Darci Burdge, Joanna Klukowska <br />
|-<br />
|'''Source''' || This is not dependent on any other activity. <br />
|-<br />
|'''License''' || [http://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Attribution-ShareAlike 4.0 International License]<br />
|}<br />
<br />
=== Feedback: ===<br />
Note that feedback to the author(s) of the activity regarding usage or suggestions for enhancements can be included via the '''Discussion''' tab (upper left of the page).<br />
<br />
--------------------<br />
This work is licensed under a <br />
[http://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Attribution-ShareAlike 4.0 International License]<br />
<br />
[[File:CC_license.png]]<br />
<br />
[[Category: Learning_Activity]]<br />
[[Category: CS2]]<br />
[[Category: Interfaces]]<br />
[[Category: Ready to Use]]</div>Josh.dehlingerhttp://foss2serve.org/index.php/Code_Base_UnderstandingCode Base Understanding2017-03-08T17:18:34Z<p>Josh.dehlinger: Evaluated for adoption readiness</p>
<hr />
<div>__NOTOC__<br />
<br />
{| class="wikitable"<br />
|- <br />
| '''Title''' || Code Base understanding <br />
|-<br />
| '''Overview''' || Students will navigate a complex Java code base using a number of different techniques or strategies to understand the design and architecture.<br />
|- <br />
| '''Prerequisite Knowledge''' || CS 2 - Data structures in Java<br />
|- <br />
| '''Learning Objectives''' || <br />
The student should be able to:<br />
Follow specific strategies to understand the code<br />
Analyze the critical components of the code base<br />
Understand the importance of dependencies and coupling/decoupling<br />
Understand the importance of technical documentation in understanding the code<br />
Utilize visualization tools to navigate and understand complex codebase<br />
<br />
|}<br />
<br />
=== Background ===<br />
<br />
Is there background reading material? <br />
*Josh will add*<br />
<br />
Are there other activities the student should have done first? <br />
* Read technical documentation specific to the project (project installation, tools needed, APIs) - assumption is that the environment is already installed <br />
<br />
* Run the program, understand the behavior of it<br />
Come up with an enhancement - provides the motivation for this activity<br />
<br />
<br />
What is the rationale for this activity? <br />
* Students cannot become contributors to HFOSS projects until they understand the code base. This activity provides a number of strategies to help students approach a new code base and make sense of it. It has starting points (such as looking at unit testing) and more advanced techniques (such as using visualization tools to understand dependencies).<br />
<br />
Include helpful hints to faculty here.<br />
Visualization tools for Java:<br />
* Code City: https://marketplace.eclipse.org/content/codecity<br />
* X-Ray: https://marketplace.eclipse.org/content/x-ray-software-visualization<br />
* JDeodorant: https://marketplace.eclipse.org/content/jdeodorant<br />
<br />
This activity is designed for Eclipse.<br />
Suggestion: have students work in groups<br />
<br />
=== Directions ===<br />
<br />
* Look for unit tests, data model, high level classes, find something familiar, look at imports - are there packages the code is dependent upon?<br />
* Run unit tests<br />
* Look for superclasses<br />
* From package dependencies figure out classes and package structure<br />
<br />
Ordering where to look:<br />
* Find any technical documentation (like JavaDoc) - keep it open to refer back to<br />
* Look for a folder called testing and look for unit tests - if none exists then search junit in imports <br />
* What are the methods that are tested (hopefully there is documentation)? This identifies the core clases - these are classes of high interest<br />
* Run the unit tests<br />
* Find the high level classes in the data model and the interfaces (in a game, the sprites, weapons, actors, etc. put another example here)<br />
* Use CodeCity and then X-Ray to visualize the code - what is most of the code dependent upon? Students should look at the code at the same time as they explore the visualization. This will help understand the class dependencies. (Ruby can expand on the criteria that can be used to visualize)<br />
* Look at the import list to see if it is dependent upon other libraries<br />
* Find the data model, how is the data saved, what data structures are used?<br />
* JDeodorant could be used to help understand potential refactoring because it looks at bad part of the code<br />
<br />
<br />
=== Deliverables ===<br />
<br />
Submit answers to questions and screen captures<br />
Give instances of each of the bad smells from JDeodorant<br />
Ultimate Goal: Make a code contribution back to the project with the enhancement.<br />
<br />
=== Assessment ===<br />
<br />
How will the activity be graded?<br />
<br />
How will learning will be measured?<br />
<br />
Include sample assessment questions/rubrics.<br />
<br />
{| class="wikitable"<br />
! Criteria<br />
! Level 1 (fail)<br />
! Level 2 (pass)<br />
! Level 3 (good)<br />
! Level 4 (exceptional)<br />
|-<br />
| '''The purpose of the project'''<br />
| <br />
| <br />
|<br />
|<br />
<br />
|-<br />
| '''Why the project is open source'''<br />
| <br />
| <br />
| <br />
| <br />
<br />
|}<br />
<br />
=== Comments ===<br />
<br />
What should the instructor know before using this activity?<br />
<br />
What are some likely difficulties that an instructor may encounter using this activity?<br />
<br />
Potential problems in this activity may be if the underlying code base changes and/or that the student may not find what they are looking for (e.g., the project may not contain unit tests, etc.).<br />
<br />
=== Additional Information: ===<br />
{| class="wikitable"<br />
|- <br />
| '''ACM Knowledge Area/Knowledge Unit''' || What ACM Computing Curricula 2013 knowledge area and units does this activity cover? [[ACM_Body_of_Knowledge]]<br />
|-<br />
| '''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<br />
|-<br />
| '''Level of Difficulty''' || Is this activity easy, medium or challenging? <br />
|-<br />
| '''Estimated Time to Completion''' || How long should it take for the student to complete the activity?<br />
|-<br />
| '''Materials/Environment''' || The student needs Internet access, IRC client, Git Hub account, LINUX machine, etc.?<br />
|-<br />
| '''Author(s)''' || Ruby ElKharboutly, Josh Dehlinger, Ed Gehringer, Moshen Doroodchi, Lori Postner<br />
|-<br />
|'''Source''' || Is there another activity on which this activity is based? If so, please provide a link to the original resource.<br />
|-<br />
|'''License''' || Under which license is this material made available? (http://creativecommons.org/licenses/)<br />
|}<br />
<br />
=== Suggestions for Open Source Community ===<br />
<br />
Suggestions for an open source community member who is working in conjunction with the instructor.<br />
<br />
<br />
--------------------<br />
This work is licensed under a <br />
[http://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Attribution-ShareAlike 4.0 International License]<br />
<br />
[[File:CC_license.png]]<br />
<br />
[[Category:Learning Activity]]<br />
[[Category:Coding and Style]]<br />
[[Category:Minimal Sketch]]<br />
<br />
[[Category:CS2]]</div>Josh.dehlinger