BYU logo Computer Science


Fall 2022

Welcome to CS 110: How to Program!

This course is designed to teach students with little or no programming experience the skills they need to write basic programs on their own. 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.

Learning Outcomes

  • Programming: Demonstrate the ability to independently write small programs (about 150 lines of code), given an English description of what the program should accomplish.
  • Abstraction: Develop the ability to create and use abstractions in solving real problems.
  • Basic Programming Constructs: Effectively use basic programming constructs, including variables, statements, expressions, and control.
  • 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.

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.

See BYU CS Intro Courses for more detail.


This Fall, CS 110 will be delivered in person. There are 12 sections in total:

  • Instructor: Daniel Zappala
    • Lecture: MWF 11 - 11:50am, TMCB 1170
    • Section 1 Lab: TTh 1 - 1:50pm, JFSB B092
    • Section 2 Lab: TTh 2 - 2:50pm, MARB 206
    • Section 3 Lab: TTh 10 - 10:50am, EB 325
    • Section 14 Lab: TTh 9 - 9:50am, JKB 1125
  • Instructor: Gordon Bean
    • Lecture: MWF 3 - 3:50pm, HBLL 3714
    • Section 4 Lab: TTh 10 - 10:50am, CTB 250
    • Section 5 Lab: TTh 3 - 3:50pm, TMCB 111
    • Section 6 Lab: TTh 12 - 12:50pm, MARB 207
    • Section 10 Lab: TTh 9 - 9:50am, TMCB 299
  • Instructor: Christopher Rytting
    • Lecture: MWF 2 - 2:50pm, HBLL 3718
    • Section 11 Lab: TTh 3 - 3:50pm, TMCB 112
    • Section 12 Lab: TTh 9 - 9:50am, TNRB 164
    • Section 13 Lab: TTh 1 - 1:50pm, KMBL 280
  • Instructor: Angela Jones
  • Instructor: Bryce Perkins (Salt Lake City)
    • Lecture: M 5:15 - 7:40pm

Course Requirements and Materials

There are no prerequisites to this course; students with little or no prior programming experience can succeed in it.

You will need a Windows or Mac laptop. We recommend at least 8GB of RAM. We will show you how to get all required (free) software installed on your laptop.You will need a way to take hand-drawn notes, such as a paper notebook and pencil. There is no textbook for this course.

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.

You should bring your laptop, notebook, and pencil to every class, both lecture and lab.


  • 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, lecture notes, and various resources on this website.

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

  • Slack: CS 110 workspace. Please contact your section leader for an invite.

Course Components

CS 110 will be have both online and in-person sections. The online section conducts all class activities through Canvas. The in-person sections meet MWF for lecture and TTh for lab sections.


Lectures are where new material will be presented. There will be in-class activities to practice the material, so bring paper, pencil, and laptops!


Lab sections are where you start on your lab assignments. The lab assignments are where you will practice the skills you need to succeed on the projects and exams.

Each lab section will be supervised by a section leader TA.

You will be organized into teams of about 6 students, and for each assignment you will work with a different partner from that team. The team assignments will change throughout the course.

If you and your partner are not sure how to do a particular activity, talk to your team. If your team is not sure, talk to the TA.

The lab assignments are designed to be done with a partner; however, it is not appropriate to “divide and conquer” on an assignment. Instead, you should work together on each activity, drawing it out together, deciding on a strategy, and translating that strategy into code, but each of you writing the code on your own computers.

If you and your partner do not finish the assignment during the lab section, you should finish the assignment outside of class. You may continue to work with the same or a different partner, or finish on your own.

Each lab assignment is due at the end of the following day (i.e. 11:59 PM). Each lab is worth 30 points.


Projects are an opportunity for you to demonstrate mastery of the skills learned thus far. With one exception, they are stand-alone programs that you will write from scratch following a technical specification.

Projects are to be done individually. While you can seek help from TAs and the instructors, and you are welcome to discuss high-level ideas with fellow students, you should not share or view others’ project code. The code you turn in for a project should be entirely your own.

All of the skills and techniques needed to do the projects will be covered in the prior lab assignments. Avoid consulting the internet for help on the projects. Instead, review the prior labs and seek help from the TAs or instructor.

Projects are assigned on Friday during lecture. They are due two weeks later on Thursday at 11:59 PM, except for project 5 which is due on the last day of finals week. Each project is worth 100 points, except for project 5, which is worth 200 points.


There will be a midterm and a final. Because project 5 counts as part of the final, the written component of the final will be much smaller than the midterm.

Grading Breakdown

Your final grade will be calculated based on the following:

  • 50% projects
  • 35% labs
  • 10% midterm
  • 5% final

Labs and projects are due on the posted date at 11:59 PM. Late submissions are accepted through the last day of class. A late submission receives a 10% penalty for each day late, up to 50%.

For example, imagine you are working on a lab that is worth 30 points and you turn it in one day late. You would receive a 10% penalty, or 3 points off, so if everything else is right, you would get a 27/30. If you are two days late, the assignment would get scored as 24/30. But even if you are 10 days late, you would get a 15/30, since the maximum penalty is 50%.

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.

Learning to code takes practice, 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 how to approach a problem 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+, or have any other experiences that you believe set you apart or harm you, you are welcome to talk to us any time about difficulties you are having and we will do our 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, contact your instructor.

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.