CPSC 329 Software Development Fall 2020

CPSC 329 Assessment and Policies

You are expected to be familiar with the course policies stated below. Ignorance of a policy is not an excuse for violating a policy or being surprised when it is applied to you, and will not exempt you from its penalties.

On this page:


Communication

All course information, materials, and announcements will be posted on the course webpage and/or Canvas. You are expected to check Canvas and the schedule page regularly.

Individual communication will take place via email. You are expected to check your HWS email account regularly.


Conduct

As with any course, you are expected to be on time prepared to engage in the day's activities for both class and lab sessions. Labs and class sessions will often involve group activities, and being late or unprepared impacts others. During class/lab, you are expected to be present and on task for the whole period - web surfing, texting, playing games, doing assignments for other courses, etc are not acceptable, nor is leaving during the session (absent an emergency). (Take care of any necessary business before or after class!)

However, meeting and interacting online brings some additional considerations. Many distractions are present on a computer; you should turn off email and other notifications and close applications that are not needed for class in order to reduce the temptation of those distractions. Please keep your video on to aid in conversation and maintaining a sense of community, and be aware of the impact of your environment on others - if there is noise or activity in your environment, please mute yourself when you aren't speaking so that the class is not interrupted. Additionally, if there are others around, you are encouraged to use headphones to avoid bothering them.

This course will use Zoom. Please make sure that you have Zoom installed and that you are familiar with using it. You should also make sure to join each session early enough to make sure that your speaker, microphone, and camera are working properly. (The ability to troubleshoot individual connections during class time is limited.) Keep speakers away from microphones to avoid feedback. During class/lab, please have the Zoom chat open.

This course and its materials are limited to officially enrolled students. Do not share the Zoom link with others or post it in a public place. In addition, Zoom classes may not be recorded or distributed by anyone other than the instructor. Materials posted on Canvas are likewise not to be distributed without instructor permission.


Technology Failures

There may well be technological glitches at some point during the semester. In general, use the Zoom chat as a backup form of communication in case of audio/video problems during Zoom sessions and email if you can't access Zoom or it is outside of class time.

