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 address in life.
Instructor Information
- Instructor: Dave Musicant
- Office: CMC 326
- Email: dmusicant@carleton.edu
- Office phone: (507)222-4369
- Office hours: See
my home page.
Student Assistants
- Prefect: Sam Wiseman (wisemans)
- Grader: Ethan Somes (somesb)
Textbook
Python Programming: An Introduction to Computer Science, 3rd ed by
John Zelle. Franklin, Beedle & Associates.
Grading
- Assignments: 40%
- Tests: 45%
- 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, and your
electronic submissions are timestamped. You have four "late-days" that you can
use at anytime during the term, with no explanation or request needed. If you
are off-campus, if you are sick, etc., these are all exactly the sorts of
situations for which these late-days apply. You automatically use up a
late-day for every 24 hour period that passes when you turn in an assignment
late. For example, if you turn in two assignments late, each 17 hours after
the due time, that counts as two late-days. Likewise, if you submit a single
assignment 30 hours after the due time, that also counts as two late-days.
Assignments that are turned in late after your four late-days are used up will
not receive any credit.
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 the course discussion forum, or
come to me. I'm likely to ask about what you've tried first to solve your problem, so I can learn about how far you've got and where you're stuck or having trouble.
- If you have detailed questions about bugs, please bring them to me, the
prefect, or lab assistants in person as opposed to email or other electronic
means. I generally don't 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
- Each programming assignment will either be a "team"
problem assignment or an "individual" assignment. You are most welcome
to pick your own partner, or I will find a partner for you if you
like. I might mandate a partner change partway through the term for
everyone.
- When working on team problems, you and your partner
should engage in the
pair programming model, that is 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.
- If you are determined to work alone on the team
assignments, that's fine. 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, Plagiarism, 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.
- You can by all means talk to each other, look at each others' programs
to help fix problems, and share ideas.
Plagiarism
- Plagiarism is bad. DON'T DO IT!
- Any programs that you turn in should be your work.
- Even if you work with someone else and share ideas, you must still
write your own program.
- If a piece of your program utilizes someone else's idea, you must
make sure to give that person credit in program comments.
- Do not hand a printout of your program to other students. I
encourage you to work together to help debug your code, but you
should do so sitting together.
The following are examples of plagiarism:
- Taking someone else's program, changing comments and variable names,
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 am compelled by Carleton policy to submit plagiarism cases that I
find to the Dean of Students, who in turn brings the evidence before
the Academic Standing Committee. The academic penalty for a finding of
responsibility can range from a grade of zero in the specific
assignment to an F in the course.