A sound wave transformed to data, and back to into a higher-frequency version of the same sound. A four-pixel image of red, green, blue, and yellow pixels, transformed into data, then back into a rotated version of the original image.

Introduction to Programming I (UCSD CSE 8A)

Joe Gibbs Politz (Instructor)

Basics - Schedule - Staff & Resources - Grading - Policies

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, images, and sounds.

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

This web page serves as the main source of announcements and resources for the course, as well as the syllabus.


On an average week in CSE8A, you can expect to spend 3 hours in lecture, 1 hour in discussion, 1 hour in lab section, 2-3 hours on reading, review, and programming practice, and 3-5 hours working on your programming projects (either at home or in the open lab hours). If you find yourself spending dramatically more time than this, it’s a good idea to contact the course staff and discuss more efficient strategies in office hours.


Expect class to be interactive; you’ll work through problems in groups, compare multiple approaches to solutions, and answer multiple-choice questions using iClickers (see Engagement below). Due to space constraints, you must attend the lecture in which you’re enrolled.

A00 TuTh 8amCENTR115
B00 TuTh 9:30am CENTR109

Discussion Sections

Discussion sections will demo tools and answer questions about the programming assignment specifications in weeks 1, 2, 4, 6, 8, and 10. Attendance is highly recommended but not required. In weeks 3, 5, 7, and 9, discussion will be for tests. In the test weeks, you must attend the section for which you’re enrolled. In the other weeks, you can attend either section.

A01 Th 7pm PCYNH109
B01 Th 8pm PCYNH109

Lab Sessions

You must attend the lab session in which you are enrolled. You will work in groups in lab; you are starting your journey into Computer Science and we want to help you meet your classmates who will be with you along the way. The groups will be assigned by the Lab TA and group assignments may change from week to week. All labs must be finished in the allotted class time. As a group, you will create a lab report each week and your TA will review it and give you feedback.

You will need a lab-specific account to use these machines, you can find yours at https://sdacs.ucsd.edu/~icc/index.php.

Lab SectionTimeLocationTA
A50 Wed 8am CSE B230 Sophia
A51 Wed 9am CSE B230 Sophia
A52 Wed 10am CSE B230 Sophia
A53 Wed 11am CSE B230 Alex
B50 Wed 12pm CSE B230 Alex
B51 Wed 1pm CSE B230 Laura
B52 Wed 2pm CSE B230 Laura

Final Exam

Sat 11:30a-2:29pTBD


The schedule below outlines topics, due dates, and links to assignments. In a typical week, by 5pm Monday before class all due dates, readings, and notable events in the course until the following week will be posted here. 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. We will often have the schedule confirmed more than a week out, but we’ll always be at least a week ahead.

Staff & Resources


Prof Joe Gibbs Politz (Instructor)

There are 22 staff to help with your learning, and a few kinds of help session you can attend.

The first is office hours, held by TAs and the instructor at the times listed below. Office 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.

The second is open lab hours where tutors are available to answer your questions about any course content, though often this is a good place to go for programming help. You can use the CSE labs at any time, but at the times below, the course staff will be available to answer your questions. You can use https://autograder.ucsd.edu to request help by filing a help ticket and a tutor will come to help. This system keeps track of a queue of help requests and we help out on a first-come, first-served basis.

That said, there are some important rules for asking for help.

  1. You must give a specific, actionable request in your help ticket. If your ticket simply says “I’m stuck,” we will remove the ticket from the queue with a response that urges you to be more specific. It’s OK to ask questions if you’re not sure what you’re supposed to be doing on an assignment.
  2. You must list at least one specific thing you tried in order to resolve the problem on your own, or a guess at your understanding of what you should be doing if you’re lost.
  3. You can list a location in the lab when you make a request. If you aren’t there when the tutor arrives to help, we’ll remove your ticket from the queue.
  4. Tutors can help you understand your problem and a useful approach. They cannot solve your problems for you or do the programming for you. It could happen that you’re still stuck even after getting tutor help, and that’s OK! You can always work the problem on your own, come to office hours for a different perspective, or come back to the problem (even after the deadline).

