Welcome to CSE 8A: Python Programming with AI Assistance! This course aims to introduce you to the fundamentals of Python programming, but with a twist! We will explore the use of AI assistants in the programming workflow, you will learn how to read, write, and debug Python code while also understanding how to leverage AI tools for better efficiency and accuracy.
This course is designed for beginners with little to no programming experience. All that's required is a willingness to learn and an interest in understanding the relationship between artificial intelligence and programming. If you have prior programming experience (e.g., AP CS A in high school), you may feel more comfortable in CSE 11.
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
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/cse8afa23/home
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/141259)
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.
We will use Gradescope (https://www.gradescope.com/courses/624555/) for submitting projects and some homeworks. Gradescope is also linked from canvas.
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 documentation that explains how you approached the design of the project, any challenges you encountered, and how you overcame them. If you've used Copilot or any other AI assistant, you're also expected to evaluate the effectiveness of the generated code. Projects contribute 10% to your final grade.
Quizzes will be administered via PrairieLearn and PrairieTest during lab. You must be physically present in lab to take the quiz. You will have four quizzes throughout the course, and the lowest score will be dropped. These quizzes will make up 30% of your overall grade.
You will have approximately nine homework assignments, and the lowest score will be dropped. These assignments will account for 15% of your final grade and are designed based on the topics covered that week. All homework will be completed and submitted through PrairieLearn.
You'll have to attend the nine lab sessions during the quarter. Some labs will be replaced by a quiz and the remainder will be lab activities. You are required to be present in the lab and to complete the lab. On days when we have a quiz, we may also give you a take-home lab that you can do at home. Completion of each lab (both in person and take-home) will contribute to your lab grade. Overall, labs will make up 10% of your course grade. The lowest lab score will be dropped.
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. PIs will count for 5% of your final grade. Any portion of your grade lost from not completing PI questions will have it's weighting moved to the final exam. Two examples:
If you attend 16/18 classes, you get 100% for 5% of the course and your final exam remains 25% of your grade.
If you attend 9/18 classes, you get 100% for 2.5% of the course and your final exam is now worth 27.5% of your grade.
If you attend 0/18 classes, you get 100% for 0% of the course and your final exam is now worth 30% of your grade.
You'll have reading quizzes that will count for 5% of your final 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.
The final exam is a comprehensive assessment, making up 25% of your final grade. The final exam will be given during the final exam period in finals week and will be given on PrairieTest/PrairieLearn which means you'll need to bring a laptop whose battery life is >= 3 hours. If you need to borrow a laptop, please reach out to the campus laptop lending program: https://basicneeds.ucsd.edu/forms/lyft-program/index.html
Projects - 10%
Quizzes - 30%
Homework - 15%
Labs - 10%
Lecture Participation - 0-5% (miss up to 4 lectures without penalty)
Pre-class Reading Quizzes - 5%
Final - 25-30%
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 Copilot and/or ChatGPT, 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 Copilot/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 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 Copilot. 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.
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 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 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.
Attribution: Course syllabus and class website are based in part on materials developed by Gerald Soosai Raj, Sorin Lerner, Christine Alvarado, among others.