UCSD CSE 12 Spring 2022

Basic Data Structures and Object-Oriented Design

Greg Miranda

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.

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 CSE12, you can expect to spend 4-6 hours on videos, reading, lecture, and discussion; 2-3 hours on programming practice; and 4-6 hours working on your programming projects. 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.

Course Components

There are a few components to your grade in the course:

Letter grades will be assigned based on the following grading scale:

Grades

We will not round grades up. We may adjust the above scale to be more lenient (depending on a number of factors that we will not publicize), but we guarantee that we will not adjust the scale to make it harder to get a better grade. We will not adjust the scale for individual students.

In addition, you must average 65% on the programming assessments (exams) in order to pass the course.

Problem Sessions – Lecture

Most lecture content will be presented asynchronously through videos and readings. These will come with associated weekly quizzes that are due Monday at 10pm. The quizzes are required work to demonstrate your consistent engagement with the material and can be turned in late for full credit by the end of the quarter.

In our originally-scheduled lecture time, we will have an opportunity for live questions, clarifications, and some prompts for you to work on beyond the assigned reading and videos. Attendance is encouraged but not required.

Recordings of relevant classwide discussions will be posted after the meetings, though the selected videos/reading for the given day are the official “lecture” for that day.

In-person lectures will be led during the normally-scheduled lecture times in the normally-scheduled room, led by the instructor. These sessions will be recorded by podcasting but will not be available remotely while they are ongoing. You can find the recordings in the Canvas Media Gallery or at podcast.ucsd.edu

Since these lectures may be mostly student discussion, the recordings are mostly an archive of any live demos that come up rather than a presentation of core content.

Discussion

In-person discussion will reinforce concepts from class and introduce concepts that are especially helpful for completing programming assignments. Students from either section can attend either discussion. They will be recorded. Attendance is encouraged but optional.

Like lectures, discussions will also be recorded and made available in the Canvas Media Gallery or at podcast.ucsd.edu

Book Exercises/Quizzes and Course Engagement

There is no required textbook for the course.

There is a zyBook available that has been used in the past. You can purchase a subscription and use it at your convenience; it serves as a useful reference and is organized in the order material is presented in this course, and there will be links to relevant zyBooks sections in with the course schedule. There is also a significant amount of reference material at the end of the book for review of Java concepts. To get access to the book:

  1. Sign in or create an account at learn.zybooks.com
  2. Enter zyBook code: UCSDCSE12MirandaSpring2022
  3. Subscribe

If you cannot afford the book or have questions about using your financial aid, please see this page: https://zybooks.zendesk.com/hc/en-us/articles/360007439574-Can-I-pay-using-my-financial-aid-

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.

Along with each lecture will come some required pre-lecture work. Most often this will be reading and activities from the weekly lecture quizzes, and will also sometimes include surveys or check-in quizzes so we can get your feedback about the course and check on your understanding.

The weekly lecture quizzes are in Gradescope and can be re-taken as often as you like. There is no penalty for completing these late, but they are assigned so that you will be prepared to participate in problem solving session and so that you know the expected pace of the course.

All weekly lecture quizzes must be completed by the last day of class in Week 10: June 3, 2022 at 10pm. After this time, no late submissions will be accepted, for any reason.

Programming

Most weeks there will be a programming assignment. Direct practice with programming will make up the majority of your work in the course.

There are numerous opportunities to get feedback on your work and improve:

There is no penalty for resubmissions, you can still earn full credit. We will take the highest score between your original submission and your late/resubmissions.

The Late/Resubmit process applies if your submission is late. You should strive to complete each PA before it’s posted deadline as the PAs are practice for the exams. You will also receive earlier feedback and an extra grading attempt if you submit before the original deadline.

The Hard deadline for all late/resubmissions is Friday of Week 10 at 10pm. We will not accept any submissions after that time, for any reason.

Collaboration

This is not the same collaboration policy you have seen in your other programming courses. Read it carefully.

In your professional programming life, some of your work will be highly collaborative with lots of expert advice available from senior developers and from sites like StackOverflow. This is a common case in companies, in academia, and on open-source projects. It’s a great way to get exposed to new techniques, share knowledge, and generally enjoy teamwork. In contrast, some of your work will involve figuring out programming problems on your own, where you are the first person to encounter an issue, or the first person to try using a new library in the context of your application. You should get experience in both types of situations; we might call the former kind of problem open to collaboration and the latter closed to collaboration.

In terms of courses, this split also makes sense. Programming assignments serve (at least) two roles. First and foremost, they are a mechanism for you to learn! By directly applying the techniques and skills we discuss in class, you get practice and become a better programmer. Second, they are an assessment mechanism – as instructional staff we use them to evaluate your understanding of concepts as demonstrated by your programs. Open collaboration can reduce frustration while learning and give you chances to enjoy collaboration and lots of help, but may not let us accurately evaluate your understanding. Closed assignments are an opportunity for you to demonstrate what you know by way of programming.

There are two types of assignments in this course, open and closed:

Programming assignments are considered open or while all programming assessments (exams) are closed collaboration.

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

Programming Assessments (Exams)

In place of on-paper exams, three times during the quarter and once at the time of the final exam, we will give you a programming assignment that you must complete in a short (24-48hours) time frame without any help from other people, including the course staff. The final exam is cumulative, with three sections that each correspond to the material from one of the in-quarter exams. Your score on the assessment for a “third” of the course is the maximum of your score on that in-quarter exam and that part on the final.

For example:

This grading policy also forms the missed exam policy – if you miss an in-quarter exam, you can make up that credit on the final. If you miss the final, your in-quarter exam scores will be used. Late work on exams or make-up exams will not be offered.

You can use any resources, notes, readings, and past code from the course to help in addition to Web-based resources. Along with submitting the program, you will record a short video of yourself presenting the program you wrote, demonstrating its behavior and your understanding. We’ll give some opportunities for practice with this process, and much more detailed instructions with the exam release.

We do not expect that the programming work and recording will take a full day of constant work. The tasks will be significantly shorter than the PAs, but not necessarily any easier, so this should only take a few hours. We give the broad range to give you the best chance to schedule some quiet, focused time to do the work and record the presentation.

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.

Policies

Academic Integrity

Individual assignments will describe their academic integrity requirements. You should pay attention to the descriptions of what collaboration is allowed and expected on each assignment.

One challenge we face as an instructional team is verifying that students are submitting their own work given the number of remote and asynchronous options we provide. In the past, we relied on in-person, ID-checked exams to mitigate this particular challenge to academic integrity. Assignments and exams will come with specific policies for what types of collaboration is allowed, but we have one course-wide policy – we may reach out to students to schedule a check-in on their understanding of work they’ve submitted if we’re suspicious about an academic integrity violation. This would involve a video conference with a TA or instructor to check that the student has the understanding demonstrated by their work. This is in addition to any video screencasts that are submitted as a part of the exam.

We don’t expect to use this option much (certainly you are a student that acts with integrity!), but we state it clearly in the syllabus in case it becomes necessary so it isn’t a surprise to anyone.

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

Regrades

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.

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/.