Welcome to CSE 8A! We are excited to have you in this course. In this class, our goal is to help you experience the thrill of getting a computer to solve a problem of your choosing – by expressing that solution in a programming language. In this course you will do interactive in-class exercises and programming assignments to help you master the basics of computational problem solving and programming.
CSE 8A is designed for students with no prior programming experience. We do not expect you to have any prior programming experience, just a willingness to learn!
Students who successfully complete CSE 8A will be able to:
Read a computational problem and formulate an algorithm to solve that problem
Describe the functionality of a program that you or someone else has written
Write simple Python programs using variables, functions, conditional statements, and loops
Store data in a program using data structures like lists, tuples, and dictionaries
Use memory models to trace the state of data during a program’s execution
Debug and test Python programs that you or someone else has written
Describe ways in which computer science plays a role in society and in other scientific disciplines
We will be using the following free online textbook:
Course Textbook (on Stepik)
Link: https://stepik.org/course/84164/syllabus
Additional Resources
Automate The Boring Stuff With Python by Al Sweigart (Optional)
Link: https://automatetheboringstuff.com/
Think Python (2nd Edition) by Allen B. Downey (Optional)
Link to PDF version: http://greenteapress.com/thinkpython2/thinkpython2.pdf
Link to HTML version: https://greenteapress.com/thinkpython2/html/index.html
NOTE: You need NOT purchase any textbook for this course! Readings will be assigned from the above FREE ONLINE TEXTBOOK and other online sources.
Our course website link can be found here: https://sites.google.com/ucsd.edu/cse8asu12024
The course webpage contains basic information, including the syllabus (that you are reading right now!), schedule (including office/lab hours), materials (e.g., notes, slides, etc.) and staff contact information. You should check our course website often!
We will be using Canvas (www.canvas.ucsd.edu) for publishing your grades for this course. The grades you see on canvas are YOUR OFFICIAL GRADES, and it is your responsibility to CHECK THEM REGULARLY to make sure they are recorded correctly.
You will use Gradescope (www.gradescope.com) for grading your exams. You will be added to our course on Gradescope automatically during week 1.
We will use Edstem (https://edstem.org/us/courses/60032) as our course discussion board, as well as submitting Programming Assignments. Please ask all course content related questions via Edstem. Make your post public unless it contains Personal Information. This will help you get the fastest response possible to your post. DO NOT POST YOUR CODE as a public post on Edstem as it will be considered as an Academic Integrity (AI) violation. When posting a question on Edstem, make sure to select the appropriate folder. For example, if you have a question on "PA1," you should select the "PA1" folder.
Lectures will consist of active learning, where you will work alone and in groups to solve problems and answer problems. 10% of your grade will be from lecture participation, so attending lectures regularly and engaging with the activities will be key. Lecture participation will be recorded via Google Forms that you will fill out during lecture. You must submit these questions during lecture, and submit the final reflection questions by the end of the day. If you are unable to attend a lecture, please make sure to watch the lecture recordings on your own. You will not be able to receive credit for lecture participation through watching lecture recordings. You can miss up to 4 lectures without any penalty.
Our lecture schedule is as follows. All times are in Pacific Time (PT):
Lecture A00: Mon, Tue, Wed, & Thur @ 11:00 AM—12:20 PM in Franklin Antonio Hall (FAH) 1101
To prepare you for the interactive class lectures, there will be Reading Assignments to be completed before or after each class session. At the end of each week (except week 0), there will be a Review Quiz (RQ), which will be due at 11:59 PM PT on Fridays. The RQ will cover topics from the Reading Assignments, lecture videos, and lecture discussion. You have to ensure that you do the readings and attend/watch lectures before taking the RQ. For any given week, you will find a link to the RQ that is due by the end of the week in our Course Schedule. RQs will be on Stepik. You should create a Stepik ID to access the RQs. RQs must be done individually. Late RQ submissions will not be accepted in this course. There will be 10 RQs in total; no RQs will be dropped. You can attempt the RQs multiple times (before the deadline) until you get them correct!
There will be a total of 8 Programming Assignments (PAs), about two per week. Typically, we will release a PA on Mon & Wed, which will be due at 11:59 PM PT on the following 3-5 days after it's released. Each PA will focus on the content covered in the 2 lectures during the week the PA was released. For example, PA3 will be released during Week 2, so it will focus on content covered in the 2 lectures of Week 2. PAs will be completed through Edstem. PAs are worth 25% of your final grade. One PA with the lowest score will be dropped.
You must score at least 55% (average) on the PAs of this course. If you score lower than 55% on the assignments, you will receive an F for the course, regardless of your overall average.
All labs will happen on Wednesdays. There will be lab sessions starting as early as 3PM and the latest lab session will start at 5PM. There will be a lab assignment that will be due every week on Fridays before 11:59 PM. Each lab section will be lead by Teaching Assistants (TAs) and Tutors who will be helping you during the labs throughout the quarter. You are required to attend the lab you signed up for. Lab Assignments are worth 10% of your course grade. One lab with the lowest score will be dropped.
The following is the schedule of the 2 lab sections. All times are in Pacific Time (PT):
Lab A50: Wed @ 3:00 PM—4:50 PM in Computer Science and Engineering Building (EBU3B) B270
Lab A51: Wed @ 5:00 PM—6:50 PM in Computer Science and Engineering Building (EBU3B) B270
There will be two exams in this course: a midterm and a final exam. The exam dates/times are shown below in Pacific Time (PT):
Midterm Exam: Wednesday, July 17, 2024 @ TBA in Franklin Antonio Hall (FAH) 1101
Final Exam: Friday, August 2, 2024 @ 11:30 AM—2:29 PM in TBA
The final exam will be cumulative and will cover all topics discussed in the course. You must pass the final exam to pass this course. You must score at least 55% on the final exam to pass the final exam.
Both the midterm and final exams will be held in-person.
If your final exam score (in percentage) is higher than your midterm score, then your midterm score will be replaced by your final exam score!
Every Tues & Thurs, TAs will hold an in-person discussion section, in which they will review course concepts to try to help students overcome the learning breakdowns they may have encountered throughout the week. TAs will also review and offer help on how to get started on the PAs. Discussion sections are optional but you are highly encouraged to attend/watch discussions as they will be extremely helpful for your learning.
The following is the schedule of the discussion section. All times are in Pacific Time (PT):
Discussion A01: Tues & Thurs @ 12:30 PM—1:20 PM in Franklin Antonio Hall (FAH) 1101
We, the course staff of CSE 8A, highly encourage you to work in pairs or form study groups to work on Programming Assignments (PAs) and study for exams. HOWEVER, it is your responsibility to make sure you understand the concepts in assignments you collaborate on.
IMPORTANT: If you are collaborating with someone with the intent of copying code to get points, even though you may feel you are doing well, you may still end up failing the course if you do not do well on exams.
You and your pair programming partner are working on a PA together. You two come up with different solutions, so you discuss, test, and see what works together.
You ask your pair programming partner about their answer for a worksheet. You share your thought processes about how you got to those answers, and discuss how and why you might have reached a different answer.
“Alright, you take part 1 of the PA and I’ll do part 2 of the PA?” “Cool.”
Your friend completes the PA. You copy it and submit it as your own, and you do not understand it as your own, meaning you may fail the midterm and final exams.
Each student gets eight free “slip days” that allow an automatic 24-hour extension on any Programming Assignment (PA). You do not have to ask to use your slip days. Just submit your PA after the deadline (BEFORE 24 hours after the deadline) and it will be automatically deducted from your account. You may submit your PAs up to two days late. You can only use a maximum of 2 slip days for any PA. No PA can be submitted more than 2 days late. If you are working in pairs, each late day will be counted as a slip day for both students.
Once you use up your free slip days, you can still submit a PA late but for each late day you will be docked 20% of the grade for that PA. You cannot submit a PA more than 2 days late. For example, if you submit your PA anytime between 12:01 AM—11:59 PM on the day after the PA is due, your PA will be graded only for a maximum of 80% total points. And if you submit it anytime between 12:01 AM—11:59 PM on the second day after the PA is due, your PA will be graded for a maximum of 60% total points. After 2 days no late PA submissions will be accepted.
You are allowed to make up for TWO missed labs throughout the quarter. If you miss a lab and would like to make up, you should do the following: 1) Submit the lab assignment on Edstem by EOD Friday (i.e., within 2 days after the missed lab) to receive the 1 point for lab submission, 2) Visit any of the TAs/Tutors in your lab section during their TA/Tutor hours to explain your lab work to get back the 2 points for participation by EOD Tuesday following the lab. If you miss more than two labs, you can still get back the 1 point for lab submission by submitting your lab on Edstem by EOD Friday, however you won't be able to make up for the participation points for more than two labs.
NOTE: We have already built in ways for you to submit work late and make up for lost points, but if you feel you have a legitimate reason why you need additional accommodations please talk to your instructor ASAP to see what might be arranged. There will be no exceptions to these policies unless for very compelling personal reasons.
Lecture Participation: 10% (miss up to 4 lectures without penalty)
Review Quizzes (RQs): 10% (10 total; none dropped, 2% each)
Programming Assignments (PAs): 25% (7 total, 1 lowest dropped, ~3% each)
Lab Assignments: 10% (5 total, 1 lowest dropped, 2% each)
Midterm Exam: 20%
Final Exam: 25% (cumulative, replace the midterm if final > midterm)
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 (e.g., A+, A-, etc.) will be given at the instructors' discretion.
Link to the Academic Integrity Form: https://forms.gle/JEwQCUZCZC3kTfPX7
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. However, all Programming Assignments (PAs) and Lab Assignments must be written only either in collaboration with a partner or completely independently. Review Quizzes and exams must be written only completely independently. If you are found cheating, we will enforce the UCSD Policy on Integrity of Scholarship. This means: You will get an F in the course, and the Dean of your college will put you on probation or suspend you or dismiss you from UCSD.
The basic rule for CSE 8A is: Work hard! Start early! Make use of the expertise of our amazing CSE 8A staff to learn what you need to know to really do well in the course. Don't cheat!
In CSE 8A, you can read books, surf the web, talk to your friends and the CSE 8A staff to get help understanding the concepts you need to know to solve your PA problems. However, you must only write your program either in collaboration with your partner if you are pair programming on a PA, or on your own if you are working alone on a PA.
In CSE 8A, using or even looking at program code or the write up of algorithms that someone else has written (unless it was explicitly provided as part of the assignment), or providing program code or detailed algorithms to someone else, or turning in code that you have copied from someone else is considered cheating. Yes, we do electronically check every program that is turned in. In recent quarters, we also found out that people unintentionally post their code on public GitHub repos and it is a violation of the AI policy! We report all these cases to the academic integrity office.
Receiving a grade on a PA doesn't mean that you have passed the plagiarism checking. We can report cheating cases any time during the quarter, even after we submit your final letter grade. So the safest bet is not to cheat!
To ensure you don't have a problem with this, here are some suggestions:
Don't start with someone else's code and make changes to it
Don't share your code with anyone else in the class, with the only exception that they are your pair programming partner for a PA
Don't discuss anything code related (e.g., "What lines of code should I write for this function?," etc.), with any other students in the class with the only exception that they are your pair programming partner for a PA
In CSE 8A, you must write your own answers on the Review Quizzes and exams. Getting quiz or exam answers from someone else, or providing answers to someone else, is cheating. Failing to follow this policy will result in an F for this course.
These following policies regarding generative artificial intelligence (AI) use apply only in CSE 8A, and may not necessarily apply in other classes at UCSD or reflect the university’s stance on AI use in education.
Can I use generative AI for assignments?
Yes! Generative AI (e.g., tools like ChatGPT, GitHub Copilot, etc.) can be a powerful tool to support your own learning. In CSE 8A, we encourage you to use AI responsibly, or else you may risk failing exams and coding challenges. 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?
While we won’t consider the use of generative AI itself as a violation of academic integrity, we require that you can understand the material on your own. You can’t use AI during in-person code reviews or during exams! If you do use AI to help you learn or complete assignments, be sure that you’re able to understand everything on your own.
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 (e.g., ChatGPT, Bing Chat, Bard, 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.
I have other questions about using generative AI in CSE 8A.
We encourage you to ask any questions about our policies publicly on Edstem, 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
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 understand how much you can learn by working together!
Office Hours: The instructor and Teaching Assistant (TA) are always willing to help you during our office hours. Ideally, office hours should be reserved for conceptual questions: coding-specific questions are best asked of the Tutors during lab hours. All office hours can be found on the Course Calendar.
Lab Hours: There are many in-person lab 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. You can get help by raising a ticket on the Autograder. Please read Tutoring - Student Procedures and Remote Tutoring Procedures For Students to understand how to get help.
Edstem: Please use the Edstem discussion board for any questions related to the Programming Assignments (PAs), material in the course, or course logistics. Edstem allows you to post questions anonymously (to other students) if you don’t feel comfortable revealing your name. In general, all content related questions should be posted only on Edstem. You should ask specific questions related to your PA code during Tutor Lab Hours. You should NOT publicly post any PA related code on Edstem as it will be treated as an AI violation.
Email: If you have any questions about your grade, or would like to discuss anything confidential with your instructors, then please email your instructors directly.
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 your 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/.
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 your instructor privately) and to the OSD Liaison in the department in advance so that accommodations may be arranged.
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.