Work I Completed

This week, I have been focussed on three different areas, with one being the upcoming extended response, the second being developing my C programming skills, and the third which is the Lockheed Martin CyberQuest which is on this weekend. For the in-class writing task has been modified slightly from last year, where now we know the question/prompt will be answerable in depth with our chosen semester research, mine being Inverse Kinematics (IK). This means I have had to research more about three main areas of IK, being the history, practical applications, and ethics and impact. My research has gone into looking at a specific type of IK algorithm, being heuristic algorithms. This is not only where my research primarily lies but is the method I have been developing for my project, as Cyclic Coordinate Decent (CCD), which appears to be the most popular. Heuristic methods have their benefit in the low computational cost of the program, being that it is able to solve the problem very efficiently, while accounting for restraints. These two benefits also are great in terms of real-world application, as there will always be some type of restraint on the joints, and efficiency is also always important. While this research is a great start, and probably already enough, I plan and doing more and constructing a document which outlines benefits and deficits with links and supporting evidence, to make the final product better.

Comp-1511

In terms of developing my skills in C, I found that UNSW’s fundamentals of programming course, Comp-1511, has all its lecture notes, slides, and problems sets public. I have decided to start going through those in the time I don’t spend working on other school related things, and while the basics are all things I know, like loops, and functions, it is very different being applied in C. The problem sets are also much harder than the problems I did while learning Python on Grok; however, this is a good thing as my Python experience means I should be able to harder problems in terms of logical thinking. The hardest problem I have come across so far in this course is called the Numbered Hourglass, which is from last year’s course notes. The premise was to create a program that will make an hourglass with numbered decreasing from the middle and surrounded by hyphens. The size of the hourglass is based on an input from the user. At this point, I had learned how to read input and create functions and loops, which is all that is required for this task. I used many for loops in this, which ended up working, but for loops are things I have experience in both Python and C already. One of the loops looked like this.

        for (j = l; j <= (rows_no-2); j++) {
            printf("%2d", i);
        }

Which, apart from the amount of thought that went into the actual restrictions of the loop, had only one thing that was challenging, being the “%2d”. This is something I didn’t know of prior to this challenge. While I had already used “%d” in other programs and understood that it is a placeholder for decimal variables, “%2d” did something slightly different. It writes a decimal variable and does so in 2 digits. This is important as it means a 1-digit number prints with a space, and a 2-digit number does not. Knowing this, I was able to finish the program to get this result.

CyberQuest

Finally, this week was the Lockheed Martin CyberQuest. Last year I participated and came fourth, and this year we had the same team, plus some, and were wanting to get redemption. We achieved this, as our team placed first by a lot, achieving about 30 points above second place. The 3-hour long challenge was well worth it, as winning this competition may not mean much more than pride to anyone else, but to us it was our comeback, as well as being very fun. I am very glad to have participated in CyberQuest this year, and look forward to any upcoming competitions, mainly CodeQuest and PeCanCTF.

Reflection

In terms of my learning this week, I am very happy with what I have done as I have gone more in depth into the theory of IK, and thus understand it on a deeper level than I did before. I am also happy with my achievements in learning C through comp-1551, where I have completed challenges that are not only in an unfamiliar language but would also be difficult to me in Python.

I also feel very prepared for the upcoming extended response, having that deeper understanding will help me respond on a more fundamental level, allowing more specific and therefore better responses.

I also am very happy that we won CyberQuest; however, I feel that my personal performance in this competition is the worst it has been in any so far. I got a total of 0 points, which ultimately didn’t let the team down, but it feels as though my preparation was extremely insufficient. While I may be able to claim that I helped point my teammates in the right direction by starting the problem and getting about halfway through it, that does not compare to the work they all put in winning the competition. This will hopefully encourage me to do more preparation on the next competition I participate in, which will likely be the Lockheed Martin CodeQuest.