Syllabus

Overview

This course is an entry point to the Computer Science major/minor. Students will be introduced to fundamental computational thinking principles and core programming skills.

By the end of this course, you will approach problems analytically and have basic proficiency with the Python programming language. While we will use Python as our programming language, you will be learning core concepts that port to most other popular languages.

Topics

  • Analytical approach to problem solving

  • Abstraction and program design with structured decomposition

  • Variables, types and operators

  • Functions and scope

  • Control structures (conditionals, loops)

  • Lists and dictionaries

  • File I/O

  • Basic recursion

  • OOP (object-oriented programming)

Learning approach and support

We strive to create an inclusive learning environment that provides the structure and support to help each of you successfully engage with the material. It is your responsibility to utilize the offered resources and undertake the work that optimizes your learning experience. By taking ownership, you will leave this course with tools that can assist in your academic and professional pathway. The course is structured to provide opportunities for you to build your mastery of each topic by:

  • Active learning: in-class lectures provide the core content for the topic and hopefully spark your curiosity; quick questions through Poll Everywhere will check in on your understanding

  • Communication and reflection opportunities to clarify and reinforce understanding or identify gaps.

  • Worksheets to provide the chance to collaborate, understand the material and recognize where you have gaps.

  • Labs that apply your learning through activities and hands-on practice via short programming exercises

  • Homeworks & Projects that rely on critical thinking to deepen your problem-solving techniques through programming.

  • Exams to prompt you to synthesize across multiple topics and acquire a deep understanding of the material.

The instructors, mentors, and students in CS 151 are expected to be respectful, inclusive of all students, and to not discriminate. Mount Holyoke resources on diversity, equity, and inclusion can be found here. Bias incidents can be reported here. Students are encouraged to bring concerns or feedback to the attention of the instructor(s).

Strategic Learning

One of the goals of this class is for you to work on strategies that help you learn effectively. This includes being able to formulate questions, rephrase and discuss material as well as collaborate with others. You will also have the opportunity to reflect on your learning strategies.

Our goal is for you to learn fundamental problem solving skills and feel confident in your programming ability by the end of the course. By viewing the coursework as opportunities to engage and develop in the material, you will give yourself the chance to practice and increase your skillset. There are certainly paths through the course that may achieve a high grade, but would not contribute to your learning the material. Most likely, you are taking the class because you are interested in pursuing computer science after this course; without authentic learning in this course, you will find it extremely challenging (and perhaps not possible) to proceed in subsequent courses/activities.

Mentor-Led Modules: Collaborative Problem Solving & Learning

For the first hour of each lab period, a pair of peer mentors will lead you through a learning module. These modules are designed to help you reflect on your learning strategies and/or your problem-solving approaches. You will discuss topics drawn from inclusive and effective pedagogy and practice working collaboratively to solve problems.

Individual Written Reflections

Each week, you will fill out a reflection form. This is a chance to notice things that have been going well or gaps in your understanding as well as identify areas where you would like additional support in your learning. You should be engaging in critical thinking and will be assessed on your engagement with the reflective process.

Peer Mentor Meetings

In the interest of fostering a supportive and inclusive learning environment, you will be individually assigned to a trained peer mentor. Your mentor will be a fellow student who has experience navigating Computer Science coursework at Mount Holyoke. Their role will be to provide you with guidance, encouragement, and perspective as you progress through this course. They can give you feedback on coding assignments you have submitted, advice on how to approach your coursework, and guidance on how to continue on to a Computer Science major if you so choose. Past students in this course have found mentoring useful, regardless of how challenging they found the course itself. Please take advantage of this opportunity to connect with a fellow student.

You have the opportunity to meet with your mentor regularly (as often as once a week). During the second week of classes, you will receive an email introducing you to your new mentor from Barbara Dalton Rotundo, our Student Learning Initiatives Manager. At that point, your mentor will contact you to arrange your first meeting time.

Your mentor is a student too, with many other responsibilities, so please respect their time. This means responding promptly to their emails and showing up to all scheduled meetings.

If you have any questions regarding our peer mentoring program, or encounter any problems with your mentor, please contact Barbara at barbara.rotundo@mtholyoke.edu.

Homeworks

Homeworks are an opportunity to engage with the material and practice your programming skills. To support you, solutions will be available on moodle. It is your responsibility to engage with them in a way that strategically moves your learning forward. You should:

  • Attempt the homework without looking at the solutions.

  • Review the solutions; if you were stuck, you may revise your homework. You may find yourself iteratively reviewing and revising to best support your learning.

  • When you submit your homework, you will be required to complete a self-assessment and reflection:

  1. Give yourself an assessment mark on the initial attempt:

