Computer Science is a very practical field and I like the emphasis my university places on teaching practical computer science skills. However, I recommend every computer science student planning on higher education to try to get some research experience during their undergraduate studies. First, it is helpful to know already at undergraduate level whether you enjoy research, for example to be able to choose appropriate higher education. Second, doing research is a great learning experience that is very useful for future career in both the industry and academia.
This semester I worked on an independent research project in the field of Multimedia, Data Science and Machine Learning, with my friend Þórhildur. I want to share both the Computer Science knowledge and the soft skills I learned from the process, so that I can hopefully inspire others to take on a research project. (The idea of the research can be found in this post)
Soft skills learned:
- Teach myself new concepts from scientific papers
- Read and understand code written by others
- Communication and independence
- Make my own decisions
- Communicate my results
- Ask for help when needed
- Organizing what needs to be done when
- Working remotely
- My partner-in-crime, Þórhildur (@thorhildurthorleiks), was living in Sweden and doing 1.5 ETC, while I was doing 6 ETC. Thus, we had to organize our work accordingly.
- Dealing with technology problems:
- Virtual machines and hardware problem related to memory
- Transferring large data and using tmux
Many, but not all of these skills, can also be learned by doing internships or by working on large course projects.
Computer Science Knowledge gained (concepts that I first heard of in my research project):
- Machine learning topics:
- SVM classifiers + flexible use cases of it in context of relevance feedback
- KNN classifiers
- K-meansclustering and variations
- Data Science topics (big data, multimedia etc.):
- Curse of dimensionality and implications
- Representation of multimedia data
- Feature vectors and concept vectors
- Dimensionality reduction
- Data Compression
- Approximate high-dimensional indexing and different clustering approaches
- Pragmatic Gap (The difference between categorization model of machines and the flexible human categorization model).
- Optimization techniques:
- Inline functions
- Other cool C tricks
This list is to demonstrate how many new concepts one can learn from doing research, many of which are not taught in the courses. I had not taken any multimedia course prior to this experience and was taking an introduction course in Machine Learning (ML) simultaneously. It was fun to get a glimpse of the multimedia field and to learn about topics like SVM in the ML course when I had just read about it and implemented it in a different context in my research.