Pages

Thursday, February 10, 2022

Applying Algorithmic Design and Data Structure Techniques in Developing Structured Programs

    For an inexperienced student such as myself, that title can seem a bit daunting. Hopefully this post will help make it easier to understand while providing some advice on when certain designs should be used before others. I tend to learn best from watching YouTube videos in addition to reading text, so I will also post a couple links to videos I personally found helpful. Understanding how data structures and algorithms work will help you solve problems in a more effective and efficient manner.

    Let’s start with explaining what an algorithm is and discussing some of the important categories. Tutorialspoint.com defines algorithms as a “step-by-step procedure, which defines a set of instructions to be executed in a certain order to get the desired output.” Think of any process you perform on a daily basis that requires several steps, and you probably follow an algorithm. Some of the categories include:

  • Search: An algorithm designed to search for a specific item in a data structure. The two most popular search algorithms are Linear Search and Binary Search
  • Sort: An algorithm designed to sort items into a certain order. Some examples are Merge Sort, Insertion Sort, and Heap Sort
  • Insert: An algorithm designed to insert items into a data structure
  • Update: An algorithm designed to update an existing item in a data structure
  • Delete: An algorithm designed to delete an existing item from a data structure


    So how do you determine which algorithm and data structure is going to be the most effective? Your first instinct may be to go with whichever one is going to use the most resources to provide the fastest response time. In some cases, this may be fine, but if you are dealing with a simple program that doesn’t require a lot of processing, you should use a simple data structure that won’t eat up all of a computer’s resources. For example, an array is a great choice for accessing indexed data in a list. A hash table is a list of paired values with the first item being the key and second item the value. This allows access to objects by using the key, providing high-speed lookups, but it does not maintain any order. Stacks use a process called Last In First Out, or LIFO. This means data can only be inserted, read or removed from the end of a stack. Queues are similar to stacks except data can only be inserted at the end, read from the front, and removed from the front, much like a line of people waiting to enter a movie theater. There are many more types of algorithms and data structures, and possessing a basic understanding of them can help in your design process. The video below discusses the importance of understanding these concepts:


References


Development (2019, January 10). Improving your Data Structures, Algorithms, and Problem Solving Skills. [Video]. YouTube. https://www.youtube.com/watch?v=X1R70KucERw

Jain, S. (2019, November 23). Why are Data Structures Necessary. [Video]. YouTube. https://www.youtube.com/watch?v=V5he1JXiQbg&t=2s

TutorialsPoint.com (n.d.). Learning Data Structure. Retrieved from https://www.tutorialspoint.com/data_structures_algorithms/index.htm



Thursday, January 13, 2022

Object-Oriented Programming and Java: A Beginner's Guide

Java is a high-level, class-based, object-oriented programming (OOP) language used to produce software. OOP uses four major principles:

  • Encapsulation: Describes the bundling of data and methods operating on this data into one unit, or class
  • Abstraction: Shows only the essential attributes and hides unnecessary details from the user
  • Inheritance: Mechanism to derive a class from another class for a hierarchy of classes that share a set of attributes and methods
  • Polymorphism: Describes situations in which something occurs in several different forms.
These four concepts were confusing to me until I watched this YouTube video on OOPs:



Installing Java on your computer can be a little tricky if you aren't prepared. Thankfully there are many guides online with step-by-step instructions to follow. The following link will take you to the Java download page where you will select your Operating System and install the Java Development Kit (JDK): 

https://www.oracle.com/java/technologies/downloads/

The 8 minute YouTube video below will show you how to download and install Java and also compile and run your first Hello World program. 


You may also want to install an Integrated Development Environment, or IDE. The IDE will assist you with reading, writing, and testing programs. There are numerous choices to choose from, but the one I went with is called Visual Studio Code, which can be downloaded from the following link: 


The website also provides installation instructions and walks you through building your first Hello World program.   







Monday, September 13, 2021

Tech Topic: IT Careers

 

The tech topic I chose for this course is Information Technology (IT) careers. I chose the IT careers topic because I am preparing for the transition from military retirement into the civilian IT job marketplace. By starting to research available careers now, I hope to narrow down my search and possibly pick up some certifications along the way that will help my chances of landing a job I want.

