RBP

Participating in Dickinson College is one of the most important benchmarks in my life, not just in academics but also in how I open my worldview, explore opportunities, and see different aspects of life that I have never thought of. And one of the crucial impacts that had on me was when I chose my major. My first intention when choosing a major even before attending college was not computer science; in fact, I have no interest in studying technology and how it works. It can be said that I have a minimum knowledge of computers and no experience with coding at all; I didn’t even know how to print “Hello World!” at that time. At that time, my dream is to become an inventor. My dream is to invent something that people have never thought of or been able to do before, more precisely. And that is why I’m interested in physics and mathematics at a very early age, and my first intention in my first year at Dickinson is to declare my major in physics. But things did not go the way that I expected. As always, at Dickinson, I am able to explore a wide range of subjects, even the subjects that I thought I was not interested in, and it was at this time that I listened to a friend of mine, an advisor staff member at Dickinson, enroll in COMP-130, the introduction to computing. This is the first course about programming that I’ve ever taken. With the help of my friends and the professor, they showed me what a computer could do at both low and high levels, how every place I go or interact with has the presence of a computer, my friend also shows me how to hack a solution for my test online. After that, I was fascinated by what computers could and had done to our lives. I see everything at deeper levels, trying to connect everything together and see how it makes sense. Computer science for me is like math and physics at higher levels; we combine theory and numbers in math with physics to build and solve problems using computers, and that is why I decided to change my path and declare my major in computer science in my sophomore year. At first, it seemed like I had given up my dream when I was a little boy and changed to something I'd only known for a few months, but that is not the case. My goal with computer science is still to create something—a web page, a robot, a system, etc. Or even a new theory, writing a paper about new technologies, so after all, my dream does not completely change at all; it just changes from one form to another.

How Computer Science Major at Dickinson have effect on me

As someone who has zero experience with computers and programming like me, professors at the Computer Science department have done a great job of scheduling the courses and giving out what they need for students to understand the materials. One of the most important courses for me is COMP-256, where we learn about the abstraction of computers at a high level, which gives me a brief description of how every component in a computer is connected to each other, how people use electricity to convert it to 1 and 0, and what computers can do with just 1 and 0. Besides that, it shows me how everything I search on Google comes to me: how web pages work, what the operating system is, what networking does inside my computer, etc. One course that I feel is very important if I want to achieve a higher degree is COMP-314, where I learn about the theory of computing, which helps me discover and explore aspects of computers that I’ve struggled with before, like whether computers have limitations, how fast they can reach if we have infinite resources, etc. Even though I find it not necessarily popular in industrial environments for software engineers, I still think it is very important to know the theory behind everything to understand exactly what they do. For software engineers specifically, after about 2 years, I don’t know what exactly data structures and algorithms mean. I had never done any Leetcode or competitive programming problems before until my first OA interview for an internship, and I messed it up. I found it very difficult to solve even an easy problem with DSA, and I don’t even know how to make it fast or what to do to optimize. But after Data Structure and Algorithm courses, I’ve become more confident in solving those problems. I can understand how the way I write my code can make a computer take too long or take up a lot of space. But one of the nicest things about studying at the Computer Science Department at Dickinson is not about what information or knowledge the professors teach me; it is all about developing how to learn by myself and keep learning even when not in class. Each class helps me understand the basic idea of a topic, and that is the premise for me if I want to do deeper research on the topic. Reading scientific books about computer science was tricky for me at first, but with the right knowledge, I can now study by myself much easier than before.


Studying at Dickinson Computer Science also helps me strengthen my coding skills, learn how to work with teammates, and most importantly, learn how to work on large projects. The Computer Science Seminar at Dickinson is very different from other schools that I know; it takes two semesters to complete, and we must contribute to an open-source project. At first, we were suggested to pick a “doable” project so we would not feel frightened and could actually contribute to the project. But somehow, I ended up with a project that is quite big for me, and most of the contributors to this project are people at the company who own the project and contribute to it. It seems very hard at first glance. At first, I felt very worried and frightened because I could not find a single bug ticket, I was able to contribute to. I also did not know how to understand the code base as it contained hundreds of files with different components for different parts. I was about to give up on this project and try to join another team or change to a more digestible project. But after considering for a while, I decided to stick with this project for many reasons, but the main one is that I do not want to give up this easily, as I thought I would just give up in the future if I met a difficult task. And that pushed me to do a lot of reading, investigate, look at code bases, and seek assistance from online forums from people I did not know. After a few weeks, I’ve got my first ticket merge, and that really created momentum for me to keep contributing to this project. I can clearly see my skills improving significantly; I understand how to look up which part of the project to get what I need, how to understand the codebase, how to read the right document, and most importantly, I am able to see the whole picture and break it down into small functions, but I still understand how everything works together.


Choosing a specific field in computer science is also an important part of every CS major. At first, I thought computer science was just about learning how to code and make computers run, but there is so much more. Computer science is a very broad field that involves both theoretical and practical applications. People can choose to focus on many big fields like data science, machine learning, cybersecurity, software engineering, robotics, the theory of computation, artificial intelligence, and so much more. There is one important thing that I learned: people tend to respect someone who is excellent in one field rather than someone who knows a little bit about everything. That is why finding out what you truly like and focusing on that is very important, not just in computer science but in every other field. I was at first struggling to find what I liked because computers are so new to me, and everything seems very interesting. That is why it is very difficult for me to focus on one thing. After exploring, having experienced a lot of different fields, and participating in many different courses that the department offered, it was not until my seminar that I became interested in computer networks and distributed systems. Because the project that I’ve been working on is very much about distributed systems, I have to do a lot of research and read about system design and architecture, which makes me feel intrigued to learn more about it. This technology has a lot of potential and impact on the world, as it helps improve the performance of the system. This helps me identify the career and academic path that I want to focus on, and if possible, I would like to someday do serious research about distributed systems and networks in the near future.

Conclusion

Participating in the Dickinson Computer Science program is one of the most important experiences I’ve had, as it not only helps me improve my technical skills and set up my computer science path but also helps me develop critical thinking skills to help me see the world in a way I’ve never thought of and, from that, accept and learn new ideas in a positive way.