plant facing to the left

How Taking Data Structures & Algorithms Has Changed Me

plant facing to the right
How has your understanding of CS changed?

My understanding of computer science has changed dramatically. Before, the only goal I had when starting an assignment was finishing it and implementing it “correctly.” My thoughts were one dimensional, and I thought there was only one correct way to solve the problems presented to me. However, my mindset with coding changed after taking CSE 373. The course has taught me not only how to design and implement, but also how to analyze, compare, critique and connect different data structures and algorithms. In the class projects, I have learned how to apply my knowledge to six different applications: search suggestions and DNA indexing; content moderation and shortest paths; seam carving and navigation directions. After everything I have learned, looking back at assignments I had during CSE 142 and CSE 143 has made me realize that my understanding of code has changed across many different dimensions. In an assignment I completed during CSE 142, called Rocketship, I implemented a program that produced various outputs in the shape of a rocketship. Back when I was trying to complete the assignment, my only mindset was how to implement it correctly. I was not even thinking about analyzing or connecting what I had made to the real world. Now, after taking the data structures and algorithms class, CSE 373, my understanding of this assignment has changed. I now recognize there are many ways to design and implement a specification. For Rocketship specifically, there could have been multiple different approaches I could have taken for this assignment. Instead of separating everything into different methods, I could also have combined some methods, since I ended up calling those methods multiple times inside the main method in the same order. Before I learned anything about data structures and algorithms, I never analyzed or compared my code. Now that I have taken CSE 373, I know that I can analyze the code I implemented in Rocketship. For instance, I can make an asymptotic analysis, where I can find the fastest or worst case runtime of my code through Big O or Theta notation. Another way I can analyze my code is by making an affordance analysis from my code, which is measuring how the outcome of the Rocketship code could impact society. On a related note, before I learned about data structures and algorithms I had never connected or critiqued my code to the rest of the world. Now that I have taken this class, I can look back at my Rocketship assignment and recognize how my work can be related to implementations from other people in the world, for instance, projects that implement coding shapes for purposes like art.

What part of the course most changed you?

The concept that is most meaningful to me in this course is that it is okay to ask for help. Even though this is not a concept that is part of the data structure and algorithm course information, it is a concept that has been repeated throughout the course by the professor and teacher assistants. Learning that asking for help is not shameful is really meaningful to me personally because when I first entered this class I was extremely intimidated by the new data structure and algorithm concepts. Most of all, however, I was scared to code. My start in the tech field was rough and I felt that I had a bad foundation in coding, but I quickly learned from this class that there is nothing wrong with getting help. I remember when I first visited office hours. Even though it was on Zoom, I was sweating. Despite my nervousness, the TA ended up being really nice, and I left that Zoom meeting feeling more confident than before. I realized that visiting office hours consistently and asking the TAs for help allowed me to understand the course concepts much better than on my own, and made the coding projects less intimidating than at first glance. I started growing more confident in myself and attending office hours all the time, which I believe has been a huge reason for my success in this course. Before I took this class, I was insecure and unconfident in my ability to succeed in my aspirations. Even though I am still working on my confidence, the experience I had in this class has made me grow a lot as a person, and I have the confidence now to not feel embarrassed about being ambitious about my career goals. Besides taking that first step and going to office hours for the first time, what I’m most proud of achieving this quarter was a project where I implemented the code by myself. At that point, I had started to get more comfortable with my ability to learn the concepts in this course, but coding still scared me. I still did not give up and went to office hours almost everyday while working on that project, and with the support of my TAs, I was able to figure out how to implement many parts of the code on my own!

What's Next?

After this class, my plans are to work on a personal project. I haven’t worked out all of the details yet of what my project will be exactly, but I plan to make a form of a dog collar with a talking feature. I was inspired by the movie Up, where the dogs had collars that allowed them to speak. Although I don’t think I can translate dog language through code (yet), the movie has given me the idea to create a dog collar that could be specifically made for service dogs to help their owners if they are blind. The collar could have a talking feature, much like Siri or GPS, that could aid their owners. As I am still in the planning and research process of this project, I am not sure yet if I want the talking feature to only be for telling the owners the location they and their dog are headed, or if the feature should be for telling the owners the actions the dog is doing.