The fundamentals of information technology learned in this course all play a significant factor in IT careers. Without a basic understanding of how computers operate, it would be near impossible to compete for even an entry-level IT job. In today's age, IT fundamentals apply to the standard fields such as computers, office equipment, data services, and telecommunications and older, established industries such as farming, mining, and oil-producing (Wells, 1997). Possessing computer hardware and software knowledge will help determine the operating requirements of computers for the various tasks related to IT jobs and assist with troubleshooting issues that may arise. Understanding how the internet, networking, and databases work will help research, data management, and communication. As the world becomes more reliant upon technology in everyday life, it becomes more critical for those in the IT field to understand building and to manage this quickly evolving industry.

The first computers were produced in the 1940s and originated from telephone switches (Vahid & Lysecky, 2017). Since then, engineers have found ways to reduce the size of switches by half about every two years, a concept known as Moore's Law (Vahid & Lysecky, 2017). Because of Moore’s Law, the amount of data stored on a computer chip today could have taken a room-sized computer in the mid-1900s. When the information age began in the 1990s, humans shifted from traditional industry to using computerized information. Careers in the IT field started to become very popular because of their high demand and continue to grow as we rely more on computers than anything else.

A central processing unit, motherboard, graphics processing unit, random access memory, and storage are major hardware components of a modern computer system. All IT career fields rely on these essential components, and without them, most projects would be impossible to complete. Some IT careers require an understanding of programming languages and program execution methods. Software engineers and video game designers need to understand code and manipulate it to reduce glitches or bugs in their programs. Application software such as word processors, graphics software, spreadsheet software, and web browsers allow users to perform tasks more efficiently. For example, Microsoft Excel contains hundreds of formulas to automate calculations, saving workers countless hours. Knowing how to access and manage databases allows IT employees to store, access, share, and move data effectively. Most businesses use a network architecture, which is how computers are organized in a system and allocated tasks between the computers. Two examples of network architecture commonly used in IT careers are peer-to-peer and client/server. Network security plays an essential role in all IT-related career fields. As the cost of data breaches and malware to businesses continues to rise, so does the need to build better security. In 2014 it was reported that consumers spent $25 billion to stop digital attacks and 1.2 billion hours recovering from them (McCoy, 2015). Not only is network security important to understand for those wanting to enter the IT career field, but everyone with a presence on the internet should have a basic understanding of how to protect themselves from hackers and other malicious threats.   

 

References

McCoy, F. (2015). Career Outlook: Spotlight on Information Technology. Hispanic Engineer and Information Technology, 30(1), 31–44. Retrieved from https://www-proquest-com.proxy-library.ashford.edu/docview/1720454565?accountid=32521

Vahid, F., & Lysecky, S. (2017). Computing technology for all. Retrieved from zybooks.zyante.com/

Wells, G. (1997). Begin your career in INFORMATION technology. Hispanic Engineer and Information Technology, 12(1), 20–24.

Thursday, September 9, 2021

Network Security

 

Every individual and organization with an internet presence needs some form of protection against cyber-attacks and security threats. Hackers are constantly trying to gain access to computer systems to steal, change or destroy information. Information and system security help prevent valuable consumer and company data from internal and external attacks.

            An attacker can use the simple ping command to carry out a cyber-attack. One form of this is called the Ping of Death, or PoD. A poD is a denial of service attack, meaning its purpose is to shut down a machine or network, making it inaccessible to its intended users. A PoD involves the attacker sending malformed or oversized packets in fragments using the ping command. When the target system attempts to reassemble the fragments, a memory overflow could occur and lead to various problems, including a crash.

            Social engineering is the art of manipulating people to give up confidential information, typically passwords or bank information, or to take control over your computer. Social engineering is prevalent because it is easier for hackers to trick people into trusting them than to hack their passwords. Most security professionals agree that the weakest link in the security chain is the human who accepts a person or scenario at face value. By using social engineering, hackers can bypass all established security protocols with minimal effort. A social engineering attack could come in an email from a friend or a Facebook message. If a Facebook account is hacked, the attacker can send messages to everyone in the victim's contact list, spreading malware or gathering personal information from them. One method to help prevent social engineering is to delete any requests for financial information or passwords. Organizations such as banks and online shopping sites will never ask for personal information via email. If an individual receives a suspicious request and is unsure what to do, they should contact the company by visiting the organization’s website or calling them. Organizations should have security policies in place to deal with all types of cyber-attacks. Companies should update these policies regularly to protect against new threats. Requiring regular password changes should also be necessary for the security policy. Passwords should contain a combination of numbers, special characters, and letters. Incident handling procedures are equally important when dealing with social engineering attacks (Ghafir et al., 2016). Suppose a victim is trained to identify an intruder and quickly implement security measures. In that case, the attack can be stopped before any damage is done, resulting in the intruder being located.  

            One of the most common forms of social engineering is phishing. Phishing is when a hacker tries to bait an unsuspecting victim into sharing sensitive information, such as bank account information, credit card numbers, or other personal data. (Vahid, 2017). In a phishing attack, the hacker often sends an email pretending to be from a legitimate organization, such as the victim's bank, employer, or a known company like Amazon. The attacker will ask the recipient to verify credit card information, secure credentials or ask them to click on a malicious link. This can lead to a malware installation, which allows the attacker to gain access to the victim's computer or reveal sensitive information, leading to unauthorized purchases or identity theft. If an organization becomes a victim of a phishing attack, the losses can be devastating. Financial losses, declining market share, loss of reputation, and consumer trust are all adverse effects of a business succumbing to a phishing attack. One way to protect against phishing attacks is to train employees on cyber-security procedures. Everyone should be made aware of how to identify spam emails and know how to identify trusted sources. Organizations should also test their employees by sending dummy phishing attacks and require remedial training for those who fail. In the journal article Training to Mitigate Phishing Attacks Using Mindfulness Techniques, three techniques are discussed for organizations to prevent phishing attacks. These techniques are automated removal or quarantine of phishing messages websites, automated warning mechanisms that notify an individual when they encounter a suspicious message or website, and behavior training where individuals are taught to identify and report attacks (Jensen et al., 2017).


 

