At the beginning of my CSC290 journey, I introduced myself as an Ambivert. An ambivert that wanted to benefit from both qualities of introversion and extroversion. I told myself that there was only one goal in mind that I wanted to achieve before finishing the course. This was to travel the roads untraveled.
I still remember the first day when we were all introduced to our group members for the project. Everyone was shy, and no one really wanted to take a leadership role on the team. I found the atmosphere to be tense at first, as it was evident that none of us were used to the situation presented to us. Nonetheless, I really wanted to achieve a good mark in the course, so I took the opportunity by opening up and taking the leadership role. I used humor to ease the tension surrounding the environment, and eventually everyone else started to become comfortable as well.
Unluckily for us, we were the last group to choose our video game concept, and thus our top 5 ideas were all already taken by other groups. We decided to base our game around the board game Othello, which none of us heard of before. I was really disappointed about the result, but the group maintained an uplifting atmosphere. The team really helped me cope with the outcome of the situation.
I was responsible for making the board class in the game, alongside any methods that would be considered useful to the board. A decision was made to represent the board as a list of lists, as I believed this was the easiest implementation for everyone to work with. Additionally, methods such as returning the value of a single tile on the board, as well as finding all valid moves on the board, were some examples of code that was worked on for the board class.
The group was doing great, everyone had their code to work on, everyone was being helpful to each other, and the vibe was very encouraging and positive. This was until we got introduced to the project repository. Unfortunately, only one member in our group had previous experience working with GitHub, and it was obvious to see by our messy repository with over 150 commits. There was constant stress about who's committing what, what variable names should be used, and how we should link the code together so that it would work. The structure of our repository came to a point where communicating online was not sufficient enough. Weekly meetings had to be held in person in order for the group to be successful.
As a result, our group was in constant communication with each other, whether it was online or in person, talking about project details or just for fun! It was definitely stressful at times, but I could not have asked for a better group to work with. We all had our strengths and weaknesses, and we all had our differing levels of introversion and extroversion. Even with all our differences, the group came together to create a video game that was remarkable.
In the end, I am super satisfied with the course. I traveled roads that I was too afraid to travel in the past, and I had wonderful support from my group members to push me down this path. Although the course is coming to an end, I gained 4 new friends, and I couldn't be more content with my group. Special shout-out to team Zeros_Matter, you guys rock!
Sunday, 31 March 2019
Sunday, 24 February 2019
Recursive Recurring Recursion
Oh no, here we go again. It seems like recursion is a topic where you first must understand recursion to understand recursion. Jokes aside, we have all encountered recursion at some point. For some people, it was crystal clear to understand, for others, not so much. When I was first introduced to recursion in high school, I was told the same as most others:
It appeared as if teaching to trace recursion and discussing about the role of the call stack was primarily disregarded. These same steps were repeated in university, and I was confused because I did not have a good understanding of how the computer reads recursive code. Nevertheless, this seemed like a perfect learning opportunity, and no method of learning is better than trying to explain the concept to someone else!
Let's start by taking a random function f(N), and let this function have a recursive call in it. In python, we have a separate call stack on the side that tracks each call to this function. Afterwards, the function will break down into smaller sub-problems, until the problem cannot be broken down anymore. During this process, each call to the function is pushed into the call stack.
Once the broken down function has reached the base case, each function call is popped from the call stack until the size of the stack is zero. Each time a function call is popped, its result is obtained with the information from all the previous function calls. Lastly, when there are no function calls left in the call stack, the function returns the result of the last function call in the call stack.
Sounds confusing, right? Let's take a look at a popular example, the factorial of a number. Now, constructing the code is easy. It looks something like this.
Again, let us take the function factorial(N), as well as a call stack. factorial(N)will break the problem down to smaller function calls, and these function calls will be pushed in the call stack. This is done until a function call has reached the base case.
Going back to our call stack, we now pop each item from the stack, and storing the output alongside it. The item on top of the stack will always be the base case. Furthermore, this value is stored, and then we pop the next item in the stack. This is now f(n + 1) or f(2) in this case, which is equivalent to 2 * f(1). Since we already know that f(1) = 1, we now have enough information to solve f(2) = 2 * f(1) = 2 * 1 = 2. Now it is know what f(1) and f(2) is. With this information, we can now solve
f(3) = 3 * f(2) = 3 * 2 * f(1) = 3*2*1 = 6. This repeating process can be done all the way to the original problem f(N), which will produce the answer. Let's take f(5) as an example, then the recursion will be as follows.
In summary, the answer is always returned by smaller sub-problems. Having a good understanding of the importance of the call stack, as well as the breaking down of problems, is crucial for a better understanding in tracing recursion.
- Find the base case
- Recursive Step
- Trust your code
It appeared as if teaching to trace recursion and discussing about the role of the call stack was primarily disregarded. These same steps were repeated in university, and I was confused because I did not have a good understanding of how the computer reads recursive code. Nevertheless, this seemed like a perfect learning opportunity, and no method of learning is better than trying to explain the concept to someone else!
Let's start by taking a random function f(N), and let this function have a recursive call in it. In python, we have a separate call stack on the side that tracks each call to this function. Afterwards, the function will break down into smaller sub-problems, until the problem cannot be broken down anymore. During this process, each call to the function is pushed into the call stack.
Once the broken down function has reached the base case, each function call is popped from the call stack until the size of the stack is zero. Each time a function call is popped, its result is obtained with the information from all the previous function calls. Lastly, when there are no function calls left in the call stack, the function returns the result of the last function call in the call stack.
Sounds confusing, right? Let's take a look at a popular example, the factorial of a number. Now, constructing the code is easy. It looks something like this.
Again, let us take the function factorial(N), as well as a call stack. factorial(N)will break the problem down to smaller function calls, and these function calls will be pushed in the call stack. This is done until a function call has reached the base case.
Going back to our call stack, we now pop each item from the stack, and storing the output alongside it. The item on top of the stack will always be the base case. Furthermore, this value is stored, and then we pop the next item in the stack. This is now f(n + 1) or f(2) in this case, which is equivalent to 2 * f(1). Since we already know that f(1) = 1, we now have enough information to solve f(2) = 2 * f(1) = 2 * 1 = 2. Now it is know what f(1) and f(2) is. With this information, we can now solve
f(3) = 3 * f(2) = 3 * 2 * f(1) = 3*2*1 = 6. This repeating process can be done all the way to the original problem f(N), which will produce the answer. Let's take f(5) as an example, then the recursion will be as follows.
In summary, the answer is always returned by smaller sub-problems. Having a good understanding of the importance of the call stack, as well as the breaking down of problems, is crucial for a better understanding in tracing recursion.
With this understanding in mind, it is easy to see how the computer looks at recursive functions. It is just as easy as explaining to a 5 year old how recursion works! Just explain to a person one year younger than you, and let them explain to a person one year younger then them. Continue this process until you have a 6 year old explaining to a 5 year old!
That's it for me today, i'll see you in a couple of weeks! Bye-Bye!
Sunday, 10 February 2019
The Opinionated Orator
When I think of an excellent public speaker, I think of a person who
informs, persuades, and entertains others with their speeches. Only one person
came to mind, though I was very hesitant to write at first. This was due to their
seemingly never ending controversies, along with their questionable political
views. If you have not guessed already, this person is none other than Donald
J. Trump.
In this post, I will be excluding anything to do with the politics and
controversies of Trump. Instead, I will focus solely on his ability to deliver
speeches, and why I believe Trump is an exceptional orator.
To begin, what speech comes to mind when you hear the name Trump?
For most, it would have to be the "Make America Great Again"
inauguration speech, or the "Build a Wall" presidential campaign
speech. Looking back at the three characteristics that I mentioned above, are
his speeches informative, persuasive, and entertaining?
For many people, the content of most of Trump's speeches are usually
forgotten within days. This is largely because of their sporadic nature and the
lack of an overarching focal point. Trump does not like to stay on one topic,
does not attach anecdotes or meaningful stories, and does not personalize his
speeches to grab the attention of the audience. Then how can Trump be
exceptional at delivering speeches when he neglects most of the fundamentals?
For me, it is his deviation from what is expected that makes him memorable. It
is his unique ability to entertain and persuade others that makes me truly appreciate
his skills as an orator.
Most people will have watched compilations of Trump speaking publicly in
some way, whether he is talking about his business, politics, or personal life.
Trumps body language, as well as his choice of words, makes it entertaining and
memorable for the viewer. Each unique hand gesture is subconsciously conveying
meaning to the audience, making his speech more engaging. His simple, yet
stark, word choice paved the way for memorable phrases such as "Build the
wall" and "Believe Me". Trump is an interesting politician
because ironically, he does not speak like one.
Most importantly however, is his ability to persuade an audience by
verbalizing what they already believe. No speech is more memorable to me than
when Trump spoke in my home country of Poland. He praised the Polish
people for their tenacity in fighting for their freedom. For having courage and
fortitude to fight for what is theirs, even after multiple partitions had
erased them from the world map. With this in mind, he stated that Poland looks
after its people first, and that is what America has strayed away from.
Trump knew about Poland's troubled past, and used this knowledge,
alongside his speaking skills to form a relationship with the Polish community.
He went from an unrecognized face to being praised as highly as St. John Paul
II. Many Polish citizens were putting Trump on the highest of pedestals, praising
him for verbalizing what they already knew. He set out to Poland with one goal
in mind: to persuade the people, and he did exactly that.
To conclude, while Trump is often not the most informative speaker, his
skills in entertaining, as well as persuading is unlike any other public
speaker I have seen before. From being a public laughing stock when he decided to run for office, to proving everyone
wrong and becoming the President of the U.S.A., Trump was able to achieve what
so many thought was impossible. Why? I only see one reason, his public speaking
skills.
Why do you guys think about this opinionated orator? Do you believe
Trump is an exceptional public speaker? Let me know in the comments below. That's
it for me today, I will see you all in a couple of weeks, Bye-Bye!
Sunday, 3 February 2019
Solitary Breakout
What comes to mind when
you hear the words solitary breakout? For me, it symbolizes breaking free from your personal
mental confinements. Ironically, this was also the name of my first major
project in high school.
If you have read my
previous blog post, you would have already known that I was not the most social
person in high school. I liked to do things in isolation as I felt that
collaboration with others caused too many problems. Thus, I avoided group work
until the final project of my grade
12 programming class.
The project was done in
groups of 4 to 5, and
these groups had to create a fully playable video game. Multiple aspects
of project development were
involved, such as pitching, marketing through
poster/video advertisements, game design documentation, prototype
development, and a final gold master release.
Staying true to my high school self, I had a pessimistic view of this project, largely due to the collaborative
nature of it. I knew that I had no choice but to
cooperate with others and, as such, I took this opportunity as a learning experience.
The game engine we used was Unity, as the group
was really interested in working with 3-D models. The premise of our game was an obstacle course not unlike the show Wipeout. The
objective was to lead your character from point A to point B, whilst
avoiding dangerous obstacles along the way.
Our team met twice a
week, often at
one of our houses where a large table could be
setup. A typical meeting could be summarized as
everyone staring at their laptop with two boxes of pizza, Doritos, and
Mountain Dew on the side. I hate to admit that it was a largely painless
and enjoyable time. I was amazed at how much could be
achieved when you put multiple heads together.
As with any project, there were difficult times.
Conflicts occurred, meetings dragged
into the early hours, errors never disappeared, and
lots of compromises were made for the final game. When the product was completed, I was a
bit nervous of how others might react. The
next stage was to let hundreds of our fellow students demo the game!
Yet this moment was perhaps my most memorable
experience in high school. Seeing others react to something you’ve made provides a surreal sense of accomplishment. A lot of people were happy and enjoyed playing the
game, but oddly, the
most interesting reactions were the ones from
people that became angry or frustrated at the game! These reactions were the real
learning experiences for us.
Being part of an
experience like this gave me a rudimentary idea of what it was like to be a video game developer. It showed me a perspective that I was
afraid to explore and discover. It was the moment where I truly realized that
team work makes the dream work.
This is when we come
back to the idea of Solitary Breakout. Before this project, I was stubborn about working and
socializing with others. I think this stagnated my growth as not only a
computer scientist, but as someone who would inevitably need to interact and
work with others. I was putting myself in my
very own solitary confinement. This project made me escape this confinement and
made me realize the importance of others in your personal growth as an
individual. I alone could not have achieved what was done by the group and, to conclude, I was as proud of making our vision become a reality as I was
of achieving my personal solitary breakout.
So, when have you
achieved solitary breakout? Let
me know in the comments below. That's all for me for today, I will see you
all in a couple of weeks, Bye-Bye!
Sunday, 20 January 2019
A Beginners Guide to an Ambivert
Hello wonderful people of the internet, my name is Damian, and I am a self proclaimed ambivert. This was not always the case, as I did not classify myself as such in my earlier years. So then, what is an ambivert? What journey did I take to realize who I am as a person? How did I end up where I am today? Let's find out.
Almost everyone has taken those surveys which classify them as either an introvert or an extrovert. As a result, many people assumed that only one of these traits applied to them. Consequently, I was one of those people.
There were days where I would be in front of the computer screen for hours, fascinated at what could be learned next. Because of this, I used to go home straight after last period almost every day; I wanted to get to my PC at home as soon as possible. Furthermore, I never really talked to anyone about it, mainly because I did not want to. I was perfectly comfortable working and learning alone, there was no problem in it. In short, it came to a point where I would leave through the back exit after class to avoid starting conversations with people. To summarize, I was a weird kid, as I would always magically disappear after school. This is when I started to assume that maybe I was an introvert instead.
Almost everyone has taken those surveys which classify them as either an introvert or an extrovert. As a result, many people assumed that only one of these traits applied to them. Consequently, I was one of those people.
In elementary school I always thought I was an extroverted kid. I laughed at the idea that the word "Damian" and "Introvert" could be applied in the same sentence. Hence, I loved socializing with friends at recess, loved group activities, and loved playing team sports, especially soccer. I was a very active kid that loved to make others laugh, as well as put smiles on other peoples faces.
The same could not be said at my time in high school. This was when I was first exposed to computers and the field of computer science. In Grade 9, I remembered building my first PC with my Dad. Seeing how this complex piece of machinery was very similar to Lego building blew my mind! Furthermore, my coding classes had an emphasis on video game development and design. This inspired me to pursue a career path revolving around video game design. From creating simple text-based games in python to experimenting with three-dimensional platformers in unity, I was amazed at the endless possibilities.
My Computer that I built with my Dad |
There were days where I would be in front of the computer screen for hours, fascinated at what could be learned next. Because of this, I used to go home straight after last period almost every day; I wanted to get to my PC at home as soon as possible. Furthermore, I never really talked to anyone about it, mainly because I did not want to. I was perfectly comfortable working and learning alone, there was no problem in it. In short, it came to a point where I would leave through the back exit after class to avoid starting conversations with people. To summarize, I was a weird kid, as I would always magically disappear after school. This is when I started to assume that maybe I was an introvert instead.
This type of behavior translated into my studies at UTM, and my rough first year opened my eyes. Above all the problems that I encountered, it shown me that communication and networking is a crucial life skill. I struggled heavily in first year, like most students. This was not because I was lazy or I didn't try, it was because I was so stubborn to ask for help. Therefore, whenever I had questions or problems to be solved, I locked my self in my room and tried to solve the problem independently.
Realizing this, I took a new approach to communication in my second year, and this is where CSC290 comes in. I believe the qualities of being an introvert and the qualities of being an extrovert are important for pushing me in becoming my highest self. In elementary school I was more of an extrovert, and in high school I was more of an introvert. With the help of CSC290 my goal in university is to discover myself and be comfortable with being both an introvert and an extrovert, an "Ambivert ".
So, let me know down below, what do you classify yourself as, an introvert, extrovert, or ambivert? Maybe you even classify yourself as an extroverted introvert, or an introverted extrovert!
That's it for me this week, I'll see you again in a couple of weeks! If you see me around UTM don't be afraid to say hi, I'm always happy to get to know others and develop my communication skills. Bye-Bye for now!
That's it for me this week, I'll see you again in a couple of weeks! If you see me around UTM don't be afraid to say hi, I'm always happy to get to know others and develop my communication skills. Bye-Bye for now!
Subscribe to:
Posts (Atom)
The Roads Untraveled
At the beginning of my CSC290 journey, I introduced myself as an Ambivert. An ambivert that wanted to benefit from both qualities of introve...
-
Hello wonderful people of the internet, my name is Damian, and I am a self proclaimed ambivert. This was not always the case, as I did not c...
-
What comes to mind when you hear the words solitary breakout? For me, it symbolizes breaking free from your personal mental confinements...
-
At the beginning of my CSC290 journey, I introduced myself as an Ambivert. An ambivert that wanted to benefit from both qualities of introve...