CPSC 329 Software Development Fall 2022

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 and prepared to engage in the day's activities. Lab sessions in particular will often involve group activities, and being late or unprepared impacts others as well as yourself. During class and 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/lab!)

If you bring a laptop to class for the purposes of note-taking, it is recommended that you turn off email and other notifications and close applications that are not needed in order to reduce the temptation of those distractions.


Technology Failures

This course makes use of servers set up specifically for this course, as well as the math/CS department webserver (math.hws.edu) and campus resources including Canvas and the Rosenberg 009 and Lansing 310 labs. If you run into a problem with a system that doesn't seem to be working as it should, please let me know.

You should regularly back up your work to protect against computer failures. This is automatically done nightly for the department's Linux filesystem; see the "Emergencies" section of Using Linux at HWS for more information. In addition, committing files to the SVN repository acts as a form of backup since they can be later retrieved from the repository. Any other course-related files on a personal computer can be backed up by periodically copying them to your CS account. See the "SSH, SCP, SFTP" section of Using Linux at HWS for more information. Note that you should only do this for course-related work!


Assignments and Evaluation

Software development requires doing to master, and students should expect to spend a significant amount of time outside of class.

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. As the goal of these "quizzes" is self-assessment, grading is based on completeness (did you answer the questions?) rather than correctness.

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 - unless otherwise directed, you should employ pair programming 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 team projects focusing on particular technical topics: GUIs, client-server networking and threads, object-oriented analysis and design
  • a large team 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 team 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 skills check associated with the final project and the written reflection take the place of a final exam.

Engagement: Learning isn't a passive activity where you sit back and watch someone else do things; you need to work with the material by thinking about it, trying to apply it, asking questions about it, and so forth. Teamwork is also an important element of this course, and successful teamwork requires everyone's contributions. The engagement grade covers participation in group activities in class and working successfully in a team on labs and project.

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

  • Labs: 12%
  • Projects: 45% (individual - 5%, team - 5% each, final - 25%)
  • Skills Checks: 30% (7.5% each)
  • Final Reflection: 3%
  • Daily Lessons and Engagement: 10%

Extra credit options may be available on some projects, including the final project. However, if you are struggling with the material or are concerned about your grade, seek help right away by coming to office hours rather than relying on extra credit.


Attendance

You are expected to be on time for all class and lab sessions, and to be present and engaged in the course for the full period. 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. In addition, announcements are made at the beginning of class, and late arrivals may miss important information.

Furthermore, when group work is involved 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.

However, while you should make every effort to attend class, lab, and scheduled project meetings, it is understood that there may be extenuating circumstances which make attending every session or meeting difficult. It is especially important that you follow current guidelines with respect to COVID, including quarantining if you test positive and/or have symptoms.

If you cannot attend class or lab, please let me know as soon as possible and make sure that you check the schedule page for new assignments and materials, complete any missed readings or other tasks, and come to office hours if you have any questions or need help with any aspect of the material. This should be done promptly to avoid falling behind. In the case of a project meeting, you should let your team know as soon as possible.

If you miss more than three classes or lab sessions during the semester or if you miss several classes/labs in a row, you are at greater risk for falling behind. In that case, please see me as soon as possible to discuss options for helping you stay on track.


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

Any handouts, examples, slides, 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. 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.

  • Daily lessons will generally not be accepted late as the primary purpose of these exercises is to be prepared for class and to determine what needs more attention in class. However, an occasional late handin (after the due date but still before class) will not directly impact your grade.

  • No other work will be accepted late.

