It all began with AP Computer Science A in my Junior year of high school, a class I took from being intrigued by my older sister who took it. However, before beginning the course in the Java programming language, a summer homework assignment on JavaScript was introduced to us to learn the basic programming concepts, such as variables, data types, functions, loops, etc. I recall the feeling of constraint by Java needing to explicitly declare the particular data type of the variables, while the introduction through JavaScript was simply: “var”…, a feeling that is to resurface in ICS 314. However, before that, I continued to program in Java while taking ICS 211 along with learning C/C++ in ICS 212 in my Freshman year of college and had a break from programming (other than writing in pseudocode) during my Sophomore year to take other ICS classes of discrete mathematics and algorithms. It had always felt tedious to code in Java and C, with all the syntax and formatting requirements. During that time, I have always envied the python programming language and its high-level simplicity and ease of programming for the user; however, my programming experience with python has yet to come.
Coming back in my Junior year to program in ICS 314, Introduction to Software Engineering, made me feel anxious at first. Even just reviewing all the coding that I have done in the past felt like trying to decipher some cryptographic codes. Fortunately, doing FreeCodeCamp’s Basic JavaScript and ES6 sections of the JavaScript Algorithms and Data Structures certification course as a mandated ICS 314 assignment was a blessing. It was as if I was chipping away my rusty programming skills to make it back to being polished. I particularly enjoyed doing the ES6 section, where improvements from the ES5 version of JavaScript were showcased. To me, this is what software engineering is about: a relentless process of improvement; to write efficient code and algorithms that will accomplish your software engineering needs. I can’t, however, expect to regain all my programming skills to resurface after a couple of days of cramming the basics back into my programming toolkit. This is where the practice workout of the day (WOD) comes in: they were effective in being definitive problems that require thinking, programming familiarity, and solutions to be provided.
What now, after the basics are reviewed?
Well, it continues with the Athletic Software Engineering (ASE) pedagogy for ICS 314 that involves more WODs and learning the full software engineering technology stack in a high-intensity, time-constrained, and stress-inducing environment. It is sure to challenge my time management with having to commit time to the Air Force Reserve Officer Training Corps (AFROTC). I look forward to learning about functional programming and its powerfulness over my familiarization with Object-Oriented Programming, as well as truly feeling like I am a “programmer” or “computer scientist,” at least to a higher level than what I currently feel. Nonetheless, as it is my career goal to do cyber in the military: the learning continues!