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

Instructor: Sam Tucker

Office: CMC 318

Email: stucker

Office hours: TBD, probably MWF 11:00 - 12:30 (after 2a), MW 2:00-3:00 (after 4a), Th 1:00-3:00

Student Assistants

Prefect (2a): Kate Finstuen-Margo (finstuenk)

Prefect (4a): Theresa Chen (chent4)

Grader:

Textbook: Data Structures and Abstractions with Java, 5th ed. by Carrano and Henry. Pearson, 2019.

Your Grade

Assignments: 40%

Exam 1: 20%

Exam 2: 20%

Exam 3: 20%

Individual vs team grades

For each assignment that you work on in a team with another students, you’ll receive a grade based on the quality of that joint submission. This grade will be used to form part of your overall homework average. Your overall homework score will form part of your course average, which will be used to determine a final grade.

That said, you also must do work of passing quality on your individual assignments and exams in order to pass the class.

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

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