Basic Data Structures and Object-Oriented Design (CSE12, Winter '18, B/C)

Joe Gibbs Politz (Instructor)

Basics - Schedule - Staff & Resources - Grading - Policies

This course focuses on two main topics: The basics of organizing data for efficient computation, and how to design programs with classes and interfaces.

Each week, we will explore topics in these areas interactively during lectures. You will read beyond what we explore in lecture, complete programming assignments to hone your coding and program design skills, and take exams that test your understanding of what you've learned. After, you'll be better at designing and understanding programs and the structure of data they work over.



Links to assignments, required reading, and quizzes will be posted in the schedule below. You're responsible for checking this schedule after every lecture period; we announce most things but you should always check here for cancellations and updated links.

The future schedule of topics (more than a week out) is somewhat tentative, and might change depending on how the course develops.

Staff & Resources

The course is largely run by a talented team of graduate and undergraduate students:

We all work together to staff help sessions in the labs located in the basement of the CSE building. A detailed lab schedule will be posted during the first week.

Joe has in-person open office hours on Thursday, from 2:30pm-4pm, and Monday from 11am-12pm, in CSE 3206. Go there for questions about research, careers, help beyond programming assignments, topics beyond the course, or anything else you want to discuss. There will be an announcement if these move for any reason.

Lab Hours

There are a number of lab hours provided for you to get help from the staff in person. There is a queueing system called Autograder that you can use to request help at your workstation. The hours schedule is below:

Note that on Wednesday, the night the assignment is due, we cut off hours roughly 6 hours before the deadline. We'll stop giving help on the assignment at that point, so make use of the generous hours available Sunday through Tuesday to get work done early.

The point of lab hours is to get you un-stuck when you're not sure what to do next on an assignment. The job of a tutor in lab hours is not necessarily to solve the problem you asked. The job of the tutor is to make sure you have the knowledge you need to take a productive next step. That means if you ask for help because you don't know how to implement the next method, you should expect that when the tutor leaves you know how to take a first step towards that implementation. You might end up with an idea for simple examples to try first, or a picture that demonstrates a good approach, or some other guide that isn't concrete code. The problem won't be solved, but you will be un-stuck.

When you ask a question on Autograder, a few guidelines:

  • Give a meaningful question or problem statement in your ticket. It doesn't need to be long, but it should be possible for a tutor to imagine possible situations just from the ticket, and not have to get the full story when arriving at your workstation. For tickets without meaningful questions, tutors are free to use their judgment to remove them from the queue.
  • Be prepared! When the tutor shows up, you should be ready to reproduce the issue you're having, have a test case that doesn't produce the right output, show them a drawing of the situation you're confused about, etc.


You can and should ask questions on Piazza. We have some guidelines and advice for doing so.

The default on our Piazza board is for questions to be private to the question asker and the instructors. We (the instructional staff) will often make private questions public if we think the answers and discussion will be useful to everyone; if we do so we'll switch the author visibility to anonymous (it turns out it's not possible to make it anonymous if the original post isn't anonymous). If you want to be anonymous when a post is publicized, please set it to anonymous initially. Note that we won't publicize obviously-private questions about grades or other sensitive topics. If you want to ask a private question that stays private, just ask us to keep it private in the body of the question.

You are also welcome to ask and answer public questions! Before you do, consider:

  • Does it contribute to a positive, constructive, and respectful forum for discussion and learning?
  • Does it contain contain source code or other information that shouldn't be shared class-wide?
  • Is it a question that's been asked before, that you could find via searching?

If you make a post that violates these guidelines, we may make it private and remind you of these guidelines. Overall, our goal is to make the public content on Piazza constructive and relevant for everyone.

In your question, clearly indicate the problem you're having or question you need answered, and feel free to share any supporting code or screenshots that may help us understand what's going on. If it's a simple technical issue or clarification, you might get a direct answer. If it's a question about an assignment, expect to get questions back that lead you towards a better understanding, not an immediate answer that solves your problem.

We will, for each assignment, aggregate together a frequently asked questions post that draws from questions we receive in office hours and via Piazza posts. If you ask a question that's already answered in that post, we'll likely just send you a link to that post. That post will be updated as new important questions and answers come in.

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 Piazza” is not a legitimate justification in most arguments, though they may indeed lead you in helpful directions.

Finally, a note about the pedagogic value of communication – a huge amount of modern computer science happens via collaboration, in text, online. Sites like Stack Overflow and Github hold incredible wealths of information generated through asking and answering questions. Computer science research, large system development, and cutting-edge design happens through professional, high-volume mailing lists. Practicing using Piazza professionally prepares you for these situations, so do it mindfully.

Discussion Sections

There is a discussion section corresponding to each lecture. Discussions will focus on interactive activities that go along with programming assignments. This might include techniques for more effective development during programming assignments, conceptual problems about the assignment itself, a demonstration of a particularly tricky part of the assignment, and more. Attendance may be taken but doesn't have a direct impact on your grade, though there may be ways to make up clicker participation points provided through discussion section attendance.

The IDEA Engineering Student Center

The IDEA Engineering Student Center, located just off the lobby of Jacobs Hall, is a hub for student engagement, academic enrichment, personal/professional development, leadership, community involvement, and a respectful learning environment for all. The Center offers a variety of programs, listed in the IDEA Center Facebook page at and the Center web site at The IDEA Center programs support both undergraduate students and graduate students.


There are 100 points you can earn in the course.

  • 5 participation via clickers. You must bring a clicker to class to answer, and have four allowed absences. You get credit for each lecture in which you give an answer for at least half the questions.
  • 10 reading activities/quizzes. There will be various activities associated with the readings each week, that may differ from week to week. These will be made clear in the schedule.
  • 40 for programming assignments
    • 4% each for PA1, PA3, PA5, PA7
    • 6% each for PA2, PA4, PA6, PA8
  • 45 exams
    • 25 in-class exams (10 for lower score, 15 for higher score)
    • 20 final exam
    Update: If your final exam score is higher than the lower midterm score, your final exam score replaces that 10 points of your exam points. This also serves as the missed exam and makeup in-class exam policy (since a 0 will be given for a missed in-class exam), and no alternative or makeup midterm exam times will be offered. For example, if you get between 0% and 59% on the first midterm, 60% on the second, and 80% on the final, your total exam points would be (0.6 * 15) + (0.8 * (10 + 20)) = 33.

Point totals will be transformed to letters by the mapping below (a square bracket indicates inclusive and a parenthesis indicates exclusive). Thresholds may be lowered at the instructor's discretion but will not be raised, and never for individual students, only for the whole class. Historically, requests for changes to the thresholds have hardened the instructor's heart for the duration of the quarter, and made them less likely to happen.

  • [99,100]: A+
  • [93-99): A
  • [90-93): A-
  • [87-90): B+
  • [83-87): B
  • [80-83): B-
  • [77-80): C+
  • [73-77): C
  • [70-73): C-
  • [60-70): D
  • [0-60): F



This quarter there are 3 sections of CSE 12. This course page does not pertain to the content of A section, only to B and C section.

Late Work

You can hand in programming assignments up to 24 hours late for a 20% deduction. After that no credit will be given. Contact the instructor for documented extenuating circumstances.


Mistakes sometimes occur in grading. Once grades are posted, we will allow a short period for you to request a fix to your grade (announced along with the release of grades), with a sufficient argument for why a mistake was made. If you don't make a request in the given period, the grade you were initially given is final.


You are not allowed any study aids on exams (aside from those pertaining to university-approved academic accommodations). Reference sheets will be provided along with exams to avoid unnecessary memorization.

Academic Integrity

Acting with academic integrity in this course means that you do your own learning and are evaluated on your own work.

The first week has a form to fill out that asks you to read and understand this scholarship agreement (you don't submit the form at that link, it just has a useful description), and to take this code plagiarism tutorial. These should cover what violations look like for this course; feel free to ask if you have any questions about a situation you are unsure about.

Consent to Participate in Educational Research

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 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: If you decide to opt out after the quarter has ended, you must contact Ying Xiong ( 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 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 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.

Site design inspired by Andy Ko's