Indiana INTERNnet celebrated internship excellence on February 26, 2019 at the 13th Annual IMPACT Awards Luncheon. Though the event is over, and the winners have been announced, we are continuing to celebrate the nominees’ successes.
These are their stories.
I am currently a freshman at IUPUI pursuing a dual major in computer science and applied mathematics, with an expected graduation in fall 2022. I am still working at Time Compression Strategies, not as an intern but as a part-time software developer. When I am not programming, I enjoy playing board games with my family, soldering electronics, cross-stitch, and drawing.
Indiana INTERNnet: What are you majoring and minoring in? What made you interested in pursuing that?
Bryan McClain: I am a freshman at IUPUI pursuing a dual major in computer science and applied mathematics. I am interested in pursuing this major because I enjoy solving problems and conquering new challenges, and writing code allows me to do this using logical algorithms. I just find logic and math extremely interesting.
IIN: Describe your internship experience with Time Compression Strategies. What were your favorite aspects?
IIN: What was the most challenging project you were assigned?
BM: The most challenging project I was assigned was to develop a SQL translator for our proprietary database query language named TQL.
IIN: Describe this project you helped the team develop. Did you encounter any obstacles?
BM: For developing the SQL to TQL translator, I was responsible for writing a cross-platform shared library in C++ using the Ancelus database API. The biggest obstacle was understanding and implementing joins in our translator. In Ancelus, joins are stored as a foreign key and a list of foreign keys (called a key list) which is automatically updated when a foreign key is set. This means that join queries can run extremely fast, as you merely need to traverse the list. However, it also means that a SQL join statement needs to be converted into a sequence of steps through foreign keys or key lists. Eventually, I realized that I can represent joins as a graph of key nodes connected by foreign keys or key lists as edges. This breakthrough helped me figure out the underlying algorithm for the entire translator.
I ran into several obstacles with trying to understand the design of all classes and interactions between the classes. Trying to follow good design patterns, I went through several design iterations and implementations before settling on the current version of the design. Going through and understanding how different design patterns can be applied in my project gave me a deeper understanding of software systems as a whole.
IIN: How many internships have you completed? Could you describe the benefits you’ve gained from these experiences?
BM: This was my first internship, and my understanding of computer science has skyrocketed because of it.
IIN: Was this your first internship? Why did you choose to complete an internship?
BM: This was my first internship. I chose to complete an internship to gain a deeper understanding of computer science and to improve my programming skills. Through this internship, I have achieved these goals and exceeded my own expectations.
IIN: What are your future plans and career goals?
BM: After college, I hope to continue pursuing a career in software development. From this internship, I have found that I really enjoy designing complex software systems, as opposed to simply churning out code when maintaining web applications. I hope to spend my career developing APIs and inventing different ways to solve new and interesting problems.
IIN: How has your IMPACT Awards nomination impacted your life?
BM: My nomination for the IMPACT Awards has made me more aware of the value and impact of my internship experience.
IIN: Why are internships important?
BM: Internships are important because they provide a hands-on learning experience that cannot be gained in the classroom. For me, working in the industry and learning about designing real software systems has taught me about the complexities and nuances of a software development career. I have learned to invent solutions to previously unsolved problems by applying my skills with data structures and design patterns. In any industry, experiences like these teach invaluable skills that will greatly prepare one for the future after school.