“A pie running a marathon, because ya know, Python” - Rachel Lim (CSE8A Tutor)
Banner art by tutor Rachel Lim.

Introduction to Programming I (UCSD CSE 8A)

Joe Gibbs Politz (Instructor)

In this course, you will learn to write, trace, and test programs; explore the interactions between programs and data; and use computation to inspect and manipulate media like data and images.

We will explore these topics interactively in lecture, you will implement programs to practice your programming skills, and you will reflect on this learning through your own program designs.

This web page will serve as the main source of announcements and resources for the course, as well as the syllabus. It will get updates to the schedules and calendars below as we go through each week.

Do Now!

This section will have instructions for current tasks you should be working on, and we will update it weekly.

  • Stepik 9.1-9.5(final review) is due Friday, March 12th, by 4pm.
  • As an incentive, if you complete the end of course survey by Monday, March 15th, at 4pm, we will give you a point towards your lab score or stepik reading credit in the course, effectively forgiving one missed week of one of them.
  • Make sure to check your last grade report on Gradescope!
  • If you missed a lab 9 and/or 10, you can fill out the make-up form by Monday, March 15th, and earn up to %50 of the credit: Lab 9 Make-up form, Lab 10 Make-up form

Need Help?

There are lots of opportunities to get help in CSE 8A! These include:

  1. Help Hours, click here to read about all the details.
  2. Asynchronous help on Edstem, click here to access the discussion board, and click here to see more instructions.
  3. Discussion Sessions with the TAs, see this Edstem announcement for more information.
    • Fridays 5-7 PM: https://ucsd.zoom.us/j/96852121052
    • Meeting ID: 968 5212 1052, Password: 865633
  4. Instructor and TA Office Hours with Zoom links as the following:
    • Prof. Politz: Mondays 1-2 PM https://ucsd.zoom.us/j/3144231375
    • Savitha: Tuesdays 5-6 PM https://ucsd.zoom.us/j/3269432234
    • Shihua: Thursdays 11AM-12PM https://ucsd.zoom.us/j/4815370544
    • Winny: Thursdays 4-5 PM https://ucsd.zoom.us/my/winnywilson
    • Sara: Fridays 4-5 PM https://ucsd.zoom.us/my/sarasafa

Open Lab and Help Hours

Group help hours are a great place for any kind of question about the course, from help with your assignment to clarifications about material in lecture to questions beyond what we cover in the course. It is good for group discussions where you can hear and interact with other students. Attendance is not required. Group assignments and more information can be found on this Edstem post. The schedule for group help hours are in this calendar:

1-on-1 open lab hours is where TAs and tutors are available to answer your questions about any course content, though often this is a good place to go for programming help. At the times below, the course staff will be available to answer your questions, and it’s a great place to get debugging help, since you’ll be able to 1-on-1 screen share with a TA/tutor.

The open lab hours are held on Autograder. You may find this article and this page from autograder helpful when using it. Please use the calendar below to find times at which tutors are available for 1-on-1 help to answer any questions you may have.


In general, in a week in this course, you will:

  • Complete readings and exercises in an online textbook hosted on Stepik (completing the exercises counts for credit), due on Friday at 4pm (including in week 1).
  • Complete a programming assignment or assessment, due on Tuesday at 4pm (first one due in week 2).
  • Attend and participate a group, synchronous lab exercise session on Wednesday (flexible scheduling, synchronous attendance expected), fill out this survey ASAP so we can schedule you!
  • Participate in, or watch later, lecture sessions on Tuesday and Thursday evening (5-6:20pm or 6:30-8pm)
  • Participate in, or watch later, discussion sessions on Friday (5-6pm or 6-7pm)
  • Interact with me or other course staff to get some amount of help, either through the message board, help hours, or one-on-one meetings.

In total, we aim for all of this (including lectures) to take you between 10-12 hours per week. If you find yourself taking substantially more than that, consider asking the course staff for programming and study strategies.


Joe Politz

Shihua Lu

Sara Safa

Savitha Srinivasan

