Python logo CMSC H105: Introduction to Computer Science

(Spring 2025)

Course Info | Materials | Schedule | Grading
Academic Integrity | Piazza | Diversity Statement | Accommodations | Title IX

Course Information

Lectures: TTh 10-11:30am in KINSC Hilles 204
Labs: Thursdays 12:30-1:30pm or 1:30-2:30pm in H110
Instructors: Thao Nguyen, Suzanne Lindell
Office hours: Tuesdays 1-3pm in L303 (or schedule an appointment here)
TAs: Ahmed Haj Ahmed, Meghan Galban, Amy Saxon, Mateo Taylor
TA hours: TBD
Piazza: CS105

This course is designed for students with little or no programming experience. A good understanding of high school-level algebra is helpful.

This course is an introduction to computer science with emphasis on problem-solving, programming, and algorithm design and development. Topics include basic programming techniques, approaches to algorithm design, and techniques for understanding the process of computation and the correctness of software. The language for this course is Python 3.

Learning Objectives:

A student successfully completing this course will:

Materials

Reference Textbook:

From Vision to Execution: Computer Science and the Creative Process by Dave Wonnacott. The 2017 version is available on Moodle.

Useful Links:


See the Schedule for each week's reading assignment. The schedule is tentative and subject to change throughout the semester.

Schedule (Tentative)

WEEK
DAY
TOPIC & READING
LECTURES
LAB & MEMOS
1 Jan 21

Python syntax, variables, functions, scope, mathematical operations, algorithms, computations, substitution, ints, floats

Reading: Chapter 1

Lab 1

Jan 23

2

Jan 28

If-statements, basic recursion, strings, design by cases, test cases, preconditions, postconditions

Reading: Chapters 2, 3

Lab 2

Jan 30

3

Feb 04

More recursion practice, lists, strings, modulus and integer division

Reading: Chapter 4

Lab 3

Last day to drop (Feb 07)

Feb 06

4

Feb 11

User input, while loops, string membership, passing lists, enumerate and test, modulus and integer division practice

Reading: Chapter 6

Lab 4

Feb 13

5

Feb 18

Passing lists, test and filter, algorithmic correctness

Lab 5

Feb 20

6

Feb 25

Hamming and Eucliden distances, string operations

Feb 27

7

Mar 04

Midterm review

Mar 06

Midterm 1

 

Mar 11

Spring Break

Mar 13

8

Mar 18

For-loops

Lab 6

Mar 20

9

Mar 25

Computational Complexity

Reading: Chapter 7

Lab 7

Mar 27

10

Apr 01

Machine Bias

Lab 8

Apr 03

11

Apr 08

Preliminary: Classes and objects

Lab 9

Apr 10

12

Apr 15

Midterm Review

Apr 17

Midterm 2

13

Apr 22

TBD

Apr 24

14

Apr 29

Final project presentations

Last day to pass/fail (May 02)

May 01


Grading Policies

Grades will be weighted as follows:
40% Assignments
30% Midterms
20% Final Project (including presentation)
10% Attendance & Participation

Participation includes participation in the online discussion board, participation during class lectures, and participation in in-class discussion. Final grades will follow the standard Haverford grading scale.

Quizzes and Exams

We will have short quizzes and excercises during class. Be ready to work on them by completing the weekly reading before class on Thursdays.

There will be two in-class midterms. In lieu of a final exam, there will be a final project and associated presentation. You must pass at least one exam to pass the course overall.

Labs

Lab assignments will generally be released on Tuesday, introduced on Thursday during lab time, and due the following Thursday at midnight. Lab attendance is required, and missing labs will quickly affect your participation grade. You will usually work on labs with a partner, and lab in general is a time to build community around the course and the material. Please note that I will often be off campus on Friday, and make use of office hours (both mine and the TAs) and Piazza for questions. In addition to the listed office hours, lab monitors are available for help in KINSC H110 every Sunday - Thursday from 7-11pm.

Weekly Lab Sessions
Lab A 12:30—1:30pm Thursdays Nguyen H110
Lab B 1:30—2:30pm Thursdays Lindell H110

Labwork should be done on the computers in the computer science teaching lab (KINSC H110 or H204) either in person or by logging in remotely. We will help you learn how to login and access the lab during your first lab session. You may also find the following documents useful:

Late Policy:

Each individual will be given 4 late days for the semester. A late day is a 24 hour extension from the original deadline. You can use up to one late day on any one assignment. This will encompass any reason - illness, interviews, many midterms in the same week, etc. Past these days, late assignments will not be accepted. You should budget your days to account for future illnesses or assignment deadlines for other courses. Even if you do not fully complete a lab assignment you should submit what you have done to receive partial credit.

For extensions beyond these 4 late days (in the case of an emergency or ongoing personal issue), please contact your Class Dean. If your Class Dean notifies me of the issues, then we can arrange an accommodation.


Academic Integrity

From the faculty:

In a community that thrives on relationships between students and faculty that are based on trust and respect, it is crucial that students understand a professor's expectations and what it means to do academic work with integrity. Plagiarism and cheating, even if unintentional, undermine the values of the Honor Code and the ability of all students to benefit from the academic freedom and relationships of trust the Code facilitates. Plagiarism is using someone else's work or ideas and presenting them as your own without attribution. Plagiarism can also occur in more subtle forms, such as inadequate paraphrasing, failure to cite another person's idea even if not directly quoted, failure to attribute the synthesis of various sources in a review article to that author, or accidental incorporation of another's words into your own paper as a result of careless note-taking. Cheating is another form of academic dishonesty, and it includes not only copying, but also inappropriate collaboration, exceeding the time allowed, and discussion of the form, content, or degree of difficulty of an exam. Please be conscientious about your work, and check with us if anything is unclear.

