UCSD CSE 12 Summer 2024
Basic Data Structures and Object-Oriented Design
Ruanqianqian (Lisa) Huang
Table of Contents
- Welcome!
- Course Logistics
- Assignments, Exams, and Grading (the section you most likely care the most about :D)
- Policies
- Resources for Students
- Frequently Asked Questions (check if your question has been answered here already!)
- Acknowledgements
Welcome!
Have you used a software that freezes the screen with every button click you made? Why are some programs slower than the others? Why are some softwares easy to use but others not? What does it mean to design programs that manipulate and store data properly? Data structures are at the heart of the answers to these questions.
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.
What to Expect
Each week, we will explore topics in these areas interactively during lectures. You will engage in discussions and collaborative hands-on work in lectures, complete programming assignments to hone your coding and program design skills, and take quizzes that evaluate your understanding of what you have learned. By the end of the course, with sufficient effort, you will be better at designing and understanding programs and the structure of data they work over, which are stepping stones to the understanding of the technical and societal impact of software as well as more advanced topics in computer science.
On an average week in CSE12, you can expect to spend 6-8 hours on lectures, in-class group work, and discussions; and 9-12 hours working on your programming assignments and reviewing materials. If you find yourself spending dramatically more time than this, it is a good idea to contact the course staff and discuss more efficient strategies in office hours.
Learning Outcomes
Upon completion of this course, with sufficient effort, you will be able to:
- Use, implement, modify, and test various data structures including lists, stacks, queues, trees, tables and graphs.
- Analyze the runtime efficiency of different data structures and different implementations of abstract data types given specific scenarios.
- Evaluate the choice of implementation for abstract data types, data structures, and software design patterns in different engineering scenarios, given their technical and societal impact.
- Individually and collaboratively, solve substantial computational problems by using the Java programming language, object-oriented design, data structures, and algorithms, considering their technical and societal impact.
Course Format
In-Person Lecture
Expect class to be interactive; you’ll work through problems in groups, compare multiple approaches to solutions, and answer multiple-choice questions using Gradescope quizzes (see Engagement below).
Lecture | Time | Location |
---|---|---|
A00 | MW 8am-10:50am | FAH 1450 |
Podcasts will be available after lectures. However, attendance is strongly encouraged – in every lecture we will work on questions together that resemble exam questions. In some lectures, we will spend time designing sample exam questions. The questions you create and see might end up being the real exam questions.
Discussion
Discussions will reinforce concepts from class and introduce concepts that are especially helpful for completing programming assignments and exams. There will be podcasts/recordings for discussions.
Time | Location |
---|---|
TuTh 9am - 9:50am | Tu: Zoom; Th: FAH 1450 |
In general, there will be two kinds of discussions:
- Tuesday online discussions will review concepts discussed so far and provide tips for the programming assignments (PAs) of a given week.
- Thursday in-person discussions (except Week 1) will review for the quiz/final exam of that week.
Course Logistics
Instructional Staff
Instructor: Lisa Huang (r6huang+cse12@ucsd.edu)
Teaching Assistant: Rachel Lim (ral077@ucsd.edu)
Tutors: Kristhian Ortiz (klortiz@ucsd.edu) and Wenhua Tang (w7tang@ucsd.edu)
More details about staff and help hours: use the “Help Hours” link on the left navigation bar.
Textbook
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. While we will not grade the exercises in Stepik, you are expected to complete them before relevant lectures so that you will be prepared to participate in problem solving session and so that you know the expected pace of the course.
- Sign in or create an account at stepik.org
- Join the course here
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.
Programming Environment
While you are welcome to use your preferred programming environment for assignments, such as Eclipse and IntelliJ, the officially supported environment for CSE 12 is VSCode. The course staff is most familiar with VSCode and may not be able to help you with environment issue if you choose to use a different environment. If you do not already have a programming environment for Java installed and would like to use VSCode, please complete PA0: Computer Set up.
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 is Java 22. If you would like to set everything up on your own computer and do not already have Java 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. This is the Gradescope page for this course.
You’ll be receiving starter code through a service called Github. You are not required to have an account to complete coursework, but it can be useful for you to make one.
Assignments, Exams, and Grading
Grades
Your grade will be computed from:
- Engagement (10%; Extra credit: 10%)
- Programming Assignments (PAs) (30%)
- Exams (60%)
Letter grades will be assigned based on the following grading scale:
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.
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). You need 6 points per week to earn full credit. The maximum number of points you can earn in one week is 12, which might give you extra credit.
Earn engagement points by:
- In class participation via Gradescope quizzes (6 points max each week): In Weeks 1 through 5, you will earn credit for attending and participating in lecture (2 points ; you automatically get 2 points for the first lecture) and discussion section (1 point each; the discussion in Week 2 would worth 2 points). Lecture/Discussion participation will be recorded via Gradescope quizzes that you will fill out during lecture/discussion. Only valid submissions made before the end of each lecture/discussion will count towards your engagement. These Gradescope quizzes will be graded for engagement only and not for correctness of the response.
- Weekly (P)review quiz (6 points max each week): Online quizzes review the week’s material and preview some upcoming examples each week. Each weekly review quiz will be worth 6 points. You can submit your answers to each quiz as many times as you like. The latest submission before 11pm on Sunday will count towards your engagement score. Review quizzes will be graded for correctness: we will use the score of your last submission to a review quiz before the deadline as your grade for that review quiz. The review quiz must be completed independently and individually. You may refer to your class notes and resources linked from this website. You may ask the staff in office hours for help with related concepts, but not the specific questions. 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 and discussion sections; (2) answering all questions on the review quiz correctly; or (3) attending two lectures and getting two points on the review quiz; etc. If you decide to complete review quizzes on top of attending all lectures and discussions, you will get extra credit for your course grade.
Programming Assignments (PAs)
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 several opportunities to get feedback on your work and improve:
-
Shortly after the deadline for each assignment, the autograded portion will automatically grade your submitted code and for the manually graded portion, a staff member will grade your work and get feedback on what, if anything, you need to fix.
-
After you receive your grade you can continue to improve your assignment based on the feedback from grading. You can resubmit your work to the Late/Resubmit submission which will be open for one week (less for the last PA). Once the Late/Resubmit submission closes, your submission will again be graded.
There is no penalty for resubmissions, you can still earn up to full credit. We will take the highest score between your original submission and your late/resubmission.
The Late/Resubmit process also 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.
For those assignments near the end of the quarter, the deadline for all late/resubmissions will be Friday of Week 5 (8/2) at 11pm. We will not accept any submissions after that time, for any reason.
It’s the student’s responsibilty to check that the autograder worked and that all files have been properly uploaded (by checking the Code tab). We only accept PAs through Gradescope. We will not accept any files through email, Canvas, or Piazza.
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:
-
Open assignments, for which you can talk to anyone else in the course, post snippets of code on Piazza, get lots of help from TAs, and generally come up with solutions collaboratively. TAs will be happy to look at your code and suggest approaches and fixes.
There are a few restrictions:
-
Any code that you didn’t write must be cited in the comments at the top of all of your submitted code files.
Example: On an open assignment, you and another student chat online about the solution, you figure out a particular helper method together. Your comment should say “//The FOO function was developed in collaboration with Firstname Lastname”
Example: On an open assignment, a student posts the recursive method calls they used to solve a problem you were struggling with. Your comment should say “//I used the code from https://piazza.com/class/id-of-post”.
Example: You and another student sit next to each other, and point out mistakes and errors to one another as you work through the assignment. As a result, your solutions are substantially similar. Your comment should say “//I collaborated with Firstname Lastname to develop my solution.”
- You cannot share an entire repository of code or paste an entire solution into Piazza. Keep snippets to reasonable, descriptive chunks of code; think a dozen lines or so to get the point across.
- You still cannot use code that you find online (no copying code from StackOverflow or blogs online), or get assistance or code from students outside of this offering of the class. All the code that is handed in should be developed by you or someone in the class.
- You are responsible for understanding all the code you have written. All of the programming problems on the PAs may show up on exams, where you will need to have a thorough understanding of the PA to answer the questions.
This doesn’t mean the staff will be handing out answers. We’ll mostly respond with leading questions and advice, and you shouldn’t expect a direct answer to questions like “am I done?” or “is my code right?”
There is no guarantee the assistance you get from your classmates is correct. It is your responsibility to use your judgment to avoid using an idea on Piazza that is wrong, or doesn’t work with your solution; we won’t necessarily tell you one way or another while the assignment is out.
If we see that you used code from other students and didn’t cite it at the top of your file, the penalty will range from a point deduction to an academic integrity violation, depending on the severity. Always cite your work!
Note: collaboration does not mean turning in the same file. Collaboration is different than partners or pair programming. You must still do your own work.
-
-
Closed assignments, where you cannot collaborate with others. The closed assignments serve as programming assessments (exams). You cannot ask clarification questions but you can report potential issues as private posts on Piazza or to staff members. Staff will not look at your code or comment on it. They will not answer questions about closed assignments during Lab/Office hours. These programming assesments are take-home exams.
On closed assignments/assessments:
- You cannot look at or use anyone else’s code in any way.
- You cannot discuss the assignment, even in general terms, with anyone.
- You should expect that staff members will politely say “The course policy says I can’t help with that” if you ask a question about your algorithm or code.
- You cannot post publicly about the assignment on Piazza or elsewhere online.
- All of the examples in the open section above would be academic integrity violations.
Programming assignments will explicitly list whether they are open or closed collaboration.
You should be familiar with the UCSD guidelines on academic integrity as well.
Do not post your PA solutions publicly on any site, including Github. If you fork the Github starter code repos and upload your code to the repo, you are required to make the repo private. It is an academic integrity violation to publicly post your code. This remains true even after the course is over. If you with to share the code wish an employer in the future, upload the code to Google Drive or Dropbox and share the link to the folder.
Exams
There will be three quizzes during the quarter, in FAH 1450 (same as lecture room):
- Week 2 - Friday 7/12/2024, 9am - 10am
- Week 3 - Friday 7/19/2024, 9am - 10am
- Week 4 - Friday 7/26/2024, 9am - 10am
The final exam will be:
- Week 5 - Friday 8/2/2024, 8am - 11am, room will be announced later in the quarter.
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 CSE 12).
Quizzes: Each quiz will each be worth 15% of your final grade.
Final Exam: The final exam will be worth 15% of your final grade and broken into four parts, three parts of which correspond to the material from one of the quizzes. The fourth part will be materials not covered in prior quizzes. Your grade for each quiz will be the maximum of the quiz score and the score on the corresponding part of the final exam. Your grade for the final exam, however, will be the total score of all parts. In other words, all parts of the final exam is required. Skipping or scoring lower on parts of the final exam will not affect your quiz grades, but will affect your final exam grade.
For example:
- On the three quizzes you score 75, 0, and 95 (you miss the second). On the final exam you score 80, 75, and 0 on quiz-corresponding parts, and 90 on the new part. Your exam scores are 80, 75, 95, (80 + 75 + 0 + 90) / (100 * 4) = 61.25, giving you an exam grade of 46.69% (12% + 11.25% + 14.25% + 9.19%) out of 60%.
- On the three in-class exams you score 95, 93, and 90. You skip the final so your scores are 0, 0, 0, 0. Your exam scores are 95, 93, 90, 0, giving you an exam grade of 41.7% (14.25% + 13.95% + 13.5% + 0%) out of 60%.
- On the three in-class exams you score 75, 55, and 60. On the final you score 95, 90, 94, 98. Your exam scores are 95, 90, 94, (95 + 90 + 94 + 98) / (100 * 4) = 94.25, giving you an exam grade of 55.99% (14.25% + 13.5% + 14.1% + 14.14%) out of 60%.
Make-up Exams: This policy also covers what happens if you miss a quiz for any reason. If you are absent for a quiz, you get a 0, and then whatever score you get on the final exam for that section will be applied to your quiz grade. There are no make-up quiz, and the final exam policy is governed by the university’s policies.
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.
Use of Generative AI
These following policies regarding generative artificial intelligence use apply only in CSE 12 Summer 2024, and may not necessarily apply in other classes at UCSD or reflect the university’s stance on AI use in education.
TL;DR: You may use AI, but you should use it with caution. In CSE 12, you cannot use AI for closed PAs, review quizzes, or exams.
Can I use generative AI for assignments?
Yes, you can use Generative AI for open PAs only. Generative AI (e.g., tools like ChatGPT, Github Copilot) can be a powerful tool to support your own learning. In CSE 12, we encourage you to use AI responsibly, or else you may risk failing exams and cthe closed PAs. If you use AI to help you on a PA, we would like you to briefly cite how you used AI in a comment. This citation allows us to understand the role of AI in the learning process, and will not impact your grade.
Does that mean I can use generative AI to do all my assignments for me?
No. You may use AI for open PAs only. We require that you can understand the material on your own. If you do use AI to help you learn or complete assignments, be sure that you’re able to understand everything on your own. However, you can’t use AI for closed PAs, review quizzes, or during exams! We could tell if AI is used in closed PAs (just like how we could tell cheating). Since review quizzes resemble real exam questions, using AI for review quizzes is not going to help you with exams. Cases caught will result in violations of academic integrity.
For assignments where AI is allowed, how can I use generative AI to help me learn?
Some of the most well-known generative AI tools available are designed to be chatbots (ChatGPT, Bing Chat, Bard, Claude, etc.), so one way to approach using AI is to treat them like a friend in this class. For example:
- You can ask an AI chatbot to explain a snippet of code to you, and you can ask follow up questions.
- You can give an AI chatbot a snippet of code and an error message, and you can ask it to help you debug your program.
What should I be aware of when using generative AI?
While generative AI tools may seem intelligent, it is important to recognize that there are significant limitations, including but not limited to:
- AI can make up facts and pretend to know things it doesn’t. Be sure to double-check any information it tells you if you’re unsure.
- AI may be able to write code well, but don’t let this replace your own learning. Being able to read, write, and understand code on your own are critical skills for programmers. If you are interested in programming-related jobs, skills taught in CSE 12 are fundamental in technical interviews; to land on one of those jobs, you want to make sure you have acquired the skills, not AI!
I have other questions about using generative AI in CSE 12.
We encourage you to ask any questions about our policies publicly on Piazza, or directly to the instructor or the TAs via email or during office hours. Figuring out how to work with generative AI is a new challenge for both students and educators, so we encourage you to have an open discussion about it! UCSD provides additional resources for students about how to use generative AI in a way that upholds academic integrity.
- UCSD Academic Integrity Office: https://academicintegrity.ucsd.edu/faq/index.html
- UCSD Library: https://ucsd.libguides.com/c.php?g=1322935
Late or Missed Assignments/Exams
The Assignments, Exams, and Grading section details which assignments can be submitted late or missed without penalty. In summary:
- Engagement grades can be earned in various ways, but no late submissions will be graded.
- Programming Assignments (PAs) can be resubmitted/late until up to one week after the deadline; the last PA must be submitted by the final exam day.
- Exams: Missed quizzes can be “retaken” during the final exam. Except for accommodations made in applicable circumstances, no exam can be taken late.
Regrades
Mistakes sometimes occur in grading. Once grades are posted for an assignment, we will allow two days 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.
Resources for Students
Getting Help with this Course
If you need help at any time this quarter, please contact the instructor, the TA, or the tutors. We are happy to work with you. You may also post general questions on Piazza.
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/ 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.
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 from 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/.
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 their AFA letters to Faculty (please make arrangements to contact the instructor privately) and to the OSD Liaison in the 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. E.g., How likely is it for me to get into this class?
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 delivered in-person, except for Tuesday discussions, which will be on Zoom. You can revisit lectures and discussions remotely on UCSD Podcast (accessed via Canvas) after they are delivered in person. Attendance is not required, but is highly recommended (check Engagement). Studies (by UCSD faculty) have shown that attendance and participation in lecture leads to better student performance and higher grades.
Can I take an exam remotely? No. All exams, including quizzes and the final exam, will be in person.
Can I take an exam early/late?
- For quizzes, we will not offer accommodations as one may retake them during the final exam (see Exams). Quizzes will be released to all students after grades are released for practice purposes.
- For the final exam, we will provide accommodations following the university policy for unforseeable circumstances including serious illness and family emergencies. Please contact the instructor when requesting accommodations.
- We will also accommodate final exams in conflict with finals of other courses. Please email the instructor screenshots of your WebReg record showing the conflict.
What’s the course material like?
You can see a previous version of the course, which will give you a sense. This offering will cover the similar topics covered in prior iterations. However, because of the uniqueness of summer sessions, there will be differences in pace and focus.
There is no required textbook for you to purchase for the course. The course uses a combination of online resources and notes from the instructor.
Can I audit the course?
You can use all the public resources on this website, and if you’re a UCSD community member, you can view all the podcasts for the problem sessions at https://podcast.ucsd.edu/. Beyond that we don’t have any formalized support for auditing the course.
Do we need a clicker for this class?
No. We use Gradescope to collect Engagement credit.
Where are the icons from?
Icons made by Freepik from www.flaticon.com.
Acknowledgements
“This public acknowledgment serves to honor and respect Indigenous peoples and their land on which our campus resides. UC San Diego was built upon the territory of the Kumeyaay Nation. From time immemorial, the Kumeyaay people have been a part of this land. Today, the Kumeyaay people continue to maintain their political sovereignty and cultural traditions as vital members of the San Diego community.”
The course syllabus was partially adapted from Greg Miranda’s CSE 12 (Fall 2023), Gerald Soosairaj’s CSE 29 (Spring 2024), and Lisa Huang’s CSE 193 (Fall 2023).