Reflections on My Teaching Assistant Experience at NUS and Volunteering Experience at Bridges for Enterprise as a SWE
A multipart series where I reflect on my university opportunities- miscellaneous opportunities
Author’s Note: This post is slightly different from my other four articles that reflects on my four software engineering internship experiences as an undergraduate at NUS. I thought I like to group these experiences in a multipart series that revolves around opportunities that are career oriented. Hence, I decided to include my experiences as a Teaching Assistant at NUS and a SWE volunteer at Bridges for Enterprise.
Context
I joined as a SWE volunteer for Bridges for Enterprise early in my first summer at NUS because I wanted to gain more SWE opportunities and improve my chances of securing better internships. As a Computer Science major in my first year, I didn’t have much industry experience and was simultaneously gaining some experience through my first internship at MatcHub. I recall coming across Bridges for Enterprise on a friend’s LinkedIn profile and decided to check them out. After realizing it was a good opportunity to learn, I decided to join. At the time, I wasn’t motivated to work on personal projects, so I thought the best way to make progress was to commit to something external. Hence, I joined Bridges for Enterprise in May 2021 after completing their interview process, which included a take-home assignment and a conversation with the tech lead.
As for becoming a teaching assistant, it was motivated by both the money and the experience. I thought it would be great to gain teaching experience and earn some cash on the side. Teaching programming also served as both a revision and a validation of my own understanding of the fundamentals. I taught the revamped IS1108 Digital Ethics and Data Privacty (about which I will definitely share my thoughts as a tutor) and CS1010s Programming Methodology.
Bridges for Enterprise as My Experience as a SWE
Context
Bridges for Enterprise is a non-profit that provides pro bono advisory services to social innovators in the developing world. They have teams around the world and are mainly student-run if I’m not mistaken. The tech team is surprisingly large — probably because it’s volunteer-based, so there aren’t headcount or salary concerns. I joined the Singapore team. To be honest, I’m not entirely sure what the different teams across the organization actually do since the organization is quite large. I suspect there are a lot of inactive members because there’s no binding commitment, making deadlines flexible and projects progress slowly.
What Did i do and learn
I joined as a software engineer but mainly worked on frontend tasks. I was part of a team of five, most of whom had full-time jobs or were final-year students. If I recall correctly, Bridges for Enterprise was trying to build an internal management system to replace their reliance on Google Forms for handling applications. Currently, startups from developing countries submit their applications via Google Forms, which are then processed manually. The goal was to develop a platform where consultants and advisors could manage applications more efficiently. This included creating a dashboard to manage applications and building a custom application form builder (almost like Google Forms). The same process applies to volunteers as well — I remember using Google Forms for my own application.
For my role, I was tasked with simplifying the signup process by developing a custom form renderer using React.js to manage volunteer applications. While I had some access to the backend, which was built with Django, my work was primarily focused on frontend development.
To be honest, I didn’t learn a lot from the experience. Most of my work was completed in the first month, and I spent the remaining months fixing minor bugs or working on integrations. Progress was slow because we had to wait for other teams, and my feature wasn’t a high priority.
Would I do it again
While I didn’t gain much technical knowledge, I can’t deny that the experience padded my resume. At that point, I was just an undergraduate finishing my first year of CS studies, with little experience or projects under my belt. Having something to showcase helped signal to potential employers that I was serious about software engineering. At the very least, it showed that I had the initiative to seek out opportunities.
But would I do it again? Probably not. I think working on a personal project is much more meaningful since you can show the final product to recruiters anytime. One downside of working with an organization is that you often can’t share the product publicly, and you may not gain experience with the entire development process because different components are delegated to different teams.
That said, personal projects require a lot of motivation to complete — especially if it’s during the summer and you’re trying to recharge after a tiring school year. I’m no CS god, so I need a bit of forced motivation to get something done.
Teaching Assistant of IS1108
Context
I think everyone in NUS Computing knows about the infamous IS1108. I was part of the batch where the course consisted of 10 weeks of 10 MCQs, with a book provided for self-study. After my batch, IS1108 was revamped into a project-based, discussion-oriented system where students now attend classes to discuss ethics and its application to Computer Science.
It’s a pretty unpopular module (for both the MCQ system and the project system), and I can see why. So why did I even take the opportunity to become a TA during my second year first semester? There are two main reasons:
- The pay — Teaching assistants in NUS CS are paid well ($40/hour), and since I wasn’t under any scholarship, having a source of income was nice.
- Idealism — Believe it or not, I’ve always been fascinated by discussions about ethics, especially when it involves machines. It’s such an engaging topic with endless layers to explore. For example, in a self-driving car scenario where it must choose between crashing into one human or another, what decision should it make? It’s like a real-world trolley problem, except now programmers and lawyers are the decision-makers. And what if one human is white and the other black? Or if their ages, heights, or other factors vary? Even though machines are technically “colorblind,” input differences like skin tone could lead to different outputs. If a crash occurs, who’s to blame — the programmer, the car manufacturer, or someone else? These layers of questions, especially around AI, are incredibly thought-provoking. It was something that is covered nicely in one of my Tembusu modules UTS2104 which I enjoyed a lot.
Roles & Responsibilities
I was part of the first batch of TAs to run the revamped module. During our weekly calls with the module coordinator, we learned about the new curriculum and our responsibilities. Our main role was to facilitate in-class discussions and assist the professor in answering students’ questions.
The course structure included:
- Weekly case studies where groups discussed a topic and presented it in class.
- A final group project and presentation.
- Weekly quizzes and a final quiz.
TAs essentially acted as facilitators, ensuring that students worked on their case studies. The workload was low compared to other CS modules, but in my opinion, it wasn’t fulfilling. That’s why I opted for a CS1010S TA role after that semester.
Issues & Excuses
Being part of the first batch of TAs still doesn’t warrant a complete excuse — students were paying for the module (indirectly through school fees), and I could have made a greater effort to make their experience worthwhile.
I tried to engage students by walking around the classroom and discussing ethical concerns related to their case studies, often linking them to current events like data breaches or self-driving cars. Unfortunately, my efforts weren’t as effective as I’d hoped. Here’s why:
- Class Size and Environment: The class size was too big — around 40 students, split into five teams of eight. The large, open classroom made discussions feel impersonal. Groups only discussed topics internally, so it didn’t feel like a proper seminar where ideas were exchanged. Comparing this to a small class size I had in Tembusu (16 students), I realized how much the environment affects the quality of discussions. Even something as simple as lighting plays a role — my CS2106 tutorial had dim lighting for a couple of lessons, and it noticeably reduced engagement and participation.
- Focus of the Course: The module tried to cover too many topics superficially. Ethics requires deep, meaningful discussions to be impactful, but the course’s approach felt rushed. Again, comparing this to my Tembusu module, the professor often started with a thought-provoking question and acted more as a facilitator, guiding students to share and clarify their ideas. It made the class far more engaging and effective.
- Interest: IS1108 is ultimately a compulsory module, meaning students have to take it to graduate. Unlike other compulsory modules, however, it doesn’t offer much tangible benefit for employment. Additionally, it takes up students’ precious time — especially for Year 1s — that could be better spent revising for technical modules or working on personal projects. Interest and choice are important! If students were given the option to take the module instead of being forced into it, they’d likely be more engaged and willing to explore the subject.
With that being said, these issues weren’t just the fault of the course design. As a TA, I probably could have done more to encourage meaningful participation like suggesting more ideas to the course coordinators.
Would I do it again
Probably not. (I still believe that ethics is an exciting and important topic, although if the module isn’t run well, it risks making students think ethics is trivial or unimportant) That said, this was a humbling experience. I learned that managing large groups of students is challenging. It also showed me how much more I need to learn about fostering engagement and creating meaningful discussions.
Teaching Assistant of CS1010s
Context
During my time as a Teaching Assistant for IS1108, I realized the experience wasn’t fulfilling for me. I wanted to try something more technical, so when I saw an email about CS1010S TA openings, I decided to give it a shot in the next semester which was my second year second semester (Y2S2). As a CS major, I had taken CS1101S, which isn’t too different from CS1010S — the main difference being the programming language used and the target audience. CS1010S caters primarily to computing students outside of CS, such as those majoring in data science.
Roles & Responsibilities
Compared to IS1108, this role was definitely more technical. I was assigned a class of 11 students and was responsible for grading their work and teaching weekly tutorials. It was actually fun to teach using structured materials — it felt like I had more purpose in this role.
Would I do it again
Probably not. Unfortunately, I didn’t see much value in being a teaching assistant beyond the money. While teaching is fulfilling — I’ve done tuition before university and enjoyed watching students improve — I feel there are other, more meaningful ways to invest my time. That said, it was definitely a good refresher for programming fundamentals, which I appreciated. And this is just my opinion! The TA job is extremely important and I strongly it can make a difference in your learning as a student. It is just not something I am interested in.
Conclusion
And that concludes my miscellaneous opportunities in university that somewhat contributed to my portfolio. Trying something — even if it turns out to be a bad experience — is better than not trying at all. While I might say I wouldn’t do it again, the truth is, I wouldn’t have known that until I tried. Miscellaneous experiences like this have made me more thoughtful about how I choose opportunities in the future, and that itself is one of the most valuable lessons I have learned so far.