CS 4970 & CS 4971: Service Learning Practicum (SLP)

Go up to the main UVa page (md)

This syllabus applies two two courses: CS 4970 in the fall of 2017 (called "Capstone Practicum I") and CS 4971 in the spring of 2018 (called "Capstone Practicum II").

For both Fall 2017 and Spring 2018, https://github.com/aaronbloomfield/slp/

Fall 2017: M/W/F 12:00-12:50, Rice 130

Spring 2018: TBA

Instructors:

Course Description: The Service Learning Practicum course involves the application of software engineering and computing principles to the development of a complete software system for non-profit organizations in our community. Students will be expected to work through the entire software system development process, including customer interfacing for requirements, detailed design, and a comprehensive maintenance plan.

Pre-requisites: CS 4970 requires CS 2150 with a grade of C- or above. Ideally you have taken (or are taking) 3240 (Advanced Software Development) or CS 4240 (Object Oriented Design), but those are not required. Instructor permission is required to enroll in the course, however. CS 4971 requires CS 4970 as a pre-requisite.

Course objectives: Students who complete the course sequence will:

Meetings: This course is a practicum, and not a primarily lecture-based course. Thus, the course meetings will be quite different. On a typical week, there will be a group meeting day in class on Monday, a lecture on Wednesday, and no class on Friday. Note that there will be some weeks where we will have classes on Wednesdays and/or Fridays, such as the first few weeks of the fall semester. In addition, once groups are assigned (late September), each group will have to meet with the customer once every 2 weeks (for about 1 hour), and will have a SEPARATE meeting with the course instructor or graduate teaching assistant once every 2 weeks (for about 30 minutes).

Connectivity: While using electronic devices during class that are not directly course related (i.e., social media) is strongly discouraged, you will need to have some means of connecting to the Internet during lecture. This can be a laptop, smart phone, or anything else that can log into a website.

Participation: Participation is vital to this course. You must participate in the lecture (i.e., by attending) and in your project and group meetings. You must participate in the work of the group -- this means that everybody must contribute to the code base. Furthermore, you will be required to fill out occassional surveys (4-5 a semester) and complete your time tracking.

Grades: See the first slide set for details (specifically here). This course is not being graded on a bell curve, which means that everybody could receive an A. Likewise, everybody could receive a D. Any disagreement with any of the returned grades, including iteration evaluations, must be brought up within two weeks of when the grade was returned. Failure to produce a viable and working software system -- in either December (for CS 4970) or May (for CS 4971) -- will result in either an incomplete or failure for the entire group. Note that for the 4th year BS CS majors, this will prevent May graduation. Note that the grades for CS 4970 in the fall, and CS 4971 in the spring, are completely independent. Finally, authority on any decisions in this course rests with us, not with this document

Special Circumstances: Students with special circumstances (athletics, extra time required on exams, LNEC considerations, etc.) need to let me know during the first week of class.

Textbooks: None; however, you may still have to purchase something (see the Github section, below). There will be online readings.

Assignments: For the first few weeks, there will be individual homeworks, about 1 per week. Once the projects are assigned in late September, the rest of the assignments will effectively be project milestones.

Exams: None planned. I reserve the write to add one if I feel like I want to spend some time grading. There may be an individual project in lieu of the final exam.

Github: We will be using github for source code management. The projects will be kept in private repositories, which will be provided to you at no cost. However, for your individual homeworks, you will need to acquire 2 private repositories. Students can get those for free, although you must give them a week or so to process your request. If you have used all of yours, or if you wait until the last minute to request your free private repos, then you will have to purchase some. The private repos will need to be kept intact until the assignment is graded and returned.

Time Tracking: Each student must keep very careful track of the number of hours s/he works on the project. This must be totaled by week. This is not expect to take very long to do (say, 2 minutes each week), but must be done carefully from the beginning of the course. More information on this in the first lecture.

Miscellaneous: There are a few miscellaneous topics:

Honor Policy: Standard UVa honor policy. For this course, that means not using other code without appropriate attribution.