CS-401 Spring 2014

From Worcester State University Computer Science Department Wiki
Jump to: navigation, search
Newly added: Instructions for working with Git/GitHub

Contents

Instructor

Karl R. Wurst, Blog: [1], OpenMRS ID: kwurst, GitHub Username: kwurst

Students

Syllabus

http://sharepoint.worcester.edu/faculty/kwurst/Course%20Materials/Spring%202014/CS-401/Syllabus.pdf

Blog Entry Rubric

This is the first draft of a rubric for grading your blog entries. It will be used starting with entries for the Week of 24 February 2014. I will give you score for previous entries for your information only. This will let you see how your previous entries would score on this rubric, so that you can adjust your writing for future entries. (The actual score for previous entries will be 0 for "no blog entry posted" or 1 for "blog entry posted".) This rubric is subject to change, as I come up with other criteria I would like to see. I will inform you of the changes in class, or on the email list, before I apply a new version of the rubric. --Kwurst@worcester.edu (talk) 13:08, 24 February 2014 (EST)

Level of Mastery (Score)
Excellent (4) Good (3) Satisfactory (2) Needs Improvement (1) Unsatisfactory (0)
Content Blog entry contains reflection on what the student learned from the week's activities, how the student would proceed differently in light of this, and how what was learned might be applied in other situations. Includes all material from level 3 as well. Blog entry contains an explanation of why the student took the steps s/he did during the week. Describes what was tried, what succeeded and what failed, and how the student chose the course of action. Includes references to where information/help was found. Includes all material from level 2 as well. Blog entry contains detailed description of what was done during the week. Provides a list of steps that could be followed by another person to do the same thing. Blog entry contains only a cursory description of what was done during the week. No blog entry posted for the week.

Schedule

Week 1: 27 January 2014

In Class

  • HFOSS Pre-Class Survey
  • Overview of Class/Syllabus
  • Explanation of Blog Homework
  • Git Activity

Homework

  • Create Teaching Open Source [6] account.
    • Create account in upper right-hand corner.
  • Create Blog
    • If you don't have a blog, you can create one for free at Wordpress.com [7], or on any other blogging platform you wish to use.
      • I suggest that you do not include CS-401 in the name of your blog. This should be a blog that you can use beyond just this class. You can tag postings for this class, so that only those postings are aggregated on the CS@Worcester and the TOS blogs.
    • Link blog to CS@Worcester Blog [8]
      • Post RSS feed URI on How to Contribute to This Blog page [9]
    • Link blog to Teaching Open Source Planet [10]
      • Add RSS feed URI to Planet Feed List [11]
  • Get an OpenMRS ID [12]
  • Join the OpenMRS Developers List [13]

Reading Assignments

  • The Cathedral and the Bazaar [14]
  • Free vs. Open [15]
  • OpenMRS Developers Guide Chapters 1-4 [16]

Blogging Assignment

  • Blog about:
    • What you are expecting to get out of this course.
    • The three readings.
    • Git activity
These can all be parts of one blog post, or separate blog posts

Week 2: 3 February 2014

In Class

Reading Assignments

  • OpenMRS Developers Guide Chapters 5-6 [17]
    • Follow the go.openmrs.org/newdev-* links sprinkled throughout the chapters
  • 14 Ways to Contribute to Open Source without Being a Programming Genius or a Rock Star [18]
  • How to Contribute to Open Source Without Coding [19]
  • Karl Fogel's chapter on bug trackers [20]
  • Wikipedia's page on Bug Tracking Systems [21]

Blogging Assignment

  • Blog about:
    • IRC activity
    • Readings

Week 3: 10 February 2014

In Class

  • Wiki Editing
    • Go to the CS Department Wiki: http://cs.worcester.edu/wiki
    • Log in using your WSU username and password
    • Go to your user page by the link in the upper right-hand corner.
    • Write something about yourself in your user page. Include your name and something about you.
    • Add a link to your user page on the Students page. (See the Faculty page to see how a link to a user page works.)
    • Add a link to your user page in the CS-401 Spring 2014#Students section.
  • CS-401 Spring 2014/Issue Tracker Activity
    • Don't forget to write up your results on your user page. (Continue this as homework if you do not have time to finish in class.)

