Basic Data Structures and Object-Oriented Design

Sophia Krause-Levy (Instructor)

This course focuses on two main topics: The basics of organizing data for efficient computation, and the design of programs that use collections, 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.

Basics: Lecture, Discussion, Programming Assignments, and Exams. Check the Schedule for class topics, links to resources, and assignment due dates. The course instructional team is here to help you learn: ask for help and advice!

This page also describes how you will be graded, and there are other course policies you should be familiar with as well.

Schedule

This schedule has links to the programming and review activities you will complete for the course. You are responsible for checking this schedule and completing work by the deadlines given, which are always at 11pm local San Diego time on the listed date.

Basic Course Components

Lecture

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). You must attend the lecture in which you’re enrolled.

LectureTimeLocation
A00 MTuWTh 11amCENTR 109

Discussion

Discussions will reinforce concepts from class and introduce concepts that are especially helpful for completing programming assignments. In general, the Monday section will focus more on introducing programming assignments, and the Wednesday section will focus more on reinforcing concepts and going over the exam questions from earlier that day.

TimeLocation
M 1pm CENTR 214
W 1pm CENTR 214

Staff

There are many instructional staff to help with your learning. You can find their names and pictures on Piazza Staff page. Our “home base” is in B240 in the CSE building (basement), but you can work in any lab. You should use Autograder to ask for help in open lab hours. In addition, Instructor Sophia and the two TAs each hold individual weekly office hours that you can attend. You can use either of these resources whether you’re looking for help on an assignment or material covered in class. The schedule for both office hours and lab hours are below. For office hours, the room number is noted on the event itself.

Sophia Krause-Levy

Rachel Lim

Ripunjay Sharma

Carol Bao

Daniel Lee

Galen Han

John Driscoll

Josh Cross

Rainee Pei

Richard Chen

Materials

There is no required textbook for the course. There is a stepik online textbook available and it is free and interactive! It serves as a useful reference and there will be links to relevant stepik sections in with the course schedule.

  1. Sign in or create an account at stepik.org
  2. Join the course at https://stepik.org/course/109917

We may use other on-line resources during the quarter that may be required reading or activities. These will all be free and linked from the schedule.

Online Discussion and Q&A

Online discussion and Q&A for the class will be available on Piazza: sign up to join the class here and view the discussion forum here. Important announcements from the course team will be pinned at the top of your feed. When you set up your account, you can select the frequency for email notifications of messages and discussions on Piazza. Piazza is one way you can ask for and get help in this course.

Java Documentation

The documentation for the Java language, while not required reading, will be linked to from some assignments and is always a useful reference while programming. You can install any version higher than 8. The latest version available is 18. If you would like to set everything up on your own computer and do not already have Java and eclipse installed please complete PA0: Computer Set up.

Working on and Submitting Assignments

You’ll be submitting your classwork and seeing grading feedback through a tool called Gradescope.

You’ll be receiving starter code through a service called Github. You aren’t required to have an account to complete coursework, but it can be useful for you to make one.

Grading

Your grade will be computed from:

  • 50% exams
  • 40% programming assignments
  • 10% engagement

For the 5 PAs, we will order them from highest to lowest in terms of percentage scored on the PA itself, and then assign the proportions of the following points to each:

  • 10% highest scoring
  • 9%
  • 8% middle scoring
  • 7%
  • 6% lowest scoring

Example: You score:

  • PA1: 90%
  • PA2: 50%
  • PA3: 70%
  • PA4: 80%
  • PA5: 100%

The PAs would be ordered 100% (PA5), 90% (PA1), 80% (PA4), 70% (PA3), 50% (PA2).

The points would be:

  • = 1.00 * 10 + 0.90 * 9 + 0.80 * 8 + 0.70 * 7 + 0.50 * 6
  • = 10 + 8.1 + 6.4 + 4.9 + 3
  • = 32.4 points

The total points (of 40 points) for PAs would be 32.4/40.

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. In addition, you must score at least 55% on the overall PA portion of this course. You must also score at least 55% on the overall exam portion of this course. If you score lower than the 55% cutoff on the aforementioned categories, you will receive an F for the course, regardless of your overall average.

