Siemens Digital Industries Software It has been a joy to be a software engineering co-op student here since the end of my Freshman year. I’ve met some great people, and learned a lot about the industry application of my studies. Here’s a review of the variety of different project that I’ve worked on over the past 3 years, 3 development teams, and 6 semesters.
During my last semester, I was transitioned to working fully remote. I spent much of my time researching application of more physics engines, something I was familiar with from previous semesters. This branched into researching more machine learning focused development, and as the first version of Unity ML Agents was released, I was tasked to put it to use. This took the form of developing and training an ML model that would use visual learning to create an offset color for high contrast objects to be more easily manipulated on augmented reality devices.
Technical skills used: C#, Python, Unity (ML Agents)
This past semester was a continuation of my work on the Advanced Solutions team. Jumping right back in, I was able to complete a functional prototype of NVIDIA FleX particle-based fluid simulation in VR. Realtime loaded physics models would interact with fluid in a way that was very visually appealing, as well as seemingly accurate. More time was put into using game engines as a source of realtime VFX, and I started working with Unreal Engine 4 with NVIDIA GameWorks. It has a library called NVIDIA Turbulence, which I enabled functionality to create a VR wind tunnel with a few hundred thousand air particles. Around the midpoint of the semester, I began learning about and working to implement Snorkel Weak Supervision Machine Learning. The aim was to use Snorkel’s ability to create labeling functions to intelligently label data without a very large amount of user marked data.
Technical skills used: C#, Unity, Python, UE4, Snorkel Weak Supervision Machine Learning
I transferred into the Advanced Solutions team at Siemens Software. I got the chance to pick what I was working on within the team, and I chose to work on the virtual and augmented reality development position. The main project that I took on during the semester was to implement physics engines into the existing project that had none before. This was done in the Unity Game Engine. It was very cool to have such a big impact on this project, because of the small size of the project and team that was working on it.
Technical skills used: C#, Unity, BulletPhysics Engine, Python, SteamVR
Working into my first complete year of coop, I continued working on the Lattice feature, however with a different goal in mind. Much of the early stage development had already been done, but there were still some improvements to be made. Much of the semester was spent testing and implementing an adaptive algorithm that saved a lot of time during the generation of the structure. The lattice structures were very high resolution; however, the scale of the model made the accuracy irrelevant. The scaling down changed render time from many minutes down to a few seconds. Finding the optimal balance between time and quality between many controlling variables was an important stage within the final product.
Technical skills used: C++, Python, VBA, 3D Printing
My second semester I transferred into the Siemens NX Modeling Team. I began work getting used to the pre-existing code, as well as the much larger framework that had been in existence for most of my lifetime. I was tasked with development on the Lattice feature, where modeled parts could be filled in with lattice of that would maintain structural rigidity while saving a significant amount of material. As the saying goes “Anyone can build a bridge. But only an engineer can build a bridge that barely stands.” It is very cool to work on a product that will be used by many thousands of people, and potentially make a pretty large difference.
Technical skills used: C++, Python, 3D Printing
During my first semester working on co-op, I started out working on a team with 6 other co-op students on a web automation testing suite. This included recording tests, playing back and recording any changes that occurred that were unexpected relative to when the test was recorded. Analytics for regressions could be analyzed to determine problems and reduce man hours spent testing and verifying functionality.