These rules help us make sure we get timely and actionable help to as many students as possible. They also encourage students to do some meaningful work on their own before reaching out for help – the goal of the course is for you to be able to do programming work on your own!

The third is through Canvas. For each programming assignment, we’ll make a frequently-asked questions discussion on Canvas. You should refer to that during the assignment if you get stuck or have questions come up; we’ll use it to aggregate common issues. You can feel free to comment publicly on those discussions, but do be conscious that other students can see what you post, so posting solution code is a likely academic integrity violation.

For each lecture and Stepik chapter, we’ll also make a discussion post for general commenting and questions that you have.

Finally, you can always send a private message on Canvas to ask any question about the course. If you choose this option, please select the “All TAs” option for your message unless it needs to be private to an instructor. Please don’t message individual course staff privately unless they’ve asked you to, and please don’t message only the instructor with a content question. The course staff as a whole works together to make sure these messages get prompt responses (often by adding to the frequently asked questions post).


Your grade will be calculated from:

  • 40% exams
  • 5% engagement/participation
  • 10% lab work
  • 10% reading, review, and practice exercises
  • 35% programming assignments

Calculating PA Credit

The total number of points for PAs will be around 150 – it may be higher or lower than that depending on how exactly the PAs get weighted, which we partially decide during grading. The required points for full credit towards PAs will be less than this by at least 15 points. This roughly has the effect of making a low PA score not count, while still incentivizing you to resubmit PAs to make up lost credit, since all points go towards the same total. There’s no extra credit for getting more points than this total. So think of roughly 135/150 plus or minus a few points as your target for full credit on programming work in the class.


There are four tests during the quarter and a final exam. The tests will be held during discussion sections in weeks 3, 5, 7, and 9.

The scoring of the tests and final works as follows:

  • All 40% of your exam points come from your final exam score.
  • The final exam will be split into four sections, roughly corresponding to the material covered by each test, and each worth 25% of your exam score
  • The score you get on each test contributes to your final exam score in the relevant category, up to a maximum of 10% of the 25% for that section. You can’t score more than 25% on each section of the final exam with this additional contribution.
  • If you get a lower score on the final exam than the average of your test scores minus 20%, you instead earn that score on the final.

This means that each test contributes to your final exam score, but if you miss or do poorly on a test you can always make up the credit by doing well on the corresponding section of the final exam.

Example: A student scores 50%, 60%, 0%, and 80% on the four tests. On the final exam, they score 10/25, 20/25, 20/25, 15/25 on each of the four sections. Their final exam score would be (10 + 5) + (20 + 6) + (20 + 0) + (15 + 8) for a total of 83/100 on the exam.

Example: A student scores 60%, 70%, 80%, and 90% on the tests, and then skips the final. Their final exam grade will be 55%.

Example: A student scores 100%, 100%, 100%, and 100% on the tests, and then gets only 5/25 of the credit in each portion of the final exam. Their final exam grade will be 80%.

Make-up Exams: There are no make-up exams given. If you miss one of the tests, your score for that test is a 0 and you don’t earn credit towards that part of the final exam ahead of time. Note that this doesn’t necessarily impact your final grade, since you can still earn all of the credit on the final exam itself. Similarly, if you miss or skip the final, the average-replacement policy applies.


There are 20 lectures during the quarter, and each will have some interactive questions for you to answer with an iClicker. If you answer the majority of the questions in a lecture, you get engagement credit for that lecture. You get full engagement credit if you get credit for **14** 12 lectures (adjusted down due to some technical iClicker issues in some lectures). Of course, you’re encouraged to come to all lectures, but this policy accounts for a wide range of clicker technology issues, absences, and so on. For each lecture you miss beyond those 14, you lose one point of engagement credit (so if you attend only 11 lectures, you get 2/5 engagement points). Surveys and other forms of feedback may provide ways to make up missed engagement credit during the quarter. You must register you clicker on https://canvas.ucsd.edu.

Lab Work

