Throughout the 1st year we covered some of the different aspects of computer science both in theory and in practice. Even though applying computer science in everyday life through its different elements (programming, websites and databases, networks and systems, and software engineering) is important as it is one of the main goals to become well versed to use its applications, it is equally if not more important to understand the underlying theory behind the science of computers.
Fundamental knowledge of the theoretical underpinnings of computer science
One example from the strand of software engineering that I found fascinating and rather useful is the flowcharts. The reason the part of flowcharts is rather interesting is because you can one of the principles of computer science are the algorithms and the algorithms according to the mathematician Kenneth H. Rosen is a set of finite clear instructions to solve a problem. Part of said instructions can be outlined to a certain extend through a flowchart. A program has a start and an end, everything in the middle are the set of the clear instructions we provide to the program to solve our problem.
Be able to outline the different steps in between with simple symbols makes it extremely easily comprehensible for a programmer to write the relevant code to reach the goal of solving a problem. Sometimes the process of iterating through a process when a condition is truthful can be complex to describe with words but flowchart have made it extremely easy as shown in the picture below
Understanding of standards, formats and tools used in the design of information, multimedia and web-based systems
This topic is one of my favorites as it was the main motivator to build my this WordPress e-portfolio. Additionally, this covers so many areas besides the building of the e-portfolio, like the apache webserver, the set up of the mySQL, the use of PHP.
This also project also helped me to put my skills forward to make few edits in the WordPress PHP, eg to remove the WordPress logotypes and references.
Appraisal of the fundamental operation of computer systems, network architectures, hardware components, operating systems and associated protocols and data structures
On this particular example I would like to give more importance on the *nix based webserver as it was the most challenging. Thanks to the PPW3 and the Networks and Systems task I researched at the time to build a webserver on a *nix based system on a Virtual Box.
Although, on Linode the process is rather automated, I was still able to put my knowledge to the test as I had to make few edits on the Apache’s webserver configuration file and in the hosts amongst others and the setting up of the MySQL.
The LAMP server is a set of different services that consists primarily from a Webserver to serve your content, the MySQL service to store your databases and connect them with your projects, and the PHP scripting language to allow you to create web based applications. Simply put LAMP is an acronym of the services (Linux, Apache, MySQL, PHP).
Recognition of the need for adaptable approaches to problem solving.
If we touch upon the the principles of the algorithms to address a problem, one can notice that every problem can be perceived as the acknowledgement of a problem and the path to the solution. The in-between are the precise steps to towards the solution.
Based on the above, one would need to take a number of steps to reach to a decision and work on a plan to reach the solution of the problem. Those steps could be defined as:
- The acknowledgement and understanding of the problem
- The process of spinning up a plan
- Putting the plan in action
- The retrospect
My personal approach to address a problem is to go through the 5 Ws. This technique can be the start to acknowledge and understand the problem. Asking questions like, What is the problem; Where is the problem; When the problem occurred; Why it occurred; Who is involved, can help a great deal to come with a plan towards the solution.
During this 1st year I came across a few problems on the PPWeeks that I need to address but one that stands out from the rest is on the PPW4 were I’ve been tasked to create the eRunner registration form on PHP and MySQL. The POST call was looking like:
$sql = $conn->prepare("SELECT * FROM participant WHERE firstname = ? OR surname = ?"); $sql->bindValue(1, "$keyword1"); $sql->bindValue(2, "$keyword1");
When I was trying to search I was receiving error that something was wrong. I was going back and forth in phpMyAdmin to run the query in the SQL and was getting the same error.
I took a step back and I started going through the steps. Eventually, this lead me through a research on the internet to understand what I was doing wrong. I run into the LIKE vs = difference. I started constructing the query again in MySQL like:
SELECT * FROM participant WHERE firstname LIKE Joh% OR surname Do% ?
This worked like a charm and eventually I refactored the POST call into:
$sql = $conn->prepare("SELECT *
FROM participant
WHERE firstname LIKE ? OR surname LIKE ?");
$sql->bindValue(1, "%$keyword1%");
$sql->bindValue(2, "%$keyword1%");
Appreciation of the social, ethical, professional and legal issues associated with the development and use of computer based systems.
Being able to develop products that are meant to be used by people is a great responsibility and power. There are plenty of examples of products out there that are not taking into account people’s privacy, socioeconomic and ethnic backgrounds, disabilities and more people unique characteristics .
When building a product, one needs to be mindful of such parameters that are of paramount importance. Besides potential legal or ethical downsides one can run into if their product is not build in a people-centric manner, important functionality may be overlooked and render the product less popular with an increased learning curve and be counterintuitive.
I run across on this topic on the very 1st PPWeek on my first PACT analysis where I had to go through the analysis of the user homogeneity/heterogeneity, the different people characteristics and their computer literacy.
Few pieces of my PACT analysis stand out from the rest and I am proud to be taught this as I now am able to put people front and center.