CS 201 Syllabus
Overview
"There must have been a better way to do that final project from
Intro to CS..."
Data structures is all about patterns in trying to
organize information. Whether you're trying to store a deck of
cards, WWW data for a search engine, or Facebook connections, there
are smart ways to store and retrieve this information. How can you
do so, and how can you quantify how efficient your techniques are?
Instructor Information
Student Assistants
- Prefect: Calder Coalson (coalsonc)
- Grader: Veronica Lynn (lynnv)
Textbook
- Data Structures: Abstraction and Design Using Java, 2nd ed. by Koffman and Wolfgang. Wiley, 2010.
Your Grade
- Assignments: 40%
- Exam 1: 30%
- Exam 2: 30%
Working from Outside Department Labs
- We will be programming in Java, which will be set up for use in
the Computer Science labs. You should feel free to install Java on
your home machine and work from there if you wish. If you do so, you
are responsible for making sure that your programs work under the
version of the compiler 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 machine, but home 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. 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 any time after this until the last day of
classes will be docked 75%. This policy is to protect the grader, but also
to encourage you to begin your work as early as possible.
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.
- I will also be assigning analysis work. On these and
on the "individual" programming problems you may collaborate with
others in the class for ideas, but all students should turn in
individual assignments for these. You should be writing up or
programming your own solutions, and not sharing printouts with each
other. You may help each other debug.
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
writ 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 turns 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 a F in the course.