Problem-Solving and Abstraction

CMPU-101 Sections 04-05
Vassar College, Fall 2021
Syllabus / Course Wiki

Welcome to our course wiki and syllabus. It will be updated throughout the semester with important course information, so check here regularly.

Professor: Marc Smith
Office: SP 104.5
Virtual: Zoom
Phone: 845 437 7497
Email: mlsmith (best way to contact me!)
Lectures: Mon/Wed 10:30-11:45am in NE 105
Lab Section 04 Fri 9am-11am in SC 006
Lab Section 05 Fri 11am-1pm in SC 006
Office Hours: Tue/Thu 10am-12pm, Wed 1-3pm; and by appointment

This course introduces fundamental concepts of computer science. Its major goal is to introduce students to the principles of systematic problem-solving through programming and the basic rules of computation. We will explore the art and science of problem-solving using the computer as a tool. We will write programs in Pyret, a simple yet powerful student learning language, and Python, a popular language for work across computer science and data science.

The course does not assume any prior programming experience. It is suitable for all students – majors and non-majors alike – who wish to explore the ideas of the discipline.

By the end of the semester, students should be able to:

  • Develop programs that process and manipulate data in a variety of shapes, including tables, lists, and trees;
  • Decide how to organize data for efficient, maintainable computational processing;
  • Describe the social implications of large-scale data collection, retention, and use;
  • Decompose programming tasks into solvable subtasks, informing the structure of your programs;
  • Develop good automated tests to give confidence in a program's correctness;
  • Work with others to develop, test, and analyze programs; and
  • Develop medium-sized programs with multiple interacting components.

The class sessions are intended to augment and support the material in your readings by providing an opportunity for in-depth discussion, working through examples, and the chance for you to ask questions.

In class, please ask questions, and answer questions! In computer science, we seldom get anything right on the first try. We see how an attempt turned out, and we try again. I want our classroom to reflect that approach as well, so please answer a question that’s been posed, even if you’re not sure of the answer.

The material covered each week builds on what was covered in prior weeks. As such, it’s essential that you attend every lecture and keep up with the reading assignments.

The calendar with lecture notes, assigned readings and exercises, and exams is on the [course website][course] and will be updated throughout the semester.

A Data-Centric Introduction to Computing Kathi Fisler, Shriram Krishnamurthi, Benjamin S. Lerner, and Joe Gibbs Politz


  • CPO – Pyret
  • Python

To develop and assess your understanding of the ideas presented in this course, there will be weekly labs, regular homework assignments, two midterm exams, and a final exam (during the final exam period). The elements of the course will be weighted approximately as follows:

Component Percent of final grade
Labs 20%
Assignments 20%
Exam 1 20%
Exam 2 20%
Exam 3 20%

Final grades take into account each component. You must achieve a passing grade in all components to pass this course, and to receive an A, you must have high performance in all categories.

Remember that success in the course is more than just good grades. It means that you are being challenged to grow as a learner, that you are engaging actively with tasks that feed your growth, and that you are creating excellent work by completing challenging tasks with an appropriate level of support. It also means that you are building your lifelong learning skills so that once the course is over, you are better and stronger as a learner and can continue to learn new things independently.

The purpose of the labs is to give you hands-on experience with the actual tools, and to clarify concepts with examples. Labs will be evaluated for completion.

Lab sessions are two hours long. Many labs can be completed in less time, and you can leave when your lab work has been checked by the instructor or a coach. However, everybody works at different speeds, and some labs may take longer than I anticipate. If you need a bit more time to finish the lab work, you should have what you’ve finished checked before the lab period ends, and you can then finish your lab work any time before the next class. You can have a coach check off your work live during coaching hours (recommended) or you can submit the files on Gradescope.

Lab work won’t be accepted after the start of the next class because I’ll be sharing example solutions at that time for everyone’s benefit.

