CSE 29: Systems Programming and Software Tools (Spring 2026)
Course Syllabus
Welcome to CSE 29: Systems Programming and Software Tools! We are so excited to have you here! :)
CSE 29 introduces you to the amazing world of systems programming, including 1) the basics of how programs run on a computer, 2) programming in C with direct access to memory and system calls, and 3) software tools to help you interact with a computer using the command line interface. All very cool stuff that makes you a better programmer!
Basic Information
Instructors:
- Gerald Soosairaj
- Office Hours: TBA
- Olivia Weng
- Office Hours: TBA
Course Website: https://cse29spring2026.github.io/
Lectures:
| Lecture | When? | Where? |
|---|---|---|
| A00 (Gerald) | Tuesdays and Thursdays @ 11:00am – 12:20pm | WLH 2005 |
| B00 (Olivia) | Tuesdays and Thursdays @ 12:30pm – 1:50pm | CSB 002 |
Labs:
| Lab | When? | Where? |
|---|---|---|
| A50 | Fridays @ 10:00am – 11:50am | CSE B250 |
| A51 | Fridays @ 12:00pm – 1:50pm | CSE B250 |
| A52 | Fridays @ 2:00pm – 3:50pm | CSE B250 |
| A53 | Fridays @ 4:00pm – 5:50pm | CSE B250 |
| B50 | Fridays @ 10:00am – 11:50am | CSE B240 |
| B51 | Fridays @ 12:00pm – 1:50pm | CSE B240 |
| B52 | Fridays @ 2:00pm – 3:50pm | CSE B240 |
Midterm Exam: In-class midterm exam on Thursday, April 30, 2026 (during lecture time)
Final Exam: Saturday, June 6, 2026 at 3:00pm – 5:59pm in CENTR 115 (A00 section) and CENTR 109 (B00 section)
Prerequisites
This course assumes familiarity with basic programming (CSE 8A, 8B, 11). You’ll be doing a lot of hands-on assignments in C using the software tools (e.g., gdb, git) we learn in this course.
Learning Objectives
Students who successfully complete this course will be able to:
- Describe how programs runs on a computer
- Read, write, debug, and test C programs
- Use software tools like terminal, vim, and gdb to work with C programs
- Use effective programming practices like incremental development, debugging, and testing
- Describe what happens in the computer’s memory when programs execute
- Describe how multiple programs run at the same time on a computer
Course Schedule: see schedule
Course Resources
Free Online Textbooks (Required)
- Dive Into Systems: https://diveintosystems.org/book/
Additional Readings (Optional)
- The C Programming Language (2nd Edition) by Brian Kernighan and Dennis Ritchie
- Computer Systems: A Programmer’s Perspective (3rd Edition) by Randal E. Bryant and David R. O’Hallaron
- Learn C Programming: a beginner’s guide to learning C programming the easy and disciplined way – available free online at the UCSD Library
Course Tools
- Course Website: https://cse29spring2026.github.io/
- Ed Discussion: https://edstem.org/us/courses/97308/discussion (Online Q&A)
- Signup Link: https://edstem.org/us/join/VYDtgP
- Canvas: https://canvas.ucsd.edu (Grades, Podcasts)
- Gradescope: https://www.gradescope.com (Exams, Assignments)
- PrairieLearn: https://us.prairielearn.com (Problem Sets and Skill Demos)
Course Components
There are three main components in this course:
- Assignments (Take-home)
- Assessments (In-person)
- Social Learning
1. Assignments (Take-Home)
Assignments are take-home work designed to develop your understanding and technical skills in systems programming. There are two types of assignments: Homework Assignments and Programming Assignments (PAs). Together, these form a single Assignments category that contributes to your base letter grade.
A. Homework Assignments
There will be 6 Homework Assignments throughout the quarter. Each assignment has two parts:
Part 1 – Conceptual Questions: Short-answer and diagram-based questions that test your understanding of systems programming concepts (e.g., memory models, stack frames, process behavior). These will often be handwritten or diagrammatic, for two reasons: they mirror the format of in-person exams, and writing by hand encourages deeper, slower engagement with the material.
Part 2 – Problem Sets (Coding Questions): These are released on PrairieLearn and focus on applying your knowledge to small, targeted coding problems that will help you build up to the larger programming assignments. You will write code in C, and submit your solutions through PrairieLearn for automated feedback and grading.
Homework Assignments are released on Fridays and due the following Thursday at 11:59pm PT.
Homework Grading (Specifications Grading)
Within each assignment, individual problems are graded on a binary scale:
- Pass: The reasoning or work shown is satisfactory and the answer or program is correct.
- Not Yet: The reasoning is missing or incomplete, and/or the answer is incorrect.
Your work will be marked Ungradable if it cannot be assessed (e.g., illegible handwriting, corrupted file, program is not compilable, or off-topic work).
The overall score for each Homework Assignment is:
| Score | Points | Criteria |
|---|---|---|
| Exemplary | 3 pts | All problems receive a “Pass” |
| Satisfactory | 2 pts | ~80% of problems receive a “Pass” |
| Needs Improvement | 1 pt | Some problems receive a “Pass” |
| Incomplete | 0 pts | No problems pass, or assignment not submitted |
Homework Resubmissions
Learning from feedback is a critical part of the educational process. Every Homework Assignment (except the last one, HW6) may be resubmitted after receiving feedback, provided you address the feedback given on the original submission.
- If you scored 2 points originally, a perfect resubmission can raise your grade to 3 points.
- If you scored 0 or 1 point originally, the resubmission score is capped at 2 points.
- If you did not submit by the original deadline (score of 0), you may still submit by the resubmission deadline for a maximum of 2 points.
Resubmissions are due one week after the original homework grade is posted.
B. Programming Assignments (PAs)
There will be 4 Programming Assignments (PAs) throughout the quarter. PAs are larger coding projects that give you the opportunity to write, debug, and test complete C programs. PAs are typically released on Wednesdays and due 13 days later (Tuesday at 11:59pm PT).
PA Grading (Specifications Grading)
PAs are graded using autograders and manual review (if required). Each PA will have a set of clearly defined requirements and test cases. The overall score for each PA is:
| Score | Points | Criteria |
|---|---|---|
| Exemplary | 3 pts | All requirements met; all (or nearly all) tests pass |
| Satisfactory | 2 pts | Most requirements met; ~80% of tests pass |
| Needs Improvement | 1 pt | Some requirements met; meaningful progress demonstrated |
| Incomplete | 0 pts | No meaningful progress, or PA not submitted |
PA Resubmissions
Every PA (except the last one, PA4) may be resubmitted after receiving the autograder feedback. To earn points on a resubmission, you must address the feedback provided on the original submission. This means fixing any failing test cases and meeting any unmet requirements. The goal is to encourage you to learn from the feedback and improve your work.
- If you scored 2 points originally, a perfect resubmission can raise your grade to 3 points.
- If you scored 0 or 1 point originally, the resubmission score is capped at 2 points.
- If you did not submit by the original deadline (score of 0), you may still submit by the resubmission deadline for a maximum of 2 points.
Resubmissions are due one week after the original PA grade is posted. There are no late days or slip days for PAs — resubmissions are the only late policy.
2. Assessments (In-Person)
Assessments are completed individually under supervised, in-person conditions. They are your opportunity to demonstrate individual mastery of the course material. There are two types of assessments: Skill Demos and Exams.
A. Skill Demos
Skill Demos will be held twice during the quarter, with an optional third opportunity. They are administered at the Triton Testing Center (TTC), Computer-Based Testing Lab in AP&M B349, via PrairieLearn. You may schedule your Skill Demo at any time within the one-week window.
- Skill Demo #1: Week 4
- Skill Demo #2: Week 8
- (Optional) Skill Demo #3: Week 10
Skill Demo #3 is optional and will have the same format as Skill Demos #1 and #2. It covers concepts from across both earlier skill demos. If your Skill Demo #3 score is higher than your lowest skill demo score, it will replace that score. It can only replace one skill demo.
Your final skill demo scores are calculated as:
- Lower of Skill Demo #1 and #2 = max(that score, Skill Demo #3 score)
- Higher of Skill Demo #1 and #2 = unchanged
Skill Demo Grading (Specifications Grading)
| Score | Points | Criteria |
|---|---|---|
| Exemplary Pass | 3 pts | Total score ≥ 90% of maximum possible points |
| Satisfactory Pass | 2 pts | Total score ≥ 80% and < 90% |
| Threshold Pass | 1 pt | Total score ≥ 60% and < 80% |
| No Pass | 0 pts | Total score < 60% |
Scheduling your Skill Demo: Visit prairietest.com and log in with your UC San Diego credentials. Schedule as early as possible — slots fill up quickly. A physical photo ID is required. Arrive 5–10 minutes before your scheduled time. All personal items must be stored in lockers before entering. You will be given a computer with access to PrairieLearn. The Skill Demo will consist of coding problems (similar to problem sets) that you must solve within the allotted time.
Only for OSD students: If you use OSD-approved accommodations, you will take your Skill Demo at the TTC’s Pepper Canyon Hall location and must schedule at least three days in advance via RegisterBlast.
B. Exams
There will be two in-person, paper-based exams.
Midterm Exam: Thursday, April 30, 2026 (during lecture time)
Final Exam: Saturday, June 6, 2026 at 3pm – 5:59pm in in CENTR 115 (A00 section) and CENTR 109 (B00 section)
The final exam is cumulative and covers all topics from the course.
Exam Grading (Specifications Grading)
Within each exam, individual questions are graded as follows:
- Correct (2 pts): Final answer is correct, with logical, valid supporting work.
- Mostly Correct (1 pt): Supporting work demonstrates strong understanding but contains minor errors leading to an incorrect answer.
- Incorrect (0 pts): Supporting work is missing, illogical, or contains significant conceptual errors.
The overall exam score is:
| Score | Points | Criteria |
|---|---|---|
| Exemplary Pass | 3 pts | Total score ≥ 90% of maximum possible points |
| Satisfactory Pass | 2 pts | Total score ≥ 80% and < 90% |
| Threshold Pass | 1 pt | Total score ≥ 60% and < 80% |
| No Pass | 0 pts | Total score < 60% |
Exam Replacement Policy
If your score on the final exam is higher than your score on the midterm exam, your final exam score will replace your midterm exam score. This policy works in one direction only — the midterm cannot replace a lower final exam score. This allows your final grade to reflect your ultimate mastery of the material.
Example: A student earns a Threshold Pass (1 point) on the midterm. They earn a Satisfactory Pass (2 points) on the final exam. Their midterm score is replaced: total exam points = 2 (final) + 2 (replaced midterm) = 4 points.
3. Social Learning
One of the most important skills for a successful programmer is the ability to work effectively with other people — a skill that is increasingly critical in the era of Generative AI. In CSE 29, you will have multiple structured opportunities every week to collaborate with other students and course staff on programming problems.
Each week there are 4 Social Learning events:
-
Lectures (×2): Lectures consist of mini-lectures and active problem-solving, both individually and in small groups. Before each lecture, you are expected to complete the assigned readings from the free online textbook (Dive Into Systems). During lectures, paper handouts will be distributed and collected to record your participation — these serve both as a learning tool, check your understanding of the readings, and as your participation record. You must attend the lecture section you are registered for. Occasional absences are built into the grading system below.
-
Labs (×1): Labs take place on Fridays and provide hands-on experience with systems programming tools and techniques. TAs and tutors will be present throughout. You are required to attend your registered lab section. Labs run approximately 2 hours.
-
Study Groups (×1): Every student will be assigned to a small Study Group that meets weekly, led by a TA or tutor. Study Groups are a key part of the learning process in this course. You are encouraged to work together on homework problems during these sessions. Your TA or tutor will record your participation. Study Group times will be posted on the course calendar in Week 1.
No make-up opportunities are available for missed Social Learning events. The grading system is designed with built-in flexibility (see below).
Social Learning Grading
Your weekly Social Learning score is determined as follows (4 events per week: 2 lectures, 1 lab, 1 study group):
| Score | Points | Criteria |
|---|---|---|
| Exemplary | 3 pts | “Pass” for at least 3 events, including a pass on the lab |
| Satisfactory | 2 pts | “Pass” for at least 2 events, including a pass on the lab |
| Needs Improvement | 1 pt | “Pass” for at least 1 event |
| Incomplete | 0 pts | “Pass” for no events |
Over 10 weeks, the maximum Social Learning total is 30 points.
Grading
CSE 29 uses Specifications Grading. Rather than accumulating partial credit, your work is assessed against clear standards for what it means to be complete and correct. The goal is to help you focus on genuinely mastering the material.
Think of it like learning to swim across a pool to earn a certificate. You wouldn’t receive a certificate for swimming three-quarters of the way. You either meet the standard — swimming the full length — or you keep practicing until you do.
Grade Components and Point Totals
| Component | # | Max Points Each | Total Max Points |
|---|---|---|---|
| Assignments | 30 pts | ||
| Homework Assignments | 6 | 3 pts | 18 pts |
| Programming Assignments (PAs) | 4 | 3 pts | 12 pts |
| Assessments | 12 pts | ||
| Skill Demos | 2 | 3 pts | 6 pts |
| Exams (Midterm + Final) | 2 | 3 pts | 6 pts |
| Social Learning | 10 weeks | 3 pts | 30 pts |
Step 1: Determine Your Base Letter Grade
Your base letter grade is determined by meeting minimum thresholds in both of the following categories. You must meet the threshold for every category — meeting only one is not sufficient.
| Base Grade | Assignments | Assessments |
|---|---|---|
| A | ≥ 27 pts (out of 30) | ≥ 10 pts (out of 12) |
| B | ≥ 24 pts (out of 30) | ≥ 8 pts (out of 12) |
| C | ≥ 20 pts (out of 30) | ≥ 6 pts (out of 12) |
| F | Does not meet C requirements |
Note: Assignments = Homework Assignment points + PA points combined (max 30 pts total). Assessments = Skill Demo points + Exam points combined (max 12 pts total).
Step 2: Apply the Social Learning Modifier
Your total Social Learning points (out of 30) adjust your base grade:
| Social Learning Total | Modifier |
|---|---|
| ≥ 24 points | Plus (+) modifier |
| 18 – 23 points | No modifier |
| 12 – 17 points | Minus (−) modifier |
| < 12 points | One full letter grade reduction |
So a base grade of B with 25 Social Learning points becomes a B+; a base grade of A with 10 Social Learning points becomes a B.
Grading Examples
Student 1: Assignments: 27 pts (HW: 16, PAs: 11) | Assessments: 10 pts | Social Learning: 28 pts → Meets A requirements in all categories. 28 social points → “+” modifier. Final Grade: A+
Student 2: Assignments: 24 pts (HW: 14, PAs: 10) | Assessments: 8 pts | Social Learning: 22 pts → Meets B requirements in all categories. 22 social points → no modifier. Final Grade: B
Student 3: Assignments: 20 pts (HW: 12, PAs: 8) | Assessments: 6 pts | Social Learning: 17 pts → Meets C requirements in all categories. 17 social points → “−” modifier. Final Grade: C−
Student 4: Assignments: 24 pts (HW: 14, PAs: 10) | Assessments: 8 pts | Social Learning: 11 pts → Meets B requirements in all categories. 11 social points → one full letter grade reduction. Final Grade: C
Student 5: Assignments: 20 pts (HW: 12, PAs: 8) | Assessments: 5 pts | Social Learning: 25 pts → Meets C assignment requirement but fails to meet C assessment threshold (needs ≥ 6 pts). Final Grade: F
How to Get Help
Office Hours
Instructors hold in-person office hours (see schedule above, or check the course calendar) primarily for conceptual questions. TAs also hold in-person office hours in the CSE basement — times will be posted on the course calendar.
Study Groups
Your assigned Study Group is one of the best resources available to you. TAs and tutors are present at every session, and your peers who have just worked through the same problems can often explain things in a way that clicks. Come prepared with questions!
Online Q&A
Post questions on Ed Discussion for asynchronous help from course staff and fellow students. For questions about grades or personal matters, email the instructors directly.
Collaboration Policy
In CSE 29, we believe that learning is a collaborative and social process. You are encouraged to work with peers to deepen your understanding. All take home assignments (homework and programming assignments) are open to collaboration, with some guidelines to ensure that you are learning effectively and maintaining academic integrity. In-person assessments (Skill Demos and Exams) must be completed independently.
General Guidelines:
- Collaboration is encouraged on readings, labs, homework assignments, and programming assignments.
- Discussing problems and ideas with classmates is a great way to learn.
- The goal is to learn, not just to find an answer — make sure you understand any solution you submit.
- Use of online resources (including Generative AI tools — see below) is allowed, as long as you can understand and explain the content yourself.
Specifics:
- Programming Assignments: You may discuss problems with others, but the work you submit must be your own. If you use code that you developed with other students (whether in lab or outside it), got from Ed Discussion, or got from the internet, say which students you worked with and a sentence or two about what you did together in a
CREDITS.txtfile included with your submission. If you don’t include aCREDITS.txtand it’s clear you included code from others or from an AI tool, you may lose credit or receive a 0 on the assignment, and repeated or severe violations can be escalated to reports of academic integrity violations. - Homework Assignments: Homework assignments are open to collaboration, but all of the writing in assignments (e.g., in open-ended written questions) must be your own.
- Labs and Study Groups: You are highly encouraged to work together with your peers during labs and study groups. This is a great opportunity to learn from each other and get help from TAs and tutors.
- Assessments (Skill Demos and Exams): No collaboration of any kind is permitted. These must be completed entirely on your own. It is a violation of academic integrity to share details of your assessment with others until after you receive your grade for it. It is also a violation to communicate with anyone other than the official proctors during an assessment.
The most important rule: you must be able to explain any work you submit. If we have concerns that you do not understand submitted work, we will invite you to a 1-on-1 meeting to discuss it. If you are unable to explain your work, the matter will be referred to the Academic Integrity Office.
Academic Integrity
If you are found cheating, we will enforce the UCSD Policy on Integrity of Scholarship (http://senate.ucsd.edu/Operating-Procedures/Senate-Manual/Appendices/2). This means: you will receive an F in the course, and the Dean of your college may put you on probation, suspend, or dismiss you from UCSD.
The basic rule for CSE 29 is: Start early! Work hard! Make use of the expertise of the CSE 29 staff to truly learn the material. Don’t cheat.
CSE29, Large Language Models, and You
This policy is adapted from Joe Politz’s CSE 29 Winter 2026 syllabus
Evidence suggests that experts can generate (some kinds of) programs more quickly with the assistance of large language models. But they did not become experts by using them.
We offer the following metaphor as guidance. Consider physical conditioning — running for fitness in particular. There are many machines in the world that are remarkably effective at moving people around: electric scooters, for example. Taking a scooter for a few miles gets you to your destination more quickly and less sweatily than running, but completely misses the point of the run. The goal of running for fitness has little to do with getting to a destination and everything to do with the changes that happen inside your body. Many people can run the same miles on the same road and get the benefits from it, despite all doing the same work that a machine could have done.
The programming in this class is like running for fitness (doing the typing and thinking on your own), not about getting to a destination quickly (handing in a completed program). The answers to many programming problems are known, or close-to-known, and many tools exist that can generate part or all of them. We assign the work not because knowing a solution is particularly important, but because the act of creating the solution changes you.
So, you should not use AI to generate code or prose for work in this class.
That said, it’s relatively difficult for us to detect AI usage on take-home work, and it’s also useful to know what AI and code generation can do. Feel free to experiment — do not read this policy as prohibiting or assigning formal consequences to LLM use. A good approach is to do the work yourself first, then go back and see how the LLM would have done it. This way you develop a sense of what a solution is supposed to look like, rather than trusting the machine’s version.
If you do use an AI assistant, you are required to note this in a CREDITS.txt file included with your submission, including:
- The prompts you gave to the AI chat, or the context in which you used Copilot autocomplete
- What its output was and how you changed it afterward (if at all)
This helps us all learn how these powerful and little-understood tools work — and don’t. If you don’t include a CREDITS.txt and it’s clear you used an AI tool, you may lose credit or receive a 0 on the assignment, and repeated or severe violations can be escalated to reports of academic integrity violations.
Note that Assessments (Skill Demos and Exams) require you to program entirely on your own, without the aid of any AI assistants.
UCSD provides additional resources on academic integrity: https://academicintegrity.ucsd.edu/faq/index.html
Technology Policy
Technology may not be used in class. Devices for digital notetaking (e.g., ipads) are okay but only when its use directly supports the activity/learning that a student is engaged in. Laptops and mobile phones are not allowed during the lecture. We except students to take notes using their physical or digital notebooks.
Use of technology for any activity not directly related to what is going on in class is strictly prohibited. This includes, but is not limited to, the following:
- Texting/instagram/snapchat/etc.
- Playing games
- Web surfing
- Watching videos
- Doing homework (including for CSE 29) or engaging in work for other classes
Students who persistently use technology for reasons other than those directly related to class activities will be asked to leave the classroom.
Resources for Students
Getting Help
We expect that all students will need help at some point during the quarter. Many resources are available including study groups, TA and instructor office hours (posted on the course calendar), as well as the course discussion board (Ed Discussion).
Diversity and Inclusion
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 from 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 the 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/
Students with Disabilities
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), to discuss appropriate accommodations right away. Students requesting accommodations for this course due to a disability must provide a current Authorization for Accommodation (AFA) letter (paper or electronic) issued by the Office for Students with Disabilities. Students are required to discuss accommodation arrangements with instructors and OSD liaisons in the department IN ADVANCE of any exams or homework assignments. Please note that existing course structures may be used to satisfy accommodations when they meet the accommodation requirements.
Note for Skill Demos: Students using OSD-approved accommodations will take Skill Demos at the TTC’s Pepper Canyon Hall location and must schedule at least three days in advance via RegisterBlast.
Basic Needs/Food Insecurities
If you are skipping and stretching meals, or having difficulties affording or accessing food, you may be eligible for CalFresh, California’s Supplemental Nutrition Assistance Program, that can provide up to $292 a month in free money on a debit card to buy food. Students can apply at benefitscal.com/r/ucsandiegocalfresh
The Hub Basic Needs Center empowers all students by connecting them to resources for food, stable housing and financial literacy. Visit their site at basicneeds.ucsd.edu
Land Acknowledgement
“This public acknowledgment serves to honor and respect Indigenous peoples and their land on which our campus resides. UC San Diego was built upon the territory of the Kumeyaay Nation. From time immemorial, the Kumeyaay people have been a part of this land. Today, the Kumeyaay people continue to maintain their political sovereignty and cultural traditions as vital members of the San Diego community.”