Each week in lab you’ll have a small assignment to submit associated with the lab material. Your credit will come in part from attendance in lab and in part from that lab submission. We will drop your lowest lab score (including missing a lab entirely). For labs beyond the first that you miss, you lose the credit with no exceptions.


There are two kinds of programming work you’ll do in this course.

  1. Programming Practice will be conducted via Stepik. This will consist of short, directed programming challenges that are graded automatically and immediately. These often go along with reading material and short quiz questions. The quiz questions and programming material are graded together, and each chapter will make it clear what it means to get full credit. This work is to be done individually, though after the deadline it’s fine to discuss it openly and publicly with other students.

  2. Programming Projects (Also called “Programming Assignments” and abbreviated PAs). These are more open-ended programming tasks where you will make design decisions about your programs and write about your choices. These will be graded by the staff, who will give you feedback on your code and design decisions. All programming work is to be done individually on the projects by default, we will announce any particular cases where teamwork or partners are allowed.

Final Scoring

After your weighted average is calculated, letter grades will be assigned based on the following grading scale:

A+ A A- B+ B B- C+ C C- D, F
  >97    93-96.99     90-92.99    87-89.99    83-86.99    80-82.99    77-79.99    73-76.99    65-72.99    Below 64.99 

We may adjust the above scale to be more lenient (depending on the overall class performance), but we guarantee that we will not adjust the scale to make it harder to get a better grade.


Academic Integrity

We have a missive on academic integrity you must agree to that details some examples of what we expect in terms of collaboration in the course.

You should be familiar with the UCSD guidelines on academic integrity as well.

Late Work

In general, late work is not accepted. However, there will be ways to earn back credit on assignments after there submission, which may differ across assignments and will be announced during the quarter.


Mistakes sometimes occur in grading. Once grades are posted for an assignment, we will allow a short period for you to request a fix (announced along with grade release). If you don’t make a request in the given period, the grade you were initially given is final.

Laptop/Device Policy in Lecture

There are lots of great reasons to have a laptop, tablet, or phone open during class. You might be taking notes, getting a photo of an important moment on the board, trying out a program that we’re developing together, and so on. The main issue with screens and technology in the classroom isn’t your own distraction (which is your responsibility to manage), it’s the distraction of other students. Anyone sitting behind you cannot help but have your screen in their field of view. Having distracting content on your screen can really harm their learning experience.

With this in mind, the device policy for the course is that if you have a screen open, you either:

  • Have only content onscreen that’s directly related to the current lecture.
  • Have unrelated content open and sit in one of the back two rows of the room to mitigate the effects on other students. I may remind you of this policy if I notice you not following it in class. Note that I won’t be offended if you want to sit in the back and try to multi-task in various ways while participating in lecture. I certainly don’t recommend it, but I also respect your freedom to choose how you spend your time and attention.

Shriram Krishnamurthi has aggregated some useful links and literature on the topic of devices in the classroom that you may find informative. Our policy is different, but the information on that page is useful.

Diversity and Inclusion

We are committed to fostering a learning environment for this course that supports a diversity of thoughts, perspectives and experiences, and respects your identities (including race, ethnicity, heritage, gender, sex, class, sexuality, religion, ability, age, educational background, etc.). Our goal is to create a diverse and inclusive learning environment where all students feel comfortable and can thrive.

Our instructional staff will make a concerted effort to be welcoming and inclusive to the wide diversity of students in this course. If there is a way we can make you feel more included please let one of the course staff know, either in person, via email/discussion board, or even in a note under the door. Our learning about diverse perspectives and identities is an ongoing process, and we welcome your perspectives and input.

We also expect that you, as a student in this course, will honor and respect your classmates, abiding by the UCSD Principles of Community (https://ucsd.edu/about/principles.html). Please understand that others’ backgrounds, perspectives and experiences may be different than your own, and help us to build an environment where everyone is respected and feels comfortable.

If you experience any sort of harassment or discrimination, please contact the instructor as soon as possible. If you prefer to speak with someone outside of the course, please contact the Office of Prevention of Harassment and Discrimination: https://ophd.ucsd.edu/.

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.