BYU logo Computer Science

Syllabus — Winter 2022


Welcome to CS 110: The Joy of Programming! We’re really excited to teach this new course. Our primary goal in this course is to teach you how to program. We will be using Python, but all of the concepts are directly applicable to any other programming language. By the end of the class, we hope you walk away with the ability to program well and the confidence to apply these skills in whichever field you choose to pursue. We also hope you experience the joy that comes with programming something on your own and a deeper understanding of some of the impacts of computing on society.

Learning Outcomes

  • Programming: Demonstrate the ability to independently write code for small to moderate-sized programs, given an English description of what the program should accomplish.
  • Basic Programming Constructs: Effectively use basic programming constructs, including variables, statements, expressions, and control.
  • Abstraction: Understand the fundamental role of abstraction in computing and practice abstraction by writing functions.
  • Algorithms and Libraries: Effectively use basic algorithms and libraries to design and develop a program.
  • Data Structures: Effectively utilize basic data structures to represent and store data in a program.
  • Testing and Debugging: Write and use simple tests to ensure correct functioning of a program. Explain the meaning of error messages encountered when running a program. Use a debugger to step through code execution and identify the source of a bug.
  • Application of Computing: Students will develop useful programming skills that they can apply in their major.
  • Impact of Computing in Society: Demonstrate understanding of the broad impacts of computing in society.

Should I be in this class?

You should take this class if:

  • You would like to learn how to program and have never programmed before.
  • You have done a little bit of programming before but are not ready for CS 111, which will go quickly into advanced concepts like higher-order functions and object-oriented programming.


This Fall, CS 110 will be delivered in person. There are two sections that share lecture but have separate labs:

  • Section 1
    • Lecture: MWF 2 - 2:50pm, JKB 1103
    • Lab: TTh 2 - 2:50pm, JKB 2114
  • Section 2
    • Lecture: MWF 2 - 2:50pm, JKB 1103
    • Lab: TTh 3 - 3:50pm, JKB 2114


  • Course Website: The day-to-day happenings of the course (and links to all the platforms below) can be found here at We will post assignments, a calendar, announcements, and various resources on this website.

  • Canvas: This will be where you can submit the course assignments and view your grades.

  • Ed: This will be our main Q&A platform, where you can ask questions. The system is designed to get you help fast and efficiently from classmates, the TAs, and instructors. Rather than emailing questions to the teaching staff, I encourage you to post your questions on Ed. To join Ed, using the invitation link in Canvas

Course Components

  • Lecture: Lecture will be live and in person in the room listed above.

  • Labs: Labs will be held in person and are the primary place you will learn to program. Attendance is not mandatory, but highly recommended. To earn full credit for a lab, it must be completed, submitted, and checked off. Checkoff can be done either in lab or in office hours. If you have a special circumstance where you are unable to check-off a lab, please contact your TA. Each lab will be due at the end of the following day.

  • Discussions: Discussions will be held on some Fridays during regular lecture hour. Each discussion will have assigned readings that you are expected to read in advance. Prior to the discussion day, you will turn in a reading response that is graded based on meaningful participation. If your response indicates you have engaged with the reading, you will get full credit. if your response is shallow or missing, you will get no credit.

  • Office Hours: During office hours, you can meet with a TA or instructor for help with course material, assignments, or bigger picture questions.


You should have a laptop and you should bring it to class and to the lab. We will show you how to get all required (free) software installed on your laptop. When using your laptop in class, we ask that you only use it for taking notes or practicing concepts we discuss in class. If you use your computer for games or other uses you will be distracting to the other students. We may ask you to close your laptop if we perceive this to be a problem.

Grading Breakdown

Because this is the first time we have taught the course, the following point assignments are subject to change.

Reading Responses40
Project 120
Project 230
Project 340
Project 450
Project 560
Project 680
Project 7100
Project 8100
Project 9100
Total1500 Points
Letter GradeRange