Programming assignments will expand upon the concepts introduced in class and practiced in lab. You can expect an assignment each week (except when there's an exam).

Assignments and due dates will be listed on the calendar on the course website. Programming assignments will be submitted on Gradescope and will be evaluated based on correctness and good programming style. Additional information on assignment grades will accompany the first assignment.

There are two exams during the semester as well as a final exam. The first two exams will be completed during lab times.

For each exam, you may refer to an 8.5×11-inch piece of paper, double-sided, with anything written (or typed) on it that you want. Preparing this sheet of notes is an excellent way to study, encouraging you to consider what’s important that you will want to refer to.

Because of the inherently cumulative nature of this course, each exam will necessarily rely on content from previous exams. However, the emphasis of each exam will be on the material introduced since the previous exam.

We will be using Gradescope this term to provide feedback on your work. Homework and labs will be submitted through Gradescope, and homework and exam grades will be returned through Gradescope. As soon as grades are posted, you will be notified immediately so that you can log in and see your feedback.

We’ll go over submitting on Gradescope during the first lab.

For flexibility, you have five “late days” that you can use to extend the deadline of any homework assignment by 24 hours. You may use up to two late days per homework assignment. If you plan to use a late day, please email the instructor before the original deadline.

If you know you won’t be able to submit an assignment, talk to me. If you’re experiencing a major problem – medical, psychological, family, etc. – that is interfering with your ability to complete your classwork, you should talk with your class advisor, the Dean of Studies, Counseling Services, or Health Services, who will recommend appropriate accommodations to all of your professors, who honestly want you to succeed.

The goal of the course is to gain an understanding of computer science, not to compete with each other. Indeed, in CS as a field, collaboration is the norm. As such, you’re encouraged to discuss class material with other CMPU101 students when reading, studying, and thinking about the problems.

Unless otherwise stated, for labs you have the option to work with a classmate. If you do so, you are expected to design and implement the solutions together. You should submit a single lab with both names on it and will receive the same grade.

Submitting work you have not contributed to fairly or do not understand is *academic dishonesty*.

You may also consult with your classmates as you work on homework assignments, but you are not permitted to look at another student’s code or to talk about assignments in terms of code or pseudocode. In addition, you must cite any books, articles, websites, lectures, etc. that have helped you with your work.

Exams must be completed individually. Do not discuss the content of the exam with anyone but the professor until the exams are graded or example solutions are released.

Please read the CS department’s guide to academic integrity.

In particular, note that:

1. You may not copy code written by anyone else (e.g., a classmate, a friend, an online source, a book). (You are permitted to use the code provided by the instructor or included in the assigned readings!)

2. Using code or other material from sources as “inspiration” and submitting highly derivative solutions is considered copying. (That is, you can’t “paraphrase” someone else’s work!)

3. You may not post a public question that contains any part of your code.

4. You may consult online resources as part of your coursework, but you may not copy code from online source. If you get an idea of how to solve a problem from an online source, include a citation near the top of your source code, e.g.,

# Consulted online source for list comprehensions:

You do not need to include a similar notation if you consulted with a classmate; we expect that – just don’t share code!

If you haven’t already done so, you should read Going to the Source, available from the Dean of the College website. Note that the guidelines that apply to writing, in general, apply equally to the writing of computer programs. Copying someone else’s code without attribution is plagiarism. Give proper attribution for the help you receive.

Quoting from Chapter X, “In suspected cases of plagiarism, the instructor prepares a written statement of complaint to the Academic Panel.” Please don’t put yourself or your professor in that position. When in doubt, *stop* and ask me first.

I expect all students to participate in class discussions. In return, I will make myself available to answer questions, listen to concerns, and talk to any student about topics related to the class. I welcome your feedback throughout the semester about how the course is going.

Our course uses Campuswire for online discussions. You can use it to ask questions about course concepts, assignments, and logistics. We expect you to read Campuswire every day or two for announcements and clarifications to assignments; you are responsible for all clarifications made at least 48 hours before an assignment is due.

Posts on Campuswire can be either public or private. Public posts are visible to everyone, while private posts are visible only to course staff. Any questions having to do with your particular solution to an assignment should be private; all other posts should be public. (If you have a question about something, it’s very likely that other students do, too!) The course staff reserves the right to make private posts public if the answer is of general interest.

Campuswire is a discussion forum, so please feel free to respond to questions and comments – it’s great when students can learn from each other!

Because Campuswire is an extension of our classroom discussion, we expect everyone to behave accordingly: No disrespect, rudeness, or abuse will be tolerated – towards fellow students or towards the course staff.

Please post questions about the course to Campuswire rather than emailing the course staff – it’s very useful to have all course questions in one place where any of us can answer them. Please don’t email individual coaches unless referring to a prior interaction with that coach.

If you have concerns of a personal nature (a problem with a project partner, for instance), please email the instructor.

Office hours will be listed on the [instructor's website][prof]. If you need to meet at a different time, send the instructor a message. Please come to office hours! Coming to office hours does not send a signal that you are behind or need “extra help”; on the contrary, the most successful students are usually those who come to office hours early and often.

In addition to faculty office hours, student coaches will be available during scheduled labs and at other times, typically including evenings and weekends. The coaching schedule will be published online.

Coaches aren’t here to give you answers, of course, but to be your fellow computer scientists thinking through a tough problem with you. Expect them to ask more questions than they answer.

Academic accommodations are available for students registered with the Office for Accessibility and Educational Opportunity (AEO). Students in need of disability (ADA/504) accommodations should schedule an appointment with me early in the semester to discuss any accommodations for this course that have been approved by the Office for Accessibility and Educational Opportunity, as indicated in your AEO accommodation letter.

In an ideal world, science would be objective. However, much of science is subjective and is historically built on a small subset of privileged voices. There may be both overt and covert biases in the material due to the lens with which it was written, even though the material is primarily of a scientific nature. Since integrating a diverse set of experiences is important for a more comprehensive understanding of science, please contact me if you have any suggestions to improve the quality of the course materials.

I would like to create a learning environment that supports diversity of thoughts, perspectives, and experiences, and honors your identities.

  • If you have a name and/or set of pronouns that differ from those that appear in your official records, please let me know!
  • If you feel that your performance in the class is being impacted by your experiences outside of class, please don’t hesitate to contact me. If you prefer to speak with someone outside of the course, you can contact your class advisor or the Dean of Studies.
  • I (like many people) am still in the process of learning about diverse perspectives and identities. If something was said in class (by anyone) that made you feel uncomfortable, please talk to me about it.

Vassar College is committed to providing a safe learning environment for all students that is free of all forms of discrimination and sexual harassment, including sexual assault, relationship abuse, and stalking. If you (or someone you know) has experienced or experiences any of these incidents, know that you are not alone. Vassar College has staff members trained to support you in navigating campus life, accessing health and counseling services, providing academic and housing accommodations, helping with legal protective orders, and more.

Please be aware all Vassar faculty members are “responsible employees”, which means that if you tell me about a situation involving sexual harassment, sexual assault, relationship abuse, or stalking, I must share that information with the Title IX Coordinator. Although I have to make that notification, the Title IX office will only provide outreach by email. You will control how your case will be handled – you don’t have to read or respond to the email, and it is completely up to you whether to pursue a formal complaint. Our goal is to make sure you are aware of the range of options available to you and have access to the resources you need.

If you wish to speak to someone privately, you can contact any of the following on-campus resources:

The SAVP website and the Title IX section of the EOAA website have more information, as well as links to both on- and off-campus resources.

This course – and this syllabus – is based in large part on work by other professors, especially Kathi Fisler and colleagues at Brown University. The policy on asking and answering questions and on communication on Campuswire is adapted from Laney Strange. The statement on diversity and inclusion is adapted from Monica Linden.