Late and Makeup Work In general, work cannot be handed in late for credit.

Programming work that is late follows the resubmission policy in the programming grades section.

Regrades 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 clear 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. All regrades should be made through Gradescope’s interface.

Engagement

We highly recommend actively participating in class, attending discussion, and completing the weekly review quizzes. Regularly engaging with the class in these ways counts towards the Engagement component of your overall score.

This score is calculated on a weekly basis (starting in Week 1). The maximum number of points you can earn in one week is 8.

Earn engagement points by:

  • In class participation via iClickers In Weeks 1 through 5 (starting with the second lecture of the quarter), you will earn credit for attending and participating in lecture (2 points each) and discussion section (1 point each, up to a maximum of 8 points per week). Clicker questions will be graded for participation only and not for correctness of the response. Full credit for clicker points for a given day will be awarded for clicking in at least 80% of the time that day. Forgetting your clicker counts as missing a class, so please remember to bring it! We have you respond to problems in lecture because there’s quite a bit of evidence that sitting and listening passively probably isn’t the best way to teach or learn science. Do not attempt to falsify iClicker or discussion participation or review quiz submissions; this would be considered a violation of academic integrity.

  • Weekly (P)review quiz Online quizzes review the week’s material and preview some upcoming examples each week. You can submit your answers to each quiz as many times as you like. The latest submission before 11pm on Tuesday will count towards your engagement score. Each weekly review quiz will be worth 8 points. Review quizzes will stay available even after the deadline; in the past, students have found working through them to be helpful when studying for exams. The review quiz must be completed independently and individually. You may refer to your class notes and resources linked from this website, but not to other references. You may not share information about the review quiz with others, take the review quiz in someone else’s name, or ask anyone for prior knowledge about the review quiz.

We encourage you to find your preferred method for staying engaged with the course. There are lots of ways to earn full credit for a week’s engagement. For example: (1) attending all lectures (for the section in which you’re enrolled); or (2) attending three lectures and two discussion sections; or (3) answering all questions on the review quiz correctly; or (4) attending two lectures and getting four answers correct on the review quiz; etc.

Exams

There will be four tests during the quarter and a final exam. The tests will be held during lecture on Wednesdays weeks 2, 3, 4, and 5. The final exam will be held on Friday July 29th @11:30am.

Seats will be assigned for all exam sessions and announced beforehand, and you must bring your school ID to the exam. All work on exams is to be done on your own, and you are not allowed to use any electronics or study aids during the exam (aside from those needed for University-approved academic accommodations). You may not speak to any other student in the exam room while the exam is in progress (including after you hand in your own exam). You may not share any information about the exam with any student who has not yet taken it (including students in future quarters of CSE12). When the time is called, you must stop writing. You may not discuss the contents of any quiz or exam with ANYONE ELSE until the instructors explicitly state that it is OK to do so.

  • All 50% 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.

Programming

Most weeks, you will be working on a programming assignment for this class. There are several specific policies in place regarding programming assignments, and you should pay careful attention to them.

Academic Integrity The goal of CSE 12 will be a turning point for most of you on understanding how different strategies to solve a problem may result in vastly different efficiency. Future instructors, employers, and colleagues will expect that you will attain a certain proficiency in data structures. Using unauthorized aids in doing your work will prevent you from attaining the proficiencies that others will expect. Meeting or not meeting these expectations relate directly to getting internships, retaining employment, and success in your future studies.

The basic rule for CSE 12 is: Work hard. Start early. Make use of the expertise of the CSE 12 staff to learn what you need to know to really do well in the course. Don’t cheat. If you do cheat, we will enforce the UCSD Policy on Integrity of Scholarship (see the General Catalog or the corresponding web page, scroll 2/3 of the way down). This means: You will get a reduced grade in this course (in many cases an F), and the Dean of your college could put you on probation or suspend you or dismiss you from UCSD.