Please also note the CS Department Collaboration Policy.

More details for this course:

Under no circumstances may you hand in work done with (or by) someone else under your own name. Your code should never be shared with anyone; you may not examine or use code belonging to someone else, nor may you let anyone else look at or make a copy of your code. While it is natural to consult online sources, students should not copy source code or attempt to find solutions online. You may not share solutions after the due date of the assignment.

Discussing ideas and approaches to problems with others on a general level is fine (in fact, we encourage you to discuss general strategies with each other), but you should never read anyone else's code or let anyone else read your code. All code you submit must be your own with the following permissible exceptions: code distributed in class, code found in the course text book, and code worked on with an assigned partner. In these cases, you should always include detailed comments that indicates on which parts of the assignment you received help, and what your sources were.

Github copilot (or any other software for automaticallly generating code) is not allowed for this course. Students must solve problems on their own to become proficient. Furthermore, code generation tools often create code that is not well understood by the user, which can then become incorrect in the larger context of the program.


Piazza

We'll be using Piazza, an online Q&A forum for class discussion, to help with labs, clarifications, and announcements. You will receive an email invitation to join CMSC H105 on Piazza. If you don't, please let me know.

Questions asked on Piazza are almost always answered faster than questions asked via e-mail. Please do not hesitate to ask and answer questions on Piazza, but keep in mind the following guidelines:

  1. Piazza should be used for ALL content and logistics questions outside of class, lab, and office hours. Please do not email me your code or extended questions about the assignments.
  2. If there is a personal issue that relates only to you, please email me.
  3. We encourage non-anonymous posts, but you may post anonymously (to your classmates, not the instructors).
  4. Do not post long blocks of code on Piazza — if you can distill the problem to 1-2 lines of code and an error message, that's fine, but try to avoid giving out key components of your work.
  5. By the same token, when answering a question, try to give some guiding help but do not post code fixes or explicit solutions to the problem.
  6. Posting on Piazza counts toward your participation grade, both asking and answering!

Diversity Statement

We aim to create a course culture that is inclusive, welcoming, and respectful of individuals of all ages, backgrounds, beliefs, ethnicities, genders, gender identities, gender expressions, national origins, religious affiliations, sexual orientations, ability, and other visible and non-visible differences. All members of this class are expected to treat every other member of the class with respect and awareness.

Haverford Academic Accommodations Statement

For details about the accommodations process, visit the Access and Disability Services website.

We are committed to partnering with you on your academic and intellectual journey and recognize that you bring many strengths, perspectives and strategies as you navigate this journey. We also recognize that your ability to thrive academically can be impacted by your personal well-being and that stressors may impact you over the course of the semester. If the stressors are academic, we welcome the opportunity to discuss and address those stressors with you in order to find solutions together. If you are experiencing challenges or questions related to emotional health, finances, physical health, relationships, learning strategies or differences, or other related topics, we hope you will consider reaching out to the many resources available on campus. These resources include CAPS (free and unlimited counseling is available), Office of Academic Resources, Writing Center, Student Diversity Equity and Access Team, Health Services, Professional Health Advocate, Religious and Spiritual Life, the Office of Multicultural Affairs, the GRASE Center, and the Dean's Office. Additional information can be found here.

Additionally, Haverford College is committed to creating a learning environment that meets the needs of its diverse student body and providing equitable access to students with disabilities. If you have (or think you may have) a disability related to mental health, chronic health, neurological state, and/or physical condition – please contact the Office of Access and Disability Services (ADS) at hc-ads@haverford.edu. It is never too late to request ADA accommodations – our bodies and circumstances are continuously changing. Please know that all inquiries and health-related information is handled in a sensitive and confidential manner.

Students who have already been approved to receive academic ADA accommodations and want to use these in this course should share their accommodation letter and make arrangements to meet with me as soon as possible to discuss how their accommodations will be implemented in this course. Please note that accommodations are not retroactive and require advance notice in order to successfully implement.

If, at any point in the semester, a disability or personal circumstances affect your learning in this course or if there are ways in which the overall structure of the course and general classroom interactions could be adapted to facilitate full participation, please do not hesitate to reach out to us.

It is a state law in Pennsylvania that individuals must be given advance notice that they may be recorded. Therefore, any student who has a disability-related need to audio record this class must first be approved for this ADA accommodation by Access and Disability Services and then must communicate approval to me. I will then make a general announcement to the class that audio recording may occur while respecting students’ right to privacy by not identifying the individual(s).

Haverford Title IX Statement

Haverford College is committed to fostering a safe and inclusive living and learning environment where all can feel secure and free from harassment. All forms of sexual misconduct, including sexual assault, sexual harassment, stalking, domestic violence, and dating violence are violations of Haverford's policies, whether they occur on or off campus. Haverford faculty are committed to helping to create a safe learning environment for all students and for the College community as a whole. If you have experienced any form of gender or sex-based discrimination, harassment, or violence, know that help and support are available. Staff members are trained to support students in navigating campus life, accessing health and counseling services, providing academic and housing accommodations, and more.

The College strongly encourages all students to report any incidents of sexual misconduct. Please be aware that all Haverford employees (other than those designated as confidential resources such as counselors, clergy, and healthcare providers) are required to report information about such discrimination and harassment to the Bi-College Title IX Coordinator.

Information about the College's Sexual Misconduct policy, reporting options, and a list of campus and local resources can be found on the College's website here.