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