References

Ghafir, I., Prenosil, V., Alhejailan, A., & Hammoudeh, M. (2016). Social Engineering Attack Strategies and Defence Approaches. 2016 IEEE 4th International Conference on Future Internet of Things and Cloud (FiCloud), Future Internet of Things and Cloud (FiCloud), 2016 IEEE 4th International Conference on, Ficloud, 145–149. https://doi-org.proxy-library.ashford.edu/10.1109/FiCloud.2016.28

Jensen, M. L., Dinger, M., Wright, R. T., & Thatcher, J. B. (2017). Training to Mitigate Phishing Attacks Using Mindfulness Techniques. Journal of Management Information Systems34(2), 597–626. https://doi-org.proxy-library.ashford.edu/10.1080/07421222.2017.1334499

Vahid, F., & Lysecky, S. (2017). Computing technology for all. Retrieved from zybooks.zyante.com/

Computers in the Workplace

    The industry I have chosen for this discussion is education, specifically in the military. I have spent eight of my twenty-three years as a trainer in the military, and a significant portion of my job entails scheduling Soldiers for military schools that will help them advance in their careers. Computers play an integral role in scheduling and tracking upcoming courses. The Army Training Requirements and Resources System (ATRRS) allows me to search a course database and find upcoming class dates, locations, and the number of available seats. After locating an open seat for a course, I can then schedule a Soldier by typing in their social security number and filling out an online application. When I first joined the military in 1997, this reservation process was much more complicated and involved contacting the schoolhouse to find available seats. Tracking upcoming courses for Soldiers has also been made easier by computers. A military trainer can run a simple report in a matter of minutes to view all upcoming reservations. Twenty years ago, these all had to be tracked by creating manual tracking systems such as spreadsheets, which were unreliable.

    Information technology and computers also allowed Soldiers to attend courses virtually while most military schoolhouses were closed down during the COVID-19 pandemic. Using platforms such as Microsoft Teams, Blackboard, Zoom, and many others, teachers connected with their students without putting themselves in danger of contracting the virus. Soldiers were able to continue advancing their military education levels without taking a year or more off.

    COVID-19 has shown us why it is essential for everyone in the education industry to be computer literate, not only in the military but also on the civilian side. Teachers need to know how to troubleshoot computer and network issues or risk their students missing class time. With the advancements in information technology, a lot of learning is done on laptops and tablets instead of textbooks and notepads. Over the next ten years, I expect to see more education departments moving towards virtual training, especially in the military. While there are disadvantages to not attending a course in person, there are many advantages, such as eliminating travel costs and time spent away from home.

Traveling Through the Network

When using the ping and traceroute commands, small data blocks are sent over the network called packets. A ping sends 32 bytes of data in 4 packets to the destination address. Once all packets reach the destination, a reply is sent back to the sender, measuring the round trip time and reporting errors. Ping can be used to tell if a computer on a local network is active. Traceroute is used to trace the path of Internet Control Message Protocol (ICMP) packets from a user to a host, showing the number of steps or hops it takes to reach the destination. If a router between the user and host returns a “request timed out” error, it signifies possible network congestion.