Extensions allow handins after the due date without penalty, whether or not late handins are allowed for the assignment. Extensions are expected to be rare, as taking more time for one thing cuts into the time available for the next, and are primarily intended for when there is an extended absence or issue that affects a significant amount of the time for an assignment. In such a case, contact me as soon as possible to discuss a timeline for completing the missing work.

  • Extensions will not be granted for daily lessons. However, an occasional missed (or after class) submission will not directly impact your grade.

  • For labs, the skills covered in lab will quickly be put to use in a project; while an extension is possible, getting behind on labs means that you won't be prepared for the next project.

  • Extensions are difficult to accommodate for team projects. Planning your efforts so as to meet deadlines even in the case of unexpected surprises is an important component of software development. Teams 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 team so that tasks can be shifted when absences are unexpected. In the case of an extended absence, contact me as soon as possible; the rest of the team should make every effort to continue making progress anyway.

  • Every effort should be made to complete skills checks on time. If you have an unavoidable conflict with the dates of a skills check due to scheduled things such as sports competitions, official Colleges activities such as musical performances or debate competitions, academically-related events such as attending a conference, job interviews, or religious observances, you must make arrangements in advance for an extension. In the case of a last-minute illness or a personal or family emergency, you must contact me as soon as possible to discuss an extension. In all cases, you may not discuss anything related to the skills check until you have completed it. Note that leaving early for a vacation, being busy, needing more time to study, or having a bunch of assignments or exams due at the same time are not considered reasons for an extension on a skills check.

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


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 assess your mastery of the course material. These must be completed solely by the student whose name is on the handin. Only resources allowed in the assignment instructions may be used, and 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, but:

    • For daily lessons, the first attempt should be on your own. These tasks are an opportunity for you to test your understanding before class - if all your work is with others, you can't determine what you do or don't know.

    • For labs, utilize pair programming and trade off roles so that both partners act as driver and as observer. Make sure that both parties are contributing, and that you understand the full solution and could do it / explain it to someone else. The goal of labs is to gain skills needed for the projects.

  • 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 team projects, you are expected to collaborate fully with the members of your team and to contribute in a substantial way. Contributing little or nothing to the team effort and not accurately representing your contributions to the project is 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. For team assignments, this applies to sources outside the group - team 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.


Being Successful

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. Dates for major assignments are on the schedule page.

Note taking on paper is encouraged as it avoids the distraction of electronic devices and the act of handwriting helps with retention of information. (Anything that appears on the projector screen - slides, examples, or code - will be posted on the schedule page soon after class, so you don't need to copy down all of that material in your notes.) If you do use a laptop or other device to take notes, you are encouraged to turn off notifications and close other applications to reduce the temptation of those distractions.

A useful strategy for note-taking is to (only) make note of key ideas and examples during class and then rewrite your notes, filling in other details and relevant information, soon after class. This allows you to pay more attention during class, increases your engagement with the material, and helps you identify what you need to ask questions about.

If there is something related to the course format or materials that would help you be more successful in the course, please come discuss it with me.


Resources and Accommodations

Your primary resources if you need help with any aspect of the course material should be the course webpages, the instructor - ask questions during class, stop by office hours, send email, or drop by or schedule a meeting - and, for team assignments, your teammates.

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 16 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.

I encourage you to explore these and other CTL resources designed to encourage your very best work. You can talk with me about these resources, visit the CTL office on the 2nd floor of the library to discuss options with the staff, or visit the CTL website.

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. You can also contact Ingrid Keenan, x3832, keenan@hws.edu, or drop in at the CTL office on the 2nd floor of the library.

Disability accommodations:

If you are a student with a disability for which you may need accommodations and are new to our office, you should self-identify for services by scheduling a Welcome meeting (link to do so is on the top right of our webpage) with Disability Services at the Center for Teaching and Learning (CTL). Disability related accommodations and services will be provided when 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

Returning students may request their accommodation letter by emailing the request to the CTL@hws.edu or by using the link on the top right of our webpage to schedule a meeting should you feel one is necessary.

Please direct questions about this process or Disability Services at HWS to ctl@hws.edu or x3351. Jamie Slusser, Disability Services Administrator & Accommodation Specialist and Christen Davis, Associate Director of CTL for Disability Services are the main contact staff for Disability Services.