Overview

Welcome to CS 201! The primary subject of this course, i.e. data structures, concerns the various ways data can be represented, stored, and manipulated. Different problems call for different solutions, so we will investigate how to use and implement data structures as lists, stacks, queues, trees, maps, and graphs. Furthermore, you will be introduced to object-oriented programming via the Java programming language. We assume that you have come out of an introductory course taught in Python, and the first couple of weeks we will examine the differences between Python and Java. If you’ve never learned Python, you’ll gain a sneak peak into the inner workings of this language, too!

Textbook

The required textbook for the course is

I recognize the potential financial burden of purchasing textbooks. If you are in need of assistance to cover expenses, please come talk to me.

Edition. There are some important differences between versions of this book. Thus, it is important for you to have the 3rd Edition of the book.

Reserve Copy. A copy of this text is on reserve in the library.

Activities / Grading

Your grade in this course is calculated using the following weights.

Participation 10%
Assignments 40%
Exams 25% (2x)

The grading scale for the course is as follows.

A 93--100%
A- 90--93%
B+ 87--90%
B 83--87%
B- 80--83%
C+ 77--80%
C 73--77%
C- 70--73%
D 60--70%
F 0--60%

Grades will not be curved in this course; however, I reserve the right to change the above scale in your favor. This is to avoid punishing students for making an exam too long, etc.

Participation

Your participation in the course is key to you fully grasping the material. Several factors will be taken into account when calculating your participation grade. Each of these factors are listed below.

In-Class Activities

Your participation in various in-class activities will affect your grade. This includes

  • being present in class (physically and mentally),
  • coming to class on time,
  • coming to class prepared,
  • asking questions when appropriate,
  • making positive contributions to class discussion by volunteering and when called upon,
  • staying on task during lab exercises, and
  • working effectively with your lab partner(s).

Piazza

This term we will be using Piazza for class discussion. The system is highly catered to getting you help fast and efficiently from classmates, the prefect, and myself. Rather than emailing questions to the teaching staff, I encourage you to post your questions on Piazza.

Find our Piazza class page at: https://piazza.com/carleton/fall2018/cs201/home.

Your participation in discussions on Piazza will also be taken into account in your participation grade—both in asking questions and answering questions.

Readings

Most class days have a corresponding reading assigned which can be found on the course schedule. These readings are designed to be completed before class on the date they appear on the schedule. To receive participation credit, you must do the following by 8:00 AM the morning of the corresponding class day.

  1. Complete each of the readings assigned.
  2. Post a question or comment to the corresponding reading folder on Piazza for that day. You may certainly post more than once, and you are encouraged to reply to your classmates questions.

Assignments

Assignments will be assigned approximately weekly and will either be individual or group. In both cases, please keep your questions on Piazza regarding assignments at a “high-level.” For example, you can ask clarifying questions about the assignment, but avoid posting any of your assignment code or explaining your algorithms in detail with other students. You may always ask the instructor or prefect any question. Consider using a “private” post in Piazza that only the course staff can see and respond to.

For group assignments, you will be assigned a pair programming partner. During a group assignment, you are expected to complete the assignment together with your partners and only one submission is required. You may NOT divide up the work and complete the parts independently. All code submitted must be authored by all members of your group. Therefore I expect you to work on group assignments together–in the same room and ideally at the same computer.

Exams

There are two in-class, written, exams in this course on the following dates.

  • Exam 1: October 12, 2018
  • Exam 2: November 14, 2018

There is no final exam in this course, but there will be a final assignment due at the end of the exam week. More details will follow.

Getting Help

Below are various resources available to help you succeed in this course. Please also checkout the resources page for some online links.

Prefect

The Prefect Program offers optional collaborative learning sessions for participating classes. Prefect sessions review course concepts and often focus on critical thinking and problem-solving exercises centered on the course material. Scheduled outside of class time, they are led by trained student leaders who have received the department’s or professor’s stamp of approval. All the sessions are free and open to all students enrolled in the class. Our course prefect(s) will use email or Piazza to inform everyone in the class about upcoming sessions (where, when, topics, etc.).

