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.
|
Communication |
You are expected to regularly check your HWS email
and the course web page (especially the schedule page).
Assignments, handouts, and other information relevant
to the class as a whole will be posted on the course web page. Email
may be used in the case of a particularly time-sensitive
announcement (e.g. an announcement about something 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 is not acceptable. (Take care of any necessary
business before or after class!) Also, please do not use
headphones during lab - you may miss important announcements to
the class about assignments, and it makes it difficult to interact
with you about what you are working on.
Note taking on paper is encouraged, as it avoids the distraction
of electronic devices and the act of handwriting helps with
retention of information. If you choose to use a laptop or other
device to take notes, you are encouraged to turn off the wifi and
close other applications to reduce the temptation of those
distractions. Either way, I recommend that you (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.
(Also note that anything that appears on the projector screen -
slides or code - will be made available on the schedule page
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.
|
|
Assignments and Evaluation |
Readings: Readings are the first
introduction for most material - it often takes more than one
encounter to fully absorb something, and class time is meant to
fill in the gaps and answer questions about things you have
already started to think about. (Also, some material in the
assigned readings may not get covered in class but you are still
responsible for that material.) There is not a great deal of
reading, and it is expected that you will do what is assigned.
Readings are to be completed for the class period where they are
listed on the schedule page.
Labs: Lab sessions will be held on Thursdays in the
Rosenberg 009 computer lab. Labs will be small-group exercises to
explore, practice, and reinforce ideas from class. (Each individual
is responsible for all of the material in the lab, so pair
programming is recommended rather than dividing up the task and
completing portions separately.) Some labs may introduce specific
software or packages. Labs are intended to be short enough that
most, if not all, of the lab can be completed during the lab period
with diligent effort. Anything not completed during lab must be
finished outside of class. Labs will be due on Mondays.
Programming Assignments: The programming assignments
(along with the final project) constitute the bulk of the
out-of-class work for this course. The programming assignments
provide an opportunity to work on larger programs, practice going
from specifications to a working program, and apply the course
material.
Exams: There will be two midterm exams. These will be
written exams held during a regular lab period. The dates and times
of the exams are noted on the schedule page - be sure to consult
that! More details about each exam will be announced prior to the
exam.
Final Project: There will be a final project instead of a
final exam. It will be due at the end of the registrar-scheduled
final exam time slot. More details about the project will be
announced later in the semester.
Grades: Final grades in this course will be computed as
follows:
- Labs: 20% (1.67% each)
- Programming Assignments: 45% (15% each)
- Exams: 15% (7.5% each)
- Final Project: 20%
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. "Engagement" covers aspects of
participation in the course not otherwise graded: completion of
assigned preparatory work (such as readings), meaningful
contributions to class discussions, being on task in lab and
in-class activities, and pulling your weight on group assignments
(such as labs). Class engagement may be taken into account when
considering borderline final grades.
Extra Credit: Some extra credit opportunities may be
available on programming assignments and the final project. Another
avenue for extra credit is attending colloquium talks (see
below). If you are interested in extra credit, take advantage of
these opportunities!
Talks: The Math/CS Department sponsors a number of
colloquium talks from 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,
and contain the three paragraphs listed will earn full credit. A
maximum of four talks (for a total of 1% of the final grade) will
be counted for extra credit.
|
|
Programming Rubric |
Programs will be assessed on both functionality (does the program
run, and does it do what it should?) and style (which includes
readability, commenting, clarity, and design). Specific points I
will be looking for:
syntax | |
-
Does the program compile? In most cases, a program that doesn't
compile will earn few or no points, no matter how complete or
beautiful the rest of the code may be. Fix syntax problems as you go,
and comment out or remove anything that you might have started to add
but didn't complete.
|
functionality | |
-
Does the program do what it is supposed to? This means that it
has all of the required features, and that it works correctly when
the user uses it correctly.
|
robustness | |
-
Does the program gracefully handle unexpected or incorrect user
input in all cases? Crashing with an uncaught exception or cryptic
error message is not considered graceful.
-
Are preconditions (and where appropriate, postconditions) checked
and violations appropriately handled?
|
design | |
- Is the division of code
into subroutines, methods, and classes appropriate?
- Are appropriate ADTs chosen? Are appropriate implementations used for
those ADTs?
-
Are appropriate types chosen for variables?
- Are constants
used when they should be?
|
commenting | |
-
Are comments present for all class, subroutine/method, and variable
declarations and, when appropriate, for individual blocks of code?
- Do
comments contain useful information without also including unnecessary
information?
- Are comments in Javadoc notation?
|
readability | |
- Are naming conventions followed?
- Are the chosen names
appropriate?
- Is whitespace used to enhance readability?
- Is indentation used
appropriately and consistently?
- Are lines broken
before reaching 80 characters?
|
clarity | |
-
Are things done in a simple and straightforward manner, or was a
simple problem solved in a very convoluted way?
|
|
|
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; not following these standards can result in
points lost on assignments.
|
|
Attendance |
Updated policy for remote classes post-spring break:
Maintaining a connection is especially important. To maintain
flexibility with different schedules, the attendance policy will
shift to a participation policy. The expectation is three
"participations" per week (not all on the same day) - being
present for at least 30 minutes in class or lab, asking a
question in class, office hours, on the discussion board, or via
email, and providing a good answer to a question on the
discussion board all count as one "participation". (You are
strongly encouraged to participate "in person" at least once a
week if you are able to.) You can also meet the full
participation expectation for the week by being present for the
full lab session. Given the flexibility, it is expected that
exceptions will be rare - but stay in touch if circumstances get
in the way.
Original policy, pre-spring break:
You are expected to attend and be on time for all class and lab
sessions. Attending and participating in class (and especially lab)
is an important part of your experience in this course, and students
who miss class frequently typically do worse on assignments and
exams. In addition, labs are typically small group assignments and
missing lab means having to do the task on your own. Also,
announcements are made at the beginning of class and late arrivals
may miss important information.
Any unexcused absence from lab and, after three absences of
any kind (excused or unexcused), any unexcused absence from
lecture will impact your final grade. (For example, if you
have two excused and two unexcused absences from lecture, the two
unexcused absences will lower your final grade. If all four
absences are excused, there is no penalty.) It is your
responsibility to make sure that you sign the attendance sheet
each day; a few slip-ups will be allowed but repeatedly
forgetting to sign in may result in the accumulation of unexcused
absences. It is also your responsibility to provide an excuse
for absences that are to be considered excused.
In addition, note that any absence, whether excused or not, 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 even if all of the absences are excused.
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).
In the case of an illness or other emergency that causes you to be
absent on the day of an exam, you must notify me of the reason for the
absence as soon as possible (you can have the dean's office
communicate with your professors). It is expected that the exam will
be made up promptly. You may not communicate with other students
about the exam until you have taken it.
|
|
Late Policy, Extensions,
and Rescheduling Exams |
Late work is accepted - labs and programming assignments will be
penalized 5% if turned in by the day after the due date, 10% if
turned in within three days, 20% if turned in within a week, and 30%
thereafter. No work will be accepted more than two weeks late
without an extension.
In addition, no work will be accepted after the end of the
Registrar-scheduled final exam time slot unless an incomplete
has been granted.
Updated policy for remote classes post-spring break:
Deadlines are important for staying on track, and they will
continue to be enforced with the same late policy. However, nothing
about the rest of this semester is normal; if you or someone close to
you gets sick or if there are other things going on that make it
difficult to focus on your classes, stay in touch - with me, your
dean, and/or anyone else you can talk to. There is flexibility if you
need it.
Original policy, pre-spring break:
It is important to note that while
late work is accepted, handing work in late should be a rare
occurrence - deadlines are tight (being late on one assignment
takes away time from the next) and a habit of late handins will have
a significant impact on your grade as well as making subsequent
topics harder to master (much of the material is cumulative). Labs
are an important opportunity to practice with new material that will
be needed for the programming assignments; if not completed on time,
you risk falling behind on the programming assignments.
Extensions will generally only be granted for the kinds of things
that count as excused absences (see the definition under "Attendance"
above), and only if a significant portion of the time allocated for
the assignment is affected. If you miss lab due to an excused
absence, you may request an extension allowing you to turn in the lab
by the start of the next lab period (instead of by Monday) without
penalty. (This is expected to be a rare occurrence, and repeat
requests may be denied.) 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.
Similarly, exams can generally only be rescheduled in the case
of an excused absence on the exam date. Leaving early for a
vacation is specifically not a reason for an excused absence - note
the dates of exams before making travel plans.
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/rescheduling will not be granted retroactively - you need
to plan ahead. 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.
|
|
Working Together and Academic Integrity |
The HWS Principle of Academic Integrity governs all
of the work completed in this course. Specifically:
-
Exams are to be completed solely by the student
whose name is on the paper. Exams are closed book, and the
only person you may discuss them with is the instructor.
-
Programming assignments and the final project
are individual assignments. This means that what you turn in must
be your own work. 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.
-
Labs are group assignments (unless otherwise
specified). You should, of course, collaborate fully within your
group. Since everyone individually is responsible for the material in
the lab (even though you will only hand in one solution per group), it
is strongly recommended that you practice pair programming (where
group members take turns typing and the others contribute to the
solution the typist is writing) rather than dividing up the work so
that each person completes a different part. (Make sure that you can
explain everything in the solution and how it was arrived at.) You
can also discuss ideas with and get help from the instructor, Teaching
Fellows, and other students in the course but what each group turns
in must be the group's own work.
To emphasize:
"Your own work" (or "your group's own work") means that the ideas
and the effort to mold those ideas into a working solution are your
own (or your group's). 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.
This includes both computer files and paper copies. Decompiling or
reverse-engineering someone else's code (including provided code) is
also prohibited. All of this should be obvious: using someone else's
program "as a guide" to completing your own is plagiarism.
Potentially less obvious is the line between getting help (OK) and
working with others (not OK). Working together with someone else
to produce a solution which you both hand in is not OK, even if
you each type it in individually and/or make some modifications
afterwards. You may discuss ideas about how to get started and you
may get debugging help or discuss why something doesn't seem to be
working; you may not work on designing a program or writing code or
pseudocode with someone else. Ask before you do something
if you are unsure what is OK.
It is OK to use other materials (such as reference books or websites)
as technical references to learn about an aspect of Java or a data
structure. However, looking for and/or copying a solution is not
acceptable (even if you make some modifications). See "Plagiarism in
Programs and on Problem Sets" below for more information on the
difference between a reference and a solution.
The purpose of these rules is to make sure that you learn the material
so you can solve the next problem instead of getting an answer that
only addresses the current problem. A good guide is to make sure that
the first attempt on any aspect of a program is on your own (before
asking others), and that you incorporate ideas discussed into your
solution on your own (away from others).
Submitting work which is unreasonably similar to another person's work
and/or not being able to explain some 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, recognizing the
responsibility of the individual student for his or her own
education, assumes honesty and integrity in all academic work at the
Colleges. This assumption is the foundation of all intellectual
efforts and lies at the heart of this community. In matriculating at
the Colleges, each student accepts the responsibility to carry out
all academic work with complete honesty and integrity and supports
the application of this principle to others.
Categories covered by this principle include, but are not limited
to, the following:
- Examinations: Giving or receiving assistance during an
examination or quiz violates this principle.
- Papers: The adoption 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 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.
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 penalty.
|
|
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 steady schedule of assignments and much of the course
material is cumulative - it is important that you review each day's
material (after class is a great idea) and promptly address anything
that is confusing. It is also important that you budget your time and
start on assignments early so that you have time to think about
problems and deal with unexpected surprises.
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. Note that
they are not specifically hired to support this course, but they
should still be able to help you with debugging or thinking through
logic. Assignment-specific questions are best directed to
the instructor.
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.
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.
|
|
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 the Coordinator of 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.
|