If there are problems during class (audio/video issues with Zoom, Zoom disconnects, your computer crashes, the network goes down, etc), try to get reconnected as soon as possible. (For audio/video issues, try quitting and restarting Zoom, then try rebooting your computer if that doesn't work.) If the issue can't be resolved reasonably promptly, use backup communication methods to communicate your problem as soon as you are able to (though note that the ability to troubleshoot individual issues during class time is limited - test things ahead of time so that you have a working setup; email/come to office hours if you need help). For a problem not on your end (such as my computer crashing), continue to try to reconnect to Zoom and keep an eye on your email for information. If it is possible to resume during the class period, expect that to happen.

Outside of class/lab times, email if there is a system-related issue (such as the course webpage not being available or a server being down). Keep an eye on your email for information. (For a campus system, you can also monitor the IT News and Alerts page.)

Of course, if email or the network itself is down, communication will not be possible. During class/lab time, continue to try to reconnect to Zoom and monitor your email until the end of the period in case the problem is resolved. Otherwise periodically check to see if service has been restored.


Assignments and Evaluation

Daily Lessons: For most class and some lab sessions you will be expected to complete a lesson beforehand involving readings and/or videos and some questions about the material to help you self-assess what concepts you understand, learn what you don't, and identify where you have further questions.

Labs: Labs are an opportunity for hands-on practice with software and concepts and will typically be completed in pairs. (Note that you are still responsible for all of the material covered by the lab - pair programming is recommended, rather than dividing up the task and working independently.) Labs are intended to be short enough that most, if not all, of the lab can be completed during the lab period if you come to lab prepared and work diligently. (Anything not completed during lab will need to be finished outside of class.)

Projects: This is a course about software development, so programming projects are an important component of the course. There will be five projects:

  • an introductory individual project to review/practice object-oriented programming concepts
  • three small group projects focusing on particular technical topics: GUIs, client-server networking and threads, object-oriented analysis and design
  • a large group final project to develop a piece of software from design to implementation, bringing together all of the material covered in the course

Skills Checks: Each of the group projects will be followed by an individual assignment covering the main technical content of that project (GUIs, client-server networking and threads, object-oriented analysis and design; for the final project, the focus will be on coding practices). These may involve programming tasks and/or written questions and will be graded as an individual component of the corresponding project.

Final Reflection: There will be a final written reflection at the end of the course. There will not be an additional final exam; the final project and written reflection take the place of a final exam.

Grades: Grades in this course will be computed as follows:

  • Labs: 10%
  • Projects (excluding the skills checks): 57% (individual - 5%, small group - 9% each, final - 25%)
  • Skills Checks: 20% (5% each)
  • Final Reflection: 3%
  • Engagement (includes daily lessons and attendance): 10%

Extra credit options may be available on the final project. If you are struggling with the material or are concerned about your grade, seek help right away by coming to office hours rather than waiting until later in the semester.


Attendance

Any absence, whatever the reason, means that you miss out on discussions and activities that take place in class. This puts a greater burden on you to catch up, and students who regularly miss class often end up not doing as well in the course. However, when group work is involved - as it is in class, labs, and projects in this course - being on time, present, and contributing to the group is even more important because it impacts others besides yourself. For example, being late for a lab or project meeting wastes the whole group's time as others must wait for you or take time to catch you up later.

As a result, you are expected to be on time for all class and lab sessions and to be present for the full period. ("Present" means at the computer and engaging in the class, not logging into Zoom and then doing other things.) In addition, you are expected to attend project meetings scheduled (by the group) outside of class time and to be a contributing member during group tasks, including labs and projects.

Attendance will be taken in class and lab and will be factored into the engagement grade: any unexcused absence from lab and three or more unexcused absences from class will lower your engagement grade. There is no penalty for excused absences, but you must notify me promptly of the reason for any absence that is to be considered excused. It is also your responsibility to make sure that you sign the attendance sheet each day; repeatedly forgetting to sign in may result in the accumulation of unexcused absences. Absences/lack of contribution to group projects will be factored into the project grade.

Excused absences include absences due to sports competitions, official Colleges activities such as musical performances or debate competitions, academically-related events such as attending a conference, religious observances, illness, or personal or family emergencies. Since the course is being held remotely, an unexpected technology problem or one outside your control (such as the campus network going down) is also grounds for an excused absence. A reason must be provided in order for such an absence to be counted as an excused absence. (Note that providing a reason does not automatically make an absence excused - it must also be one of the reasons listed above.)

Missing class for other reasons - such as being too busy, oversleeping, or leaving early for a vacation - is considered to be an unexcused absence. Any absence for which no reason is provided is automatically considered to be unexcused.

While attendance is important, it is even more important that you do not go out in public if you are not feeling well or have been exposed to COVID-19 and need to quarantine. You will not be penalized for missing class for these reasons, though, because the course is being held remotely, it is expected that you will plan ahead for foreseeable contingencies such as being quarantined, not being able to access labs or other resources on campus, and having to leave campus (whether at Thanksgiving or earlier in the semester) in order to minimize such interruptions. Communicate with me about possible alternatives if you anticipate not having access to the necessary resources.


Making Up Work, Late Policy, Extensions, and Rescheduling Exams

Any handouts, examples, recordings, and other materials from class will be posted on the course website (on the schedule page) and/or on Canvas. Announcements will be posted on Canvas. If you miss class, you should review this material as soon as possible and seek help at office hours as needed.

Late handins refer to assignments being accepted for grading after the due date. No work is accepted late except in the case of a last-minute emergency that prevents an on-time handin of already-completed work. In this case, notify me as soon as possible and make arrangements to complete the handin promptly. This is not an extension of time to complete the assignment.

Extensions allow handins after the due date without penalty, whether or not late handins are allowed for the assignment. Extensions will not be granted for daily lessons, and are difficult to accommodate for other work. Daily lessons are time-sensitive; much of the value of these exercises is to be prepared for the day's class and to determine what needs more attention. For daily lessons it is understood that (very) occasionally it may not be possible to complete the task on time - missing a few will not directly impact your grade. For labs, the skills covered in lab will quickly be put to use in a project; getting behind on labs means that you won't be prepared for the next project. For projects, planning your efforts so as to meet deadlines even in the case of unexpected surprises is an important component of software development. Groups should plan (and adhere to!) a timeline that gets critical components done early and should adopt practices that allow for flexibility in task completion so that an individual emergency doesn't doom the project; individuals should plan around absences when they are foreseeable and promptly communicate with their group so that tasks can be shifted when absences are unexpected.

In the event of an extended interruption or an excused absence or issue that affects a significant amount of the time for an assignment, contact me as soon as possible to discuss how to make up the missed work. Note that leaving early for a vacation, being busy, having a bunch of assignments due at the same time, and foreseeable computer failures are not considered reasons for an exception to the "no extensions" policy - schedule your time carefully, save often, and make backups of your files.

No work will be accepted after the end of the Registrar-scheduled final exam time slot except in the case of an incomplete.


Disability Accommodations

If you are a student with a disability for which you may need accommodations, you should self-identify, provide appropriate documentation of your disability, and register for services with Disability Services at the Center for Teaching and Learning (CTL). Disability related accommodations and services generally will not be provided until the registration and documentation process is complete. The guidelines for documenting disabilities can be found at the following website: http://www.hws.edu/academics/ctl/disability_services.aspx

Please direct questions about this process or Disability Services at HWS to Christen Davis, Coordinator of Disability Services, at ctl@hws.edu or x 3351.


Working Together and Academic Integrity

The HWS Principle of Academic Integrity governs all of the work completed in this course. Students should read the full policy.

For this course:

  • Skills checks and the final reflection function as exams in order to assess your mastery of the course material. Specific instructions will be provided with the assignment, but in general these will be open book/notes/Internet (you may utilize reference material but not search for solutions to specific problems) but must be completed solely by the student whose name is on the handin - the only person you may discuss the assignment with is the instructor.

  • Daily lessons and labs are for learning and practice - a low-stakes way to learn new things and determine what needs further attention. Discussing with others and getting help from others is fine and encouraged, though with two important caveats:

    • copying solutions from someone or somewhere else is never acceptable, and
    • if all your work is with others, it is difficult for you to know what you do and don't know.

    As a result, you should always first try to complete the assignment on your own and then should always write up your answers/do the task on your own after any help or discussion. (For labs, this applies to the team.) Make sure that you fully understand the end result and where it came from - a good self-test is whether you can explain both the solution and how it was arrived at to others.

  • Projects fall in between practice and demonstration of mastery - these are more significant tasks where skills are demonstrated but are also learning opportunities. Getting help from others and looking for technical references on the Internet is fine, but looking for solutions and passing the work of others off as your own (which is what happens if you take solutions from elsewhere) is not - what you hand in must be your work, that is your ideas and your effort. (In the case of libraries or other packages that you might want to use, ask first.) For group projects, you are expected to collaborate fully with the members of your group and to contribute in a substantial way. Contributing little or nothing to the group effort and not accurately representing your contributions to the project is akin to taking credit for the work of others.

For all assignments, copying part or all of someone else's solution is expressly prohibited and it is never acceptable to be in possession of someone else's program or solution before you have handed in your own. Decompiling or reverse-engineering someone else's code (including provided code) is also prohibited. With groups, this applies to sources outside the group - group members should be sharing and fully collaborating within the group.

Violations can result in anything from a warning to point deductions or a 0 on the assignment for the first offense. A second such offense is grounds for failure in the course. Cases may also be referred to the Committee on Standards. Note that the HWS Principle of Academic Integrity states:

Academic dishonesty is determined in every case by the evidence presented and not by intent. Questions of intent and circumstances under which an infraction occurred may be considered in determining a sanction.

There are no exceptions to this policy; ignorance of the policy and desperation ("It was the night before it was due and there wasn't anyone else to ask!") are specifically not excuses for violating the policy. If you are having trouble with the course material, come to the instructor! - it is never advantageous to "borrow" someone else's solution, and the time spent trying to disguise this "borrowing" is far better spent getting help.


Plagiarism in Programs and on Problem Sets

As with papers, verbatim copying of programs and problem solutions constitutes plagiarism. Also as with papers, plagiarism is not limited to verbatim copying - copying the significant ideas and structure of someone else's program/problem solution also constitutes plagiarism.

But aren't all programs which solve the same task/solutions to the same problem pretty much the same, so won't my program/solution look like everyone else's even if I worked by myself?
It is true that programming languages are simpler and more structured than human languages like English, and so two independently-written programs solving the same problem will be more similar than two independently-written papers on the same topic. However, "more similar" doesn't mean "the same" - there is still flexibility in many aspects of the program, and each programmer will express themselves somewhat differently. It is clear when two programs were derived from the same source, and I routinely run a plagiarism-detection tool on all handins.
Problem sets are similar - there is enough room for variation in most solutions for it to be clear when solutions were derived from the same source.

Programming/problem solving techniques are often explained via examples - what's the difference between using an example and "copying the significant ideas and structure"?
Nothing - the whole point of examples is to provide the significant ideas and structure of the solution, with the idea that the details would be modified for the particular situation.

OK, then, so I can't use any examples because that constitutes plagiarism?!
No, not exactly. What is and isn't allowed is a matter of degree. Let's first define "example" and "solution":

  • An example illustrates a technical point or problem-solving strategy, applied to a different problem instance than the one you are trying to solve. An example can't be used as-is to solve your specific problem, but can be adapted to address some aspect of the problem. For example, an example demonstrating the proper syntax for a while loop is OK to use when writing a program which involves a while loop (as long as the point of the problem isn't to write exactly the while loop given in the example).
  • A solution gives a significant amount of the answer to your particular problem (or an extremely similar problem). Quantity is relevant here - you may view something as just an example (because it doesn't solve your exact problem), but if a single source covers most of what you need to do, it may well be what I consider a "solution".

Using "examples" (as defined above) is generally OK but using "solutions" is not.

There's a fuzzy middle ground here, and I'm still not sure exactly what is OK and what isn't.
Then ASK! - before you get into whatever situation you are wondering about. A few additional guidelines which may help:

  • Any materials provided as part of the course (examples in the textbook, from class, and directly posted on the webpage) are acceptable to use/adapt (unless specifically forbidden, such as on exams).
  • Any solutions written by another student (either this term or in previous terms) are not acceptable to use as "inspiration" or a guide when you are working on the same assignment. (Looking at someone else's work later, after the assignment has been handed in, is fine.)
  • Use caution with materials from other sources - think "examples, not solutions" and ask if you have any questions. In fact, ask even if you are sure something is allowed. (Specifically looking through other materials to find solutions to problems you've been assigned is not acceptable.)
  • Use common sense - the purpose of assignments is for you to practice and gain understanding of the material, and for you to demonstrate what you have mastered. If you are mostly just tweaking something written by someone else - even if you spend a lot of time renaming variables and inserting comments - then what you are turning in isn't your work.

Being Successful and Getting Help

There is a lot of new material in this course, and at any point you will potentially have several active assignments: daily lessons, a lab, and a project or skills check. Don't fall behind! It is important that you budget your time so that you can fit all of these things in and get them in on time.

The primary resources for this course are your group (for labs and group projects), other students in the course (when allowed), and the instructor - during lab, during office hours, via email, or scheduling a meeting outside of office hours.

For more general help, such as with writing, study skills, or time management, you are encouraged to check out the Center for Teaching and Learning (CTL).

At Hobart and William Smith Colleges, we encourage you to learn collaboratively and to seek the resources that will enable you to succeed. The Center for Teaching and Learning (CTL) is one of those resources: CTL programs and staff help you engage with your learning, accomplish the tasks before you, enhance your thinking and skills, and empower you to do your best. Resources at CTL are many: Teaching Fellows provide content support in 12 departments, Study Mentors help you manage your time and responsibilities, Writing Fellows help you think well on paper, and professional staff help you assess academic needs.

Study Mentors: The CTL resource especially valuable to students either just starting college OR adjusting to the demands of their choice of Major is the Study Mentor program. Study Mentors engage directly with each student in the process of adjusting to new academic demands: they help you find the time you need for both your academic and co-curricular activities, and can help you find strategies to accomplish the tasks in front of you and enhance your reading and study time. Study Mentors may be especially important for those of you who are involved in many activities, work on or off campus, are studying for Teaching Certification, graduate school exams, or prepping for fellowships, or who have one or more unusually demanding courses on your schedule. To meet with a Study Mentor, make an appointment via StudyHub on the CTL website.

For Fall 2020, the Teaching Fellows, Writing Fellows, and Study Mentors will be available via both Zoom and, when possible, in-person meetings. If students choose an in-person meeting, it will be held in a classroom where social distancing can be practiced. All students will be required to wear masks throughout the meeting. All appointments can be booked through StudyHub on the CTL website https://campus.hws.edu/StudyHub/Appointments/.