Saturday, January 25, 2025

Week 5 - Interactive Assignment

 An Overview of Algorithmic Design and Data Structures


Algorithmic Design: An algorithm is a set of operations to be performed in order. Algorithmic design is how one defines steps that should be taken to resolve an issue. Good algorithmic design guarantees ease of use and efficiency alongside clarity.


Data Structures: These are the ways of putting data together for storage in a computer so that it can be retrieved and modified easily. Data structures that are very common include arrays, trees, linked lists, hash tables, stacks, and queues.


Why Some Designs Are Better Than Others


Some algorithms and data structures have their specific advantages when used for specific assignments because of the following features:


Time Complexity: This is a metric of the amount of time an algorithm takes to run as a function of the length of the input. People tend to use algorithms with lower time complexities.


Space Complexity: This is a metric that determines the amount of memory space an algorithm uses in relation to the input size.


Simplicity and Readability: For algorithms to be effective, they also need to be so considerate that non-specialists will be able to understand them.


Examples


Data Search:


Linear Search: Simply put, it uses all possible search candidates until a match is found which does not make it efficient for big datasets (O(n) complexity). 


Binary Search: Is considers more efficient than the former as it does not require sorted data (O(log n) complexity).


In using very large sets of data, a hash table can provide O(1) sorting complexities on average for search operations.


Sorting:


Bubble Sort is the simplest way to sort data but can get tricky when dealing with large lists because it has O(n^2) complexities.


Merge sort on the other hand is more complicated to implement but is much more efficient in dealing with larger sets of data as it has O(n log n) complexities.


Applying The Sorting Techniques  


Whenever you are developing structured programs, makes sure to follow these steps in a precise manner:


Understand the Problem: Identify what exactly needs to be solved and be as specific as possible.


Choose the Right Data Structure: Based on the operations you need (e.g., if you need fast to moderate insertions and deletions, use an array).


Need to manage the data dynamically? Use linked lists or trees.


Once you have selected the data structure, move on to designing the algorithm: Identify all steps required and make sure they are coherent and efficient.


The steps can be implemented through iteration or recursion.


Make sure optimizations for time and space complexity is made.


Implement and Test: Write the code out and ensure that it works with whatever inputs are required to perform the bespoke tasks.


In Brief  


As discussed good algorithms and proper selection of a data structure enables an efficient program to be developed. This is mainly the reason why every algorithm and data structure has its own pros and cons which makes one more suitable than the other. Lastly, always aim for efficiency, clarity, and maintainability in the code.


Saturday, December 14, 2024

Installing Java - Tips, Tricks, & A Brief Overview

Java Installation Guide for Windows: This guide provides step-by-step instructions for manually downloading and installing Java on Windows:

How do I manually download and install Java for my Windows computer?


How to Install Java JDK on Windows 11 ( with JAVA_HOME ) (2024)


 Object-Oriented Design Principles - A Brief Overview


Object-oriented design (OOD) is a software development methodology that employs objects in structuring applications and computer software. Consider the following principles which will start implementing with regard to their design of OOD:


Single Responsibility Principle (SRP): There must be only one reason for a class to change, that is there should be only one job or responsibility assigned to the class.


Open/Closed Principle (OCP): It is incomprehensible to modify existing software entities, but they should be functional for extensions.


Liskov Substitution Principle (LSP): It is possible to expect that objects from a superclass will be replaced by instances of some subclasses without losing the correct behavior of the program.


Interface Segregation Principle (ISP): Users don’t need to be forced to depend on the functionalities of an interface which they do not require.


Dependency Inversion Principle (DIP): No high level module should depend on the low level modules. Both should depend on abstractions.


Thursday, April 30, 2020

Blog Post # 7 - Computer Networking


 Computer Networking:

I chose computer networking because it is something many are familiar with even if they are not aware that they are (i.e. my parents).

