Welcome to CSE 8A: Python Programming with AI Assistance! This course aims to teach you how to write software which means learning fundamentals of Python programming as well as how to interact with an AI assistant. You should expect to learn how to read, write, test, and debug Python code while also understanding how to leverage AI tools to create software and projects that are meaningful to you.
This course is designed for beginners with little to no programming experience. All that's required is a willingness to learn, a commitment to practicing the skill of programming, and an interest expanding your knowledge and efficiency by leveraging AI Tools. If you have prior programming experience (e.g., AP CS A in high school), you may feel more comfortable in CSE 11. If you want a gentler introduction to computing before taking CSE 8A, you may wish to consider taking CSE 3.
Learning Outcomes
Students who successfully complete CSE 8A will be able to:
Define nondeterminism, Large Language Model (LLM), prompt, prompt engineering, code correctness, problem decomposition, and top-down design.
Illustrate the workflow that is used when programming with an AI assistant.
Describe the purpose of common Python programming features, including variables, conditionals, loops, functions, lists, dictionaries, and modules.
Apply prompt engineering to influence code generated by an AI assistant.
Analyze and trace a Python program to determine its behavior.
Divide a programming problem into subproblems as part of top-down design.
Debug a Python program to locate bugs.
Design open- and closed-box tests to determine whether code is correct.
Identify and fix bugs in Python code.
Perform modifications to Python code to have the code perform a different task.
Write complete and correct Python programs using top-down design, prompting, testing, and debugging.
Judge whether a program is correct using evidence from testing and debugging.
(Required) Physical Iclicker device (the iclicker app will not work):
Available in the bookstore (although they sometimes sellout). Device should be similar to this.
(Required) Course Textbook:
Link: Learn AI-Assisted Python Programming with GitHub Copilot and ChatGPT
Also available through the campus library
Additional Resources
An earlier version of this course (without Copilot) is available in Stepik (Optional)
Link: https://stepik.org/course/84164
Automate The Boring Stuff With Python by Al Sweigart (Optional)
Link: https://automatetheboringstuff.com/
Learn to Code by Solving Problems: A Python Programming Primer by Daniel Zingaro (Optional)
Link: https://www.amazon.com/Program-Solving-Problems-Daniel-Zingaro/dp/1718501323/
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
Our course website can be found here: https://sites.google.com/ucsd.edu/cse-8a-sp25
The course webpage contains basic information, syllabus (that you are reading right now!), schedule (including office/lab hours), materials (notes, slides, etc) and staff contact information. You should check our course website often!
We will use Canvas (www.canvas.ucsd.edu) to publish your grades for this course. The grades you see on canvas are YOUR OFFICIAL GRADE, and it is your responsibility to CHECK THEM REGULARLY to ensure they are recorded correctly.
Please ask all course content related questions via Piazza. 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 Piazza both because debugging of code is to be done in tutoring hours. However, questions about code in general (not your project/HW code) is okay. It's often better to ask questions like these in Office Hours though. When posting a question on Piazza, make sure to select the appropriate folder. For example, if you have a question on HW1, choose the HW1 folder.
Lastly, before posting, please check that your question has not already been answered. Please search through existing questions to make sure the question hasn't already been answered before posting your own.
We will use PrairieLearn for labs, homework, quizzes, and exams. You can sign into PrairieLearn to setup your account (https://us.prairielearn.com/pl/course_instance/170068)
The companion website for exams is called PrairieTest, be sure you have an account setup there as well:
If you do not have access to PrairieTest, please post on piazza with your question.
The work in this course is divided into two components: Assignments and Assessments. They are graded on separate scales and your final grade will be the minimum of the two components.
You will have approximately nine homework assignments, and the lowest score will be dropped. These assignments will account for 35% of your assignment grade and are designed based on the topics covered that week. All homework will be completed and submitted through PrairieLearn.
Each week you will participate in a closed lab that will give you practice with the programming concepts we are learning as well as help build community among the class and explore societal and ethical issues in computing. You will be graded entirely on your attendance: being on-time and actively participating for the full lab session. You may miss up to two lab sessions with no penalty. Grade is entirely based on attending (on time, and for the full lab). Overall, labs will make up 20% of your assignment grade.
You will have a total of three projects over the course of the term. These projects will give you an opportunity to apply what you've learned in a more extensive manner. For each project, you are expected to submit not just the code but also a video walkthrough of your project (more details to follow). Projects contribute 20% to your assignment grade.
For your active engagement in class, Peer Instruction (PI) questions are present. These are interactive sessions conducted during lectures where you'll use physical clickers (the web application will not work) to answer questions. You can miss up to four PI sessions without any impact on your grade. Class participation will count for 15% of your assignment grade. Any portion of your grade lost from not completing PI questions will be replaced by your final exam score. For example:
If you attend 16/18 classes, you get 100% for 15% of the assignment component of the course.
If you attend 9/18 classes, you get 100% for 7.5% of the assignment component of the course and your final exam is now worth 7.5% of the assignment component of the course.
If you attend 0/18 classes, your final exam is now worth 15% of the assignment component of the course.
You'll have reading quizzes that will count for 10% of your assignment grade. These quizzes are designed to be low-stakes, as you'll have multiple attempts to get the correct answer. Your lowest reading quiz score will be dropped. In addition, the course will occasionally ask you to complete surveys and these will count toward your reading quiz grade unless otherwise notes.
There will be four 45-minute, computer-based quizzes administered by the Triton Testing Center (TTC) in the Computer-Based Testing Facility in AP&M B349. The TTC’s rules concerning testing are the rules for this course. Your lowest quiz score will be dropped. The quiz average will be worth either 50% or 70% of your assessment grade. If your final exam is lower than your quiz average, your quiz average will count for 70% of your grade. If your final exam score is higher than your quiz average, your quiz average will count for 50% of your grade.
You must schedule your tests in advance, and it is recommended that you do so as soon as possible. Scheduling for all tests opens on the first day of instruction. To schedule, visit prairietest.com and log in with your UC San Diego credentials. More information about testing policies and procedures can be found on the TTC’s website. You may also email tritontesting@ucsd.edu for assistance. Please note that, if you plan to use OSD-approved accommodations for your test, you will take it at the TTC’s Pepper Canyon Hall location. You must schedule your test at least three days in advance through the RegisterBlast system. RegisterBlast scheduling is to be done ONLY by students with OSD-approved accommodations. Tests scheduled via RegisterBlast without accommodations will be cancelled.
Each quiz will have an optional makeup opportunity, also given in the CBTF. If you decide to take the makeup quiz, you must sign up separately through the TTC. If your score on the makeup quiz is higher than your score on the original quiz, your new score will be 10% the old score and 90% the new score. If your score on the makeup quiz is lower than your original quiz, your scores for that quiz will be averaged.
The final exam will be computer-based and take place in two parts. The first part will be taken during the final lab of the quarter (do not miss this lab!). The second part will be given during the window listed on the course schedule at the CBTF. You must sign up for a session following the instructions above to take the final exam at the CBTF. The second part of the exam will be 110 minutes long. The final exam average will count for either 30% or 50% of your assessment grade. If your final exam is lower than your quiz average, your final exam will count for 30% of your grade. If your final exam score is higher than your quiz average, your final exam will count for 50% of your grade.
You will receive the lower of your assignment and assessment grade.
Homework - 35%
Labs - 20%
Projects - 20%
Lecture Participation - 15% (miss up to 4 lectures without penalty)
Pre-class Reading Quizzes and surveys - 10%
Quizzes - 50 or 70%
Final - 30 or 50%
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-) will be given at the professors' discretion.
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, but all 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.
Homework. For homework in CSE 8A, you can read books, surf the web, talk to your friends, look at code online, talk with CodeHelp, reach out to the CSE 8A staff to get help to help you understanding the concepts you need to know to solve your Homework.
Labs. For labs in CSE8A, you can work with a partner on the lab assignments. The lab will tell you whether you are allowed to use CodeHelp, Copilot, and/or ChatGPT as you work through it. You can use books and web resources (except for any that provide solutions to this lab specifically).
Projects. For projects in CSE8A, we encourage you to use any resources at your disposal to create a project that is entirely your own. You can talk with friends and the course staff about how to approach the project, you can use CodeHelp, Copilot, and ChatGPT to help you code the assignment, and you can use books and web resources to help guide your thinking. However, you cannot copy other students assignments or copy existing projects online nor can you post your project publicly.
Quizzes and Final Exam. In quizzes and exams, you can only use the resources made available to you in PrairieLearn, no books, no friends, etc. The questions will make it clear if you are allowed to use an AI-Assistant (Copilot). Namely, the only questions you can use Copilot for are any questions that give you a Copilot enabled workspace to code. Accessing any website other than PrairieLearn or PrairieTest (or github briefly to sign in) during a quiz or an exam is considered an Academic Integrity Violation.
For projects, yes, we do electronically check every program that is turned in. In recent quarters, we also found out that people unintentionally post their codes on public GitHub repos and that is also a violation of the AI policy! Per Senate requirements, we report all these cases to the academic integrity office.
Receiving a grade on an assessment doesn't mean that you are in the clear. 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 share your project code with anyone else in the class.
Don't start your project with someone else's code and make changes to it.
Don't get any unauthorized assistance on exams.
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.
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 the resources below. One important caveat - we are here to help you learn how to write software yourself, not do it for you. Be sure you understand the help you've been given and ask questions if you do not. Also, please do not push the staff to give away an answer to a problem to you, be sure you are focused on learning the concepts as those are what you'll be tested on in the class.
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 instructors and the Teaching Assistants (TAs) 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 to understand how to get help.
CodeHelp: We are using a GenAI tool for this course that is designed to help guide you to the answer rather than just give you the answer. It's not going to give you as thorough of an answer or have as much insight as a member of the instructional staff, but you can feel free to use it anytime in the course (except during exams) if you want to help understand your code better.
Copilot: GitHub Copilot is an industry tool for writing software that is mostly designed to give you answers. You'll be learning how to interact with Copilot to learn and to write software in this class. For projects and for homework questions that ask you to use Copilot, feel free to ask Copilot for help as well. But for homework questions that don't give you access to Copilot, it's best to use CodeHelp instead.
Piazza: Please use the Edstem discussion board for any questions related to the assignments, material in the course, or course logistics. Please be sure to ask any questions of the course staff about your grade, etc. on Piazza. Piazza 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 Piazza. You should ask specific questions related to your projects during tutor lab hours. You should NOT publicly post any of your Project code on Piazza as it will be treated as an AI violation.
Email: If you have anything private or confidential to discuss with your instructor, then please make a private post on piazza or email your instructor 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 welcoming learning environment where all students feel comfortable and can thrive.
Our instructional staff will make a concerted effort to be welcome everone in the 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 different student perspectives 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.
Attribution: Course syllabus and class website are based in part on materials developed by Gerald Soosai Raj, Sorin Lerner, Christine Alvarado, among others.