Pro-Student Grading Policies

  • Clobber Policy: If your final exam score is higher than your midterm score, we will replace your midterm score with your final exam score. For example, if you receive a 70% on the midterm but an 85% on the final, at the end of the semester your midterm score will also be upgraded to 85%.

  • Project Slip Days: Each student will receive 6 slip days, to be used for projects. Each slip day allows you to extend the deadline period by one day with no penalty. For example, if a project is due Friday at 11:59 PM PT, you may turn it in without penalty up until Saturday at 11:59 PM PT by using one slip day. If you are out of slip days for a project but cannot make a deadline, please contact your Section Leader prior to the due date to figure out an extension. If you do not reach out to anyone in advance, we reserve the right to mark the submission down by 10% for each day that it is late.

  • Earning Project Slip Days: You earn another slip day for every day you turn in a project early.

  • Late Lab Submissions: Late submissions for labs will have 1 point deducted per day, up to a maximum of 3 points. Late submissions for projects will be handled on a case-by-case basis.

  • Exam Policy: There will be two exams: the Midterm and the Final Exam. Exams will be held online. Exams will be taken using the Prairie Learn platform. Online exams will be proctored. Details on how to use Prairie Learn and how exams will be proctored will be announced later. You will be able to start the Midterm exam at any time on the exam date, and will have a maximum of two hours to finish. The final exam will be on TBD from TBD-TBD.

Academic Integrity

This policy is borrowed extensively from CS 10 at Berkeley.

Let’s get honest about being honest. It is truly a disappointment to catch students cheating. All we really want is for you to learn the material and if the class is stressful enough that you feel the need to cheat, we have failed as instructors. If you are feeling stressed out in the course, please tell us. We will do what we can to help you.

Maintaining academic integrity is a crucial part of your learning experience, as cheating prevents us as instructors from understanding where our model of instruction isn’t working. We understand that academics can be stressful and that it might be tempting to cheat; however, there are ways to meet your goals that don’t require academically dishonest means. Following are our academic integrity policies and some good practices that will help you avoid academic dishonesty and improve your overall mastery of the material.

What constitutes cheating?

  • Copying part or all of another student’s project code with the exception of your partner(s). This includes students from previous semesters.

  • Sharing or receiving the exact steps used to solve a project problem (even if code is not explicitly sent).

  • Copying part or all of another student’s exam answers.

  • Collaborating with another student when taking the midterm or final exams by receiving or giving assistance of any kind.

  • Copying code from online sources without crediting them

  • Using or paraphrasing someone else’s words without crediting them.

Coding is difficult to learn, and when you do any of the above, you rob yourself and others of learning how to approach difficult programming problems, an essential skill for future classes. If you are unsure about whether or not something constitutes cheating, please confirm with an instructor or TA.

What constitutes collaboration?

  • Asking instead of telling. If you’re working with your friends and one of them is stuck on a part of an assignment, try to ask them guiding questions instead of telling them the answer.

  • Keeping things conceptual! It’s more beneficial to your learning if you come up with a solution yourself, rather than having it told to you. This also applies if you are helping someone else. We highly encourage collaboration, so let’s define what that means. Discussing approaches to problems is fine (in fact, we actively encourage it), as long as you eventually arrive at a good enough understanding of the problem that you are able to code the solution completely by yourself. You should not allow concerns about cheating to get in the way of discussing the class material with your classmates. It is okay if you have received some help with ideas along the way (but not a fully worked out solution).

What happens if you cheat?

We will set up a meeting with you to discuss the situation and determine the consequences.

Diversity and Inclusion Statement

We recognize that computer science is a demographically skewed field in the United States, and that minoritized students can find themselves feeling alone. It is our goal in this course to deliver an equitable learning experience for everyone involved. Concretely, this means a few things:

  • We strive to create a sense of belonging for everyone in this class. An important part of that is answering your questions in a caring and helpful manner.
  • We will do our best to show you that computing is a field anyone can be successful in. In other words, there is no “gene” for coding. If you put in the work and see us for help, we are confident you can succeed.
  • In addition to teaching the technical skills necessary for programming, we will also teach the social implications of computing. In doing so, we will discuss the impacts of computing on minorities and discuss ways these can be addressed.
  • Discrimination or disrespect on the basis of race, ethnicity, religion, socioeconomic status, ability, gender, or sexual orientation will not be tolerated. Should someone make you feel uncomfortable or disrespected in any way, please talk to one of us that you are comfortable with — the instructors or a TA.
  • If you feel you are lacking support and would like some mentoring, please contact Jen Bonnett at jen [at] and ask about our CSIDE mentoring program. CSIDE is devoted to increasing inclusion, diversity, and equity in the BYU Computer Science Department. All are welcome to our mentoring program, regardless of gender or race.

