Cumulative Reflection

In pursuing my bachelor’s degree in Computer Engineering, Iowa State has helped to better prepare me as an engineer. The courses that I have taken have taught me additional problem solving skills and practical experience though the projects that they have assigned. In order to succeed in my coursework I have developed additional skills. In additional to my coursework, the extracurricular activities and internships I have chosen to partake in have helped to both enhance my understanding of what I’ve learned in class and motivated me to learn additional skills.

Starting from the mathematics and introductory engineering courses I have learned about formulating and solving engineering problems. An important strategy for solving engineering problems is identifying relevant and necessary information to solve the problem, since more information than needed or not enough information could be provided. This is a skill that was repeatedly taught in mathematics courses and how real-life engineering problems differ is that sometimes all the information is not provided and must instead be found. In my experience doing technical interviews I have learned that this is one of the most essential skills for solving a technical problem because usually the questions asked are less specific than they could be and the interview is often expecting clarifying questions to be asked.

In the courses I have taken I’ve also learned several valuable skills because I’ve been given the opportunity to work on group projects. In Software Development Practices (CS309) I enhanced many of my skills including effectively working on a team, agile project management, and SVN version control. In that class I worked on a application that used a commercial electroencephalogram (EEG) to navigate through a maze using thoughts. In order to effectively use our time, I worked with my team to split up the project into manageable tasks and sections so that each member had something that they could work on at all times and we could effectively complete the project. In the Embedded Systems (CS288) course I had further experience working on a team and also got experience using  SVN version control to develop software to enable us to navigate through an obstacle course using only the sensors on our robot to guide use. In the project focused classes, I learned about software design patterns and how to plan and create a design document to effectively solve engineering problems through thoroughly defining the deliverables and functionality of the final application.

In order to prepare my to understand professional and ethical responsibilities, I have studied ethics in engineering in my coursework. I have learned about IEEE code of ethics which states that it is engineer’s responsibility to “protect the safety, health, and welfare of the public and speak out against abuses in those areas affecting the public interest.” I have studied the Ford Pinto incident, where a design flaw due to the location of the fuel tank would cause some cars to explode on collision that was not revealed to the public. Ford engineers had previously noted that the location of the aft-of-axle fuel tanks posed a safety hazard. However, the impact of notifying and recalling the cars on the business was deemed greater than keeping the public uninformed and thus endangering the lives of owners of these cars. This incident was a clear safety concern that was identified in production, however in another case bad software maintenance and quality led to the problem. In the Therac-25 incident, a machine that delivered radiation therapy resulted in radiation overdose of several patients. Complaints were not taken seriously due to overconfidence and the system did not display meaningful error messages and user manual did not explain them causing users to override and continue.There were three cases where a patient died of overdose due to this incident.

In addition to discussing these ethical and professional responsibilities, Iowa State University has taught me about good code maintenance in the Software Evolution and Maintenance (CS416). I learned about tools for software maintenance such as FindBugs as well as the process of static analysis. I also learned a more formal approach to finding bugs to further understand the intuitive approach that I have developed through practice.

In order to succeed in my courses I have learned to take advantage of my resources. For a number of my classes, I was able to identify an overlap in the topic and learned to use this to my advantage. For example, when i learned about garbage collection In the Fundamentals of Programming Languages (CS342) and Advanced Programming Techniques (CS229) I uses the lectures and slides from both classes to gain a more thorough understanding of the topic. Additionally, I enhanced my skill of “google”-ing examples and similar problems to better understand concepts that I was not clear on.

In addition to the courses I took, I chose to participate in activities that would further my learning. I have come to understand that learning experiences are not limited to the classroom and was motivated to participate in many different things. I participated in the ACM Programming Contest to practice and further my knowledge of advanced algorithms such as graph traversals. Additionally I started working as a Teaching Assistant (TA) for Intro to Data Structures (CS228) to strengthen and enhance my understanding of data structures since teaching is one of the best ways to learn. Finally, I also worked at the Virtual Reality and Application Center (VRAC) and practiced learning on my own without the structure of a formal course. The internships that I have taken have also given me a practical application of my skills as well as taught me additional topics such as test-driven development and how to navigate large code bases.
Were I to do my undergraduate work again there are few things that I would change. Since I know my interests better I would have chosen to stick with a have changed the clubs that I looked at and joined. I do not regret how I chose my classes because the way I chose them was largely based off of what I wanted to learn foremost and then trying to fit it into my course plan. This strategy has worked well for me because I was motivated to succeed in the classes that I chose and the skills that I have learned have better prepared me for what I want to do in the future although I did not follow my original four-year plan. Finally, I would have transferred to a different section of my English 314 course because I did not feel like the section I was in enhanced my technical communication skills although there was a lot of potential.

Comments are closed.