Syllabus
The purpose of CS 501 is to prepare the Computer Science TAs for teaching in the classroom environment. TAs are not expected to have any prior teaching experience, so this course will help them achieve confidence in the classroom, grade equitably and efficiently, teach to various learning styles and establish their personal teaching philosophies. The course is given to both students who will be TAing concurrently in the fall quarter and those who hope to TA in the future.
Instructor
![]()
Junrui Liu (he/him, first name is pronounced "June-ray")
I'm a 5th year PhD student in Computer Science. I'm also the Lead TA for the CS department this year, so please reach out to me if you have teaching-related questions or concerns.
In my free time, I like playing music. I'm currently studying the carillon (you might catch me practicing on the Storke Tower over the quarter).
Email: junrui@ucsb.edu
Office hours: TBD
Requirements
Your time as a graduate student is precious and limited. Thus, you'll only need to complete the following list of requirements to pass the course. For the entire fall quarter, please expect to spend a total of 5 hours in class, and around 5-8 hours after class. Spread across the quarter, the workload comes out to be just above 1 hour per week in combined in-class and out-of-class time, which I hope is manageable.
| Who | What you need to do | Estimated time |
|---|---|---|
| Everyone | Attend classes from week 1 - 5 | 5 hours (in class) |
| Everyone | Complete the autograder lab | N/A: we'll do this in class |
| Everyone | Pick any one of Certificate in Inclusive Teaching (CIT) workshops to attend in the fall quarter | 1 hour |
| TAs | Maintain a teaching journal | 5-10 minutes per week |
| TAs | Go to the class on drafting a teaching philosophy statement | 1 hour (in class) |
| TAs | Write a teaching philosophy statement | 1 hour |
| Non-TAs | Give a 10-min teaching demo | Prep time + sign up for 1 class where you'll present |
| Non-TAs | Observe a discussion/lab section led by a fellow TA | 1 hour |
Attendance
Attendance is mandatory from week 1 through week 5, and will be taken in class.
From week 6 to week 10, you'll only need to attend exactly 1 week of class:
- If you're a TA, attend the class on drafting teaching philosophy statements (tentatively scheduled for week 6).
- If you're a non-TA, sign up for 1 class to give your micro teaching demo.
Modules
Here's the tentative weekly schedule:
| Week | Date | Topic |
|---|---|---|
| 1 | 09/30 | How to Design Your Lesson |
| 2 | 10/07 | Active Learning: Why & How |
| 3 | 10/14 | How to Build Autograders |
| 4 | 10/21 | How to Support Your Students & Yourself |
| 5 | 10/28 | How to Make Great Slides + Crafting Your Teaching Philosophy Statement |
| 6 | 11/04 | Micro-Teaching Demos |
| 7 | 11/11 | (Veterans Day: No Class) |
| 8 | 11/18 | Micro-Teaching Demos |
| 9 | 11/25 | Micro-Teaching Demos |
| 10 | 12/02 | Micro-Teaching Demos |
Week 1: How to Design Your Lesson
Slides (requires UCSB login)
Learning Objectives & Active Learning
Survey
Slides (requires UCSB login)
How to Build Autograders
Slides (requires UCSB login)
You might find the autograder specification helpful.
How to Support Students & Yourself
Slides ()
Group Scenarios
Imagine you're a TA. Consider the following scenarios that you might encounter in your role. For each scenario, discuss with your group how you would handle the situation, what resources you might use, and any university policies that might be relevant.
How to Make Great Slides + Crafting Your Teaching Philosophy Statement
Slides (UCSB Login Required)
Assignments
Attend a CIT Workshop
Who: Everyone
Deadline: By the end of the fall quarter
Estimated time: 1 hour
What is CIT?
The Certificate in Inclusive Teaching (CIT) is designed for UCSB graduate students and postdocs, to help them foster inclusive classrooms, effectively mentor a diverse student body, and enhance their professional development. The CIT program offers a series of workshops in each academic quarter. Each workshop is typically 1 hour long, and you can attend any one of them to fulfill this assignment.
Note that for CS 501, you only need to attend 1 workshop from any area in the fall quarter. However, if you want to receive the actual CIT certificate, you need to attend 4 workshops (1 from each area). You're more than welcome, but are not required, to attend more workshops to work towards the full certificate if you find the workshops useful! Descriptions of CIT program can be found on their website.
Why Junrui wants you to do this
-
The short-term goal is just to get you started on thinking about inclusive teaching practices, and help you work towards the CIT certificate: you'll have 1 out of 4 completed!
-
The long-term goal is to prepare you for your future teaching assignments and potentially for a career in academia, which almost always involves teaching in some form or another.1 The CIT workshops are a great entry point to UCSB's outstanding teaching resources.
Even if you just do research, you'll likely have to mentor people more junior than you, which is a form of teaching!
How do I attest that I attended a workshop?
Junrui will create a Canvas assignment where you will submit the name of the workshop you attended, the date you attended it, and a brief reflection (1-2 sentences) on what you learned from the workshop.
What workshops are offered, and how do I sign up?
Please find the list of workshops offered in Fall 2025 below. Locations are on Zoom unless otherwise noted. Please register for a workshop through the Shoreline links provided in the table below.
Area 1: Course Design
| Title | Date & Time | Description |
|---|---|---|
| Make your Course More Accessible with Universal Design for Learning (UDL) | Thur, Oct 9, 12:30–2 pm | Learn about Universal Design for Learning (UDL) and how TAs can recognize, critique, and minimize barriers to learning. Explore the many ways educators can customize and adjust teaching to maximize learning for all students. |
| Data Science by Design: Integrating data science skills into courses | Thu, Nov 6, 10–11:30 am | Explore how to incorporate quantitative literacy and data science into your course in the age of Artificial Intelligence (AI). |
| A Faculty-Student Conversation about AI in Teaching and Learning | Mon, Nov 10, 12-1:15 pm (Student Resource Building) | A conversation bringing students and faculty together to explore shared challenges and strategies for navigating AI in teaching and learning at UCSB. |
| The Alternative Grading Buffet | Thur, Nov 13, 10–11:30 am | Learn about alternative grading approaches (standards, specifications, ungrading), their pros and cons, and flexible options for implementation. |
Area 2: Instruction
| Title | Date & Time | Description |
|---|---|---|
| Nectir Chat: How Nectir can Increase Student Engagement | Fri, Oct 10, 11 am–12 pm | Learn how to use Nectir Chat to build digital communities that enhance student outcomes through engagement, collaboration, and belonging. |
| Exploring Library Services | Mon, Oct 13, 2–3:30 pm (Library 1312) | Meet UCSB library partners, learn about instructional resources and services, and tour key spaces like DREAM Lab, Special Research Collections, and Makerspace. |
| Active Teaching: Practical Strategies for International TAs | Fri, Oct 17, 10 am–12 pm (Student Resource Building) | Interactive workshop for international TAs on active learning strategies, grouping students, role-playing classroom interactions, and language support. |
| Think-Aloud as a Tool for Teaching and Learning Writing | Fri, Oct 24, 11 am–12 pm | Explore the think-aloud method as a tool for teaching writing, reading, coding, and more. Learn how it reveals cognitive strategies and supports academic integrity in the age of AI. |
Area 3: Mentorship and Student Support
| Title | Date & Time | Description |
|---|---|---|
| Messaging Matters: Helping students “get” your course materials | Wed, Sept 24, 1–2:15 pm | Refine communication strategies with students using an asset-based framework to foster equitable and supportive learning. |
| Equitable Participation in Discussion Sections | Thur, Oct 2, 2–3 pm | Explore inclusive strategies for encouraging and evaluating diverse forms of participation, and draft clear, student-friendly syllabus language. |
| Use Structured Feedback to Support Students after a Difficult Academic Outcome | Thur, Oct 23, 1–2:15 pm | Learn to use asset-based language and structured feedback to support students after challenges, helping them set goals and build agency. |
Area 4: Professional Development
| Title | Date & Time | Description |
|---|---|---|
| Motivational Interviewing: Supporting Students Through Empathetic Conversations | Thur, Oct 16, 10–11:30 am | Learn motivational interviewing techniques to engage in empathetic, collaborative conversations with students experiencing behavioral or academic challenges. |
| Crafting your Teaching Philosophy Statement | Fri, Nov 7, 10–11:15 am, OR Tues, Nov 18, 11 am–12:15 pm | Work through exercises to reflect on your teaching and draft a teaching philosophy statement required for job applications and awards. |
| Crafting Your Contribution to Inclusion/Belonging | Tues, Oct 28, 2–3 pm, OR Thur, Nov 20, 10–11 am (UCSB Library @ CITRAL 1576) | Guidance for graduate students on how to articulate contributions to inclusion and belonging in job applications. |
Autograder Lab
Who: Everyone
Deadline: Tuesday, Oct 21, 6PM
The goal of this lab is to teach you how to create and use simple autograders for your assignments. By the end of this lab, you will be able to:
- Understand how autograders work under the hood, including how they are set up, executed, and how they report results.
- Create autograders that provide meaningful feedback to students while ensuring the integrity of the grading process.
- Diagnose, debug, and fix common issues that arise in autograder implementations.
Setup
-
You should be automatically added to the Gradescope course for CS 501. If you are not, please use the entry code GV4X2B.
-
In this lab, you'll play the role of both a TA who writes autograders, and a student who submits assignments to be graded.
- Whenever you're asked to play the role of a student, you will submit to the CS 501 Gradescope course (that you just joined in step 1).
- Whenever you're asked to play the role of a TA, you will need to upload your autograder to a "dummy" Gradescope course that you create for yourself. We will provide instructions on how to do this later in the lab.
-
Make sure you have Python 3 installed on your machine.
What You Need to Do
Task 1
The autograder that Junrui just demo'ed in class is available here.
Imagine that you're using this autograder for a homework assignment in a CS class for which you're a TA. One day before the assignment is due, you receive the following email complaint from a student:
Hi
, I have been spending the whole weekend trying to debug my code, but I keep getting 0 points on Gradescope. Gradescope just tells me which test cases I failed, but it doesn't tell me what the expected output was, or what my code actually produced. Without that information, I can't figure out what went wrong. I think learning is all about getting feedback, and without feedback, I can't learn anything. Please fix this issue as soon as possible, because the assignment is due tomorrow and I really want to get some points on it. This assignment is creating a lot of stress for me, and I would really appreciate your help.
Thanks a lot,
Knowing that being a TA is all about helping students learn, you decide to modify the autograder to provide more feedback to students. Specifically, you want to modify the autograder so that for each test case, it shows:
- The input that was provided to the student's code
- The expected output for that input
- The actual output produced by the student's code
Update the demo autograder to provide the above feedback to students. You can do so by augmenting the JSON file that the autograder produces with an output field for each failed test case.
To test your updated autograder, you will need to create a dummy Gradescope course for yourself, and upload your autograder to that course. Here are the steps to do so:
- Navigate to Gradescope.
- Click "+ Create Course", pick any course number and name you like, and click "Create Course".
- Click on the course that you just created, and then click "Create Assignment".
- In the sidebar, select "Programming Assignment" as the assignment type, name the assignment "Test" (or any name you like), use 100 for autograder points, and pick any release & due dates. Then click "Create Assignment".
- Once the assignment is created, navigate to "Configure Autograder" and click "Select Autograder (.zip)". This will open a file picker dialog. You need to select the
zipfile that contains your updated autograder. To create thiszipfile, Junrui wrote a simpleMakefilethat you can use (simply runmakewhich will create a file calledautograder.zipthat you can upload to Gradescope). After selecting thezipfile, click "Update Autograder".
This sets up the autograder for all future submissions. To test it, you will now pretend you're a student and submit some code to be graded. You can do so by clicking "Test Autograder" button which is right next to "Update Autograder", and uploads the dummy solution.py file in the same directory as the autograder.
Task 2
After updating the autograder, the student thanked you for your help. However, a few hours before the deadline, you noticed that some students are abusing the autograder as a debugging tool by repeatedly submitting their code to the autograder, checking the feedback, and using that feedback to fix their code. You turned a blind eye to this behavior until you discovered that one student simply hardcoded the test cases in their submission and got a perfect score without actually solving the problem.
As a TA, do you think this is cheating? What would you do in this situation? Write down your thoughts.
Task 3
After this incident, you come to appreciate the fine balance between providing meaningful feedback to students and ensuring the integrity and fairness of the grading process.
To prevent further abuse, you decide to update the autograder again to provide just enough feedback so that students aren't completely stuck, but not too much feedback that they can easily game the system. To do so, update the autograder in the following way. Instead of displaying detailed information for each failed test case, the autograder now display the following summary information:
Passed: test_name_1, test_name_2, ...
Failed: test_name_3, test_name_4, ...
First failed test case:
Expected: <expected output>
Actual: <actual output>
Update the dummy assignment with your new autograder, and test it by submitting the same dummy solution.py file as before.
Task 4
Since the autograder doesn't show the input for each test case anymore, it's impossible for students to hardcode the test cases in their submission anymore... or is it?
In this task, you will try to hack a similar autograder, and show that you can still hardcode the test cases in your submission and get a perfect score without actually solving the problem.
Specifically, in the CS 501 Gradescope course, Junrui has created a dummy assignment called "Autograder Hacking (Task 4)". The autograder for this assignment accepts a solution.py file that must implement the following function:
def foo(x: string) -> int:
# Your code here
However, Junrui is not gonna tell you what foo is supposed to do. Your task is to achieve perfect score on this assignment without knowing what the autograder checks.
Hint
Submit a dummy file and observe the output of the autograder.Once you complete this task, think about how you would prevent similar exploits in your own autograders.
Task 5
After completing Tasks 4, you become disillusioned with autograders. You sense that no matter how hard you try to design a good autograder, a motivated student can always find a way to game the system. You decide to give up, become the bad guy, and provide no feedback in the autograder beyond printing out names of passed and failed test cases. After doing so, the Piazza forum is flooded with questions like this:
Hi
, I can't pass
test_1,test_8, andtest_10. Can you please tell me what those tests are supposed to check? I really need to graduate this quarter and this is the last course I need to take.--Anonymous Poet
Then, you spend tens of hours each week trying to distill the essence of each test case into a cryptic poem, hoping that the students will be able to decipher the poems and fix their code.
The quarter passes, and you feel exhausted. You reflect on your experience, and wonder:
Is this really what teaching is all about?
Is this really what learning is all about?
Why is testing so hard?
Think about these questions, and write down your thoughts. Concretely, how would you design autograders that strike the right balance between providing meaningful feedback to students and ensuring the integrity of the grading process?
How to Submit Your Work
Submit a zip file containing what you did for each task to the "Autograder Lab" assignment on Canvas. Your zip file should contain the following files:
task1/: A directory containing your updated autograder for Task 1.task2.txt: A text file containing your thoughts for Task 2.task3/: A directory containing your updated autograder for Task 3.solution_task4.py: A Python file containing your solution for Task 4.task5.txt: A text file containing your thoughts for Task 5.
Teaching Journal
Who: TAs
Deadline: Weekly, by Sunday 11:59pm
Estimated time: 5-10 minutes per week
Why Junrui wants you to do this
- Help you with time management!
- TA’ing can eat up a TON of time if you’re not careful
- Make sure you’re not overworked by your instructor
- Help you reflect on what you learned about teaching
- Your weekly reflections are great fodder for your teaching philosophy statement!
What you need to do
Junrui will create a Canvas assignment for you to submit your journal entry every week. In your journal entry, please do the following two things:
- Log how much time you spent on what teaching-related duties. Be sure to include all teaching-related duties, including but not limited to:
- Holding office hours
- Preparing for and running sections
- Answering student questions on Piazza or other Q&A platforms
- Grading assignments
- Debugging autograders and student submissions
- Meeting with your instructor or fellow TAs
- Attending CS 501
- Slacking off because you don't wanna work on your research (just kidding)
- Reflect on your experiences in the past week of teaching. Feel free to choose one or more prompts from the list below and respond to it. No need to write a full essay, just a few sentences is fine!
- What went well in your teaching this week? What didn't go so well?
- What is something surprising/unexpected that happened in your section/office hours?
- What strategies have you tried, or want to try, in your teaching?
- How do you feel what you have learned in CS 501 so far can be applied to your teaching?
- What is one thing you want to improve in your teaching next week?
[TA] Teaching Philosophy
Coming soon!
Teaching Observation
Who: Non-TAs
Deadline: By the end of the fall quarter
Estimated time: 1 hour
Why Junrui wants you to do this
-
For non-TAs, how can you possibly get better at something if you never actually practice it? Well, you can learn a lot just by observing and learning from how others are doing it!
-
For TAs, this is a good source of feedback on your teaching from your homies. Normally you only get feedback from your students at the end of the quarter (and mid-quarter if you're lucky), which is often too late to be useful. But because the economy is so bad and there're so few of you who got TA positions, you'll likely have several non-TA peers observing your teaching and giving you feedback throughout the quarter. How great is that? :)
What you need to do
If you are a TA...
Use this Google sheet to kindly provide information on:
- Your name & email
- The course you're TA'ing for
- Are you leading lab or discussion sections?
- The day(s) and time(s) of your section
- The location of your section (Zoom link or physical location).
Once all of you've filled out the sheet, Junrui will consolidate the information and share it with non-TAs in the class. Please expect to receive emails/discord DMs from your fellow non-TA classmates asking to observe your section. Please be accommodating and let them know that you're happy to have them observe your teaching!
Other than that, you don't need to do anything else. Just teach your section as you normally would, and enjoy the extra company!
If you are a non-TA...
- Once Junrui has collected the information from TAs, he will share a sign-up sheet with you.
- Please pick one TA's section to observe. You can pick any TA you want, and any section that fits your schedule.
- Please reach out to the TA (via email/discord/in person) to let them know that you'd like to observe their section, and confirm the day/time/location with them.
- Put your name on the sign-up sheet next to the TA's section that you're observing. We want to make sure that no section is overwhelmed with observers!
- On the day of the section, use this TA observation form to provide constructive feedback to the TA on their teaching. Please be kind and respectful in your feedback. Put yourself in their shoes: what kind of feedback would you want to receive if you were the TA?
- After the section, please send a copy of your filled-out observation form to the TA.
- Finally, upload the filled-out observation form to the corresponding Canvas assignment--this allows Junrui to keep track of who has completed the assignment.
(Non-TA) Micro-Teaching Demo
In the 2nd half of the quarter, each of you will have an teaching demo.
- Pick one course you feel excited to TA for.
- Then, pick one topic covered in that course.
- Prepare a 5-7 min presentation in class.
- You can incorporate slides, boardwork, worksheets...
Logistics:
- Sign up by Tuesday, Oct 28 (link in Week 4 slides).
- Before the demo day, submit to Canvas a lesson plan containing at least one learning objective and your planned activities.
- If you want to print any handouts, let Junrui know at least 3 hours in advance. Junrui will print them and bring them to class. FREE!
- Show up on the day of class you signed up for! You only need to show up for your own demo day.
- Your peers + Junrui will listen and give you constructive feedback.