CS 401 01 - Spring 2015
CS-401 Software Development Process
Credit and Contact Hours
Lecture: 3 hours/week
Catalog Course Description
This course deals with software as an engineered product that requires planning, analysis, design, implementation, testing and maintenance.
Dr. Karl R. Wurst
See http://cs.worcester.edu/kwurst/ for contact information and schedule.
Meeting Time and Location
Three additional 15-minute team meetings MWF by arrangment with teammates and instructor.
Dan Pilone and Russ Miles
O'Reilly Media, 2007
(See [ACM Student Membership](#acm-student-membership) for a way you can get access to this textbook for no additional cost.)
Chris Sims and Hillary Louise Johnson
Available as a $0.99 Kindle book
Read the whole text online here
Source Gear, 2011
Free downloads available here
Robert C. Martin
Prentice Hall, 2009
(See [ACM Student Membership](#acm-student-membership) for a way you can get access to this textbook for no additional cost.)
In addition to the textbooks, to successfully complete this course you will need:
- Laptop Computer: You will need a laptop computer that you can bring to class sessions and can use at home. The brand and operating system (Windows, Mac OS X, Linux) is unimportant - the software we will be using runs on all major operating systems and can be downloaded for free. It is expected that you will download and install required software as needed over the course of the semester.
- Internet Access: You will need Internet access for access to:
- Github - We will use Github to host our code.
- OpenMRS.org - We will be working on the OpenMRS project, and you will need access to their site and their community tools.
- WSU Gmail - You must check your WSU Gmail account on a regular basis. We will be using a class Listserv to communicate, and you will be subscribing to OpenMRS mailing lists.
- Wordpress or other blogging platform - You will be keeping a blog about your learning in this course.
- Tutorials and articles - I will suggest, and you will research on your own, tutorials and articles for you to learn new technologies and techniques we need.
It is strongly suggested that you have an ACM Student Membership. An ACM Student Membership costs only $19 and you get access to a large list of benefits, including Safari Books, which includes electronic copies of both Clean Code and Head First Software Development.
The ACM is the world's largest educational and scientific computing professional society. As a soon-to-be professional in computing, you should be a member to keep up-to-date with advancements in the field. And it looks great on your resume!
Where Does This Course Lead?
- Your professional career
Course Workload Expectations
This is a three-credit project-based course. You should expect to spend, on average, 9 hours per week on this class.
You will spend 3 hours per week in class participating in Scrum meetings, attending OpenMRS Developer Forum meetings, discussing the readings, or working on training sessions on new tools and techniques. In addition, you should expect to spend, on average, at least 6 hours per week during the semester outside of class, participating in your scum meetings, writing code and documentation, learning new tools and techniques, and communicating with the team. (See Definition of the Credit Hour)
The bulk of your work in this course will take place outside of the class time. It is not possible to contribute the amount of work your team and the class need to be successful entirely within the 3 hours of class time. If you attempt to do so, you will not only receive a poor grade in the course, but will also be letting down your classmates, and giving a poor impression of your reliability and quality of work to your classmates and to members of the professional community.
This is a chance to build your professional reputation - make sure you make a good impression.
Definition of the Credit Hour
Federal regulation defines a credit hour as an amount of work represented in intended learning outcomes and verified by evidence of student achievement that is an institutional established equivalence that reasonably approximates not less than -
- One hour of classroom or direct faculty instruction and a minimum of two hours of out of class student work each week for approximately fifteen weeks for one semester or trimester hour of credit, or ten to twelve weeks for one quarter hour of credit, or the equivalent amount of work over a different amount of time; or
- At least an equivalent amount of work as required in paragraph (1) of this definition for other academic activities as established by the institution including laboratory work, internships, practica, studio work, and other academic work leading to the award of credit hours.
---New England Association of Schools and Colleges, Commission on Institutions of Higher Education, Policy on Credits and Degrees
You are expected to attend every class. You will be accomplishing important team planning, review, estimation, and task selection and creation work to enable your team to make progress within the project. See important details under Attendance and Participation to see how you will be graded.
This course has a prerequisite of CS 375 - Software Analysis and Design. I expect that you have a reasonable background in software design issues. You will be designing working code and producing design documentation for the project that we are working in over the course of the semester.
CS 375 required CS 242 - Data Structures. I expect that you have a solid background in fundamental data structures, such as lists, queues and trees, know how to use them and how to implement them, and when to select a data structure for a particular problem. I also expect you to be a proficient coder and debugger.
CS 375 required EN 252 - Technical Writing. You should be able to write professionally. You should be able to write professional-quality reports, memos and documentation.
CS 375 required CM 110 - Public Speaking. You should be able to structure and give a professional-quality presentation.
This course has a prerequisite of UR 230 - Technology, Public Policy and Urban Society. I expect that you are able to evaluate the course project for ethical and professional considerations, and write a well-constructed, well-reasoned, and well-supported analysis. You should also be able to understand software licenses, and how they affect your contribution to a project.
If you are missing any of this background, you should not take this course.
This is a course about learning to work within a large, distributed software project. About half of our class time will be used for team planning, review, estimation, and task selection and creation work to enable your team to make progress within the project. A portion of our class time will be used for me to present some new material on the software development process, tool, group process, or object-oriented design. We will also use some class time to participate in the developer meetings of the OpenMRS project.
This course is intended to mimic, as closely as possible in a university course, the professional software development team environment.
You will perform development work in a significant software system, employing knowledge gained from courses taken throughout the Computer Science program. You will work in groups to manage a project; selecting and following appropriate project management techniques. You will work on the requirements, design, implementation, and quality assurance plan, and analyze the project for professional, social, and ethical issues.
You will learn new technology and techniques on your own as needed for the project. In doing so, you will gain an appreciation for the importance of continuing professional development, and confidence in learning new technology and techniques on your own.
You will reflect on your learning and make frequent written and oral status reports on your individual and team progress.
You will contribute the results of your work to the professional community, and develop a professional presence and reputation within the community.
Course-Level Student Learning Outcomes
After successful completion of this course, students will be able to:
- Perform development work on a significant software system, employing knowledge gained from courses throughout the program.
- Work in groups to manage a project, following all appropriate project management techniques.
- Work on requirements, design, implementation, and quality assurance plan for a project.
- Follow a suitable process model.
- Learn new models, techniques, and technologies as needed and appreciate the necessity of such continuing professional development.
- Use a version control system to manage a project.
- Write documentation for a project, following the project's documentation standards.
- Analyze a project for professional, social, and ethical issues, determining expected positive impact, and possible negative impacts on all stakeholders - the company or project, its employees or community members, its users, and society in general.
- Prepare and give presentations to your team, and to stakeholders of your project.
- Analyze and modify software in order to improve its efficiency, reliability, and maintainability.
- Evaluate software licenses, contracts and intellectual property agreements, while recognizing the necessity of involving legal expertise.
- Design and implement comprehensive test plans and analyze requirements to determine appropriate testing strategies.
- Conduct reviews and effective, efficient inspections.
LASC Student Learning Outcomes
This course does not fulfill any LASC Content Area requirements, but contributes to the following Overarching Outcomes of LASC:
- Demonstrate effective oral and written communication.
- Employ quantitative and qualitative reasoning.
- Apply skills in critical thinking.
- Apply skills in information literacy.
- Understand the roles of science and technology in our modern world.
- Understand how scholars in various disciplines approach problems and construct knowledge.
- Display socially responsible behavior and act as socially responsible agents in the world.
- Make connections across courses and disciplines.
Computer Science and LASC Capstone Experience
This course fulfills the Capstone Experience requirement for both the Major in Computer Science and the LASC. From the LASC:
Capstone seminars are offered to students in their junior or senior year through their major field of study for varying credit or through a three-credit course offered within the Liberal Arts and Sciences Curriculum. Capstone seminars completed within a student's major field of study will count toward major requirements and will meet the LASC capstone experience requirement.
- provide students the opportunity to demonstrate mastery of a subject area or skill.
- require synthesis and integration of prior knowledge and abilities.
- are designed to facilitate the transition from WSU to the world of work, professional development and/or graduate studies.
- may include research, leadership and internship opportunities, artistic projects, the production of a portfolio of student work, and/or other culminating learning experiences.
Program-Level Student Learning Outcomes
This course addresses the following outcomes of the Computer Science Major:
Upon successful completion of the Major in Computer Science, students will be able to:
- Analyze a problem, develop/design multiple solutions and evaluate and document the solutions based on the requirements. (Mastery)
- Communicate effectively both in written and oral form. (Mastery)
- Identify professional and ethical considerations, and apply ethical reasoning to technological solutions to problems. (Mastery)
- Demonstrate an understanding of and appreciation for the importance of negotiation, effective work habits, leadership, and good communication with teammates and stakeholders. (Mastery)
- Learn new models, techniques, and technologies as they emerge and appreciate the necessity of such continuing professional development. (Mastery)
- Version control
- Collaboration tools
- Project management
- Software process models
- Software testing
- Software licensing
- Documentation standards
- Software maintenance
- Team management
- Code review
Your grade in the course will be determined as follows:
|Attendance and Participation||20%|
|Professional Development and Communication||10%|
|Portfolio - Annotated Collection Log||10%|
|Portfolio - Draft Review||10%|
|Portfolio - Final Version||20%|
|Final Group Presentation||10%|
|less than 60%||E|
Each range includes the lower value, but not the upper value. For example, the range of 80 to 83 includes all grades up to, but not including 83. The highest range does, however, include 100%.
Attendance and Participation
You must attend all class meetings. Your attendance and participation in class will be scored as follows:
|P||100%||Present and Participating|
|L||50%||Late or missing a significant portion of class|
|A||0%||Absent or not participating|
*An excused absence is determined by the instructor. Ideally, it will be arranged in advance. Otherwise, the instructor must be notified of the absence and the reason as soon as possible, preferrably by the end of the day. The 99.998% score is an artifact of the Blackboard grade center, which will not allow two symbols to have the same score value. In the extremely unlikely event that this causes a student's final grade to be lowered, the excused absences will be manually changed to 100%.
In addition to classroom attendance you must participate in scrum meetings. These meetings are or a maximum of 15 minute duration, and will occur three times a week: Monday, Wednesday, and Friday. These meetings will likely be virtual. The meeting time and method will be determined in cooperation with the scrum master (who will ideally be there).
Teamwork will be evaluated by peer review. Below are the characteristics that will be used to assess teamwork. At the end of each sprint, each team member will evaluate each other team member in the following areas using a 3 point scale.
- Makes all meetings
- Is on time for meetings
- Participates in meetings
- Willingness to help others
- Asks for help when needed
- Willingness to receive help
- Takes on responsibilities
- Meets responsibilities
- Good attitude
- Encouraging to others
If a team member receives an average of less than 2 in any area, the instructor will review the evaluation with the team. At the instructor's discretion, the instructor will help the team to create an improvement plan. The purpose of the plan is to create a support system to help the team member improve their ratings in the future.
The first time an improvement plan is necessary, no penalty is incurred. Each subsequent time an improvement plan is necessary, the peer review score for the team member who needs improvement is as shown in the following table.
|First improvement plan||100%|
|Second improvement plan||85%|
|Third improvement plan||70%|
|Fourth improvement plan||0%|
Professional Development and Communication
Your learning in the computing profession does not end when you graduate from Worcester State University. Throughout your career you will be keeping up with advances in the field and contributing your newly developed expertise to the professional community. This done by reading professional publications and the blogs of others in the field. You will be assigned some readings during this course, but you should also be seeking out new materials on your own. We will list some sources during class, and you will search for others yourself.
You will be required to keep a blog about your part of the project and your experiences and learning in this class. Your blog must be publicly accessible[^1], and will be aggregated on the CS@Worcester Blog.
[^1]: If there is a reason why your name cannot be publicly associated with this course, you may blog under a pseudonym. You must see me to discuss the details, but your blog must still be publicly accessible and aggregated, and you must inform me of your pseudonym.
Over the course of the semester, you will create a portfolio that documents your learning in this course. Your final portfolio will have two components:
- Annotated collection of artifacts
- Reflection report
Every two weeks, you will submit an annotated list of links to artifacts that you have authored or helped to author.
Annotated Collection of Artifacts
During the semester you will collect artifacts as samples of your work demonstrating how you are achieving the course objectives. An artifact has the following characteristics:
- The artifact is publicly accessible via the Web.
- You authored or co-authored the artifact, and the artifact itself makes that clear.
- The artifact demonstrates teamwork, software development skills, and/or learning.
Examples sources of artifacts:
- Commits, reviews, issues, wikis, and logs on GitHub
- GitHub Gists
- Bug tickets on GitHub or JIRA
- IRC logs
- Blog entries
Example content of an artifact:
- Review of one or more articles or readings
- A tutorial
- A log of something you tried
- Console output + description
- Screen shot + description
- Code fragment (+ description if you did not author the code fragment with source information)
- An interaction between you and team members, product owner, scrum master, other developers, or client(s).
These lists are not intended to be comprehensive. They are intended to give you an idea of what is expected.
Every two weeks you will submit 2 or more artifacts that you authored or co-authored. For each artifact, create an entry in a log that contains the following:
- The URL to the artifact.
- The date of the entry.
- A small paragraph that answers the following questions:
- What is the artifact?
- Which course objective(s) does it relate to?
- Why did you choose the artifact?
As part of the your portfolio, you will write a reflection report that uses your collected artifacts to answer the following:
- What skills and knowledge where you able to apply from prior courses?
- What skills and knowledge have you improved or learned during the course?
- How have you grown as a team member; what would you improve in the future; and how might you do that?
Ultimately your final reflection report should be long enough to answer those questions by giving specific examples to justify your conclusions. As a guide your report should be between 2250 and 4500 words (about 5-10 pages).
An early draft of your report will be due around midterm so that you can receive feedback from the instructor.
Each team will give a final presentation on its work during the semester will be given during our scheduled final exam period - Tuesday, 12 May 2015 from 8:30am-11:30am.
All work will be submitted electronically through a variety of tools. The due date and time will be given on the assignment. The submission date and time will be determined by the submission timestamp of the tool used.
Please do not submit assignments to me via email. It is difficult for me to keep track of them and I often fail to remember that they are in my mailbox when it comes time to grade the assignment.
Late assignments will lose 10% of the maximum points per 24-hour period.
More importantly, your fellow teammates will be relying on you to complete your assigned tasks in a timely fashion, so that they can complete their own. You should be behaving professionally, living up to the group's expectations and enabling others to do the same.
If you are struggling with the material or a project please see me as soon as possible. Often a few minutes of individual attention is all that is needed to get you back on track.
By all means, try to work out the material on your own, but ask for help when you cannot do that in a reasonable amount of time. The longer you wait to ask for help, the harder it will be to catch up.
I am here to help you understand the material and be successful in the course.
You may contact me by email (Karl.Wurst@worcester.edu), telephone (+1-508-929-8728), or see me in my office. My office hours are listed on the schedule on my web page (http://cs.worcester.edu/kwurst/) or you may make an appointment for a mutually convenient time.
If you email me, please include "[CS-401]" in the subject line, so that my email program can correctly file your email and ensure that your message does not get buried in my general mailbox.
If you email me from an account other than your Worcester State email, please be sure that your name appears somewhere in the email, so that I know who I am communicating with.
You may expect that I will get back to you within 24 hours of your email or phone call (with the exception of weekends and holidays), although you will likely hear from me much sooner.
Code of Conduct/Classroom Civility
All students are expected to adhere to the policies as outlined in the University's Student Code of Conduct (http://www.worcester.edu/CodeofConduct/).
- Contribute to a class atmosphere conducive to learning for everyone by asking/answering questions, participating in class discussions. Don't just lurk!
- Seek help when necessary.
- Start assignments as soon as they are posted. Do not wait until the due date to seek help/to do the assignments.
- Make use of the academic success center (see below).
- Expect to spend at least 9 hours of work per week on classwork.
- Each student is responsible for the contents of the textbook readings, handouts, and homework assignments.
Americans with Disabilities Act
Worcester State University and this instructor are committed to the full participation of all students, and will provide accommodations for any student with documented disabilities who are registered with the Disability Services Office (DSO). Please contact the instructor as early as possible to discuss necessary accommodations. All information regarding disabilities will be treated with confidentiality. The DSO is located in the Administration Building, Room 131 and can be reached by phone (508-929-8733) or email (email@example.com).
Tutoring Services/Academic Success Center
Tutoring Services are offered through the Academic Success Center (ASC). The ASC is located on the first floor of the Administration building, A-130. Tutoring services are provided to students FREE of charge. Students seeking academic assistance should visit the center as soon as possible or contact the Tutoring Coordinator at 508-929-8139
The Writing Center
The writing center provides free assistance to students in the areas of research and writing. It is located on the third floor of the Sullivan Academic Building, S306. To schedule an appointment, please call 508-929-8112 or email the Center at firstname.lastname@example.org. To find out more information about the Writing Center including the Center's hours and the Center's Online Writing Lab, visit their website at http://www2.worcester.edu/WritingCenter/.
Worcester State Library
Worcester State Library has access to many articles through online databases including J-STOR. In addition many articles and book chapters are available to students through Inter-Library Loan (ILL). With a little planning, ILL expands your ability to get credible information sources about topics you pursue in your course work. Finally WSU students are free to use many of the library resources within the consortium. Given all of these resources it is extremely unlikely that you should have to pay for access to individual articles. Please work with the reference librarians to find the appropriate way to access materials you need. You have already paid for these resources through your fees—please make use of them.
Each student is responsible for the contents of the readings, discussions, class materials, textbook and handouts.
You should familiarize yourself with Worcester State College's Academic Honesty policy. The policy outlines what constitutes academic dishonesty, what sanctions may be imposed and the procedure for appealing a decision. The complete Academic Honesty Policy appears in: http://www.worcester.edu/CodeofConduct/
If you have a serious problem that prevents you from finishing an assignment on time, contact me and we'll come up with a solution.
This course is heavily influenced by discussions with Dr. Stoney Jackson of Western New England University (64 commuting hours in his car, lunches, attending his CS-390 class, and more...) during the Fall 2014 semester, and on-going. It is also based on materials from Dr. Heidi Ellis of Western New England University, and materials from the Teaching Open Source/POSSE community.
Our first class will be on Tuesday, 20 January 2015
Our last class will be on Tuesday, 5 May 2015
We will not have class on Thursday, 5 March 2015 because I will be away at a conference; Tuesday, 17 March 2015 and Thursday, 19 March 2015 due to Spring Break.
There will be no scrum meetings on Monday, 16 February 2015 and 20 April 2015 due to holidays, and during Spring Break 16-20 March 2015.
Final presentations will be given during our scheduled final exam period - Tuesday, 12 May 2015 from 8:30am-11:30am.
##Copyright and License ####© 2015 Karl R. Wurst, Worcester State University
This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/4.0/ or send a letter to Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA.