CPSC 124 Introduction to Programming Spring 2018

CPSC 124 Course 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

You are expected to regularly check your HWS email and the course web page (especially the course schedule). Assignments, handouts, and other information relevant to the class as a whole will be posted on the course web page. Email will be used in the case of a particularly time-sensitive announcement (e.g. an announcement about a homework which is due in the next class meeting) or for matters which are only relevant to a few people in the class.


Classroom Behavior

You are expected to be on task during class and lab - web surfing, texting, playing games, doing assignments for other courses, etc. are not acceptable.

Except in the case of an emergency, leaving the classroom during class or lab is also not acceptable. (Take care of any necessary business before or after class!)

Please do not use headphones in lab, as this makes it difficult to interact with you about the lab and you may miss important announcements.


Assignments and Evaluation

There are three components to successfully learning a topic: learning the fundamental concepts, practicing the application of those concepts, and demonstrating your mastery of the material.

Fundamentals: The first three components of the coursework emphasize fundamental concepts.

  • Readings: In computer science, one often begins to learn new things by reading about the topic - especially in conjunction with examples. Your first exposure to new topics will come the same way, via readings. Readings are due at the class period for which they are listed on the syllabus (i.e. they are to be done before class). These readings will be the starting point for class, so don't skip them! Assigned readings will be accompanied by reading guides; the purpose of the guides is to help you identify the important concepts to focus on and to help you learn how to read technical material.

  • Warmups: Assigned readings will also be accompanied by a short set of exercises ("warmups"). The warmups will address concepts covered in the reading, and are intended to get you thinking about what you've read and to determine what topics need more attention in class. Warmups are due by midnight before the class period for which the reading is assigned. Warmups cannot be handed in late or made up after the fact, but the three lowest scores will be dropped when computing the final grade.

  • 5 Minute Syntax Quizzes: When you are learning a foreign language, you can generally make yourself understood even if your grammar and spelling aren't perfect. With programming, however, syntax problems are deal-breakers - the computer won't run your program if there is even one error - and your progress will be greatly slowed if you are continually struggling over syntax. This means you should strive to memorize the correct syntax as quickly as possible. To this end, there will be about 10 short syntax quizzes. They will be given at the start of class, usually one or two class periods after a new construct is introduced. (Quizzes will be announced one class period in advance.) Syntax quizzes cannot be made up if you are late to class or miss class, but the lowest quiz score will be dropped when computing the final grade.

Practice: Programming is learned by doing, not just reading. The next components of the coursework emphasize actively applying the fundamental concepts.

  • Class Participation and Group Activities: Many class periods will involve working through examples, either as a class or in small groups. You are expected to contribute to these activities, by regularly asking questions or volunteering answers during class and by staying on task and contributing to your group's work during group activities. Note that being able to contribute meaningfully in class also means that you come to class prepared by having done the reading.

  • Labs: Weekly lab assignments are intended to give you practice integrating and applying the course material. The lab assignment will posted several days in advance of the lab - you should read through the handout before coming to lab, so you are ready to get started working right away. If you come to lab prepared, you should be able to make a good dent in the assignment during the lab period - but you will likely need to spend additional time outside of class to finish it. Lab assignments are generally due at the start of the lab session one week after they are assigned. Labs may be handed in late, but with a point penalty.

Mastery: The remaining coursework is geared towards demonstrating your mastery of the material.

  • Exams: There will be three exams - two in class during the term, and a final exam in the registrar-scheduled final exam timeslot. All three will be written (no programming on the computer) and closed book/notes. Details on the material covered and the exact format of each exam will be announced prior to the exam. Written exams are a chance to demonstrate that you have mastered the fundamentals, and to show that you know how to approach solving a problem.

  • Projects: Complementing the written exams, there will be three programming projects. These are more sizeable programs than the labs, and are intended to give you practice with skills needed when you create larger programs - as well as to demonstrate that you can produce a working program. (Projects really belong both under "Practice" and "Mastery" - they are a chance to practice skills as well, but in a more limited-help environment than the labs.) The final project will be due at the time of the final exam.

Final Grades: Final grades will be computed as follows:

  • Warmups: 5% (approx 0.25% each) - a few of the lowest grades will be dropped
  • Syntax Quizzes: 7% (approx. 0.75% each) - lowest grade will be dropped
  • Class Participation and Group Activities: 5%
  • Labs: 23% (approx. 2.3% each)
  • Exams: 30% (midterms 7.5% each, final exam 15%)
  • Projects: 30% (10% each)

Talks: The Math/CS Department sponsors a series of colloquium talks from students, faculty, alumni, and visitors during the semester. These talks are a great way to find out about a variety of topics in the fields of mathematics and computer science. You can earn extra credit for attending talks relevant to computer science - this includes computer-science-themed math/CS colloquium talks, as well as any other talk given on campus that is relevant to computer science. (Feel free to suggest talks that might qualify.) To get credit for attending a talk, you must be present at the talk and must submit a three-paragraph writeup of the talk: one paragraph summarizing the talk, one paragraph discussing what you learned from the talk, and one paragraph explaining why the talk is relevant to computer science. Writeups are due within one week of the talk. Writeups which are clearly written, substantive, contain the three paragraphs listed, and make a strong case for the relevance of the talk to the course will earn up to 5% of the class participation grade per talk. A maximum of four talks will be counted for extra credit.


Grading Rubrics

Warmups will be graded on a simple ✓, −, 0 scale:

  • all questions answered,
  • explanations are provided for all answers, and
  • the explanations show evidence of trying to apply the reading to answer each question
Note that correct answers are not required to get a ✓, nor do correct answers alone ensure a ✓. Warmups are not reading comprehension quizzes - they are to get you to think about the material, and to determine what material needs more attention in class.
  • some questions answered,
  • some explanations are given, and
  • the explanations show some evidence of trying to apply the reading to answer the questions
0
  • no questions answered, or
  • no explanations given, or
  • explanations do not show evidence of applying the reading

Several of the lowest scores will be dropped. Letter grade equivalents will be approximately 90% ✓ = A, 75% ✓ = B, 60% ✓ = C, 50% ✓ = D. This assumes that the other scores are −; having 0s instead of −s will lower the grade.


Coding Standards

Following reasonable conventions is important for readability of your code. The course coding standards specify the particular conventions you should use in this course. You will be graded on how well your programs adhere to these standards; not following these standards can result in points lost on assignments.


Attendance

You are expected to attend and be on time for all class meetings and lab sessions, and to be present and engaged in the course material for the full class period. Announcements are made at the beginning of class, and late arrivals may miss important information (as well as being marked as absent). It is your responsibility to make sure that you sign the attendance sheet each day.

Attending and participating in class (and especially lab) is an important part of your experience in this course, and students who miss class typically do worse on assignments and exams. There is no penalty for up to three absences (as long as you make up the work and material missed), but if you have more than three absences (whether excused or unexcused), any unexcused absences will lower your final grade by 1/3 of a letter grade for the first such absence, 2/3 of a letter grade for the second, and a full letter grade for each of the third and subsequent absences.

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


Making Up Work

You are responsible for acquiring any notes, handouts, assignments, and other material missed as the result of an absence, whether excused or unexcused. This should be done promptly to avoid falling behind.

Every effort should be made to hand assignments in on time, even if you are absent from class that day. If a last-minute emergency prevents you from handing in completed work on time, the assignment will be accepted late without penalty only if arrangements are made as soon as possible to get the assignment handed in. If you need more time to complete the assignment, then you need an extension (see below).

Missed warmups and syntax quizzes cannot be made up, but one or more of the lowest grades will be dropped when computing final grades.

Exams can only be made up if the absence is excused, and additionally require documentation from an appropriate person (dean, doctor, etc) to validate the excuse.


Late Policy, Extensions, and Rescheduling Exams

Warmups and syntax quizzes will not be accepted late and cannot be made up. One or more of the lowest grades will be dropped instead.

Labs and projects will be penalized 3% if turned in by midnight on the due date and 8% per day or part of day thereafter. (e.g. an assignment due Thursday will be penalized 24% if it is turned in on Sunday) Deductions are calculated as a percentage of the total points possible on the assignment, not the number of points you earned. Labs turned in more than five days late will have a maximum deduction of 40% - so it is best to get your lab in on time, but late is better than never. Projects will not be accepted more than five days late. College breaks such as spring break count as one day regardless of their actual length when it comes to determining lateness; something due the Friday before spring break, for example, would be considered only one day late if turned in by midnight on the last Sunday of the break and two days late if turned in on the Monday immediately following the break.

Extensions will only be granted for the kinds of things that count as excused absences, and generally only if a significant portion of the time allocated for the assignment is affected. Note that leaving early for a vacation, being busy, or having a bunch of assignments due at the same time are not considered reasons for extensions. Save often and make backups of your files - computer failures do occur and are generally not grounds for an extension.

Exams can only be rescheduled if you will have an excused absence on that day.

Arrangements for extensions or rescheduled exams must be made sufficiently in advance of the date in question - contact me as soon as you know you'll need an extension or will miss an exam rather than waiting until the last minute! Last-minute requests may be denied. Also, it is your responsibility to make sure there are actual arrangements (a specific new deadline or date) - simply sending an email notification about an upcoming absence does not constitute "arrangements".

Extensions will not be granted retroactively - if a last-minute emergency causes you to miss an exam or prevents you from handing an assignment in on time, the make-up policy applies (see "Making Up Work" above). Note that the "extension" in this case will only be for long enough to get the already-completed assignment handed in; if you need more time to complete the assignment, it will be considered late.

It is important to stay on top of things in this course - the material is cumulative, so you can't just skip one topic and figure you'll catch up later. Late handins and requests for extensions are expected to be a rare occurrence - being late on one assignment (whether due to an extension or not) takes away time from the next, and a habit of late handins will have a significant impact on your grade as well as make subsequent topics harder to master.

Note that computer labs may not be available at all hours or over college holidays, so be sure to take this into account if you are relying on those facilities. Furthermore, labs tend to get very busy right before deadlines, especially at the end of the semester. "I couldn't get my work done because I couldn't find a computer!" is not a valid excuse.

No work will be accepted after the end of the timeslot in which the final exam is scheduled.


Working Together and Academic Integrity

The HWS Principle of Academic Integrity governs all of the work completed in this course. Specifically:

  • Syntax quizzes and exams are to be completed solely by the student whose name is on the paper. Both are closed book, and the only person you may discuss them with is the instructor.

  • Warmups are meant to complement your reading and assess your understanding; they should be completed individually.

  • Unless otherwise specified, labs and projects are individual assignments. This means that what you turn in must be your own work - your ideas and your effort. Discussing ideas with and getting help from the instructor, Teaching Fellows, and other students in the course is fine but working together with someone else to produce a solution which you both hand in is not.

    To be clear:

    • You must write up your solution independently and in your own words - you may not sit side-by-side with a friend and work out a solution together. It should be obvious that you may not borrow or copy solutions or code from someone or somewhere else, and it is never acceptable to be in possession of someone else's program or solution before you have handed in your own. (Using someone else's solution "as a guide" to completing your own is plagiarism, not collaboration, even if you make changes for your own version.) Decompiling or reverse-engineering someone else's code (including provided code) is also prohibited.

    • You must fully understand the solution and where it comes from. (You should be able to explain it to someone else.)

Too-close collaboration on labs will generally result in a warning the first time. Otherwise, submitting work which is unreasonably similar to another person's work and/or not being able to explain any part of your solution will result in a minimum penalty of a 0 on the assignment. A second such offense is grounds for failure in the course. Plagiarism offenses may also be referred to the Committee on Standards.

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.


From the HWS Catalogue: (available online at http://www.hws.edu/catalogue/policies.aspx)

Principle of Academic Integrity

The faculty of Hobart and William Smith Colleges has oversight of the curriculum and the classroom experience, and insists that students undertake all academic exercises with the utmost honesty and integrity. This principle of academic integrity lies at the heart of our learning community and forms the foundation for everyone's academic efforts.

Starting with adherence to the principle of academic integrity, the individual student bears responsibility for his or her own education and must undertake all academic work with complete honesty and integrity. As well, each student must do his or her best to assure that this principle extends to all others in the community.

Categories of academic work covered by the principle of academic integrity include, but are not limited to, the following:

  • Examinations: Giving or receiving assistance during an in-class or take-home examination, quiz, or any other academic exercise, except as specifically authorized by an individual course instructor, violates this principle.
  • Papers: The presentation or reproduction of ideas, words, or statements of another person as one's own, without due acknowledgment, is considered plagiarism and violates this principle.
  • Library Use: Failure to sign for materials taken from the library, destruction or theft of any library materials, and similar abuses of library privileges infringe upon the rights of other students to fair and equal access and violate this principle.
  • Reports and Laboratory Exercises: Giving or receiving unauthorized assistance and the fabrication of data or research results violate this principle.
  • Computer Use: Any deliberate attempt to prevent other users' access to computer services, deprive them of resources, or degrade system performance violates this principle. The use of programs or files of another computer user or the use of another person's account number or password without permission also violates this principle. Failure to attribute the source for any information or writing derived from any computer source (database, website, internet, etc.) and incorporated in any academic work submitted is also a violation.
  • Advising and Registration Forms: Forging an adviser's signature or altering any signed document will result in the student's de-registration. The student will not be allowed to re-register until the adviser has approved any changes. Any student suspected of forgery of any faculty or administrator signature may face disciplinary action by the student's dean or the Committee on Standards.

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.


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 that is plagiarism.
  • Apply the "what have you learned?" test: copying someone else's solution and then making a few changes means that perhaps you have learned a solution for the particular problem, but you haven't learned anything about the process of coming up with the solution. The process is the important part - if all you know is a particular solution, you can only ever solve that exact problem, but if you know how to figure out solutions, you can solve any problem. Using an example (as defined above) is OK because you are still involved in the process (you have to adapt the example to your particular circumstances) but using a solution is not because it shortcuts the process by going straight to the answer.

Being Successful and Getting Help

Programming can be a lot of fun (and it's great to be able to point to something you created), but it can also be challenging to learn. Here are a few tips:

  • You have to memorize the syntax and semantics of each programming construct. This is akin to memorizing vocabulary when learning a foreign language - you can't express yourself without having the vocabulary, and the computer doesn't allow any room for error. (Note that this doesn't demand that you always write programs without error - but you need to know the correct syntax and semantics in order to understand and fix errors that arise.)

  • Practice is essential. Blowing off warmups or skipping an assignment means that you haven't had as much exposure to the topic and, given the cumulative nature of the material, means you'll have more trouble on the next assignment.

  • Budget your time carefully. Practice takes time, especially as you are learning new things. Assignments are constructed to be as short as possible while still providing necessary practice, but you should expect to spend a substantial amount of time on this course. Start on assignments early and plan to spend some time each day working on them - waiting until the night before something is due will make you very sad!

  • Get help when you need it. Odds are good that you'll get stuck at least once during this course - not because things are deliberately left out in order to stump you, but because Java is too big to hope to cover every kind of error or problem that you might possibly run into in advance. (It also doesn't help that the computer demands absolute correctness and tells you immediately if something is wrong.) Syntax errors are a common source of "impossible" problems - the compiler error messages don't always make a lot of sense unless you know what the correct syntax is. What to do? Spend some time trying to solve the problem yourself, but then recognize when you are stuck and don't be shy about asking for help. (Also, try to avoid randomly making changes in the hopes of fixing the problem - get help understanding the problem, then fix it.) This is also a good reason to work on assignments before the last minute - so you have time to get help when you get stuck.

If you are having trouble with the course material or get stuck on a problem you can't figure out how to solve, don't just ignore it! The course material is cumulative, and skipping a difficult topic will make it harder to be successful with the next.

Your first resource if you need help with any aspect of the course material should be the instructor - ask questions during class and lab, stop by office hours, send email, or drop by or schedule a meeting.

Additional resources include the CS Teaching Fellows, who are available in the Rosenberg 009 computer lab 7-10pm Sun-Thu. Their job is to help you with debugging and with thinking through the logic of your program; they will not simply give you the answer but rather help you figure out how to get the answer.

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, Q Fellows support you in courses that require math, 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.


Taking Notes

You should take notes.

Things done on the computer in class - example programs, any slides presented - will be posted on the schedule page after class so that you don't need to spend all of your time furiously writing these things down.

This means that your note-taking can and should be selective - focus on the important points (be alert for cues that tell you something is important, and be actively engaged in thinking about the material so you can identify what is important) and bits of information that expand on what you know will be available later, and include a brief reference (slide title, name of the example program, etc) so you can remember what the note refers to later on. Don't try to write down every word that is said - you'll be too busy writing to think about what is being said, much less determine if you understand it or not.

Soon after class (while you still remember something about what your notes refer to), you should reorganize and rewrite your notes. While it is easy to skip, especially if you are short on time, this is an important step for turning short-term knowledge into long-term knowledge, and also for identifying if there's anything that isn't clear so you can ask about it before the next class. When you rewrite, combine your notes with the aposted material, add additional things you remember but didn't write down (a reason it is important to do this step soon after class), improve the organization, add connections between topics, and so forth - it's not just a recopying of what you already have, but an expansion, a completion, and an organization of that material.

I strongly encourage taking notes with pen (or pencil) on paper rather than typing on a computer (though the use of a computer is not forbidden). Writing by hand is often slower than typing, so it forces you to be more selective in your note-taking (and thus think about the material at the time). It is also easier to draw figures, arrows, etc in handwritten notes and it removes the distraction of trying to pick the right font or check your email or ...


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


Valid HTML 4.01!