Homework

Reading Assignments

  • OpenMRS Developers Guide Chapters 7-10 [22]
    • Follow the go.openmrs.org/newdev-* links sprinkled throughout the chapters

Blogging Assignment

  • Blog about
    • Wiki Editing
    • Issue Tracker Activity
    • Git Videos and Tutorials
    • Selecting three issues

Week 4: 17 February 2014

No class due to President's Day Holiday

Homework

  • Follow the steps in the OpenMRS Developers Guide Chapter 10 [23] to get your computer set up.

I expect that this will be challenging, that there will be problems, that there will probably be changes to how this should be done, and this may continue into our class on 24 February 2014.

Reading Assignments

  • Continue reading OpenMRS Developers Guide Chapters 7-10 [24]
    • Follow the go.openmrs.org/newdev-* links sprinkled throughout the chapters

Blogging Assignment

  • Blog about set up issues

Week 5: 24 February 2014

In Class

Homework

  • Add a link to your blog to your entry in the Students section of this page.
  • Add your OpenMRS ID to your entry in the Students section of this page.
  • Add your GitHub Username to your entry in the Students section of this page.
  • In your group:
    • Determine who will be the "assignee" for the ticket
      • Make sure that if someone else was working on that ticket that they aren't still working on it.
    • Who will "own" the group's GitHub fork of OpenMRS Core
      • Add other group members as contributors.
      • Add kwurst as a contributor
    • Figure out how to split up the work
      • Probably will involve mostly everyone reading code this week, trying to list what needs to be done, then assigning people.
      • You can keep track of all of this on the group page that I created for your group.

Reading Assignments

Blogging Assignment

Week 6: 3 March 2014

In Class

  • Group status reports

Homework

Reading Assignments

Blogging Assignment

Week 7: 10 March 2014

In Class

Homework

Reading Assignments

Blogging Assignment

Week 8: 17 March 2014

No class due to Spring Break

Homework

Reading Assignments

Blogging Assignment

Week 9: 24 March 2014

In Class

Homework

Reading Assignments

Blogging Assignment

Week 10: 31 March 2014

In Class

Homework

Reading Assignments

Blogging Assignment

Week 11: 7 April 2014

In Class

Homework

Reading Assignments

Blogging Assignment

Week 12: 14 April 2014

In Class

Homework

Preparing your Book Presentation

  • Sum up the book in one sentence.
  • Who is the intended audience for the book?
  • Who do you think would benefit most from this book?
  • What does the book cover?
  • Was the material in the book useful to you?
  • What was the most important thing you learned from this book?
  • Would any of the material from this book be useful in earlier CS courses? Which ones?
  • Did you enjoy reading this book?
  • Would you recommend it to others?
  • Would you buy your own copy?

Reading Assignments

Blogging Assignment

Week 13: 21 April 2014

No class due to Patriot's Day Holiday

Homework

Reading Assignments

Blogging Assignment

Week 14: 28 April 2014

In Class

Book Presentations (15 minutes each)

  1. Alan Boulais
  2. TR Staake
  3. Matthew Lopatka
  4. Yuyu Zhu
  5. Alvin Cordor
  6. Dhimitri Natsis
  7. Kyle Primmer

Homework

Reading Assignments

Blogging Assignment

Week 15: 5 May 2014

In Class

Book Presentations (15 minutes each)

  1. Connor Kelly
  2. Jesse Anaya
  3. Taylor Bruce
  4. Natalie Zelaya
  5. Nana Onyirimba
  6. Michael Gibson
  7. Em Trieu

Homework

Reading Assignments

Blogging Assignment

Week 16: 14 May 2014

Note that this is a Wednesday at 12:30pm-3:30pm

In Class

  • HFOSS Post-Class Survey
  • Presentations (In groups - n*10 minutes, where n is the number of members of the group)

Format