If you are a person of color or identify as LGBTQ+, BYU can be an especially difficult place to attend school. You are welcome to talk to me any time about difficulties you are having and I will do my best to support you.

If you have difficulty with your mental health, please seek counseling (see and accommodations (see to help you cope with this. If you need help with accommodations, send me a note on Ed and we can handle that quickly and easily for you.

If you are struggling with anything that impedes your progress, and feel you need additional help, please talk to an instructor or TA.

University Policies

Honor Code

In keeping with the principles of the BYU Honor Code, students are expected to be honest in all of their academic work. Academic honesty means, most fundamentally, that any work you present as your own must in fact be your own work and not that of another. Violations of this principle may result in a failing grade in the course and additional disciplinary action by the university. Students are also expected to adhere to the Dress and Grooming Standards. Adherence demonstrates respect for yourself and others and ensures an effective learning and working environment. It is the university’s expectation, and every instructor’s expectation in class, that each student will abide by all Honor Code standards. Please call the Honor Code Office at 422-2847 if you have questions about those standards.

Preventing Sexual Misconduct

As required by Title IX of the Education Amendments of 1972, the university prohibits sex discrimination against any participant in its education programs or activities. Title IX also prohibits sexual harassment-including sexual violence-committed by or against students, university employees, and visitors to campus. As outlined in university policy, sexual harassment, dating violence, domestic violence, sexual assault, and stalking are considered forms of “Sexual Misconduct” prohibited by the university.

University policy requires any university employee in a teaching, managerial, or supervisory role to report incidents of sexual misconduct that come to their attention through various forms including face-to-face conversation, a written class assignment or paper, class discussion, email, text, or social media post. If you encounter Sexual Misconduct, please contact the Title IX Coordinator at [email protected] or 801-422-2130 or Ethics Point at or 1-888-238-1062 (24-hours). Additional information about Title IX and resources available to you can be found at

Student Disability

Brigham Young University is committed to providing a working and learning atmosphere that reasonably accommodates qualified persons with disabilities. If you have any disability which may impair your ability to complete this course successfully, please contact the University Accessibility Center (UAC), 2170 WSC or 422-2767. Reasonable academic accommodations are reviewed for all students who have qualified, documented disabilities. The UAC can also assess students for learning, attention, and emotional concerns. Services are coordinated with the student and instructor by the UAC. If you need assistance or if you feel you have been unlawfully discriminated against on the basis of disability, you may seek resolution through established grievance policy and procedures by contacting the Equal Employment Office at 422-5895, D-285 ASB.

Devotional Attendance

Brigham Young University’s devotional and forum assemblies are an important part of your BYU experience. President Cecil O. Samuelson said, “We have special and enlightening series of devotional and forum assemblies…that will complement, supplement, and enrich what will also be a very productive period in your classrooms, laboratories, and libraries. We look forward to being with you each Tuesday…and hope that you will regularly attend and bring your friends and associates with you…A large part of what constitutes the unique ‘BYU experience’ is found in these gatherings where the Spirit has been invited and where we have the opportunity to discuss and consider things of ultimate worth and importance that are not afforded to the academic community on almost any other campus” (from the address “The Legacy of Learning”, 30 August, 2005). Your attendance at each forum and devotional is strongly encouraged.

Academic Honesty

The first injunction of the Honor Code is the call to “be honest.” Students come to the university not only to improve their minds, gain knowledge, and develop skills that will assist them in their life’s work, but also to build character. “President David O. McKay taught that character is the highest aim of education” (The Aims of a BYU Education, p.6). It is the purpose of the BYU Academic Honesty Policy to assist in fulfilling that aim. BYU students should seek to be totally honest in their dealings with others. They should complete their own work and be evaluated based upon that work. They should avoid academic dishonesty and misconduct in all its forms, including but not limited to plagiarism, fabrication or falsification, cheating, and other academic misconduct.