CS 111 Syllabus
Overview
Computer science, especially when it is considered as one of the
liberal arts, is perhaps best described as the study of formal
processes for solving problems. These processes for solving problems,
known as algorithms, are somewhat like recipes for baking a dish, or
directions for navigating on road trips. It turns out that these
marvelous devices that we call computers are wonderful at carrying out
algorithms for us, and so they act as a remarkable testing and
implementation environment for the algorithms that we
create. Programming computers to carry out algorithms for us is
probably the single-most common task that computer scientists do; yet,
programming is only one aspect of computer science. In this course, we
will engage in learning the fundamentals of computer science, both
from a perspective of programming and of algorithms in general.
Said differently: some may argue that studying literature is
relevant to all, since the ideas within are about life in
general. Some may argue that studying chemistry is relevant to all,
since everyone can benefit from an understanding of how the world is
constructed. I argue that studying a bit of computer science is
relevant to all, regardless of what one may end up doing, because the
ideas within help one to formulate careful, rigorous, step-by-step
approaches to whatever problems one needs to attack in life.
Instructor Information
Student Assistants
- Prefect: Rebecca Gelles (gellesr)
- Grader: Ken Zillig (zilligk)
Textbook
Python Programming: An Introduction to Computer Science, 1st ed by
John Zelle. Franklin, Beedle & Associates, 2003.
Grading
- Assignments: 40%
- Exam 1: 15%
- Exam 2: 15%
- Exam 3: 15%
- Final project: 15%
Computer Usage
- We will be programming in Python, which will be set up for use
in the Computer Science labs. You should feel free to install Python
on your own computer and work there if you wish. If you do so, you
are responsible for making sure that your programs work on the
version of Python that we have installed in the labs. I am glad to
informally provide whatever advice I can to help you get the
software running on your own computer, but this use is technically
"unsupported."
Homework Policy
- Each assignment will have a specific time for which it will be
due. After you get your grade and feedback on that assignment,
you'll have the opportunity to resubmit, once, in order to try to
gain back half of the points that you lost. (There will be another
deadline for resubmitting.) For each deadline, an assignment turned
in late within one day of the due time will be docked 25%. An
assignment turned in later than one day of the due date but within
two days will be docked 50%. An assignment turned in later than two
days of the due date but within three days will be docked within
75%. After that, you won't receive any credit. With nearly daily
assignments, this is the only way that the graders can stay sane; it
is important that I put some mechanism in place to discourage people
from submitting work at arbitrary times.
Getting Help
- If you need help with a project, you can consult with other
students, talk to the prefect, ask a lab assistant, post to Piazza,
or come to me. I am unlikely to answer detailed questions about bugs
via email, as it's much easier and more fun for me to answer those
kinds of questions in person.
Working Together
- For some programming assignments, you will be
assigned a partner to work with. I'll shuffle up the partners a few
times throughout the term so that you get the experience of working
with a few different people.
- You and your partner should engage in the
pair programming model: both of you should be sitting at a
single machine, side by side. One of you is "driving," i.e. actually
using the keyboard and mouse. The other is actively engaged following
along, stopping bugs, and providing ideas. You should make sure that
over the course of an assignment that you spend roughly the same
amount of time each "driving." I will also ask you to turn in a form
rating the work that your partner does.
- There will also be "individual" assignments that you
must complete on your own. You are permitted (and encouraged!) to
collaborate with others in the class for ideas and to help solve
problems, but the ultimate solution you turn in should be your
own.
- If you really want to work alone, even on the
partner assignments, that's ok. Send me an email and let me know
that you want to work alone, and I won't assign you a partner. I
will expect, however, that you do work of the same amount and
quality as those students with partners. You can change whether or
not you work alone each "cycle" that I assign new partners.
Collaboration, Cheating, and the Difference Between the Two
There are two different kinds of working together: collaborating and plagiarism.
Collaborating
- Collaborating is good.
- You are encouraged to collaborate on ideas and program design.
- Programming is often a social effort, and there is much you can learn
by talking out the ideas in this class with each other.
- If a piece of your program utilizes someone else's idea, i.e., someone other than the program author(s), you must give that person credit in program comments.
Plagiarism
- Plagiarism is bad. DON'T DO IT!
- Any programs that you turn in should be your work of the
author(s) only.
- Even if the program author(s) share ideas with others, the
program itself must be written by the author(s).
- If a piece of your program utilizes someone else's idea, you
must make sure to give that person credit in program comments.
The following are examples of plagiarism.
- Taking someone else's program, changing the variables and comments
around, putting your name at the top, and turning it in.
- Finding a similar program on the internet, changing the variables
and comments around, putting your name at the top, and turning it in.
- Finding a similar program in a book, changing the variables and comments
around, putting your name at the top, and turning it in.
I sometimes use software to discover plagiarism, and I am compelled
by Carleton policy to notify the College if I find evidence of
plagiarism.
Note that academic dishonesty includes not only cheating,
fabrication, and plagiarism, but also includes helping other students
commit acts of academic dishonesty by allowing them to obtain copies
of your work. You are allowed to use the Web for reference purposes,
but you may not copy material from any website or any other source
without proper citations. In short, all submitted work must be your
own.
Cases of academic dishonesty will be dealt with strictly. Each such
case will be referred to the Academic Standing Committee via the
Associate Dean of Students or the Associate Dean of the College. A
formal finding of responsibility can result in disciplinary sanctions
ranging from a censure and a warning to permanent dismissal in the
case of repeated and serious offenses.
The academic penalty for a finding of responsibility can range from
a grade of zero in the specific assignment to a F in this course.