Each group will present on their work . Some expectations:

  • Every member of the group will take part in the presentation equally.
  • Your presentation will provide an overview of the entire process – not just the final product, but also the problems encountered and the changes made as your group progressed.
  • Powerpoint or other presentation software is suggested, but not required

Questions to answer

  • What did you learn about:
    • Teamwork?
    • Communication?
    • Working on a large project?
    • Working with a people you don't know personally?
    • New (to you) technologies, and how did you learn about them?
  • What was your biggest challenge?
  • What was your biggest accomplishment?
  • What do you wish you had done or learned, but did not get to?

Homework

Reading Assignments

Blogging Assignment

Groups as of 24 February 2014

TRUNK-2744

| https://tickets.openmrs.org/browse/TRUNK-2744

Members

  • TR Staake
  • Matthew Lopatka

Ticket Assignee

  • Matthew Lopatka

TRUNK-248

https://tickets.openmrs.org/browse/TRUNK-248

Members

  • Alan Boulais
  • Dhimitri Natsis
  • Kyle Primmer

TRUNK-243

https://tickets.openmrs.org/browse/TRUNK-243

Members

  • Em Trieu
  • Connor Kelley
  • Natalie Zelaya
  • Taylor Bruce

TRUNK-309

| https://tickets.openmrs.org/browse/TRUNK-309

Members

  • Jesse Anaya
  • Michael Gibson
  • Yuyu Zhu
  • Alvin Cordor
  • Nana Onyirimba

Candidate Tickets

Formatting notes:

  • Don't forget to add your name to the tickets you add here!
  • No need to copy text from JIRA, just include a link to the actual ticket.
  • Include a brief description of the issue
  • Include a brief explanation of why you think this is a ticket you would like to work on
  • Make sure the ticket is not already assigned to anyone

Natalie Zelaya


TRUNK-324: Go through the TODO items code and create tickets out of them

https://tickets.openmrs.org/browse/TRUNK-324

Description: There are a good number of TODO items in the core code. They aren't doing much good in this state. These items should be examined and tickets made for them to be fixed.

Why this ticket? Working with labels and tickets would be interesting. I think it would be a good start to get familiar with the OpenMRS projects.


TRUNK-3293: Add error checking to relationship start/end dates on patient dashboard

https://tickets.openmrs.org/browse/TRUNK-3293

Description: Add error checking to relationship start/end dates on patient dashboard. Currently, if you try to add an end date that is prior to the start date it will let you. This happens with Version: 1.9.0 RC3 Build 26871.

Why this ticket? I'm very interested in working on database issues. I would like to gain hands-on experience working with database.


OTHER-16: Ability for Data assistants to see the number of forms entered

https://tickets.openmrs.org/browse/OTHER-16