✘ if you did not complete it

✓- if you completed it, but were very far from the solution

✓ if you completed it and essentially had the solution

✓+ if you completed it correctly, including precise communication

? if you are unsure as to whether or not you completed it

  1. Provide a short reflection as to why you earned that mark, such as:

  • I did not understand how to get started, and it was too close to the deadline to visit support hours.

  • I got stumped by a bug where my program entered an infinite loop.

  1. If you used the solutions to revise your work, describe what you needed to change, as in:

    • I modified the style of my conditional when I saw a simpler approach in the solutions.

    • I was so stuck that the majority of my submission is based on the solutions.

  2. Ask specific questions on portions that are still confusing, such as:

    • Why does it cause an error when I returned "1" instead of 1?

[Optional] Provide one hint for the homework (to your past self or future student).

Projects

You will have 3-4 projects to complete during the course. There will be no solutions available for projects. Practicing your developer skills through the homeworks will build an important foundation when undertaking projects.

Exams

You will have one in-class midterm on March 24 and a self-scheduled exam during the regular finals period.

Sample reflections

SelfAssessmentReflectionSample1.pdf
SelfAssessmentReflectionSample2.pdf

Assessment

The grade breakdown is intended to support effective learning.

10% In-class Poll Everywhere responses and Worksheets, based on completion/participation

15% Communication & Reflection, based on engagement

25% Labs (10%) & Homeworks (15%), based on correctness

25% Projects, based on correctness

25% Midterm exam (10%) and Final exam (15%), based on correctness

Logistics

  • You'll need to register and be logged into Poll Everywhere for each class meeting. This is how you will earn the points for participating in the questions. You will not be graded on whether you answered correctly, just that you tried!

  • You will submit your programming work via Gradescope.

  • You may resubmit labs, homeworks and projects without penalty up to 4 weeks beyond the posted deadline or the last day of clases, whichever is sooner. If you resubmit, please be sure to email Charlie and Audrey to let them know! Feedback is only guaranteed if the work is submitted before the posted deadline.

Textbook and resources

We will be providing notes and reference videos on this web site, drawn from a collaborative text co-authored by Audrey St. John, Barbara Lerner, Charles Romer and Tayloe. Note: videos were recorded for a different version of this course and cannot be used as a substitute for in-class lectures; they are provided for reference only.

You should not need a text for the class, but you may find the following references useful:

You will be given access to the Kendade 307 lab. Please be respectful as this is a shared space with other CS classes and students. Also, be aware that all files are periodically deleted, so you should always be careful to save (and remove) your work!

Academic Integrity & Honor Code

Mount Holyoke College is a community of students, faculty, staff, and administrators committed to free inquiry and the pursuit of knowledge in the tradition of the liberal arts. The decision to join this academic community requires acceptance of special rights and responsibilities that are essential for its effective functioning and the realization of its mission. All members of the community share the responsibility to uphold the highest standards of academic integrity.

We expect all your work to abide by the MHC Honor Code:

"I will honor myself, my fellow students, and Mount Holyoke College by acting responsibly, honestly, and respectfully in both my words and deeds."

Any work that does not will be reported to the Academic Honor Board. For more detail on what constitutes an academic violation of the Honor Code, please see the College ​Academic Rights and Responsibilities webpage.

More specifically:

The Computer Science Department follows the Mount Holyoke College Honor Code. Work submitted for grading must be entirely your own, unless you were instructed to work in groups. The purpose of course assignments is to practice skills, gain a deeper understanding of the course material, and apply that knowledge to new situations. Assignments are designed to challenge you, stimulate critical thinking, and help you understand the concepts related to the course. Your grade is a reflection of your understanding of the material.

We recognize that collaboration can help you master course material. In fact, there are certain ways in which we will encourage you to collaborate. These include:

  • discussing course content at a high level

  • getting hints or debugging help

  • talking about problem-solving strategies

  • discussing ideas together

However, you must do all coding and write-ups on your own. Writing code and solutions on your own will test and demonstrate your mastery of course material.


Looking at solutions from other students or any other source (including the web), or collaborating to write solutions to individual work, is considered a violation of the honor code. All suspected violations will be referred to the academic honor board. If you are uncertain whether something is allowed, it is your responsibility to ask.


If you have engaged in any of the above acceptable collaboration activities for an assignment, you MUST acknowledge the classmates or TAs with whom you spoke – this should be done in a comment at the top of your main submission file.


Note that the Association for Computing Machinery has a strong Code of Ethics and Professional Conduct. At this site you can read both the current Code from 1992 and the draft of the new 2018 version.

