media/2/264/files/Objective B- Reflection

advertisement
Jason Rypkema
Objective B Reflection
B. Students will make effective use of abstraction and inductive reasoning as key characteristics
of the language and structure of mathematics and abstract data types in object-oriented
programming. Through the study of more than one computer modeling language, students will
distinguish between syntax (the concrete) and semantics (the abstract).
Computer Science Exam #1
Computer Science Exam #3
Abstract Algebra Group Project GAP Programming
Computer Science Project #2 C++
Working with programming while at the University of Sioux Falls has been something
that has been a real struggle for me. It is something that I am not very good at, and I struggle to
understand. This has been shown through my four years at the USF. I have went from just
barely getting the grade I need to pass, to failing, and then to getting an A-. While grades are
not everything when studying a subject, they are a way that you are judged to see how well you
understand the material. I have definitely learned a lot through my time here, and I think my
rise in grades reflect that. I also have a long ways to go, before I can consider myself good at
programming.
My first experience with object-oriented programming came in COM 201 my sophomore
year of college. I did not know much about programming, and after the first few classes I did
not like much of programming either. It was a hard subject to grasp and I could not wrap my
brain around it. When I started to get bad grades I got even more discouraged, and while I kept
trying hard no matter what I did, it did not help. My first artifact shows exam #1. I got an F on it.
This was something I was not use to. I never struggled like this before in any of my classes. This
first test consisted a lot on writing different bits of code. This test fits the first part of the
objective, which states: “Students will make effective use of abstraction and inductive
reasoning as key characteristics of the language and structure of mathematics and abstract data
types in object-oriented programming.” This test had me use many different types of reasoning
to figure out what code to write and how it should be written. The code on this test that was
supposed to be used was C#. I pretty much failed on all accounts. I could not reason through
the test. I could not think abstractly or inductively about any of the test. I did not understand
the language, and had no structure to anything I wrote down. It was clear that at this point I
had not succeeded in this objective.
After a semester of just getting by, I ended up failing the second semester of the course
and had to retake it. The second time went much better. While I was still struggling to
understand concepts and how to reason through code, I was getting much better at it. This
exam #3 shows my progress. I went from getting an F to getting an A on this test. I was very
happy with this accomplishment, and it really showed that my hard work was starting to pay
off. This test focused on the language C++, and it contained a lot of object-oriented
programming. I was asked to write different classes and functions, and I could do everything
asked of me. After this test I grew in my confidence, and it showed that I had also grown in my
ability to program.
The second part of this objective asks how I was capable to learn how to distinguish
between syntax and semantics. There have been a couple of different tasks that I had to
complete throughout my four years which really show my ability to accomplish this objective. I
feel the second part of this objective is something that can be hard to do. Especially the
semantics part of it. To truly understand the code and get the meaning of the code correct can
be difficult.
The first artifact that I have comes from the group project that I helped complete during
Abstract Algebra. It was my job, with others, to look through the GAP code that had previously
been written, and first, understand it and then, either fix mistakes in it or add new things that
would make it faster. The first thing that we started with was understanding what happen
when people typed in a number of a group. The program went through and then would find
different things about the group such as Frattini depth of the group. While trying to understand
what was going on, it was easier to see that the syntax was correct, but the semantics of the
code were harder to work with. Even if we did not understand the code completely we could
tell if it was written correctly, but when trying to figure out what the code was doing, which
was a whole new challenge. The meaning of this code had to be figured out before we could do
anything to it. This took a long time and was very challenging, but being able to figure out what
the code meant was a good skill to try to improve. Understanding meaning was something that
has always been hard for me when working with programming, so to be able to look through
this code and understand what it was doing was a big accomplishment. It definitely helped to
have others there to bounce ideas off of through this process, and while this was happening I
learned a lot about syntax and semantics. While I learned a lot working on this project I was
definitely far from being an expert in this second part of the objective.
The next experience I had with syntax and semantics was all through computer science.
The artifact I chose to show my experience with this objective is a project I had to complete for
the course. This project was in the language C++, and I had to write a program that would
output the Fibonacci sequence. The first step in the process of writing this program was figuring
out how the Fibonacci sequence worked, and then try to replicate that in the program. During
this project the writing of the syntax was not too difficult, but to try to understand the meaning
of what needed to be done was a real challenge. In the end, I was able to succeed at this
project, but it took much time and was very difficult. It really helped me grow in my
understanding of being able to understand how an equation or sequence works and then be
able to write a program that could do it. After this project I felt I understood the difference
between syntax and semantics, but I still struggled with using both of them.
In the end, this objective is something that I have come far in but still need a lot of work
in to become better. I would like to be able to write programs on my own quicker and more
efficient, and I am not to that point yet. So while I feel that I have completed this objective, I
have not mastery it.
Download