Winny Wilson






Erin Griggs

Ellie Huo

Melissa Ignacio

Oliver Korchnoy

Rachel Lim

Farnia Nafarifard

Amy Nguyen

Brian Nguyen

Mary Nguyen

Pawan Paleja

Amanda Quach

Pramith Reddy

Shad Reyes

Jill Su

Darya Verzhbinsky

Ethan Wadsworth

Maxwell Wong

Catherine Xia

Jeff Xu

Bob Zhang


The schedule below outlines topics, due dates, and links to assignments. About a week in advance, all due dates, readings, and notable events in the course. So if you check the schedule at the beginning of the week, you’ll know when all reading quizzes, programming assignments, etc. will be due.

Zoom only saves the recordings for up to 30 days, so if the recording links expire, please to go Canvas - Media Gallery for the videos. For each video, you can click on the Attachment tab to download the chat messages file.


Your grade will be calculated from:

  • 10% labs
  • 10% reading, review, and drill exercises
  • 40% programming assignments (PAs)
  • 40% programming assessments
    • 3 during the quarter, plus one during finals week

The letter grade breakdown is ≥ 99: A+; ≥ 93: A; ≥ 90: A-; ≥ 87: B+; ≥ 83: B; ≥ 80: B-; ≥ 77: C+; ≥ 73: C; ≥ 70: C-; ≥ 60: D

The breakdown works like this:

  • Labs and reading are evenly split across the weeks
  • Programming assignments are weighted as follows:
    • PA1: 2 points
    • PA2/4/5/7/8: Two best scores worth 10 points each, next two best worth 8, next best worth 6

    Note that this sums to 44 points, which is more than the total (40) for assignments. There is no extra credit, but if you miss or submit an assignment late, or make substantial mistakes, this gives you a way to make up lost credit by doing well on future assignments. Note also that completely skipping an assignment will hurt your grade, so you are always incentivized to make them up for late credit.

    You can resubmit assignments until 4pm on Monday, March 15 to earn half of the autograded credit back. Individual assignments have their own deadlines for late/resubmission of written portions.

  • Programming assessments are weighted as follows:
    • PA3: 6 points
    • PA6/9: Better score worth 16 points, worse score worth 8 points
    • Final assessment: worth 18 points

    Note that this sums to 48 points, which is more than the total for assessments (40). There is no make-up work for assessments, and no extra credit, but this policy allows you to make up some credit on future assessments if you miss or do poorly on one.

    New! (March 9) We will also provide these alternate weightings if they improve your assessment grade. You don’t need to tell us which one you chose, we’ll automatically apply the best one for you.

    • Alternate 1 (applied if, for example, you skip or miss the final)
      • PA6/9: Better score worth 24 points, worse score worth 10 points
      • Final worth 8 points
    • Alternate 2 (useful for demonstrating mastery on the final after having issues/conflicts with PA6/9)
      • PA6/9: Better score worth 8 points, worse score worth 4 points
      • Final worth 30 points

Labs and Check-ins

Each week on Wednesday there will be synchronous lab sessions where you work with several other students and a tutor to practice your programming skills. During the first few days of the quarter, you’ll fill out this survey so we can know your availability for different times on Wednesday and schedule accordingly:


During lab, you will also have a chance for one-on-one check-ins with your lab tutor for 5-10 minutes. This is a good time to ask any questions you have about the course, note if you’re struggling with particular concepts, need help navigating the logistics of the course, and so on. You and your lab tutor might schedule some additional time for a longer one-on-one meeting as a result.

Labs will be designed to be collaborative activities, so you’ll have to work with your labmates to complete them and submit a summary document at the end for credit. Labs are the only part of the course where synchronous attendance is required for full credit. There will be make-up work available if you miss a lab, but it will only earn half credit (note that this means you can still get an A in the course without attending any labs, though we don’t recommend it).

Reading, Review, and Drill

