In this course, you will learn to write, trace, and test programs; explore the interactions between programs and data; and use computation to answer questions you care about.
Basics: Lecture, Discussion, Labs, 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!
On an average week in CSE8A, you can expect to spend 3 hours in lecture, 1 hour in discussion, 1 hour in lab section, 30 minutes to an hour preparing for class and taking the weekly quiz, 1 hour reviewing what you’ve learned and asking questions, and 4 hours working on your programming assignments (either at home or in the open lab hours).
Policies: Materials, Grading, Academic Integrity, Educational research, Detailed learning outcomes, Additional resources
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). Due to space constraints, you must attend the lecture in which you’re enrolled.
Lecture | Time | Location | Instructor |
---|---|---|---|
A00 | MWF 10am | CENTR119 | Minnes |
B00 | MWF 12pm | WLH2005 | Politz |
C00 | MWF 9am | CENTR119 | Minnes |
D00 | MWF 2pm | WLH2005 | Politz |
There are two kinds of discussion section: in Supplemental Instruction you will work in small groups, practicing course content with extra exercises and activities; TA review sessions will demo tools and answer questions about the programming assignment specifications. You can attend any discussion section(s) you like; attending discussion section counts towards your Engagement with the class.
Discussion | Time | Location | Leader | Type |
---|---|---|---|---|
Su 5pm | Teaching + Learning Commons 1504 | James | Supplemental Instruction | |
Su 6pm | Teaching + Learning Commons 1504 | Lana | Supplemental Instruction | |
A01 | M 5pm | PCYNH122 | Bethany | Supplemental Instruction |
A02 | M 6pm | PCYNH122 | James | Supplemental Instruction |
B01 | M 7pm | PCYNH122 | Lana | Supplemental Instruction |
B02 | M 8pm | PCYNH122 | Sasha | Supplemental Instruction |
C01 | W 6pm | CENTR214 | Alex | TA review |
C02 | W 7pm | CENTR214 | Alex | TA review |
D01 | W 6:30pm | CENTR212 | Shreeman | TA review |
D02 | W 7:30pm | CENTR212 | Shreeman | TA review |
You must attend the lab session in which you are enrolled. You will work in groups in lab; you are starting your journey into Computer Science and we want to help you meet your classmates who will be with you along the way. The groups will be assigned by the Lab TA and group assignments may change from week to week. All labs must be finished in the allotted class time. As a group, you will create a lab report each week and your TA will review it and give you feedback.
Lab section | Time | Location | TA |
---|---|---|---|
A50 | Tu 9am | CSE B230 | Sophia |
A51 | Tu 10am | CSE B230 | Sophia |
A52 | Tu 11am | CSE B230 | Sophia |
B50 | Tu 9am | CSE B240 | Laura |
B51 | Tu 10am | CSE B240 | Laura |
B52 | Tu 11am | CSE B240 | Laura |
C50 | Tu 1pm | CSE B230 | Sooh |
C51 | Tu 2pm | CSE B230 | Sooh |
C52 | Tu 3pm | CSE B230 | Sooh |
D50 | Tu 1pm | CSE B240 | Nadah |
D51 | Tu 2pm | CSE B240 | Nadah |
D52 | Tu 3pm | CSE B240 | Nadah |
There is no textbook for the course. The schedule above will link to all the reference material you need for the course.
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.
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 follow instructions here for installing JDK 10 and Atom (a text editor) on macOS and Windows.
We’ve also collected a Glossary of terms we’ve defined and used in the course as a helpful and unambiguous reference.
You’ll be submitting your classwork and seeing grading feedback through a tool called Gradescope.
There will be two exams during the quarter, held in the evenings during Week 3
Thursday 10/18/2018 8pm-9:50pm
and Week 7
Wednesday 11/14/2018 8pm-9:50pm
of the Fall quarter. The Final exam is on Wednesday of exam week
Wednesday 12/12/2018 7pm-9:59pm.
There are no makeup exams. See grading section below for the policy on missed exams.
Prof Mia Minnes (Instructor) Prof Joe Gibbs Politz (Instructor)
There are 40 staff including 4 Supplemental Instruction leaders to help with your learning. You can find their names and pictures on Piazza Staff page. Their lab hour schedule is below.
Learn by doing! Most weeks, you will be working on a programming assignment for this class. You will feel the intense excitement of seeing your work come alive through the computer, and also the equally intense frustration of wading through error messages and tricky bugs. Both of these are at the heart of what it means to be a computer scientist. The programming assignments are designed to invite your creativity, problem solving skills, tenacity, and interests. When you find yourself stuck during your work on a programming assignment, ask for help:
Instructor and TA office hours
Private questions to instructors on the class discussion board on Piazza.
Remember to always read the programming assignment description carefully. Some programming assignments will be pair-programming assignments, where you are expected to develop the algorithm and code in close collaboration with a partner; others will be individual assignments, where you will gain confidence with your own mastery of the material.
PA0 counts towards 2% of your overall course grade, the rest of the assignments (PA1 through PA8) each count towards 5% of your overall course grade.
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. The type of programming assignment you are working on will determine whether you can collaborate with other students in the lab.
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:
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.
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 two kinds of questions you should ask on Piazza:
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.
Programming and computer science are cumulative topics, where later concepts build heavily on earlier ones. In addition, the process of revision is important in programming. To that end, we offer code mentoring sessions to students whose programming assignments get low scores.
On each programming assignment, if you get less than 70% of the points, we will contact you to schedule a one-on-one code mentoring session with a staff member. Partners on pair programming assignments will be contacted individually.
In a code mentoring session, you’ll sit down with the assigned staff member for 30 minute meeting. In the meeting, you’ll review where your assignment lost credit, and work through several of the necessary fixes. If you attend the session and do the work, your score will be increased to 70%. These are positive, supportive meetings whose goal is to help students who might have a few misconceptions or have made a few mistakes to not fall behind in the course.
Programming assignments will be clearly labelled as individual or pair assignments. These each come with responsibilities for how you complete the work.
For individual assignments, you should complete all the work on your own, with help only from the course staff and course resources. You can ask private questions on Piazza, look up reference material (e.g. the Java documentation, a Google search), and refer to previous assignments as much as you like. However, you shouldn’t talk about the assignment’s content with others, look at anyone else’s code for the assignment, look at anyone else’s screen while they’re working on the assignment, or copy ideas from code you find on the internet. The academic integrity agreement you will sign along with your first assignment will spell out these rules in detail.
When working on pair PAs, you must use the “Pair Programming” approach. In pair programming, two programmers share one computer. One student is the “driver,” who controls the keyboard and mouse. The other is the “navigator,” who observes, asks questions, suggests solutions, and thinks about slightly longer-term strategies. The two programmers switch roles frequently (you decide, but anywhere from 20 minutes to an hour is reasonable). Working in pairs should make you much better at programming than working alone would. The resulting work of pair programming nearly always outshines that of the solitary programmer, with pairs producing better code in less time.
“[Pair programming] makes learning programming faster and more fun. I have had previous experience working both alone and with partners. I definitely agree that working with partners is more profitable.” – CS student
To “learn the do’s and don’ts” of pair programming and to see pairs in action, view this entertaining video about pair programming from North Carolina State University: An Introduction to Pair Programming Version 2. However, the most important rule of pair programming is that you must work together, co-located, on the same part of the assignment at the same time. Splitting up the work on a PA is considered cheating.
You will choose your own partner. You may choose any partner from your lab section. E.g. if you are in the 9am Tuesday lab section in B230, you must work with another student from that section. The pairings for PA1 will be organized in lab in the first week.
You will need to arrange times to meet outside of class. We expect you will need around 5 hours on each pair PA to work with your partner. We expect everyone to be flexible and professional in arranging those times as necessary; if your schedule is highly constrained, explore possible meeting times with your prospective partner before you commit to the partnership. You may choose a new partner for each pair PA, or you may decide to stay with your current partner.
Best Practices There are some best practices for pair programming:
Choosing a partner You should try to pick a partner whose experience and skill level with programming is similar to your own. This may not always be possible and it is sometimes hard to compare skill levels, but students tell us (and other data support) that pairs are most productive when the partners start at about the same level.
Still, people often pair up with another whose skills are different. This is somewhat unavoidable, as no two people have an identical skill set. The differences may be great or small, but this is exactly like most real-world working situations. Part of accomplishing a task is to get the most out of each member and make each member stronger and more productive on subsequent tasks.
Students bring different strengths to the process, regardless of how much experience they have had with programming. Both experienced and inexperienced students will need to draw on their reasoning and problem solving skills. A more experienced partner may sometimes feel frustrated or slowed down by a less experienced partner, but the experienced partner still benefits from the teamwork in many ways. The less experienced partner’s requests for clarification often uncover flaws in an approach or solution; the exercise of providing a clear explanation solidifies and deepens the explainer’s own understanding and the teamwork and communication skills they gain have great value in both the academic realm and the job market.
“My partner had never coded anything before so I was able to teach him a little bit about how it worked. The teaching bit helped me a lot with understanding the labs and passing the exams.” – CS student
The less experienced partner may feel that questions hold the other partner back or that there is no benefit to participating actively, but pair programming studies show that paired work is consistently better than work the stronger partner does alone. It is each partner’s job to understand the whole task; that means asking questions when necessary and answering them when possible.
It may be instructive to read a selection of students’ partner evaluation comments from similar courses that have used pair programming; they give a picture of what good partnerships are like (and a few disasters, too). Read Pair Programming Evaluations from the University of California, Irvine Bren School of Information and Computer Sciences.
Dealing with Differences If you believe your partner is not participating appropriately in pair programming (e.g., she or he does not keep in touch, does not come prepared to work on the assignment, or does not seem to be engaged in the process) please first address your concerns to your partner, and try to agree on what should be done to make the pair programming experience work well for both of you. If that approach is not successful, explain the issues to your teaching assistant or the instructor, who will work with you and your partner to improve the situation.
If your partner drops the course or otherwise stops participating, you should MUTUALLY AGREE TO SPLIT FOR THE REST OF THE ASSIGNMENT and you must EACH FIND A NEW PARTNER, STARTING OVER FROM SCRATCH, as described above. You should never simply abandon your partner without an agreement from your partner that this is the best course of action. If you are having trouble, please see the instructor ASAP.
How Pair Programming Affects Your Grade You and your partner will receive the same score on your code.
When in Doubt, Seek Clarification Pair programming is shown to help, not hinder, your successful completion of the introductory course. It is important that you understand the processes and expectations up front so you can gain the most benefit. If you are unsure of any of the aspects of pair programming and how it is implemented in the course, see your instructor right away.
CSE 8A is a large course: there are over 35 people on the instructional team and over 600 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:
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.
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 6. The lowest weekly participation score will be dropped when calculating your overall engagement average.
Earn engagement points by:
In class participation via iClickers In Weeks 1 through 10 (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 2 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 Monday will count towards your engagement score. Each weekly review quiz will be worth 6 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 two lectures and two discussion sections; or (3) answering all questions on the review quiz correctly; or (4) attending two lectures and getting two answers correct on the review quiz; etc.
There will be three total exams in the course: two during the quarter (also called “midterms”) and a final exam. The midterms will be in the evening during the quarter. They will primarily contain content from the weeks leading up to them. Since the programming content is cumulative, the second exam will necessarily contain content from the first exam, as well.
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 CSE8A).
The first two exams will each be worth 8% of your final grade. The final exam will be worth 24% of your final grade. The final exam will have a specific structure – it will be broken into three parts corresponding to material from the first exam, the second exam, and the remainder of the course. Your grade for each midterm will be the maximum of the midterm grade and the score you get on the corresponding part of the final exam.
For example, if you get 50% of the points for midterm 1 and 100% of the points for midterm 2, and then score a 75% on part 1 of the final, 25% on part 2, and 100% on part 3, you would get:
This policy also covers what happens if you miss a midterm for any reason. If you are absent for a midterm, you get a 0 initially, and then whatever score you get on the final for that section will be applied to your midterm grade. There are no make-up midterms, and the final exam policy is governed by the university’s policies.
Your grade will be computed from:
Yes, this adds up to 102% .
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 pass the final exam in order to pass the course.
Late and Makeup Work In general, work cannot be handed in late for credit. We will drop the lowest weekly engagement and lab score to account for personal events and constraints that make you miss those deadlines.
Programming work cannot be handed in late, with one exception. The last programming assignment will synthesize many of the topics seen throughout the course. As such, it will demonstrate your understanding of many other parts of the course, and to reflect this, the score on the final programming assignment can replace an earlier PA score. In addition, you can hand in the final programming assignment by Monday, 11:59pm during finals week (which will be after its deadline in week 10) for a 20% deduction.
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.
Switching into CSE8A If you’re considering joining CSE8A after the quarter begins, we want to make sure you are on track to doing well. To that end, noone will be able to add CSE8A after the end of Friday of Week 1. If you enroll in the class after Tuesday of Week 1, you will have an automatic extension on PA0 and will hand it in on the same day you hand in PA1.
Acting with academic integrity means being honest, respectful, responsible, fair, trustworthy and courageous in your work. There are aspects of integrity throughout this syllabus that you must be aware of and follow.
Individuals are not permitted to approach students to offer services of any kind in exchange for pay, including tutoring services. This is considered solicitation for business and is strictly prohibited by University policy.
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.
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.
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.
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.
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 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.
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.
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.
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 Ying Xiong (yix184@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.
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.
You will not be compensated for participating in this study.
There will be no cost to you for participating in this study.
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.
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.
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.
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.
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.
Intro to Pair Programming video
Why we are teaching science wrong, and how to make it right
Office for the Prevention of Harassment and Discrimination
CARE at the Sexual Assault Resource Center