Description: The DataEntryStatistics module allows admins to see what progress has been made by data enterers. However, sometimes users want to see their status as well. Add a feature to the DES module (http://svn.openmrs.org/openmrs-modules/dataentrystatistics/trunk/) that hooks to an extension point (https://wiki.openmrs.org/display/docs/Module+Extension+Points) on the "My Profile" page.

Why this ticket? it would be nice to work on a new feature...



TRUNK-3777 Bug in the concept search related to concept names containing stop words https://tickets.openmrs.org/browse/TRUNK-3777

Description - An exact match should always be shown as a result, regardless of whether or not the concept name contains stop words Identify why concept names containing stop words are not considered matches to their exact name.

An interesting bug regarding why the search function does not yield results when a stop function is entered. Would provide a good look to see how the search algorithm operates causing this error. Alan Boulais


TRUNK-3386 Increase the privilege column size

Description - Increase the privilege column size in the privilege and role_privilege tables from 50 to 255 characters.

A smaller bug/new feature that is apparently preventing longer segments of information from being entered properly. Would give insight to see how the databases are organized within the tables. Alan Boulais



Michael Gibson

Encounter provider elements allow default value to be non-provider

If I have a form with the following element: <encounterProvider default="currentUser" /> Even if the current user is not a provider, they will still appear in the list of provider options, leading to exception being thrown in controller. Should Be an easy fix to get in the program with but it might be outdated as the Ticket is a few months old


Matthew Lopatka

TRUNK-367 New Feature

Create a German messages.properties translation file

Description - It would be convenient to have a German translation of the messages.properties file.

Why this ticket? I’ve worked with translation tools such as LocBaml and Redpin for .Net applications in the past so I think this would be a great way to get my feet wet.


TRUNK-15 New Feature

Saving the same name more than once should not be allowed.

Description - I Can save Relationship Types, Concept Classes, Patient Identifier Types, Field Types, Drug Order Types, with the same name, any number of times. I guess this behavior is not intended.

Why this ticket? It seems like a bit of redundancy that could be cleaned up.


REPORT-517 Improvement

Description - There have been many, many confused users who cannot get their reports to run because their scheduler username and password global property is not set to a valid user with appropriate credentials. We should check this on the run report page and ensure that such a valid user exists before allowing a user to run any report. If the credentials are invalid, we should provide a clear error / warning, and provide instructions for the administrator to update these settings.

Why this ticket? I think with this improvement the user would at least get an immediate warning that invalid credentials are being entered, leading to less confusion and time loss.


Connor Kelley

TRUNK-324: Create tickets for TODO items

https://tickets.openmrs.org/browse/TRUNK-324

This seems like it would be a good way to get a feel for their bug tracking system.


TRUNK-309: Add better javadoc comments to services

https://tickets.openmrs.org/browse/TRUNK-309

This seems like a good way to look at the code and document it, which would be helpful for everyone that tried to work on it in the future.


STAND-19: Set application icon to OpenMRS logo

https://tickets.openmrs.org/browse/STAND-19

This seems like a real easy fix and would help with the visibility of the application, which would especially help people less familiar with computers


Dhimitris Natsis

TRUNK-324: Go through the TODO items code and create tickets out of them

https://tickets.openmrs.org/browse/TRUNK-324

Seems like a pretty easy and straight forward ticket to start with.


TRUNK-4031: locking mechanism for patient_identifier_type

https://tickets.openmrs.org/browse/TRUNK-4031

Seems like to problem is not to complicated and would be a good introductory ticket to get a feel for the way the program works.


TRUNK-4032: locking mechanism for person_attribute_type

https://tickets.openmrs.org/browse/TRUNK-4032

The problem and ticket are very similar to the last one so i feel like if you complete one you kind of should complete both.


TR Staake

1) OpenMRS Trunk TRUNK-3254: Add junit test for searching on voided identifiers in PatientSearchCriteria.addIdentifierCriterias [25]

This seems like a simple coding task to get familiar with a section of openMRS code and JUnits

2) OpenMRS Trunk TRUNK-324: Go through the TODO items code and create tickets out of them [26]

This seems like it would be fairly simple to work on and by the sounds of it there is a lot of TODO's to be made into tickets

3) OpenMRS Trunk TRUNK-248: Add JUnit @should annotations according to code comments [27]

This also seems fairly easy to do and also once these are identified could also lead to generating the desired JUnit tests.

4) OpenMRS Trunk TRUNK-2744: Add a "modify dosage" system to the Drug Regimen tab [28]

This seems like it would be fairly simple to implement


Alvin Cordor

1.) Report-420: the issue is that it display a list of report using data. [29]

2.) Trunk-15: the issue is that saving the same name more then once should not be allowed. [30]

3.) Trunk-309: the issue here is to add a better Javadoc comments to services. [31]


Jesse Anaya

1. TRUNK-324: Going through the to do items and separating them out into smaller tickets will make it easier to solve each one at a time. TRUNK-324

2. TRUNK-309: I enjoy documentation and attention to detail, so I would prefer to do something I am good at. Javadoc should be as clear as possible when working in this large of a scale. TRUNK-309

3. UIFR-124: Even though the task seems trivial, it should be easy to complete even not knowing the entire project or source code. UIFR-124


EM TRIEU

1. TRuck-324: Go through the TODO items code and create tickets out of them

https://tickets.openmrs.org/browse/TRUNK-324

Description: There are a good number of TODO items in the core code. They aren't doing much good in this state. These items

