Post

Retrospective on Fall 2021 Semester

This semester was very different than the previous semesters that I had in college. Not being able to attend classes and interact with people for about a year and a half seemed to have some kind of an impact that I did not realize that I was having. Maybe that is why I was actually excited to come back to campus! Obviously, things were much different - wearing a mask on campus, supporting remote learning for the majority of classes, and another year of online career fairs.

Although I told myself to keep the blog active during this semester, once I started to get busy, I just could not find time to update my blog… So, I wanted to take some time to write down what I have done this semester and what went well and what went not so well.

Classes I took

Csci 5103: Operating Systems

I was very excited to take this class as I have always been interested in the OS. In this class, I learned about how the operating systems work under the hood: what algorithms they run to manage processes and schedule them. Also, I learned how to manage process coordination, synchronization, and handle/prevent deadlocks. We also did an assignment on the Linux device driver programming in which we created a buffer into the kernel’s memory space and multiple producers and consumers keep trying to access the buffer to do their jobs (basically a producer-consumer problem in the kernel memory space). The page tables and virtual memory weren’t so easy to understand still!!

Csci 5451: Introduction to Parallel Computing

Before taking this class, I had only heard about the term ‘Parallel Computing’ but never knew how it would be implemented. I had some experience working on some projects that use the shared memory space to let different threads work together (use/update data in the shared space). However, in order to have much more powerful computing power, there need to be many computers that are connected through some type of network topology and they need to share data through that network to work together. We got to use some of the libraries (OpenMPI, OpenMP, and CUDA for GPU programming) that are created for this purpose. They did make our lives much easier when it came to synchronizing multiple processors that do not live in the same hardware. I got to know the notion of data dependency between parallelized works, where we can parallelize the work (or where we should not), and having many processors work together does not mean an increase in performance always (obviously, there will be overheads by having more processors as they must communicate more).

Csci 4211: Computer Networks

This was another class that I was excited to take until I knew there were just so many things that I had to learn. The number of topics that were covered in each session was so much that I was sometimes overwhelmed just to go through all the materials. Learning about technologies that we use every day without much thinking and seeing how they are implemented was very cool. From packet switching/circuit switching to how this Internet world is working (the relationships of providers, peers, and consumers), there were many topics that were covered in this class. Hopefully, this class had me prepared for the advanced network class I will be taking this spring.


Things I did

Besides taking classes, it was a TA for the ‘Machine Architecture and its organizations’ class. This is one of the classes that students find somewhat challenging because we use C and Assembly programming languages. Also, now they have to think about the lower level of implementations as this class covers some of the machine architecture aspects (CPUs, cache, RAM, secondary storage, and etc.). Programming in Assembly is not easy as debugging is not easy and there are many details that we have to consider (which register are we going to use or are we using the right instructions to do things?).

Helping others taught me a lot because I had to make sure that the information I am about to deliver to other students is correct. So, that forced me to study and take one more look at materials before answering questions. There were definitely materials that I understand better now than I did last year.


What went right?

I want to say many things went right! I did my best in classes, I got to know more people, and my intramural basketball team was one of the last four teams. And the decision to drop one of the classes that I struggled with so much was great too. It is never easy to let things go. Also, asking for help when I didn’t know about things whether they were class-related or they were just general things helped me so much. I believe that asking for help (and when to ask for help) is very important!

What went wrong?

The last two weeks of school were very tough as four different assignments were due at the end of the semester. And trying to finish those assignments definitely impacted that I could not focus on the latter part of the class as much. What could I have done differently? I feel like I spent too much time on one thing when I should just have moved on to the next task. As I mentioned above, sometimes letting something go (or knowing when to move on) can be the hardest thing to do. I need to work on that more!


So, how was my semester?

This was my first semester to take graduate-level courses here at the U and they were fun (although they were challenging). And my TA experience was not so bad! I think I did okay considering that it was my first time TAing. There are definitely things that I can improve and I am confident that I will do a better job next time. As I learn more, I feel like there are even more things that I don’t know. The beauty of this field is that you will have to keep learning otherwise you will fall behind!

I just want to pet myself on the back and get some rest. Happy holidays!

This post is licensed under CC BY 4.0 by the author.