Being a Course Producer (CP) for CSCI 170: Discrete Methods in Computer Science has been one of the highlights of my time here at USC. Included in my responsibilities are proctoring exams, editing homework, and holding office hours. I’m frequently asked one question: “What was your experience taking CSCI 170?”
The short answer: brutal.
The long answer: tough, yet rewarding.
As an out-of-state student from an overcrowded, underfunded public high school, I was never given the opportunity to take advanced computer science courses. I self-taught myself a little Java and managed to scrape through the CSCI 102 challenge exam. Thus, I was concurrently enrolled in CSCI 103 and CSCI 170 the first semester of my freshman year. Although my basic understanding of coding helped ease me into CSCI 103, I was completely unprepared for CSCI 170.
I walked out of my first CSCI 170 class totally lost. Words like “remainders” and “playing cards” and “pigeons” swam through my mind, each phrase making less sense than the last. Questioning my sanity, I sprinted back to my dorm and opened the CSCI 170 textbook, intent on mastering the material prior to the next lecture (spoiler alert: it didn’t work).
I found myself dreading my CSCI 170 lectures: I was so worried that I would continue to fall behind, worried that the tuition I was putting towards my education would go to waste, worried that I wouldn’t even pass the class. Two weeks into the school year, in a desperate attempt to preemptively salvage my grade, I walked into the Salvatori Computer Science Center (SAL) to get help from the CSCI 170 CPs.
Three hours later, I had both completed my homework and developed an understanding of the concepts I’d been struggling with for so long. In addition to helping me with coursework, the CPs provided me with constant support and practical advice. As undergraduate students who have already completed the course, the CPs had been in my shoes and they understood how best to help me master the material. With this more informal, personalized instruction, I was able to slowly gain an understanding of the material I saw presented in lecture.
Thus, for the rest of the semester, I found myself stuck in the following cycle: attend lecture, experience extreme confusion, question my life choices, run to SAL, work with the CPs, learn the material, turn in the homework, and repeat. Prior to our midterm exams, I spent upwards of four hours a day with CPs, frantically reviewing and re-learning course concepts. At one point, I briefly considered submitting a housing reassignment to SAL.
Thanks to my time in SAL, I developed good relationships with several CPs and began to genuinely enjoy attending office hours. I learned that the struggle of mastering new material doesn’t just disappear after CSCI 170. My CPs were in a range of advanced courses, from CSCI 104 to 310, and many of them attended office hours themselves for these classes. I then realized that the key to succeeding in computer science isn’t about the amount of prior knowledge one has, but rather the ability to effectively adapt to challenging situations and learn from them.
Two days before the final exam, I remember sitting in my last round of CSCI 170 office hours as a CP helped me review graph theory, our last concept. After sufficiently overloading my brain with planar graphs and minimum spanning trees, I thanked the CP for his time. He then remarked that I should consider becoming a CSCI 170 CP myself. I immediately laughed off the suggestion – how could someone who had struggled with the material so much become a CP?
However, in the days and weeks following the final exam, I gave the idea more thought. The 170 CPs that semester had given me unbelievable support, patiently guiding me through concepts until I developed a solid understanding of the material. One CP actually had to re-explain a graph inductive proof to me three times before I finally got it. Thanks to the CPs, I had gone from questioning whether I could pass the class to performing confidently on the final exam.
I realized that I wanted to provide this same experience to future students as a CP. I want to provide them with the support that I received, particularly to students that haven’t been coding since preschool, that haven’t grown up in a wealthy area, that don’t have parents working at top-tier tech companies. Because I’m proof that you don’t need to have any of these things in order to succeed as a computer science student at USC.