should be examined and tickets made for them to be fixed.

Do a global search for the word "TODO" in the api and web projects

Add a ticket with as much description as possible. (file it was in, line number, and the TODO wording)

Link those tickets to this ticket.

Someone with more knowledge of the codebase can fill in more details around the ticket.

Chosen: i think that will be the easy ticket to work on .

2.TRUCK-309 Add Better Javadoc Comments to Services

https://tickets.openmrs.org/browse/TRUNK-309

Description: The Services are in need of a once-over to check for javadoc style comments. Quality comments and descriptions

should be added at the class-level to all interfaces+classes in the org.openmrs.api package.

Chosen:I interesting on the document. The Javadoc is the large and that is need to be done as soon as possible.

3.STAND-19: Set application icon to OpenMRS logo

https://tickets.openmrs.org/browse/STAND-19

Description: Change the application icon of the OpenMRS Standalone's user interface to the OpenMRS logo. If it helps, here's

a relevant Stack Overflow question.

Chosen: Because i just learn about OpenMRS . i'm interesting on this that why i choose this ticket.

---

Book Reports

Book Assignments

  • Em Trieu - Effective Java
  • Natalie Zelaya - Clean Code
  • Dhmitri Natsis - Making Software
  • Kyle Primmer - Code Reading
  • Connor Kelley - Pragmatic Version Control using Git
  • Taylor Bruce - Pragmatic Unit Testing with JUnit
  • Alan Boulais - Agile Development
  • Alvin Cordor - Head First Software Development
  • Yuyu Zhu - Head First Object-Oriented Analysis and Design
  • Jesse Anaya - 'The Pragmatic Programmer
  • Nana Onyirimba - Code Complete
  • Matthew Lopatka - Head First Design Patterns
  • TR Staake -
  • Michael Gibson -

Installation

Resources

Working with Git/GitHub

Fork the OpenMRS repository

Only one person in the group needs to do this. You need to make your own copy of the OpenMRS core respository on GitHub. This is because you do not have privileges to make changes to the project's repository. Forking the respository will make a copy that you own.

Add your teammates as contributors

Only the owner of the group repository can/needs to do this. You need to allow your teammates to push changes to the repository.

  • On GitHub in your repository, click on the Settings button at the bottom of the icons along the right-hand side.
  • Click on Collaborators in the left-hand menu.
  • Add your teammates as collaborators.

Clone the repository to your computer

Every member of the group needs to do this You need get the code from your repository on GitHub to your computer so you can actually work on the code.

  • On GitHub in your repository, copy the SSH clone URL from the box at the bottom of the icons along the right-had side.
  • Open a terminal window in the directory where you want to put the code.(See the Git page for hints on how to do this.)
  • In the terminal window, type git clone SSH_clone_URL desired_folder_name. You can leave out the folder name if you are OK with the folder having the name openmrs-core.

Git workflow

Whenever you are working on the code, you should follow this general workflow:

  • Get any changes your teammates have made to the code by typing git pull origin master
  • Do your work.
  • Check which files have changed: git status
  • Add the changes you want to commit to the staging area, repeat for each file: git add filename
    • If you are sure you want to add all the changed files: git add .
  • Save your changes in a commit: git commit -m'Message describing your changes'
  • git pull origin master to get any changes your teammates have made since you started.
  • Push your changes to the group's repository on GitHub: git push origin master

Pull changes from OpenMRS

Occasionally, you should make sure you have the most up-to-date code from the main OpenMRS repository (upstream).

  • Make sure you have committed your changes!
  • Pull the changes from the main OpenMRS repository, and make it look like you've been working with this version from the start: git pull --rebase upstream master
  • Push the changes to the group's repository on GitHub: git push origin master

Ask OpenMRS to pull your changes

Only the owner of the group repository can/needs to do this.

  • On GitHub in your repository, click on the green Pull Request button to the left of the branch pull-down.
  • Review the changes to be sure this is what you want pulled.
  • Click the green Create Pull Request button.
  • Describe the changes.
  • Click the green Send pull request button.