What counts as cheating? In CSE 12, you can read books, surf the web, talk to your friends and the CSE 12 staff to get help understanding the concepts you need to know to solve your PA problems. However, you must write your program alone for all PAs except where otherwise indicated. Specifically: On PAs you MAY:

  • Consult any resources provided in class or in the textbook.
  • Ask tutors, TAs, and instructors for help.
  • Help your peers debug, or provide debugging assistance to your peers. Note that this can involve looking at code, but you should not directly copy any code. Keep your own code closed when helping your peers. You must explicitly acknowledge anyone you received help from (outside of course staff) in your header comment at the top of your file.
  • Search/consult the web for general documentation, for example, how to use Java APIs.

On PAs you may NOT:

  • Search/consult the web for solutions to the PAs, including algorithms or code.
  • Copy code from anywhere (except the textbook and class materials like slides–with attribution).
  • Have anyone else completed your assignment (or any part of it).

We do electronically check every program that is turned in. In recent quarters, we also found out that people unintentionally post their codes on public GitHub repos and it is a violation of the AI policy! We report all these cases to the academic integrity office. If you want to share your work with future employers or simply want to save a copy of your work, you can post them privately on your GitHub account!

Receiving a grade on a PA doesn’t mean that you have passed the plagiarism checking. We can report cheating cases any time during the quarter, even after we submit your final letter grade. So the safest bet is don’t cheat!

To reinforce these points, every student in CSE 12 must read, understand, and sign the Integrity of Scholarship Agreement. You must sign an integrity statement before completing any of the assignments or labs.

Collaboration

The main goal of the programming assignments is for you to become a better programmer. You must experience writing your own code for this to really happen. You may discuss your assignment with other students, and you may help them debug, but all code that you submit must be written by you alone.

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

Grading Programming Work

Each programming assignment will have a portion that is automatically graded, and a portion that is manually graded by the course staff. You may submit both portions as many times as you like until the deadline. For both portions we will assume your latest submission is the one that you would like to be graded.

After each assignment’s deadline, we will open a resubmission for that assignment for one week (this time period may be shorter for assignments near the end of the quarter). You can resubmit to improve the automated part of your grade. You can gain up to half the points you lost in the initial submission through resubmission; we’ll divide the difference of the initial and resubmission by 2 and add it to the original. There’s no penalty for (accidentally or intentionally) resubmitting work that is marked lower. There is no way to resubmit and recover points for the manually graded part of assignments, which must be submitted before the deadline.

This policy also serves as the late policy for programming assignments; if you don’t submit an assignment, the initial grade is 0, and you can get half of the automated points by submitting after the deadline. There is no other late policy for programming work.

Example: On a PA, you submit and get 40/80 for the automated score, and 10/20 for the manual score. After the deadline, you find many of your mistakes and resubmit, and get a new automated grade of 70/80. Your new score would be

(70 - 40) / 2 + 40 = 55

for the automated part, and the manually-graded part would remain 10, for total of 65 (rather than the original 50) points on the assignment.

In addition, once a programming assignmen deadline passes you can talk to other students about them, get coding help from staff on them, and so on. Please make use of these resources to understand where your solution was incorrect or incomplete, and resubmit!

Getting Help

Working and getting help in the lab

We expect that ALL STUDENTS WILL NEED HELP at some point in this course. If you find yourself needing help, this is not a cause for embarrassment. It is completely expected. Please seek help early and often through any (or all) of the following resources.

You have computer accounts for the labs in the CSE building. Even if you choose to work on your programming assignments on your own computer, you can work in these labs.

During open lab hours, tutors, TAs, and the instructors will be available to help. We will work with you to get you un-stuck when you’re not sure what to do next on an assignment. We will be using the Autograder system to manage to queue of requests for help in lab. To get in the queue, log into Autograder with your @ucsd.edu email and submit your question as a ticket:

  • Give a meaningful question or problem statement in your ticket.
  • 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.
  • If you are attending virtual open lab hours please make sure to provide a zoom link when you submit your ticket

Expect to have about 5 minutes with a tutor (or TA or instructor): you probably won’t have the solution at the end of the conversation, but you should feel un-stuck and ready to try new approaches.

Asking & Answering questions on Piazza

