Welcome to CSE 100: Advanced Data Structures! This is a course in advanced data structure design, analysis, and implementation. You will use and implement of data structures like (un)balanced trees, graphs, priority queues, and hash tables. You will also learn how to make sophisticated use of memory management, pointers, and recursion in programs, and analyze them with theoretical and practical performance analysis. Instructors and Teaching Assistant (TA) Niema Moshiri (Instructor) Email: niema@ucsd.edu Debashis Sahoo (Instructor) Email: dsahoo@ucsd.edu Sigal Shaul (TA) Email: sshaul@ucsd.edu Grade Breakdown Reading Quizzes (RQs): 16% Programming Assignments (PAs): 44% Projects: 20% Exams: 20% If you score higher on the Midterm than on the Final, 10% Midterm and 10% Final If you score higher on the Final than on the Midterm, 5% Midterm and 15% Final You must take and pass at least one of the two exams to pass the course By default, we will use the standard scale of 90%—100% = A, 80%—89.9% = B, 70%—79.9% = C, 60%—69.9% = D, and <60% = F. These cutoffs may be lowered if need be, but they will never be raised. In other words, we may make it easier to get a certain letter grade, but never harder. Pluses and minuses will be given at the instructor's discretion. Course Components This course will be taught as a "flipped classroom," meaning you will learn the content before class via the assigned instructional materials, and during class, we will focus on addressing and correcting your misconceptions via problem solving and discussion. Generally, any given day of the course schedule (let's use November 25 as an example), you will be expected to complete the following tasks: Complete the topic videos and readings before November 25 Complete the Reading Quiz (RQ) before November 25 Attend the Problem Solving Session (PBS) on November 25 Attend the Discussion after November 25 Work on the current Programming Assignment (PA) or Project (and complete it before its deadline) Before Class: Topic Videos and Readings Content in the course will be delivered asynchronously in the form of short topic videos (~5–10 minutes each). Each day of the course schedule will have a few assigned topic videos, and you are expected to watch the topic videos before the class on the corresponding day. For students in China who may not have access to the Topic Videos via YouTube, you can download them from the following Baidu Pan folder: URL: https://pan.baidu.com/s/1qthvEzk_H2Ag3c6zzqVW5A Code: vgfx In addition to the topic videos, we will assign optional readings from this course's free online interactive textbook, Data Structures, to supplement your learning. This interactive textbook has embedded multiple choice, free response, and even coding challenges, so you may wish to refer to it for practice. Before Class: Reading Quizzes (RQs) Prior to a given day of the course schedule, after you have finished the topic videos (and potentially the optional readings) assigned for that day, you will complete a short Reading Quiz (RQ), which will be due at 8:00 AM on that day. All RQs are automatically graded instantly upon submission and will provide you feedback, and you have unlimited attempts until the deadline. You are allowed to collaborate with your peers on the RQs. RQ points cannot be made up, and late RQ submissions will not be accepted in this course. During Class: Problem Solving Sessions (PBSs) Instead of holding traditional lecture-style sessions, we will be holding synchronous instructor-led Problem Solving Sessions (PBSs). We expect that all students have at least been exposed to the topics for a given PBS prior to attending (via the corresponding topic videos, assigned readings, and RQ). Thus, rather than regurgitating the exact same information, these PBSs will focus on the following: Asking Questions. As you watch the topic videos or work on the RQs, you will likely be confused (which is a good thing!). During the PBSs, you will be able to ask any questions you may have about the topic, and we will work together to overcome the confusion. Discussing Concepts. The topic videos and readings are by no means comprehensive: they merely scratch the surface of a given concept. During the PBSs, we will explore the concepts more deeply as a group. Solving Problems. In this class, we will emphasize "learning-by-doing," and while the RQs will help you get a taste of the types of problems you may encounter, the PBSs will allow us to think about more challenging problems, with an emphasis on real-world scenarios. PBS attendance will be completely optional, and recordings of the PBSs will be made available for you to follow along (or re-watch) asynchronously. You are welcome to join as many (or as few) of the PBSs as you wish, and we strongly encourage as much participation as possible. After Class: Discussion Each week, we will be holding synchronous TA-led Discussion sections, which will focus on the following: Starting the PAs/Projects. We understand that one of the most daunting steps when coding is the very first step: How do I even start? During the Discussion sections, we will provide an overview of the current PA/Project and provide some tips regarding how to approach it. Asking Questions. You will likely encounter the majority of your "learning breakdowns" as you work on the PAs and Projects, which may occur after the corresponding PBS. During the Discussion sections, you are welcome (and encouraged!) to ask any questions you may have. Solving Problems. You will have already attempted some problems while attempting the RQs and working on the PBSs, but those problems may not have been closely tied to the PAs/Projects. During the Discussion sections, we will work on problems more strongly resembling what you may encounter on the PAs/Projects. Discussion attendance will be completely optional, and recordings of the Discussion sections will be made available for you to follow along (or re-watch) asynchronously. We strongly encourage as much participation as possible. Programming Assignments (PAs) The Programming Assignments (PAs) will be the core form of assessment in this course. Typically, we will release a PA each Wednesday, which will be due at 10:00 PM the following Tuesday. Each PA will focus on the content covered in the 3 lectures during the week the PA was released. For example, if a PA is released on the Wednesday of Week 5, it will focus on content covered during the Monday, Wednesday, and Friday lectures of Week 5. All PAs are automatically graded instantly upon submission and will provide you feedback, and you have unlimited attempts until the deadline. PAs will only be graded based on correctness: we will not grade for programming style (e.g. comments, indentation, etc.). However, we strongly urge you to maintain good programming style as you work on the PAs, as clean code is easier to read, interpret, and ultimately debug. Also, tutors will skip your ticket in the labs if they are unable to read your code easily. While we encourage discussing higher-level conceptual aspects of the PAs with your peers, all work must be yours alone. Sharing code (or anything easily translated into code) is a violation of UCSD's Academic Honesty policy and is not allowed. Late PA submissions will not be accepted in this course. Start early, start often. Projects In addition to the PAs, which are generally split into smaller chunks, we will have two larger Projects towards the end of the course. These will combine data structures knowledge you acquire from class and homework with the pragmatics of writing a significant application that demands high performance. Projects will only be graded based on correctness: we will not grade for programming style (e.g. comments, indentation, etc.). However, we strongly urge you to maintain good programming style as you work on the PAs, as clean code is easier to read, interpret, and ultimately debug. Also, tutors will skip your ticket in the labs if they are unable to read your code easily. While we encourage discussing higher-level conceptual aspects of the Projects with your peers, all work must be yours alone. Sharing code (or anything easily translated into code) is a violation of UCSD's Academic Honesty policy and is not allowed. Late Project submissions will not be accepted in this course. Start early, start often. Exams You will have two exams in this course: a Midterm and a Final. The exams will be administered asynchronously: you will have a larger window of time within which you can choose to start the exam at any time, and from the moment you start the exam, you will have a limited amount of time to complete the exam (the time will be shown via a countdown). For example, if the Midterm exam length is 1 hour and is released on November 25, you will be able to start the Midterm exam at any time on November 25, and from the moment you choose to start the exam, you will have 1 hour to complete it. Academic Integrity All students must submit the Academic Integrity Form at the start of the course. You will not receive any course credit until you submit the form. By submitting the form, you are agreeing to its terms, so be sure to read it carefully. We encourage you to study together and discuss concepts from this class, and you may work on the RQs collaboratively, but all PAs and Projects must be written completely independently (no sharing code!). If you are found cheating, you will receive an automatic F in the course, and you may face even stricter sanctions from the University. In short, do not cheat! Getting Help We expect that all students will need help at some point in this course. If you find yourself needing help, this is not cause for embarrassment: it is completely expected, and our goal is to ensure that you are able to receive the help you need. Please be sure to seek help early and often through any (or all!) of the following resources: Your Study Group: Building a support system of friends with whom you can struggle and work through the challenges you encounter is one of the best ways to seek help. You will quickly learn how much you can figure out working together! Tutor Lab Hours: There are many, many hours in which tutors are willing and available to help you with any questions you might have. Lab hours will be posted on the Course Calendar. For these sessions, you should submit a ticket on Autograder to request help. There is an extra step since we are remote: along with your ticket, you should submit a link to a Zoom meeting that you create and start. The tutor will join that Zoom meeting, chat with you to help you with your issue, and then leave the meeting. You can, for example, start a screen share with your code before the tutor arrives to help them immediately see your issue and present what you’re seeing. Please refer to the UCSD Zoom: User Guide for detailed functionality instructions, including how to Share Screen and Annotate Shared Content. Discussion Board: Please use this Discussion Board for any questions related to the RQs, PAs, Projects, course logistics, etc. When you create a new post, you will have the ability to specify the specific category that best fits your post. Categories may have post templates to help you write a neatly-organized and informative post. The Discussion Board is not for thorough/lengthy code-specific help: if you need help debugging your code, please seek help from the Tutor Lab Hours! Office Hours: The instructors and the Teaching Assistant (TA) are always willing to help you during our office hours. Ideally, office hours should be reserved for higher-level conceptual questions: coding-specific questions are best asked of the tutors during lab hours. All office hours can be found on the Course Calendar. Thank you for reading the course syllabus! Niema's favorite video game is Final Fantasy VII. Consent to Participate in Educational Research 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: 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 instructor 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.