There is a free online textbook with built-in quizzes and practice activities (https://stepik.org/course/90691/syllabus). You’ll complete these for credit each week (due Friday 4pm), to get conceptual background and practice with the new programming features for the week. Your grade is based on the percentage of activities from the week’s chapter that you complete. You can collaborate with other students on these activities, and if you do it is your responsibility to make sure you understand them thoroughly enough to demonstrate your understanding on assessments.

Programming Assignments and Assessments

There are two types of programming work you will do outside of class and lab – programming assignments and programming assessments (collectively referred to as “PAs”).

Programming assignments are primarily for your learning. Typically these will involve writing some amount of code to solve a problem or build something cool, along with some related writing and reflection on the code and your process. On these assignments, we encourage collaboration with other students, will give you lots of feedback in order to improve your submissions, and the course staff will answer many kinds of questions and give lots of help.

Programming assessments are primarily for us to assess your learning. They will also have you write code to solve problems, but you must complete them on your own, and the staff won’t help you solve the problems or write code for them. You can think of them as open-notes, open-book exams where instead of solving problems on paper you will write a program. In addition, on assessments, you will record a short video of you demonstrating how you program works according to a prompt we give you. They may be released for less than a full week, because the assessments are shorter than the assignments, so we really just want to give you enough time to schedule a 3-4 hour block of time to complete it as if it’s an exam, not treat it like a full-week project.

It’s worth explaining why we are using this mechanism. There are at least two reasons:

  1. Presenting your code, and demonstrating it via screenshare, is a really important skill and shows us a lot of your learning. Getting practice with this style of presentation is a good thing for you to learn in general and a rich way for us to assess your skills.
  2. The main thing that in-person, on-paper exams let us do is easily verify that it is in fact you, the student, completing a major assessment. We can similarly do so with a video – many students are concerned that cheating will be frequent in all-remote courses, and this is our way of ensuring that we are giving grades to the people who earned them.

We will delete all the videos we receive from you after assigning final grades for the course, and they will be stored in a university-controlled Google Drive directory during the quarter only accessible to the course staff.

Please send a private message on to the instructor if you have concerns about this exam policy or cannot complete exams in this style for some reason.

The schedule has a PA each week, where PAs 3, 6, and 9 are programming assessments. There will also be a final programming assessment around the time of your final exam.

Late and Missed Work

There will be opportunities to regain some (not necessarily all) lost credit on programming assignments if you submit something incomplete or miss the deadline, by resubmitting later with fixes. The details of this process will be described along with the grades for the first programming assignment.

Programming assessments are like exams, so late work will not be accepted. However, the combined grading policy for the assessments will allow some flexibility in the event that you cannot complete one of them. That policy will be posted here along with the release of the first assessment.

If you miss a lab, there will be a posted make-up activity that you can complete on your own for half credit on that week’s lab.

If you miss a week of Stepik quizzes/activities, we will give half credit for finishing it after the deadline any time up to the end of the quarter.

More instructions on EdStem:

If you’re stuck on something CSE8A-related, whether content or logistics or scheduling, and aren’t sure what to do or who to ask, send a private discussion post to all instructors on edstem https://edstem.org/us/courses/3266/discussion/. (Click “New Thread”, make sure the “Private” box is checked, write your message, and submit) You can leave your message public if you think other students might be able to answer it, as well. We can direct you to the right resource, and, in some cases, might convert your private message into a public one if we believe everyone else could benefit from it. Don’t have an edstem account for CSE8A or can’t find your invite? Email jpolitz@eng.ucsd.edu, or message me on Canvas, with subject “CSE8A edstem” and let us know. When answering questions, be polite, be clear, and assume the best intentions of the person asking. If it turns out you make a mistake or were wrong, admit it with a smile (emoji are great for this 😊), and make sure the correct information is clear. Above all, keep in mind that the course is a community whose goal is to foster a positive learning environment for everyone. For public discussion, note that answers from your classmates are not official! They could be downright wrong or misleading, completely by accident. “My classmate said so on EdStem” is not a legitimate justification in most arguments, though they may indeed lead you in helpful directions.

Research Study

University of California, San Diego

Consent to Act as a Research Subject

Investigating the Impact of Pedagogical Choices on University Student Learning and Engagement

Who is conducting the study, why you have been asked to participate, how you were selected, and what is the approximate number of participants in the study?

Gabriele Wienhausen, Director of the Teaching and Learning Commons, together with her education research colleagues is conducting a research study to find out more about how pedagogical choices affect student learning and experience in the classroom. You have been asked to participate in this study because you are a student in a class that is being studied or used as a control. There will be approximately 500,000 participants in this study.

Why is this study being done?

The purpose of this study is to create knowledge that has the potential to improve the learning and educational experience of students at UC San Diego and beyond.

What will happen to you in this study and which procedures are standard of care and which are experimental?

If you agree to be in this study, the following will happen: Your data from this class including grades, homework and exam submissions, and survey responses will be included in the analysis to determine the effectiveness of the pedagogical techniques used in this course compared to other similar courses.

How much time will each study procedure take, what is your total time commitment, and how long will the study last?

Your participation involves only agreeing to let us use your data in our analysis. It will require no time on your part above the time you put into this course without agreeing to the study.

What risks are associated with this study?

Participation in this study may involve some added risks or discomforts. These include the following:

  1. A potential for the loss of confidentiality. We will not share your personally identifying data with people outside our research team. Data will only be kept in anonymized form for research purposes. Course data will not be used for this research study until after final grades have been posted and will be rendered confidential by removing any identifiers before analysis. Your instructor will not know whether or not you are participating in this study until after final grades have been posted. Data from students who opt out of the study will be removed prior to data analysis. Research records will be kept confidential to the extent allowed by law. Research records may be reviewed by the UCSD Institutional Review Board.

Since this is an investigational study, there may be some unknown risks that are currently unforeseeable. You will be informed of any significant new findings.

What are the alternatives to participating in this study?

The alternatives to participation in this study are not to participate. If you choose to opt-out of participating in this research study, we will exclude your data from analysis. Whether you participate will have no impact on your experience or grade in the associated class as the professor will not know who is or is not participating in the study until after final grades are assigned.

What benefits can be reasonably expected?

There is no direct benefit to you for participating in the study. The investigator, however, may learn more about how to improve student learning, and society may benefit from this knowledge.

Can you choose to not participate or withdraw from the study without penalty or loss of benefits?

Participation in research is entirely voluntary. You may refuse to participate or withdraw or refuse to answer specific questions in an interview or on a questionnaire at any time without penalty or loss of benefits to which you are entitled. If you decide that you no longer wish to continue in this study before the end of the quarter, simply respond to the online opt-out form here: https://goo.gl/forms/JSBRjEmkES6W6xYc2. If you decide to opt out after the quarter has ended, you must contact Laurel Nelson (laureln@ucsd.edu) and give the quarter and the course from which you would like your data withdrawn. You will be told if any important new information is found during the course of this study that may affect your wanting to continue.

Can you be withdrawn from the study without your consent?

The PI may remove you from the study without your consent if the PI feels it is in your best interest or the best interest of the study. You may also be withdrawn from the study if you do not follow the instructions given you by the study personnel.

Will you be compensated for participating in this study?

You will not be compensated for participating in this study.

Are there any costs associated with participating in this study?

There will be no cost to you for participating in this study.

Who can you call if you have questions?

Gabriele Wienhausen and/or her colleague has explained this study to you and answered your questions. If you have other questions or research-related problems, you may reach Gabriele Wienhausen at gwienhausen@ucsd.edu or (858) 534-3958.

You may call the Human Research Protections Program Office at 858-246-HRPP (858-246-4777) to inquire about your rights as a research subject or to report research-related problems.

Your Consent

If you consent to participate in this study and are at least 18 years old, no action is needed. If you DO NOT consent to participate in this study, or you choose to opt-out at any time during the quarter, please submit this form online at https://goo.gl/forms/JSBRjEmkES6W6xYc2. Your instructor will not have access to the list of students who opted out until after grades are posted. Note that you must separately opt-out of the study for each course involved in this study.