Even way back before the internet as we know it became widely used there was a much simpler form of computer networking known as “sneakernet” where a user would save work onto a floppy disk and physically walk it over to another user to add their input or for use at a different computer (https://www.techopedia.com/definition/1880/sneakernet) .

Many moons ago, computers were these huge clunky things that took up entire rooms and performed basic operations now found in handheld calculators. Thankfully, computing has evolved further than early computer users may have hoped. Imagine where humanity would be without the advances in science that can be attributed to computer science... I am sure some of the world’s best minds would figure out a way to work things but at what pace? Much, much slower without access to computers and computer networks.

Computer networking requires special hardware to access a network whether via Wi-Fi or hardwired Ethernet. For a computer to interact with network cards the computer needs to know how to do so reliably and with minimal interference; that is where computer programming comes into the picture. The hardware requires software known as device drivers to properly interact and do what the computer is asked to do by the end user.

Application software regarding computer networking provides for a more user-friendly experience through a graphical interface. Troubleshooting a network connection or just connecting to a Wi-Fi hotspot would hardly be practical without application software.

Please enjoy my very basic illustration of the importance of strong network management and security. In this diagram you can see the network firewall successfully thwarting hackers, phishing and spam.



Blog Post # 6 - Network Security


Network Security


Ping attack types: 

The ping utility uses the Internet Control Message Protocol (ICMP) to deliver its packets. Two types of attacks using the Ping utility are Ping Flood and DDoS (Distributed Denial of Service). The ping utility is typically used to test network connectivity; Ping has been used for many years to diagnose hardware and networks to troubleshoot and narrow down the cause (s) of issues.

In both Distributed Denial of Service (DDoS) and Ping Flood attacks, the attacker attempts to overwhelm the target system with packets. Using software designed to send large amounts of packets to an intended target repeatedly, an attacker may impact the target system’s ability to process regular traffic; the target system receives packets and must send reply packets thus increasing network traffic overall. These attacks are usually the result of a coordinated multi-user attack aimed at larger systems but ultimately affects the end-user by denying access to the site under attack.

For the second part of the Network Security Paper, I chose to explore the Phishing and Social engineering topics. Phishing and Social engineering are two types of attacks that go together. Social engineering is the act of coercing or tricking people through lies and deceit to extract information. Phishing is pretty much the same idea, only less human to human interaction.

Consider the following definitions retrieved from www.dictionary.com: Phishing is the fraudulent practice of sending emails purporting to be from reputable companies to induce individuals to reveal personal information, such as passwords and credit card numbers. Social engineering is (in the context of information security) the use of deception to manipulate individuals into divulging confidential or personal information that may be used for fraudulent purposes. In a nutshell, Phishing involves tricking users into entering personal or account information which is then logged and used later to gain access to systems or defraud the victim. Social engineering involves more person to person contact via phone call or online chat session, for example.

The four phases of social engineering are information gathering, gaining trust, exploitation, and exit (G. Rajendran, .2016). Each of these phases depends on the previous one to successfully “hack” a person. Before engaging with a potential target, the attacker will collect some information on their victim to gain their trust and feel them out for possible vulnerabilities to exploit. The attacker might take a glimpse into their personal life via social media or through a series of phone calls to gauge their weakness and gullibility. Once a target is successfully vetted, the attacker will exploit all information gained from the interaction and begin covering his or her tracks to avoid detection upon completion.

Phishing is a more impersonal but effective way of gaining access to information from a potential target or targets; phishing scams, while easier to detect with software, can reach further than social engineering alone. Phishing, a form of social engineering, can include fake emails that look legitimate as well fake links which will redirect the user to a fraudulent website that may look and feel like a real one, to collect information (Adil, M., Khan, R., & Nawaz Ul Ghani, M. A. (2020).

Both computer security incidents previously mentioned are challenging to address because the common denominator is human error. Unfortunately, the more successful a corporation, the more extensive their network of computers is likely to become which in turn means a larger workforce for hackers to phish from and social engineer. An attack on a network will likely result in loss of revenue and depending on the severity of the attack, system downtime, and neither is cost-effective.

Fortunately, preventative measures are available to lower the chances of an employee being compromised. First is education; an I.T. department should routinely hold a seminar, webinar or in-service to properly educate employees on how to identify as well as handle malicious emails, websites and phone calls. Secondly, the corporation should require users to change their passwords more frequently or add secondary credentials such as biometrics or pins to access their workstation and account.

Blog Post # 5 - Computers In The Workplace



Computers In Healthcare


For my discussion post, I chose the healthcare industry since I have been employed within a hospital for the past eighteen years. In that time, I have seen many upgrades and advances in technology. 

While I do not provide direct patient care, I am familiar with some aspects of a Healthcare facility and computer Literacy is an essential requirement. From the minute a patient walks into a Healthcare facility, patients are greeted by a member of the registration department or the information desk. Both of them are usually seated right by one or more computers running different types of software. 

Without a working knowledge of computers and the necessary software, the two employees mentioned above would not be able to serve the patient accurately. Nurses and Doctors rely heavily on computerized charting software and their workstations on wheels (W.O.W.) to view lab results and patient history; these computers are equipped with barcode scanners that are used to scan a patient’s I.D. bracelet. 

Considering the healthcare industry’s resources and the importance of keeping up with the competition, I have seen a lot changes in technology. Within the next ten years and healthcare’s need to remain on the cutting edge, I feel that technology such as augmented reality could be used to diagnose and even reduce wait times as well as the need for a patient to be at a doctor’s office physically.

With internet speeds and network security advances, it may someday be commonplace for a surgeon to perform entire operations from a separate location miles away using robotics.

I received some insight on my post from classmate "JG"; her feedback helped me to rethink the need for prep work in operating rooms by nurses and other staff members who may not benefit from a Doctor being offsite. 

"JG" wrote: " I completely agree about telemedicine replacing the need for patients to physically be in the doctors' office, not sure what you mean by augmented reality can be used to diagnose and reduce wait times, can you elaborate?  Also, I'm not quite sure at this point in time if medicine is ready for the doctor to be in a separate location while performing operations, although it might be safer with the concerns about the coronavirus. You'd still need nurses to prepare the patient for surgery and to get all the surgical instruments ready though, maybe that will be ready in the next 15 years but I think there is a lot more preparation before that happens."



Wednesday, April 29, 2020

Blog Post #4 - Traveling Through a Network

Traveling Through a Network 


Ping Activity:
            When I pinged Google.com I received one “request timed out” notification and three replies:
Request timed out
2607:f8b0:4006:804::200e time=19ms
2607:f8b0:4006:804::200e time=19ms
2607:f8b0:4006:804::200e time=14ms
            My ping sent four packets of which three were received and one was lost with an average round trip time of 17ms. One of my packets failed to reach Google.com whereas the other three did.
            For my next two pings, I selected news.com.au and japantimes.co.jp the results are as follows:
When I pinged news.com.au, I received replies from all four packets
23.205.210.206: bytes=32 time=75ms TTL=59
23.205.210.206: bytes=32 time=18ms TTL=59
23.205.210.206: bytes=32 time=15ms TTL=59
23.205.210.206: bytes=32 time=14ms TTL=59
Average roundtrip of 30ms (0% Loss)
When I pinged japantimes.co.jp, all 4 of my packets failed “request times out” (100% Loss). My best guess is that the packets did not reach their destination within the TTL of 59 seconds.
Request timed out
Request timed out
Request timed out
Request timed out

Traceroute activity
When I ran a traceroute on google.com, the results showed that my packets passed through 11 routers; at router number 5, there appears to be a transmission failure through hop #6 then again at hop # 9.
When I ran a traceroute on news.com.au, my packets passed through a total of seven routers successfully with all three packets of information ranging from 5ms to 29ms.
When I ran a traceroute on japantimes.co.jp, I noticed a considerable difference in the number of routers my packets passed through as well as the amount of time it took. There were several requests timed out messages but the traceroute continued possibly being rerouted to different routers in an attempt to reach the site. Trace completed at 30 hops with several packets not reaching their destination. Times ranged from 5ms to 256ms.
After running three traceroutes, I concluded that geographical location impacted the number of router hops as well as the length of time it took for the packets to reach or attempt to reach their destination. The Japanese website went through all 30 hops and resulted in more packet loss compared to Google.com and the Australian site news.com.au.
Ping and traceroute can be used to troubleshoot and rule out suspected connectivity issues. Using both tools, a user can determine if the failure to reach a site is due to their connection or if the site is experiencing trouble.
Two possible reasons for traceroute and ping time out or return error responses could be a short TTL or low maximum hop count.



One of my classmates "JG" experienced similar results when using the traceroute utility to send packets to a site in a land far, far, away... 

JG wrote: "Eddie, great job on explaining ping and traceroute. I had the same experience as you did when using traceroute on a Russian website, it timed out as well.  It's quite amazing how all the technology works together behind the scenes to help us surf the web and find the information we need."  


Blog Post #2 - Web/Mobile App Critique

Web/Mobile App Critique
Google Keep


For this discussion, I chose to write a review on Google keep, a note-taking app.

Using Google Keep, I can seamlessly access notes, web links, shopping lists, and pictures needed for quick reference. I save passwords, account numbers and directions. One of my favorite features is one that permits me to select images and files and save them directly to Google keep using the share symbol.

Google keep is such an essential tool in my daily life that strongly recommend it to anyone who may need a cross-platform cloud-based solution to note-taking. I especially enjoy this app because I am notoriously forgetful so that I can set reminders for bills. When looking for an old password or account number, the search feature within the app eliminates the need for endless scrolling and sifting through saved notes to find one thing.

I was recently able to assist my mother in the hospital (she's fine) with identifying her medications because I took pictures of her medications as well as her insurance cards. Being a die-hard Android user, Google keep's integration with my phone, computers and tablets add a bit of much-needed convenience to my hectic life. On my windows computer, I simply open a web browser and go to Google’s home page, then select it from a list of web apps, I prefer Google chrome so I installed a plugin that give me quick and easy access to Google keep. During my last online class, I saved links and videos quickly and conveniently.
More recently, I have made use of the “Checkbox” list feature for my shopping; as I go through my list at the grocery store, I simply tap on the item, and it gets crossed off and sent to the bottom of the list as completed. While making the list, the app recognizes everyday items and makes suggestions which can be seen in one of my screenshots.

I've personally used the "draw" feature to create directions and take down measurements when time was of the essence. I find Google keep being more user friendly than other apps I've used such as Evernote.

I've used Google keep's audio recording feature to remind myself of a variety of things, or just to quickly record an idea that I may use for work or an assignment.

I would like to see Google add bio-metric protection to this app in addition to my phones integrated security. Some of my other apps give me the option to use my fingerprint to access them. It would be a welcomed feature for me since many of my notes contain sensitive information.

I would also like to see Google add a video recording feature to the list of features.
Lastly, I would recommend better integration within the Android platform’s calendar app. I would like to see events in the calendar app automatically update in Google Keep and vice versa.

In response to my discussion post one of my classmates suggested using different email addresses for each category and boy was I glad I took her advice! I'm not ashamed to admit that organizational skills are not on my list of accolades. For the sake of privacy my classmate's initials are "NN", see part of her reply below. 

NN wrote: "I use a different email account for each category of notes to keep it all organized, a shared email for household things (shopping lists, reminders, to do lists, etc), one that is for work things (or things I think of at work but would otherwise forget by the time i get home, and the other way around), and one for my personal things (random notes, projects I'm working on, etc)."  

In addition to "NN's" reply I received a recommendation from my classmate "JG" for an app called Evernote. While I have tried Evernote in the past, I am willing to revisit it now that I know Evernote provides a fingerprint security feature. See "JG's" reply below. I edited a name out for this blog post.

JG wrote : "It makes me want to try it out, especially since "NN" is a big fan of the app as well.  You've both sold me on this as well.  I love apps that let me use my fingerprint as it makes it easier to sign in to the app instead of entering my username and password.  That's a feature that Evernote has so hopefully, they will add that to Google Keep."