Você está na página 1de 2

Iowa State University has provided me with a diverse curriculum with their Computer

Engineering degree program. I have been able to attend courses concentrating on electrical
engineering, software engineering, and everywhere in between. Technical electives have also
allowed me to explore courses focusing on alternative topics such as computer science. Due to
this variety in the curriculum I have gained many skills and been exposed to many tools
throughout my time at Iowa State. One such skill is understanding, utilizing, and editing code
from other developers and a couple tools are GDB and Valgrind.

In numerous courses it has been necessary to use someone else’s code in order to
derive a solution to the problem. An example class is COMS 327. In COMS 327 you are given the
instructor’s code base for parts of a turn-based Rougelike game and are tasked with extending
the game with different features. In order to add features, like attacking and taking damage,
you must have a complete view of the various data structures and methods for interacting with
those data structures. Without a solid understanding the code you write will most likely be
buggy and/or duplicate logic that has already been written for you. Another class where this
skill was essential was CPRE 308. We were given code for a printer-server that we needed to
add multi-threaded producer and consumer components to in order to improve throughput. It
would have been very easy to mess up the clean-up of the threads if you did not have a grasp
on the overall logic sequence of the program.

Indispensable skills that I have learned at Iowa State are the usage of GDB and Valgrind.
GDB is a debugger for C, C++, and several other programming languages. Valgrind is a tool for
memory debugging and profiling. These tools are very powerful when used in conjunction. GDB
can be used to trace back errors of logic and memory accession while Valgrind helps ensure
appropriate memory usage. When working in low-level languages, such as C, the programmer is
responsible for managing their memory due to the absence of ‘garbage collection’; therefore, it
is very easy to introduce memory leaks into your program. For example, take code allocating
memory without deallocating later inside a large loop. This is a recipe for massive memory
leaks.
The skills and tools that I have learned during my time at Iowa State have led to an
increased excitement for and a heightened ability to complete personal projects outside of
course work. One such example is a program that I wrote as a potential improvement over the
Snipping Tool. At the time of writing the program I had very little experience in programming
and the structure of the program was quite poor. I recently went back to that program and
rebuilt it from the ground up using learned programming principles and it has resulted in a
much cleaner program that did not take nearly as long to write as the first one. It is very
fulfilling to be able to apply the concepts that I have learned from classes. Another way that I
have pursued learning outside of the classroom is by joining the Linux club. Before starting in
the Computer Engineering curriculum I barely knew what Linux was. Since going through
courses that utilized Linux I have become much warmer to the idea of using the operating
system and wanted to expand my knowledge on its inner workings.

In conclusion, I have enjoyed my time at Iowa State and appreciate the opportunity to
be exposed to different skills and tools that have been provided by the Computer Engineering
curriculum. These skills and tools have allowed for higher quality work and an increased
excitement in the projects I work on both in and outside of the classroom.

Você também pode gostar