
I would like to say that it has really been a while (really!) since I was able to compile and write code! I spent most of the past few semesters hand-writing pseudocode and overall understanding algorithms, proving it’s correctness, and finding it’s runtime. It was a very hard process trying to prove correctness with an algorithm, but now that I understand basic algorithm analysis, I can finally do what computer scientists do best: writing and compiling actual code! My first impressions for ICS 314, Software Engineering was very ammusing as there was a lot of expections and a lot of things to do. Instead of understanding and proving basic sorting algorithms, there were various topics of interest that I was looking forward to, including understanding TypeScript, Next.js, UI design, and many more.
After a few semesters of writing pseudocode, I kind of lost touch with my web development fundamental including HTML, CSS, and JavaScript, but thankfully, after a comprehensive review of these fundamentals through YouTube tutorials, Khan Academy, and FreeCodeCamp, I was able to get back in the game and get all caught up. When we were first introduced to TypeScript for the first time, I was ready to learn all the syntaxes, coding habits, and shortcut, but after noticing that TypeScript is a superset of JavaScript I was actually relieved since I don’t need to learn a whole new lanague, but rather brush up on my JavaScript and ES6 skills so that I can be an effective TypeScript programmer.
Oh! I forgot to mention how I was also introduced to JavaScript ES6 for the first time, which apparently makes things really useful to us, especially with the let and const keywords to help replace the old var keywords in ES5. We were also introduced to shorter syntaxes like arrow functions, in which, to my understanding, greatly changes code like this:
function add(a,b) {
return a + b;
}
to this:
const add = (a,b) => a + b;
Which is a pretty neat shortcut, especially during the workouts of the days (WODs), which I will talk about later. Other keywords also interest me like the spread and rest operators, promises, and destructuring assignment, which was pretty confusing to me but I beleive that with enough practice and understanding more about these features, I could maybe one day impress my future employer during a technical interview.
This was a really interesting pedagogy where I have seen many professors use the traditional teaching approach and recently a flipped classroom approach, where I was expecting ICS 314 to be one or the other, but that is not the case. Instead, the concept of Athletic Software Engineering involves just putting students through a high-intensity, stressful approach where students design and solve a problem accurately and efficiently within the time limit. These problems are also known as Workouts of the Day or WODs for short. In my opinion, this kind of approach is not for me since being pressured by time causes me to think about the time limit during these WODs. I am not sure, but this is a very new approach that I am not used to, but I believe that understanding my weaknesses and mistakes might help improve my time during these WODs. As I continue my computer science journey, perhaps this kind of pedagogy might one day save me time on various problems I encounter in my journey, either through problem solving or even debugging huge amounts of code.