Our course prefect is Ellie Mamantov (mamantove). Consider going to their free review sessions!

Lab Assistants

The Computer Science Labs are available for use outside of scheduled course hours. During much of the week, lab assistants are present and available to answer questions. Our course staff, Owen Szafran (szafrano) and Quinn Mayville (mayvilleq) will follow our section of the course more closely, and they will also hold lab hours.

Office Hours

Use my official office hours to discuss the course content, get any extra assistance, or just talk about how the course is going. These are walk-in office hours, so if multiple students have similar questions, we may work together as a group.

You may also reach out to me via email to schedule an individual appointment with me outside of these walk-in office hours.

My office hours are at the following times and held in CMC 318.

  • Tuesday, 10:30–noon
  • Wednesday, 10:30–11:30 AM
  • Thursday, 2:30–4:00 PM

Learning Strategies and Time Management

Steve Schauz, Academic Skills Coach, is eager to help you develop learning strategies that work in the Carleton context. His goals are to heighten your awareness of your personal strengths and to offer different ways you can approach your academic work so you’re more efficient and effective. For details and resources: Learning Strategies & Time Management.

If you prefer to learn these skills and strategies on your own, see Helpful DIY Resources.

Course Policies

Late Work

Deadlines in this course are firm. Any reading posts after the 8:00 AM will not be counted toward your reading participation, and any assignment turned in after the 10:00 PM deadline will receive no credit. However, you are granted three assignment late days to use whenever you wish throughout the term. You do not need to justify your use of a late day–they are yours to use as you will! I am very unlikely to grant extensions beyond these three except in the most extreme circumstances, so guard them well.

To activate a late day, you must email me and the course staff before the assignment is due. This will add 48 hours to the posted deadline.

Accommodations for Students with Disabilities

Carleton College is committed to providing equitable access to learning opportunities for all students. The Disability Services office (Henry House, 107 Union Street) is the campus office that collaborates with students who have disabilities to provide and/or arrange reasonable accommodations. If you have, or think you may have, a disability (e.g., mental health, attentional, learning, autism spectrum disorders, chronic health, traumatic brain injury and concussions, vision, hearing, mobility, or speech impairments), please contact disability@carleton.edu or call

to arrange a confidential discussion regarding equitable access and reasonable accommodations.

Academic Integrity

In this course, you are expected to be adhere to the Carleton College Academic Integrity statement from the student handbook in its entirety. Be sure you read it carefully and know what is expected of you.

Below is a particularly relevant excerpt from the official Carleton statement:

It is assumed that a student is the author of all course work (quizzes, problem sets, online contributions, tests, papers, lab work, etc.) that he/she submits, whether for a grade or not, and that the work has not been submitted for credit in another class without the instructor’s permission. Images, ideas, data, audio clips, or phrases borrowed from others should be fully identified by standard procedures for making such acknowledgment. All permitted collaboration with others must still be acknowledged.

Below are included some practical examples and clarifications of how this statement applies:

  • When you explicitly work as part of a group or team, you need not identify the work of each individual (unless I specify otherwise).
  • In most cases, you may discuss concepts (algorithms, ideas, approaches, etc.) described in the readings, lab exercises, or during class with anyone.
  • All the work you submit (code, experimental data, write-ups, etc.) must be your own or that of your group. You must appropriately cite any code or documentation you copy or modify, including code provided by the instructor. Furthermore, each member of your group must understand and be able to indivually explain all aspects of the work.
  • You must cite all non-syntax consultations (i.e., ideas about algorithms, help with debugging) from any source, including the readings, labs, provided code, and internal or external language references.
  • You must acknowledge and attribute any conceptual contributions by individuals not in your group. That is, you must give specific attribution for any assistance you receive. (This includes the instructor, prefect, course staff, and lab assistants.) The suggested acknowledgment format is: “[Person X] helped me to do [thing Y] by [explaining Z].”
  • You are responsible for safeguarding your work from being copied by others.