Overview

Welcome to CS 111! As the title suggests, this course is an introduction to the field of Computer Science (CS). Although most consider the terms “computer scientist” and “computer programmer” perfectly synonymous, the field is significantly broader than simply learning to write code. In reality, CS concerns the study of algorithms, which are step-by-step instructions to be executed by some actor, and of data structures, which are ways of representing information so that it can be efficiently processed by algorithms. Since algorithms and data structures are more general than just writing code, you may find that the skills you acquire in this course will apply in more situations than you expect.

By the end of this course, you will be able to

  1. Understand the fundamentals of CS,
  2. Design, document, develop, test, and debug algorithms in the Python programming language,
  3. Recognize common data structures and how to use them to efficiently solve problems in Python, and
  4. Solve computational problems by breaking them into them into managable parts and synthesizing them into a coherent whole.

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 5%
Reading Journals 5%
Quizzes 10%
Assignments 40%
Exams 30%
Project 10%

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. Thus, your participation grade will be calculated based on the following factors:

  • coming to class on time,
  • coming to class prepared,
  • being present in class (physically and mentally),
  • 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).

Reading Journals

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. Either post a question, a comment, or reply to a classmate’s questions in corresponding discussion forum on Moodle for that day. You may certainly post more than once, and/or post a question that has already been asked.

Assignments

Assignments will be assigned approximately weekly and will either be individual or group. 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.

Quizzes

Each Friday, there will be a short 5–10 minute written quiz covering one or two key ideas from the previous week. The quizzes are intended to check your individual understanding of the material in a timely fashion (i.e., well before the examinations!). If you (or the class as a whole) are missing a key concept, I want to revisit that concept as soon as possible so we can build on it in later lessons. Moreover, studies show that quizzes are a surprisingly effective learning device!

Your lowest quiz grade will be dropped at the end of the term. Because the goal of the quizzes is to check that you have learned basic skills, an answer that is basically correct will receive full credit, even if there are minor syntax issues. A partially correct answer will receive partial credit at my discretion.

If you arrive to class late on a quiz day for any reason, please enter as quietly and discreetly as possible. In order to avoid distractions to your classmates, you will receive a quiz with whatever time remains and be asked to submit it with the rest of the class. If you wish, you may explain your tardiness after class.

Exams

There are 3 in-class, written, one-hour, exams in this course on the following dates.

  • Exam 1: Friday, February 1, 2019
  • Exam 2: Friday, February 22, 2019
  • Exam 3: Friday, March 8, 2019

Project

A substantial group project will be assigned at the end of the term. 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 Nathaniel Sauerberg (sauerbergn). 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, Daniel Busis (busisd) and Owen Szafran (szafrano) 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.

  • Monday, 2:00–3:30 PM
  • Wednesday, 2:00–3:30 PM
  • Thursday, 2:00–3:30 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

Deadlines

Deadlines in this course are firm. Any reading journal posts after the 8:00 AM deadline will not be counted toward your reading forum participation. Any assignment turned in after the assigned deadline but within 24 hours will receive a 25% late penalty; any assignment turned in after 24 hours of the deadline will receive a zero. Please plan your week accordingly and start your assignments early! If you are turning in an assignment late, be sure to email me and the course staff before the assignment deadline.

I do recognize that there are exceptional circumstances due to family emergencies, etc. I am certainly willing to work with you through these situations, so do not hesitate to reach out.

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