BYU logo Computer Science

Syllabus

Welcome

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.

For information on when, where, and how to get help, see Getting Help.

Joy and Belonging

A significant goal of this course is to help you experience the joy of programming. We were created with the express purpose and potential of experiencing a fulness of joy.. One of the ways you can experience joy is through creating programs. As Elder Uchtdorf relates in the talk above:

The desire to create is one of the deepest yearnings of the human soul. No matter our talents, education, backgrounds, or abilities, we each have an inherent wish to create something that did not exist before. Everyone can create.

Another goal of this course is to help you to feel like you belong in the world of programming. A sense of belonging is important to our physical, mental, and spiritual well-being. Belonging means that you should always feel you are part of a group, that you have friends you can turn to for help and support, and that we are all part of a welcoming community.

If you feel you don’t belong in a group of programmers, consider this passage from Elder Uchtdorf:

You might say, “I’m not the creative type. When I sing, I’m always half a tone above or below the note. I cannot draw a line without a ruler. And the only practical use for my homemade bread is as a paperweight or as a doorstop.” If that is how you feel, think again, and remember that you are spirit daughters of the most creative Being in the universe.

To help build a spirit of joy and belonging, we encourage you to participate in labs twice a week. The lab is a place to learn to program together. In lab, you can look at each other’s code, write code together, and talk about different ways of solving problems. If you don’t know some of the concepts we are teaching in class that week, then you should go to lab to get help so you can learn them. If you are really solid on the concepts we learned in class that week, you should still go to lab, so you can help others learn what you know. Being part of a community means sharing what you know and being willing to receive knowledge from others.

The lab experience is available and encouraged for both in-person and online students. There are multiple lab sections available at popular times. If the lab section you want to join is full, join the waitlist; we will open additional lab sections at the times with sufficient demand.

If you feel like you don’t belong — whether in this class, your chosen major, or at BYU — and for any reason, please come talk to your instructor. We love you and we will listen.

