For my practicum project, I completed a summer internship at GAMS Development Corporation. GAMS Development Corporation is a software company in Virginia which produces linear modelling software. My supervisor there was Adam Christiansen who worked on, among many other things, developing a Python package for the software. I found this internship from having used the software before. I knew the company was in Virginia, not too far from where I lived and so while I was applying for internships over the summer, I sent an email asking expressing interest in an internship. I received an email back asking for a Zoom interview, and before long, I was hired. My advice for any freshmen looking for a Practicum like this is to really just apply wherever you can because it can't hurt to apply to too many places.
At GAMS Development Corporation, I worked on developing a Python package for the software. The Python package allows users to basically formulate, run and interface with GAMS models within Python. GAMS is a linear modelling software so similar to MATLAB, a linear programming software, data is stored in matrices. The matrices for linear models can sometimes have hundreds of thousands of columns, so it becomes very important to do this work efficiently. My work basically involved writing functions to manipulate these matrices.
This internship was my first experience in working with code for a professional setting. In my computer science coursework, the code I wrote was submitted only for a grade. I knew what kinds of things my professors wanted to see but I didn't know what kinds of things my bosses would want to see. It turns out there was quite a bit of overlap: they both want code which is readable and contains large numbers of comments. They also want to see that the code has been tested and runs quickly. However, my bosses wanted code that handled every single kind of input from the users, no matter how ridiculous it may seem. The code had to run no matter what the input sequence might be and it had produce nicely formatted errors if it wasn't possible to generate an output.
Working in a place like this, I've learned a lot about the interaction between science and society. The kinds of people that use GAMS are trying to answer very specific questions that can only be answered by a linear model. One type of question I thought was really interesting involved power grids, like the one we have in the state of Maryland: what would be the most cost beneficial place to install a new power plant? To solve this question in GAMS, you would need to input a very large spreadsheet containing the cost of transporting energy between different locations, the real estate cost, etc. and then formulate the question using an equation saying you would like to minimize the cost by installing a new power plant. The matrix operations that GAMS would use to generate an answer are essentially covered in MATH240 or MATH461, classes that all computer science and electrical engineering undergraduate students need to take. However, seeing the math applied to problems that are very practical and interesting to think about was a really rewarding experience.
I think that working at GAMS and seeing how the classes I've taken in my time at college can be applied to the real world has changed my future plans. I don't think that I need to be in academia to get a rewarding experience from applying my knowledge. It is comforting to know that there are places like this which I can be part of something that's useful to society.