Piazza is an online discussion board where we can make announcements and students can ask questions. Both we (the course staff) and your classmates can answer your questions. There are a few kinds of questions you should ask on Piazza:

  • Private questions about portions of your programming assignment solution. Please see a tutor during our tutoring session or post these questions privately.
  • Private questions about your grade / account
  • Public questions about programming assignments
  • Public questions about the content of lecture, discussion, and any readings

For each assignment, you will find a Frequently Asked Questions post, where we will answer all common questions we receive in office hours and via (private) 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.

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

The CSE 12 Community

CSE 12 is a large course: there are 10 people on the instructional team and over 100 students. We are all here because we are excited about Computer Science and want to ensure a productive, interesting, and useful quarter.

At UC San Diego, we agree to hold ourselves to the Principles of Community of respect, inclusion, and integrity. This translates to all our interactions in this course, and beyond.

These practices go beyond the university setting. 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.

Before you post a question or answer, consider:

  • Does it contribute to a positive, constructive, and respectful forum for discussion and learning?
  • Does it contain contain source code from your solution 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.

Student Resources and Support

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 http://www.facebook.com/ucsdidea (you are welcome to Like this page!) and the Center web site at http://idea.ucsd.edu/. The IDEA Center programs support both undergraduate students and graduate students.

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.

The Office for the Prevention of Harassment & Discrimination (OPHD) provides assistance to students, faculty, and staff regarding reports of bias, harassment, and discrimination. OPHD is the UC San Diego Title IX office. Title IX of the Education Amendments of 1972 is the federal law that prohibits sex discrimination in educational institutions that are recipients of federal funds. All students have the right to an educational environment that is free from harassment and discrimination.

Students have options for reporting incidents of sexual violence and sexual harassment. Sexual violence includes sexual assault, dating violence, domestic violence, and stalking. Information about reporting options may be obtained at OPHD at (858) 534-8298, ophd@ucsd.edu or http://ophd.ucsd.edu. Students may receive confidential assistance at CARE at the Sexual Assault Resource Center at (858) 534-5793, sarc@ucsd.edu or http://care.ucsd.edu or Counseling and Psychological Services (CAPS) at (858) 534-3755 or http://caps.ucsd.edu.

Students may feel more comfortable discussing their particular concern with a trusted employee. This may be a student affairs staff member, a department Chair, a faculty member or other University official. These individuals have an obligation to report incidents of sexual violence and sexual harassment to OPHD. This does not necessarily mean that a formal complaint will be filed.

If you find yourself in an uncomfortable situation, ask for help.

Students with Disabilities

We aim to create an environment in which all students can succeed in this course.
If you have a disability, please contact the Office for Students with Disability (OSD), which is located in University Center 202 behind Center Hall, to discuss appropriate accommodations right away. We will work to provide you with the accommodations you need, but you must first provide a current Authorization for Accommodation (AFA) letter issued by the OSD.
You are required to present your AFA letters to Faculty (please make arrangements to contact me privately) and to the OSD Liaison in the CSE department in advance so that accommodations may be arranged.

Basic Needs/Food Insecurities

If you are experiencing any basic needs insecurities (food, housing, financial resources), there are resources available on campus to help, including The Hub and the Triton Food Pantry. Please visit http://thehub.ucsd.edu/. for more information.

Frequently Asked Questions

Do I have to participate if I’m on the waitlist?

Yes, you’re responsible for everything as if you’re a normally-enrolled student while you’re on the waitlist, including any submission deadlines, and your work will be graded as usual.

I have a question about enrollments and the waitlist.

Please contact CSE student affairs, who can give the best advice and information about the enrollment process. They are friendly and helpful and know much more about timing and any updates you will see through the registration system.

There is some useful advice at Enrolling in CSE Courses that likely summarizes a lot of what they would tell you to get you started.

Will the course be in-person or remote? Is attendance required?

The content of the course is primarily delivered in-person. Attendance is not required, but is highly recommended. Studies (by UCSD faculty) have shown that attendance and participation in lecture leads to better student performance and higher grades.

All of the exams, including the final exam will be in-person exams.