If you have difficulty with your mental health, please seek counseling (see https://caps.byu.edu and accommodations (see https://uac.byu.edu) to help you cope with this. If you need help with accommodations, please contact your instructor.

Additionally, if you feel you need extra support in developing a sense of belonging, you can talk to the CSIDE mentors in TMCB 1112. You can also talk to our fantastic colleagues in the BYU Office of Belonging, found in the Wilkinson center across from the information desk.

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.
  • Basic Programming Constructs: Effectively use basic programming constructs, including variables, statements, expressions, and control.
  • Abstraction: Develop the ability to use and create functions when writing programs.
  • Decomposition: Develop the ability to describe a program as a flow chart of actions and choices. Be able to translate this flow chart into a series of functions, each one accomplishing a small part of the bigger program.
  • Algorithms: Effectively use basic algorithms to design and develop a program.
  • Data Structures: Effectively utilize basic data structures such as lists and dictionaries 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 Should I take CS 110 or CS 111? for more detail.

Sections

This Spring, CS 110 has 1 lecture section:

  • Section 002, Gordon Bean, TWTF 9:30am - 10:45am, TMCB 1170

You should attend an in-person section unless you already have some prior programming experience (but are not quite ready for CS 111) or you work really well with online material. We anticipate that most students are better served with an in-person section.

Regardless of which section you are enrolled in (online or in-person), you should also enroll in a lab section:

  • Section 003, TWTF 1pm - 1:50pm, JFSB B135
  • Section 004, TWTF 2pm - 2:50pm, JFSB B135

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.

Platforms

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

  • Canvas: This is where you can view your grades. Canvas also has links to the course website, Gradescope, and Discord.

  • Gradescope: This is where you submit your course assignments. Please use the link in Canvas to open Gradescope. If you have used Gradescope for other courses in the past, you may need to merge your previous account with the one Canvas creates for you.

  • Discord: CS 110 server. An invite will be posted in Canvas.

Lecture Material

There are no textbooks for this class. Instead, material is presented in lectures and in the guide. Some videos are also posted in Canvas and on the course website for selected content.

If you are in an in-person class, your instructor will explain the material using the lecture notes and/or guide. There will be in-class activities to practice the material, so bring paper, pencil, and laptops!

Online students should review either the lecture notes or the guide. Lecture notes include source code so that you can follow along with the in class activities. The guide includes code for all of the lecture material, so you can copy-and-paste it into PyCharm to run it. Online students should also watch the videos that are posted.

Assignments

There are three types of assignments for this course — labs, homeworks, and exams. The following table summarizes important information about them. See below for more details and be sure to review the academic honesty policy below.

AssignmentPurposeType of Work
Labslearning to code together, preparing for homework and projectswork with a partner, discuss and write code together, produce your own version without copying and pasting
Homeworksadditional practice problems, become more independentdiscuss on a whiteboard or on paper with a friend, share drawings, write all of your own code
Projectsdemonstrate that you can code independentlywork entirely on your own, do not discuss with other students
Examsdemonstrate you understand what code doeswork entirely on your own, do not discuss with other students

Labs

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 homework, projects, and exams.

Each lab section will be supervised by a section leader 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 (do not copy-paste another’s code; do not allow someone else to copy-paste your code).

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 the night of the following lecture day (i.e. 10:00 PM; e.g. the lab from Monday or Tuesday will be due Wednesday night).

Homework

Homework problems have problems similar to those in the lab. These are an opportunity for you to get more practice and to be sure you have learned the concepts from that week.

You can do “whiteboard” collaboration on the homeworks. This means you can talk about the homework problems and strategies with others, including drawing out ideas together, but you should not share code with others, nor should you look at others’ code or allow others to look at your code.

If you are stuggling to write your own code on the homework assignments, please reach out to a TA or your instructor.

Projects

Projects are an opportunity for you to demonstrate mastery of the skills learned thus far. Projects are to be done individually. While you can seek help from TAs and the instructors, you should not discuss the projects with others (students or non-students) nor 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 and homework assignments. Avoid consulting the Internet for help on the projects. Instead, review the guide and prior labs, and seek help from the TAs or instructor.

The projects provide you the opportunity to demonstrate what you have learned. It is better that you struggle on a project than to get inappropriate help, receive a grade that doesn’t accurately reflect your actual skill, and then proceed to future responsibilities that require the skills you didn’t actually develop. If you are struggling, please reach out to a TA or your instructor!

Exams

There will be a midterm and a final. These will be multiple choice questions. We will have practice exams available on our website and review sessions in class.

Grading Breakdown

Your final grade will be calculated based on the following:

  • 50% projects
  • 20% homework
  • 10% labs
  • 10% midterm
  • 10% final

Late Policy

Labs, homeworks, and projects are due on the posted date before the start of class (e.g. 9:30am).

Late submissions are accepted through the last day of class. There is no late penalty: seek turn things in when they are due, but adapt your schedule as necessary.

Try not to get too far behind! Everything builds on previous assignments.

If you find yourself getting behind, please reach out to your instructor!

Academic Integrity

In our Heavenly Father’s plan, our goal is to learn to become more like our Savior Jesus Christ. One of the key ways we do that at BYU is by developing our skills — in sound thinking, effective communication, and quantitative reasoning. Our goal as instructors is to help you develop these skills while also developing the characteristics of Christ.

We are guided in our efforts as students and scholars by the 13th Article of Faith:

We believe in being honest, true, chaste, benevolent, virtuous, and in doing good to all men; indeed, we may say that we follow the admonition of Paul—We believe all things, we hope all things, we have endured many things, and hope to be able to endure all things. If there is anything virtuous, lovely, or of good report or praiseworthy, we seek after these things.

Academic integrity is a core part of the honor code. “Be honest” is the first statement listed. When you fail to be honest in your studies, you are missing an opportunity to grow more like Christ. We encourage you to do your utmost to ensure that you don’t compromise your integrity as you work to learn the material in this course.

Following are our expectations for academic honesty in each of the assignments you will have in the course.

Labs

Labs are to be done collaboratively.

You should:

  • work with another student on the labs,
  • discuss the problems together, and
  • write the code together, each on your own laptop.

You should not:

  • “divide and conquer” the lab work (i.e. “I’ll do problem 1 and you do problem 2 and then we share answers”)
  • copy-and-paste each other’s code.

Homework

Homework is a mix of collaboration and independent work. Your ideas on how to solve a problem can be collaborative but your code should be your own.

You should:

  • discuss the homework problems with other students,
  • share drawings and high-level descriptions of your strategy with others, and
  • be the author of all your code.

An effective way to help a peer with a homework assignment is to ask instead of tell. Ask questions that will guide toward gaining sufficient understanding to do the work. The goal is that each student gains the practice they need to be prepared for the upcoming project.

You should not:

  • share code with or receive code from others (whether they are students in the class or not).

If you struggle to translate the ideas from the associated lecture into code on your own, the homework is the time to find out! Get help from the TAs or your instructor. Do not procrastinate getting help.

Projects

Projects are to be done individually. They serve as an opportunity for you to demonstrate—to yourself and to the world—that you can actually write code to solve a problem.

You should:

  • do all the work yourself.

You should not:

  • discuss the projects with others, whether they are students in the course or not.

If you are struggling on a project, talk to the TAs or your instructor.

Exams

Exams are to be done individually. Do not discuss the content of the exams with others.

Guiding Principles

Learning to code takes practice. Don’t 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.

AI-assisted code generation

New tools, such as GitHub Copilot or OpenAI’s ChatGPT have the ability to generate code from a simple text prompt. You should NOT use these tools to work on your homework or projects. The purpose of the homework and projects is to learn how to program. You can only develop this skill if you practice.

Some further notes on these tools:

These tools are pretty cool and fun to use. They’re kind of like using a calculator, but for writing code. Depending on the problem, your mileage may vary in how effective these tools are: they do pretty well on the simple stuff, and sometimes do alright on harder stuff. These tools are not very good at breaking down complex problems into smaller pieces, which is a fundamental learning outcome of the course.

Just how it would be impossible to excel in an advanced math class if you had to constantly pull out a calculator for every simple addition or multiplication problem, you will not be prepared to program anything but the most primitive pieces of code if you do not practice the basics we present in class.

You are welcome to try these tools on your own time. You can get a free license for Copilot through your BYU email. However, you should focus on learning to code on your own, first. Once you have turned in your work for full credit, you may use these tools to redo the assignment and compare the result — see what works well and what doesn’t. You are of course welcome to use these tools on your own personal activities. Using these tools on your homework or projects constitutes cheating.

What happens if you cheat?

If you have chosen to be dishonest, please come talk to your instructor! We will lovingly help you as you seek to reconcile with the truth. It will likely feel uncomfortable and will take courage and humility, but the peace and satisfaction of knowing you are again in the right is completely worth it. Learn for yourself the joy of repentance.

If we detect that you have cheated, we will try to set up a meeting with you to discuss the situation and determine the consequences. Otherwise, we will use our best judgment of the situation and decide an outcome.

The usual outcome for cheating on an assignment is a zero for that assignment. If you have cheated on multiple assignments, you will receive an E for the course.

In most cases, the names of those who have cheated will be given to the Honor Code Office.

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. We will strive to:

  • create a sense of belonging for everyone in this class,
  • answer your questions in caring and helpful manner, and
  • show you that computing is a field anyone can be successful in.

There is no “gene” for coding. If you put in the work and see us for help, we are confident you can succeed.

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 — or see the BYU Office of Belonging.

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 https://titleix.byu.edu/report or 1-888-238-1062 (24-hours). Additional information about Title IX and resources available to you can be found at http://titleix.byu.edu.

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.