This course, though completed last year for the ICS3U course, has taught me the basics of creating and stylizing websites. The skills that I have learned were applied with sites such as the school's Environmental Council page, this portfolio, and more. Although I have the fundamentals of web development down, there is always more to learn in regards to the web, especially with development using front end libraries.
JavaScript is a widely used programming language, especially on the web. This course, though completed last year for the ICS3U course, has taught me the fundamentals of the language. JavaScript has proved to be useful in terms of making webpages interactive and creating visual programs using libraries such as p5.js. Most notably, I have used JavaScript to create a Discord bot that is in daily use. With the basics down, more advanced techniques, such as ES6 and regular expressions, will be learned and incorporated in future programs and websites.
Structured Query Language, often abbreviated to SQL, is a standard language for storing, manipulating, and accessing data in databases. This course has taught me the fundamentals of the language and data manipulation. SQL can be used in the future for data analysis, or backend web development, such as for storing user information.
This course, also completed last year for the ICS3U course, further expands on my knowledge of JavaScript, and introduces new concepts pertaining especially to the creation of games and visuals. Several techniques learned from this course have been applied in other programs, such as with the 2D Raycasting Coding Challenge. Though it expands on JavaScript, this course barely scratches the surface on game development. Further technicalities, such as 3D modeling and the use of game engines, can be learned to enhance knowledge on game development.
As with Advanced JS: Games and Visualizations, Natural Simulations expands on pre-existing knowledge of JavaScript. This course focuses on simulating the intricacies of nature with code, such as randomness, forces, and oscillations. The most significant impact from this course was the implementation of Perlin noise in our 2D Raycasting Coding Challenge. Additional natural occurrences can be learned to be simulated with Daniel Shiffman’s book, “The Nature of Code,” from which the course was derived from, or by incorporating other mathematical concepts.
Combining knowledge of HTML, CSS and JavaScript, this course introduces interactivity within websites with the Document Object Model (DOM). This interface has been used for adapting to different screen sizes in the school’s Environmental Council page, and for animations in this portfolio. There are many more DOM methods and properties to be learned, especially as the course was published at the dawn of HTML5’s introduction, thus omitting many current functions. Although libraries such as jQuery facilitate the manipulation of HTML elements, simpler websites or those aiming for low bandwidth and high performance may find using the DOM more appropriate.
Note that there are no projects to be completed in this course.
As with the DOM, jQuery integrates knowledge of HTML, CSS and JavaScript to simplify interactivity within websites. Though I haven’t used jQuery in any assignments or projects in the past (excluding Bootstrap's usage for several components), it is nice to know of a library that facilitates manipulation of HTML elements, especially for larger webpages that might incorporate animations. With regards to the future, there are many more functions to be learned, as this course teaches just the basics of the library. In addition, there are numerous plugins that can be used in conjunction with jQuery.
The Algorithms course on Khan Academy introduces algorithms and concepts that are taught in post-secondary computer science programs, such as searching, sorting, recursion, and graph theory. Learning how to implement the different algorithms, as well as learning about the different concepts like graph theory and asymptotic notation, has made the most significant impact to me as a student. With regards to learning in the future, there are infinite amounts of algorithms to learn and apply into different programs, especially as we continue trying to increase efficiency.
The AP®︎ Computer Science Principles course teaches the fundamentals of computer science, including computers itself, the internet, programming and algorithms, and data analysis. Though I already knew of most of the concepts beforehand, I found the course to be a good review and insight into future learning. These concepts and more can be learned in further detail to expand not only general knowledge, but also knowledge on technicalities for other professions. For example, learning about lossy and lossless compression not only benefits web developers for reducing website bandwidth, but also for, as an example, photographers who may want to preserve all image details for their projects.
Note that there are no projects to be completed in this course.
Similarly to Khan Academy’s Intro to JS course, freeCodeCamp teaches the fundamentals of JavaScript, though in a more technical and textual way. It also offers advanced techniques that are commonly used, but are not taught in Khan Academy, such as ES6, regular expressions, and debugging tools. Learning ES6 made the most significant impact to me as a student as I have previously used it with my Discord bot, though without well understanding the syntax. The projects and other certifications that incorporate JavaScript can be used to apply the developed skills and enhance future learning.