For the ping activity, I sent a ping to Google.com, Zenmarket.jp, and Baidu.cn. The results for Google.com were 4 of 4 packets sent and received with a minimum time of 9ms, maximum time of 15ms, and an average of 10ms. Traceroute took 11 hops to reach google.com, with 2 of them timing out. Japan-based Zenmarket.jp came back with 4 of 4 packets sent and received with a minimum time of 9ms, maximum of 15ms, and an average of 10ms. Traceroute checked ten hops to reach Zenmarket.jp, 2 of which timed out. Chinese website Baidu.cn returned 4 of 4 packets with a minimum of 215ms, a maximum of 217ms, and an average of 215ms. Traceroute hit 22 routers before reaching Baidu.com, with 8 of them timing out. The geographic location of the ping or traceroute destination increases the time it takes to send and receive packets. An example of geographic location affecting network speed is playing online video games. Some games have servers located in different parts of the world, allowing users to select the closest to them to decrease their lag time.

ping results.PNG

The ping command can determine if a website or host computer is available and determine response time. Ping can also be used to troubleshoot your network. Ping can be sent to your home router, with a time-out error indicating an issue between your PC and router. If the traceroute command returns an error, there could be an issue within the network, such as a Domain Name Server (DNS) resolution error, packet loss, or network latency. Traceroute helps pinpoint which hop or router the problem is occurring.

Documenting a Day in my Life

 

I woke up at 6:30 AM this morning feeling groggy and frustrated at my lack of sleep. I hit the snooze button on my alarm, hoping the extra 10 minutes of rest would help me feel better. It did not. I reluctantly rolled out of bed, hopped in the shower, and began preparing for a busy day. The 15-minute drive to my office usually is quite relaxing and gives me a chance to listen to my favorite Podcast: American History Tellers. I prefer to arrive at work at least 10 minutes early, a concept that most in the military understand. The adage of "if you're not early, you're late" has been ingrained into my head for the last 24 years and is there to stay. Breakfast today is the same as every other day at the office: a bowl of plain oatmeal and a cup of coffee. First on my agenda today was a meeting with my boss and other trainers to discuss the following topics:

1)   Upcoming drill weekend 27-29 August 2021

a)   Headcount so we know how much food to order for meals

b)   Transportation: How many tactical vehicles and busses will it take to get everyone to Marseilles, IL

c)   Training requirements: Are the instructors prepared to train their respective classes upon arrival at Marseilles?

2)   Next month drill weekend 11-12 September 2021

a)   State budget issues and the probability of drill being canceled due to funding

b)   Identifying an administrator and graders for the Army Combat Fitness Test

The remainder of my morning was spent taking phone calls and responding to emails from Soldiers in my unit. Most of the questions about our upcoming drill next weekend. Some of the other daily tasks that kept me busy include but are not limited to:

·         Defense Travel System (DTS) – Inputting and managing Soldiers travel to/from all military-related duties

·         Training Management – Scheduling Soldiers for career progression schools and planning training for upcoming drill weekends

·         Payroll – Ensuring all duties performed are paid promptly

                Lunch was not very exciting today, but I planned on leaving the office a little early, so I decided to work while I ate. While peanut butter and jelly sandwich may not be the most nutritious lunch, it got me through the afternoon.  My reason for leaving work early today was to drive out the Rock Island Trail and go for a 5-mile run with a couple of coworkers of mine. We have been training for a half-marathon which will take place in October over Columbus Day Weekend. After our run and my heart rate returned to its average pace, I headed home to get cleaned up, feed our French Bulldog, Belle, and get ready for dinner with my wife and parents.

            My wife, Rene', and I met my parents at The Forge Steakhouse in Morton, Illinois, for dinner around 6 PM. The steakhouse was built at the site of an old blacksmith shop and still has the original forge on display inside. Steak, garlic mashed potatoes, beer, and great conversation made for an enjoyable evening. Afterward, Rene' and I drove home, put on comfortable clothes, and relaxed in front of the television while working on this assignment.

Applying Algorithmic Design and Data Structure Techniques in Developing Structured Programs

     For an inexperienced student such as myself, that title can seem a bit daunting. Hopefully this post will help make it easier to under...