CSE 373 final Blog Post
Ian Lu 3/13/2022
How has my understanding of CS changed?
Design or Implement:
In CSE 163, Intermediate Data programming, me and my friends built a simple Car accident and prediction model in python for the final project. Accident Analyzer is a project that takes in a U.S. car accident dataset and compiles figures that highlight noticeable trends. In the project, we used several basic data analysis techniques on a raw dataset we downloaded from Kaggle, including machine learning and mathematical packages including Sklearn, Scipy, plotting packages including Seaborn, and Matplotlib.
In terms of the Design and implementation process, CSE 373 taught me many new techniques to keep the files more organized, including writing comprehensive code comments and using file trees. In the project, we created the files without implementing the relationship between them, which resulted in inefficient file search. This car-model-training project had mainly two portions: the graphing portion and the machine learning(model training) portion. Without effective project design, we simply just created two gigantic files that handle everything. When we first tackled the project, we did not have a clearly defined design or implementation method when putting the codes down. After taking CSE 373, I learned that completing the specifications is not the only goal, finding a clearer and more optimized way to implement your code should always be in my mind.
Additionally, in all the projects(Priority Queues, Shortest Paths, etc.) we did in CSE 373, we referred to external code provided to us and added our own twists to fit our needs better. In the case of the Car-Prediction-Model project, This inspired me to play around with the Seaborn and Matplotlib libraries, even more, to better fit our goals. For example, we can find more suitable graph types to represent the trends between road factors and car accidents instead of just re-using demos provided by the documentation.
Analyze or compare:
In the project, we lacked the mindset of considering the runtime analysis and affordance analysis. CSE 373 taught me to program with a critical mindset instead of copy-pasting documentation. For example, now I understand that there will be a large difference between a chunk of my code runs O(N²) versus O(LogN). Now I can further break down my code and research what the runtime of the “zipping” action between two datasets is. More importantly, I can use the runtime analysis skills I obtained to find more suitable and “faster” code chunks to be included in my future projects. Again, I should not focus on merely finishing up the project, instead, I should always optimize and improve the performance of my code.
In addition to the technical sides, I also learned affordance analysis throughout this course. I learned to view the functionality of my code in a larger picture. For example, the car-accident-prediction model can afford the prediction of which car model might have the highest possibility of getting involved in a car accident. By doing affordance analysis, I am more focused on what I am trying to achieve with my project. Moreover, Affordance analysis taught me to put the abstraction of my project into external contexts(social, economic, and political).
Critique and connect:
The Critique and connect portion taught me to keep a humble and diligent attitude and a critical mindset when programming. In the project “Shortest Paths”, we criticized the inappropriate usages of seam carving and image editing, including Deepfake technology. In the Accident Analyzer project, I should think about how the prediction model will change our lives. People might target the result models “generated” from the Machine learning model and “abuse” that data by creating inappropriate harassment of that Vehicle company. Because Machine Learning Models are trained with raw data, which means that it can be highly biased based on the input data. In the future, I need to think more than twice before I start implementing my code.
What part of the course most changed you?
Among the parts I talked about earlier, I think the critique and connect portion changed me the most. This class taught me to think ethically and made computer science more relatable. Before, I assumed computer science is simply about just writing code and maybe implementing some features. Now I realized that computer science is not just about writing lines and lines of code. The most intriguing part of programming is the potential impact it can have on the general public.
It empowered me to do something greater because I became more thoughtful and mindful of my “programming” actions. I am able to evaluate my decisions in the vast computer science world. Starting from choosing what sorting algorithm to use to what kind of a start-up I want to do.
On the technical side, The runtime analysis portion changed me the most. I used to just care about whether or not a method or a statement works. Now I care more about how and why it worked or failed. I used to think failure is the end of the world, but now I am able to drain knowledge from failure. It became fun for me to twist my implementations with different runtimes. Moreover, I was able to find my interests in breaking a large project up into smaller and smaller pieces(decomposition), doing runtime analysis, and connecting all the pieces back together.
I am most proud of keep being passionate about data structures and algorithms throughout the quarter. The whole CSE 373 course did not make me feel I was forced to squeeze the topics in my head. I feel very proud to find what most people might think “dull and boring” intriguing. Moreover, I am also very proud to maintain a great relationship with my past teammates in the class after the projects were finished.
Starting Summer of 2021, I became highly interested in Education technology. In the future, I want to create more accessible online environments for everyone to feel comfortable learning and sharing information. Over time, finding a more efficient and accessible way to obtain knowledge for everyone became my lifetime goal. I then co-founded Polymath-Edu, a start-up with a pre-launching short-video and blog-based platform where everyone can share educational content and experience freely. I wanted to create a platform where everyone is comfortable sharing information regardless of their backgrounds. After taking CSE 373, I did not only gain technical knowledge including trees, graphs that are helpful with searching and sorting, but also soft skills including affordance analysis, team build-ups. As a result, I want to use the skills I learned in this class to further develop Polymath my technical and non-technical skills. I understand the process of developing a full-stack large-scale application will be a pain, but I am ready for it.