Countdown to Graduation (Capstone Project Kickoff)
Intro
Two days ago, Winter quarter 2024 began, breaking me out of a relaxed daily routine that I had picked up during the holiday season. As I get ready for my final class at OSU - the capstone project - I feel hopeful, invigorated, and mildly anxious, mostly due to my uncertain prospect of landing a good job and my fast approaching graduation date. In the past few days, I’ve been taking care of the usual start-of-quarter tasks: reading the syllabus, taking surveys, and writing self-introductions such as the one that you’re reading right now.
Career
Happening in parallel to my school responsibilities are all of the tasks and events associated with a job search: resume tuning, networking, technical assessments, interviews. I’ve been mostly applying to jobs in software development, data analytics, and anything that demands data literacy and technical acumen. The ideal job for me is one that will allow me to combine my knowledge of computer science, economics, and statistics in a novel way to solve interesting problems in areas like e-commerce and supply chain management. But that’s more a wishlist than a checklist, and I won’t let perfect get in the way of good enough.
What I Got From OSU
Although the future is uncertain, I can conclusively say that the past two years I spent studying computer science at OSU was one of the most enriching periods of my life. The structure of the program helped me develop computational problem solving skills, while the flexibility of the program gave me the freedom to travel domestically and internationally - something that I didn’t have time for when I was working full-time. After we start working full-time, we rarely get the chance to take a step back from work and other responbilities to reevaluate the trajectory that we’re on. I got a chance to temporarily retreat into the warm embrace of academia, and for that I am grateful. With a more relaxed schedule, I freely explored “unproductive” activities like skating, drawing, and learning for the sake of learning. Now I am about to enter the workforce again with a newfound clarity about my professional aspirations.
Unexpected Encounter with Dijkstra’s Algorithm
Looking back, what got me started with computer science was Dijkstra’s algorithm. My first encounter with Dijkstra’s algorithm was not in Discrete Math or Analysis of Algorithms, it was in a supply chain management certificate program on edX; I signed up for that certificate program in 2021 to upskill as a supply chain manager. The idea of algorithmically searching for a shortest path in a supply chain network, which has applications in vehicle routing, was first introduced to me in a lesson on supply chain analytics. Since supply chain networks can be represented by nodes and edges, Dijkstra’s algorithm emerged as a natural solution to finding the minimum cost path. As a part of the homework for that lesson, I had to arduously run Dijkstra’s algorithm by pen and paper to find the optimal solution to some airplane routing problem. I made a cursory attempt at implementing the algorithm, first in Excel, then in Python, but I didn’t even have enough knowledge of data structures to effectively represent the graph. It was at that moment that I got the idea to pursue formal education in computer science.
Favorite Technologies
My favorite technologies are SQL and R. I like the declarative nature of SQL; it’s nice to be able to just ask for data and not have to worry about how the data should be retrieved. I enjoy exploring datasets and making beautiful data visualizations, both tasks that R excels at (this reminded me that Excel also excels at those tasks).
Here’s an example of one of my favorite features from R. The |>
pipe operator allows you to pipe output from one function into another function. It’s a great way to keep your source code readable while applying many transformations on the same dataset.
Without using the pipe operator, we need to nest functions calls inside of function calls to apply a sequence of transformations on the dataset.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# Citation for the following code snippet
# Title: R for Data Science
# Authors: Hadley Wickham, Mine Cetinkaya-Rundel, Garrett Grolemund
# URL: https://r4ds.hadley.nz/data-transform
arrange(
select(
mutate(
filter(
flights,
dest == "IAH"
),
speed = distance / air_time * 60
),
year:day, dep_time, carrier, flight, speed
),
desc(speed)
)
With the pipe operator, we can manipulate the data, then hand it off to the next function.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# Citation for the following code snippet
# Title: R for Data Science
# Authors: Hadley Wickham, Mine Cetinkaya-Rundel, Garrett Grolemund
# URL: https://r4ds.hadley.nz/data-transform
flights |>
filter(dest == "IAH") |>
mutate(speed = distance / air_time * 60) |>
select(year:day, dep_time, carrier, flight, speed) |>
arrange(desc(speed))
#> # A tibble: 7,198 × 7
#> year month day dep_time carrier flight speed
#> <int> <int> <int> <int> <chr> <int> <dbl>
#> 1 2013 7 9 707 UA 226 522.
#> 2 2013 8 27 1850 UA 1128 521.
#> 3 2013 8 28 902 UA 1711 519.
#> 4 2013 8 28 2122 UA 1022 519.
#> 5 2013 6 11 1628 UA 1178 515.
#> 6 2013 8 27 1017 UA 333 515.
#> # ℹ 7,192 more rows
Some new technologies that I’ve been experimenting with are Ruby on Rails and Go. I haven’t really built anything serious with Rails yet, because that framework is best reserved for fullstack development, and I don’t have a fullstack app idea at this moment. The opinionated nature of Rails taught me a lot about the Model-View-Controller design pattern - you really can’t get away from MVC when building a Rails app. Go is the first modern statically typed language I learned, and I’ve been using Go to write a small command-line program that converts CSV files into Markdown tables. Go has excellent language support like code completion, syntax highlighting, static analysis, etc. and my development experience so far has been great.