Studying computer science can be considered a challenge on its own. The multiple mathematics theorical concepts, the concepts and implementation of complex algorithms and the development of extensive projects constitute some of the tasks of a computer science bachelor student. Handling a large amount of credits every semester can be especially troublesome during the examination period in which you need to prove the understanding of various courses through plain 90-minute-long tests. In addition to the demand within the curriculum, there are many extra activities that can beneficiate students. However, to manage extracurricular activities while succeeding in a computer science bachelor’s course is not a simple task. The lack of free time and the excessive time investment needed for such course are often mentioned as reasons not to pursue these activities. In this article, I discuss the involvement of students in extracurricular activities and provide an insight of my experience in dealing with demanding work while succeeding at a computer science bachelor’s course.
There are several types of extracurricular activities offered to students of the computer science BSc during their education. Research-oriented projects and fellowships can be pursued from starting at the first semester of course as well as Senior position in the mentoring system, volunteering in CGC, EIK or peer mentors in Szombathely. There are also opportunities outside the university campus, where many technological companies or companies that have a specialized department for IT offer internship opportunities paid or otherwise.
What extracullicurals did I take on?
Tech companies have an increasing interest in internships through partnerships with universities. Interns lack experience needed for mainstream projects, being usually allocated to smaller research-oriented work, which are not tied to company standards, code-base, and other pre-existing work. In these sectors, they provide innovative insights for real-life problems due to their proximity with theoretical concepts, which are fresh, seen during the bachelor’s course. For companies, the investment is low, when compared to a standard work contract, usually not including benefits. The work experience is important for students. The payment may not be the focus for their enrollment. Both parties are benefited if the internship evolves to a regular work position once the student finishes the program cycle. The new employee will not need an adjustment period and the risk is considerably lowered due to the previous experience as intern.
Research projects include extended version of topics seen during classes or completely new ones. Universities usually have research departments and groups for specific subareas of computer science. The funding for such ventures can come from a governmental incentive or through a partnership with the private sector. These experiences help students focus on more complex problems and introduce them to the research environment in which most scientific improvements are made. The student learns how to write a scientific paper, to present his/her work in a conference and to work under a closer guidance of a supervisor. Successful outcomes include the extension of the work for a bachelor thesis topic whilst contributing to a more competitive resume for further research-oriented opportunities such as MSc and PhD. Universities invest in research, given that it is their way of attracting new scholars. For professors and researchers it is essential that students apply for such projects since there is an excessive amount of ideas and a rather small quantity of students to develop them. Moreover, the more ideas developed and described as scientific papers, the more prestige and recognizability for a given researcher.
Unfortunately, most computer science students do not take advantage of the opportunities on both research and private companies fronts. After listening to various testimonies from acquaintances, I realized that it may have many causes. Some feel that the time invested in the bachelor’s course is all they can afford to spend on studying or working. Others claim they would like to join extracurricular activities but they are afraid of being rejected and they don’t even try.
For the ones that fear rejection, a change in the perspective may be very beneficial. One fails without trying and a “no” is already given even if no chance is taken. After all, to try is to increase the chance of acceptance from zero to something greater than zero. Additionally, even after the unsuccessful cases, you can improve by realizing your mistakes and improving on all fronts on every iteration.
What has an Operating System to do with all this?
Regarding the other portion of students that believe to be impossible to manage the time to accommodate extracurricular activities while being a computer science undergraduate student there are some adjustments that may change such assumption. Surprisingly, the adjustments are based on a concept seen during the Operating Systems course related to scheduling of processes that an operating system must perform to handle the various inputs from both the user and internal processes in an optimal way.
The analogy is related to managing process of different priorities whilst optimizing the completed processes / time ratio. In real life, there are homework from various subjects and projects to deal with during the semester. Also, there are tests, mostly clustered in the end of the semester.
Most students choose to handle the tasks according to which comes first and only move to the next one once the first is done. Like the First come, first served (FIFO) way of scheduling processes. Since there are only the tasks from the university, even though it may not the optimal way of dealing with the assignments, it can still be managed.
If you want to pursue additional activities outside the mandatory classes, extra meetings, assignments and deadlines would be added to the list of required tasks (processes queue). Upon such additions, the FIFO way of handling the tasks most likely will make a student overwhelmed (much like an operating system that uses such method to handle processes). Having said that – and having payed attention to Operating Systems classes – I would suggest changing the scheduling method for a modified version of the ideal Shortest Job First (SJF), that provides the highest completed processes / time ratio.
In this method, tasks that require the smaller computing time will always be prioritized over the others. An operating system cannot foresee the computing time of an initialized process. Fortunately, we can predict (with some error tolerance) the time needed for a task. The reason for a modified version of the SJF is the fact that a process (or a task, in real life) may never be processed, causing a starvation scenario, which needs to be avoided.
To prevent that, we add priorities to each task, being increased the closer it gets to the deadline and estimated time for completion.
How I applied my knowledge about Operating Systems to my studies
To advocate for such way of handling tasks, I present my experience as a computer science at Eötvös Loránd University (ELTE) when dealing with various extracurricular tasks. As a transfer student, I arrived with an initial intent of staying only for six months. Since I did not expect to stay for longer than a semester I looked for extra opportunities as early as the second week of classes. After discussing with some professors, I started as a volunteer at Ericsson Hungary to work with cloud computing and IoT technology. The initial trial period went well since I could prioritize the tasks from the company because of the early stage of the semester (without large products and away from deadlines). I started as a paid intern after one month of trial period and remain there until the time of publication of this article.
From the beginning of the next semester was the point in time when I decided to transfer completely and finish my studies at ELTE. I looked for research-oriented opportunities to complement my extracurricular activities. Upon discussing with other professors, I started a position as a teaching assistant in the functional programming course and applied for a research grant (which was accepted later) to join a computer graphics – my subarea of preference – research group.
Upon applying and committing to all the extra activities, the most difficult part was to maintain a high level on every front. With so many commitments, it is easy to fail one of them, especially when there are conflicts in deadlines. Auspiciously, I managed to avoid most conflicts by reasoning with the different supervisors to adjust the dates. When it was not enough to do so, I would anticipate one of the tasks to deliver everything on time.
Later in the semester, realizing that I had a year left to until my bachelor’s degree, I decided to apply for a computer graphics PhD position in the United States, which is the country I have always wanted to work or study as a next step of my education. Such application was supported by my previous efforts of being a teaching assistant, by the work experience at Ericsson, and, most importantly, by the research-oriented project that shared the same subarea: computer graphics.
Fortunately, I was accepted at the position and was awarded a full scholarship for a research assistant position. This achievement was possible due to the extracurricular efforts while maintaining a high grade point average (GPA) in the university.
Extracullicular activities are all about what?
Having said that, it is important to take extracurricular activities while studying in a regular computer science bachelor’s course. Participating in these ventures makes a candidate stand out when applying for a position in a company or higher education opportunity after all. It is not impossible to take on multiple activities outside the mandatory university spectrum simultaneously, it is just a matter of time management. In my case, there was the university, the teaching assistance, the research-oriented project, and the internship at Ericsson: all at the same time. I could manage everything by putting the SJF strategy in place and focusing on one problem at a time. Now, having managed well my time and having invested time and effort on such important projects, I will be able to start an important step on my education in a great university and in the country that I have always wanted to study.
Abouth the Author
Pedro Henrique Villar de Figueirêdo transferred during his BSc studies from Brasil and finished his Bachelor program in the Fall semester of 2019-2020. He then continued with his PhD in Texas, USA.