Almost every upper-division course at Caltech uses undergraduate TAs. Most of the classes you'll take your freshman year, during core (like Ma1, Ph1, Ch1, Bi1) use graduate student TAs, but almost every CS course I've taken has used undergraduates to hold office hours and grade problem sets. Undergraduate TAs get paid (quite a bit!) and get to set their own office hour schedules (some hold OH from 10pm-12am, etc.), so TAing is a pretty sweet campus job. Pretty much all you need to be a TA is a good grade in the class the year before (or two years before, or whenever you took the class yourself), a good rapport with the professor, enough free time to grade lots of sets, and one hour of TA training from the Center for Teaching, Learning, and Outreach (CTLO).
This term, I TAed my first class, CS 155 (Machine learning data mining). I took the class last year, and the professor is my academic advisor, so I reached out after the class ended and I told him I really enjoyed it, and asked if he would like help TAing it next year. The class is huge (160 enrolled by Add day this year), so he was happy for the help!
My TA duties were pretty straightforward: I was assigned the first recitation lecture, and the third and fifth homework assignments, which I shared with one and two other TAs, respectively. I created a slide deck for my recitation lecture (the topic was introduction to Python for Machine Learning), and gave a 40 minute talk and answered questions afterward. For each homework assignment, I went over the previous year's assignment and made changes based on what issues students had with it last year, and submitted it to the professor and head TA (a graduate student) for approval. I also held two hours of OH during the week before the assignment was due, to answer questions and give hints for the problems. The week after the assignment was submitted, I graded 1/3-1/2 of each of ~150 assignments, split between all of the TAs who were responsible for it. CS155 is one of the largest classes at Caltech (not counting the core courses which have ~200-230 students, all of the freshman class), so the TA organization might be a bit different from other courses.
I really enjoyed TAing this class! It was nice to feel useful, and to know that I had mastered the material enough that I was able to help teach it. Grading problem sets was a lot of work, but not very difficult. I liked the experience so much, that I've signed up to TA another class, CS141 (Hack Society) next term. There will be a slightly different set up, as CS141 is a project class where students take open data sets and do whatever they want with them (build an app to improve data availability, create a website to visualize municipal data, etc.), so without any problem sets, I won't do any grading. But having done many project classes at Caltech myself, I'll be in charge of helping to mentor several groups and help them organize and design their projects. Plus, I have a ton of free time during my third term senior year, so I might as well TA!