Internet sources

The internet is a useful resource when learning to solve computer science problems, and in some cases you will be expected to use reference material found online (e.g., documentation for a programming language or library). In general, it’s OK to look at resources for a broad topic such as a programming language, but it is not OK to look at solutions for specific programming or written problems. If you are unsure whether something is allowed, ask.

  • You must cite all online sources used while working on a project. I will clarify more specific expectations or deviations from this policy, but it is always your responsibility to ask if you are unsure.

It is OK to adapt code online in these situations:

  • any code from this course web site

  • any solutions posted to moodle

It is not OK to adapt code online in these situations:

  • "wild" code (not from this web site) for homeworks, projects and labs


Honor code dos and don'ts:

These lists are intended to clarify what types of behaviors are and are not generally permissible. Follow these guidelines unless specifically directed otherwise. (clarify if uncertain)


Do:

  • Organize study groups.

  • Clarify ambiguities or vague points in class handouts, textbooks, assignments, and labs.

  • Discuss assignments at a high level to understand what is being asked for, and to discuss related concepts and the high-level approach.

  • Refine high-level ideas/concepts for projects (i.e. brainstorming).

  • Outline solutions to assignments with others using diagrams or pseudocode, but not actual code.

  • Walk away from the computer or write-up to discuss conceptual issues if you get stuck.

  • Get or give help on how to operate the computer, terminal, or course software.

  • Get or give limited debugging help. Debugging includes identifying a syntax or logical error but not helping to write or rewrite code.

  • Submit the result of collaborative coding work if and only if group work is explicitly permitted (or required).

Don’t:

  • Look at another student’s solutions.

  • Use solutions to same or similar problems found online or elsewhere.

  • Search for homework solutions online.

  • Turn in any part of someone else's work as your own (with or without their knowledge).

  • Share your code or written solutions with another student.

  • Share your code or snippets of your own code online.

  • Allow someone else to turn in your work as their own. (Be sure to disconnect your network drive when you logout and remove any printouts promptly from printers.)

  • Collaborate while writing programs or solutions to written problems. (But see above about specific ways to give or get debugging help.)

  • Write homework assignments together unless it is specified as a group assignment.

  • Collaborate with anyone outside your group for a group assignment.

  • Use resources during a quiz or exam beyond those explicitly allowed in the quiz/exam instructions. (If it is not listed, don’t use it. Ask if you are unsure.)

  • Submit the same or similar work in more than one course. (Always ask the instructor if it is OK to reuse any part of a different project in their course.).

Accommodations

AccessAbility Services is the office on campus that determines academic accommodations for students with disabilities. If you need official accommodations through AccessAbility Services, you have a right to have these met and kept confidential. Please contact AccessAbility Services, located in Mary Lyon Hall 3rd Floor, at 413-538-2634 or accessability-services@mtholyoke.edu. If you are eligible for academic accommodations, you will be provided with an accommodation letter. Once you receive your accommodation letter, I would like to meet with you and discuss these approved accommodations and our class. For more information on who might be eligible for accommodations and the application process please see the AccessAbility Services website (​www.mtholyoke.edu/accessability​).

If you or someone you know has been a victim of discrimination, harassment or violence based on sex or gender and you would like to talk to someone about our resources, please contact the Title IX Coordinator, Shannon Da Silva at ​titleixofficer@mtholyoke.edu​.

Title IX/Responsible Reporter:

As a faculty member, I am a responsible reporter for any information I learn that may be a violation of our Gender-based and Sexual Misconduct Policy. This means that I will need to share this information with our Title IX Coordinator, Shannon Da Silva. This could be anything related to sexual assault, dating violence, stalking or sex or gender-based harassment. If you are experiencing any of these things and you want to talk with someone who is not a responsible reporter, I can help direct you to private and confidential resources on campus (Counseling Service, Health Services, and Alcohol and Drug Awareness Project. These offices have a legal mandate for confidentiality. These offices are not required to turn over identifying information to the Title IX coordinator but may provide anonymous data to the Title IX coordinator for reporting requirements of the Clery Act).

Audio/Visual Recording Policy

To encourage active engagement and academic inquiry in the classroom, as well as to safeguard the privacy of students and faculty, no form of audio or visual recording in the classroom is permitted without explicit permission from the professor/instructor or without a letter from AccessAbility Services, signed by the faculty member, authorizing the recording as an accommodation. Authorized recordings may only be used by a student who has obtained permission and may not be shared or distributed for any reason. Violation of this policy is an infraction of the Mount Holyoke Honor Code and academic regulations and will result in disciplinary action.