Wednesday, January 6, 2021

Algorithm Design and Data Structures

 

To understand how to apply algorithm and data structure techniques, we need to define these elements. An algorithm is a set of well-defined instructions in sequence to help solve a problem. In contrast, data structures are named locations that can be used to store and organize data (Programiz. n.d.). There are several different types of algorithm data structures that can be used when implementing a program. Some of these examples include lists, stacks, trees, and sorts. Which data structure to utilize will depend on the problems that need to be solved. According to the article quoted above, some of the qualities of a good algorithm include precisely defined inputs and outputs, each step should be clear, algorithms should be most effective among many ways to solve a problem, and algorithms should be written in a way that can be used in many programming languages (Programiz. n.d.).

Another critical aspect to consider is space and time complexity when utilizing algorithms. Space complexity is the amount of space or memory needed to solve a problem, whereas time complexity is how long it takes to solve a problem. The goal is to solve problems using the least amount of memory and the least amount of time to solve problems. With that being said, each algorithm has a different purpose, and the problem being solved will determine which algorithm may be best. For example, if a user needs to organize values such as employees pay structures, a sorting algorithm may be best. Another example may be a company that needs to provide a list of products. In this case, a list algorithm may be best.

References:

Programiz (n.d.). Learn DS and Algorithms. Programiz. Retrieved from https://www.programiz.com/dsa#:~:text=A%20data%20structure%20is%20a,efficient%20and%20optimized%20computer%20programs.

Friday, November 27, 2020

Java OOPs Concepts and Implementation of Java

 

    Programming can be a very intimidating concept, and individuals may fear attempting to understand and learn a programming language. Although programming can seem scary, there are several ways individuals can seek and help and support while navigating the programming. Java is one of many programming languages available. When starting with Java, it is crucial to understand what Java is and the steps needed to implement this programming on their systems. First, let’s a look at the concepts and features of the object-oriented design principles within Java. Java includes several concepts within the program. First, we have objects, which are software bundles of related state and behavior. Classes are blueprints or prototypes from which objects are created. We also have Inheritance, which provides a powerful and natural mechanism for organizing and structuring software. An interface is a contract between a class and the outside world. Packages are namespaces for logically organizing classes and interfaces (Oracle. 2015).

    In order to utilize Java, there are two programs needed. The Java development kit and an integrated development environment or IDE. In this case, we use the link within the tutorial provided to download the NetBeans IDE. Each program is required to run Java programs. The link provided below includes links for both required programs. Once both programs are downloaded, the coding can begin. One recommendation to help individuals become more familiar with the interface is starting by working with a simple Java program such as “Hello, My Name is” or Hello World.” For further help with Java, please see the several blogs and tutorials available online.

Link to required downloads for Java:

Java Download

References:

Oracle. (2015). Lesson: Object-oriented programming concepts. Retrieved from http://docs.oracle.com/javase/tutorial/java/concepts/index.html

Oracle. (2015). The Java tutorials (Links to an external site.). Retrieved from http://docs.oracle.com/javase/tutorial/index.html

Monday, July 22, 2019

Tech Topic: Network Security


          When discussing the connection between network security and the fundamentals of information technology, one could argue that there is a strong correlation between them. Throughout the course, some of the fundamentals covered were computers and their history, hardware and software, programming languages, application software, database management, and network architecture and management. Network security plays a vital role in all of these topics. Computers have been around for many years, and so has the standard network. Network security has played an important role just about as long as computers have been around. According to Bhavya Daya, network security has been around since the thirties when Alan Turing broke the code for the enigma machine during the war (Daya, B. 2013, pg. 4, para 6). 

           Network security is also essential when considering computer hardware and software. Malicious attacks on networks can severely affect a computer and all of the components, such as destroying a hard drive or damaging programs. Network security is also essential when discussing database management as many organizations will use database applications for important records that individuals can access over networks which if not properly secured, can be subject to breaches and attacks.

As mentioned before the need for network security has been around as long as computers. Although computers have not been around for thousands of years, the need to secure networks such as lines of communication has always been critical. As computers have evolved, so have networks. Over the years, networks have made it possible for some outstanding advancements. Many remember the days where the only way to send and receive information was through the mail. Nowadays, an advanced network allows individuals instantaneous communication options such as email, text messaging, video chat, among many others. All of these tasks are possible because of networks and these networks having the proper security. An employee for a company here in the U.S. can video chat with a colleague in another country all because of networks

           Some of the major hardware components of a computer system include the computer CPU, memory, and hard drives. A computer cannot function properly without these components. While these components are crucial for a computer to operate, so is the need for network security to protect these components. As we know, malicious attacks occur through a network such as electronic mail distribution. Once a system is infected, these crucial components in the computer itself can be compromised, causing complete failure. An attack might be sent over a network to illegally obtain personal information stored on a company’s hard drives or effect a personal computer by damaging the processor.

           When discussing program languages, network security can be directly related. According to William Ruddy, knowledge of programming languages is essential for a successful career in network security (Ruddy W. 2019). Many attackers will use programming languages to implement attacks. An attacker might create a malicious set of code that transmits over a network, and if the said network is adequately secured, the network can contain the virus before it can infect other computers. Programming languages are an essential aspect of computing. In order to successfully protect networks from malicious attacks, we need to have a strong understanding of how these languages can also be used to carry out attacks.

           Application software such as Microsoft Word and Excel are great programs and are can be instrumental in our personal and professional lives. Also, nowadays, with the implementation of cloud services, the potential for attack increases severely. Microsoft utilizes cloud technology to save users documents to a program called One Drive. Users can save a word document on their computers and continue the work on their devices. Proper network security is crucial for these applications, as many users may have work stored on Microsoft servers. According to one online article, WAF, or web application firewalls, can be used to scan network traffic and analyze data between the client and server to identify possible attacks (Clincy, V., Shahriar H, 2018).

           When discussing database management, network security will also be an essential factor to consider. Databases are a widely used way of storing and accessing data. A hospital might use a database to keep patient records. This database might need to be accessed by many different individuals in numerous different hospitals. The only way to make that possible is through a computer network. Another example might be a branch of the military using a database to store plans for upcoming missions. This information might be considered top secret, and having a secure network is critical.

           Given these points, we can conclude that network security is essential to everyday life when using computers and networks. Network architecture is influenced by network security as individuals who might be creating a network will also need to know how they plan to protect it. A family might want to set up a Wi-Fi network in their home and will need to create a password to keep their network secure. Once this family has the network set up, they will be required to manage the network. Managing the network might include setting up notifications to advise when an unknown device is attempting to access their network. This family may also have anti-virus software installed on the computers, which can prevent the spread to other devices on their network. As long as there are computers and networks, there will always be a need for network security, and as technology advances, so will the tools used to secure networks.


References

Clincy, V., Shahriar H., (2018). Web Application Firewall: Network Security Models and Configuration. 2018 IEEE 42nd Annual Computer Software and Applications Conference 2018 IEEE 42nd Annual. 01:835-836

Daya, B. (2013). Network Security: History, Importance, and Future. University of Florida Department of Electrical and Computer Engineering. Retrieved from www.alphawireless.co.za

Ruddy, R. (2019). Do You Need Programming Skills for a Cyber Security Career? TechRoots: Sourcing Your Tech Perspective. Retrieved from https://phoenixts.com

Wednesday, July 17, 2019

Network Security


            Although ping commands can be useful in diagnosing network problems, they can also be used in malicious attacks. Two examples of how ping commands can be used maliciously are known as a ping of death and a ping flood (Wikipedia, 2019). Both can be detrimental to a computer system. A ping of death sends packets containing a significantly larger amount of bits then a system is designed to handle. This type of ping can cause a system to crash due to the overwhelming number of bits. Once the system has crashed, it now is vulnerable to the infection of viruses.

Ping floods can disrupt a system by sending pings back to back at a high rate (Wikipedia, 2019). When a flood of ping requests occur, the system has the potential to slow and cause legitimate requests to be denied. For example, if a site like Facebook was hit with a ping flood and did not have to proper security, then any individuals who try to access the site, might receive an error due to the site denying any request for access because of the amount of requests caused by the flood.

            Among the many security incidents that can occur, the two chosen for discussion are computer viruses and phishing. These two incindents have the potential to be detrimental not only on a personal network or personal well being but a large corporation network as well. Computers are vulnerable to both viruses and phishing due to systems not having the proper protection such as anti virus software or network security. Phishing can be successful due to negelgence or users not being knowledgeable in regards to sensitive data transfer.

            Computer viruses come in many forms and are typically transmitted though electronic mail such as email (Newman, Forest, and Balthrop, 2002). These infections can damage a system in many ways including, taking control, crashing, or slowing down a network. Viruses can also be transmitted to other systems which happens often. Think of a human virus like a flu. If not properly maintained, the flu can spread and infect many different people. The same can happen with computer viruses. The further the virus spreads, the more damage inflicted. An entire organization can suffer greatly from a virus. Computer viruses have been around for many years and as long as there are computers and networks, they are bound to evolve and continue to wreak havoc without the proper protection.

Phishing is another example of a security incident which is defined as an attempt by an attacker to obtain an individuals sensitive information such as bank account information by posing as a legitimate contact (Jagatic, Johnson, Jakobsson, and Menczer, 2005). An example would be an email from an attacker which looks to be from the victims bank asking for the victims password information due to a problem with the banks website being compromised. Victims of phishing could potentially lose everything from money to privacy.

There are many ways to protect against viruses and phishing. Computer viruses can be mitigated by utilizing sufficient anti-virus software. There are many options available for personal and professional networks. Organizations with large networks should utilize information technology specialists to maintain network security. Phishing attacks can be avoided by the understanding that most organization do not request password information via email. If a user suspects an email to be suspicious, they should reach out to the company directly to verify the email is legitimate.



References

Jagatic, T., Johnson, N., Jakobsson, M., Menczer, F., (2005) Social Phishing. School of Informatics, Indiana University, Bloomington. Retrieved from http://www.markus-jakobsson.com/papers/jakobsson-commacm07.pdf

Newman, M.E.J., Forest, S., Balthrop, J. (2002) Email networks and the spread of computer viruses. Phys. Rev. E 66, 035101(R). Retrieved from https://journals.aps.org/pre/abstract/10.1103/PhysRevE.66.035101

Ping Flood. (2019). Wikipedia. Retrieved [July 10, 2019] from https://en.wikipedia.org/w/index.php?title=Ping_of_death&oldid=900329806

Ping of Death (2019). Wikipedia. Retrievd [July 10, 2019] from https://en.wikipedia.org/w/index.php?title=Ping_of_death&oldid=900329806

Computers in the Workplace


The industry I chose to discuss is call-center operations. I chose this industry as I have quite a bit of experience. I have worked for Comcast for over six years and spent that time in residential sales as well as my current role with Comcast business. Comcast is one of the largest telecommunications companies in the country and employ thousands of individuals from the U.S. and abroad. With Comcast being a customer-based company, Distributive call centers are a critical part of business operations for Comcast. Comcast utilizes call centers for many functions such as technical support, sales and sales support, retention, collections, and tech ops support and has call centers all over the U.S. as well as internationally. Comcast also has many employees who work remotely which allows for more productivity.

Every center has a unique job function, and computers, along with technology, are essential tools employees use to assist with their roles. According to James Patterson, with technology being part of everyday life, companies utilizing technology in customer service roles not only benefits the customers but helps with business goals as well. (Patterson, J. 2015, para. 4). One specific center we can take a closer look at is the Business Support Center where I currently work. Every employee in this center uses a computer for everyday tasks. Computers are an essential part of our jobs as we could not perform any required tasks without them. We use computers to build accounts, process contracts, communicate with other departments as well as conducting in house training among many other tasks.

It is imperative for individuals to be computer literate while working in these call centers as employees will need to utilize many different programs such as word processing and spreadsheets. Individuals are also required to understand how to properly use email and messenger applications, as all internal communications typically happen via email and messengers. Along with these essential programs, employees are also required to use the companies billing systems when processing orders. These systems require a strong understanding of computers as these systems can be very complex.

With the current speed at which computing is advancing, the future can be very beneficial to call centers. Although Comcast utilizes a worldwide network for business operations, there are still some issues we employees run into on occasion. Some issues include problems with programs such as salesforce or the billing systems. These issues arise periodically and usually occurs towards the end of the fiscal month as more individuals are accessing Comcast systems than usual. With more traffic on the network, programs sometimes crash, and the network slows. As computing and networking advances over the years, so will the center's operations. I have already seen advancements within my role, such as updated computers and operating systems, as well as upgraded networks. I can only assume that the more this technology advances, the more the call centers will take advantage of these advancements. Computers are the backbone of call centers, and it is crucial to keep up with advances in computing, operating systems, and networking for these centers to be successful.  

References:

Patterson J. (2015) Just how important Technology is to Customer Service in Today’s Time. Retrieved from http:// transcosmos.co.uk

Traveling Through a Network


Although I do not have any previous experience with website pings and traceroute experience, I found this activity quite interesting. Our text explains packets, and they travel as information such as email messages or webpages that go through different computers via communications links such as fiber optic cables. These packets will travel to a specific destination and back (Vahid & Lysecky, 2017, Sec. 301, para 2). When comparing the three ping operations I completed, one can clearly see a difference in trip times with each ping. Google.com had the shortest trip time whereas the ping to a Japanese as well as a Chinese site took significantly longer. This can be explained by the distances between home and the destinations being pinged. For example, my ping to Google only took an average of 19ms, whereas my ping to 360.cn took 114ms. The difference between trip time occurs because my ping had to travel a much shorter distance as a Google server is much closer. A ping traveling to another country like China or Japan will obviously take longer due to distance. Geographical locations do play a role in trip times. The further away the domain is, the longer the trip time.


Figure 1. Google.com ping example



Figure 2. Google.com traceroute

          When considering ping and traceroute commands, both tools can be helpful when troubleshooting internet problems. If there is an issue with an internet connection, a ping or traceroute command will show a failed result. The ping command results show how many packets were sent and how many were received. If four packets are sent and none come back, this may be a result of a network problem such as a bad communication link or router as this is how packets travel back and forth. Some other reasons for a failed ping or traceroute request could be a site blocking incoming pings or a server being down (Beal, V. 2018). If a site wishes to block incoming pings, the results will show a "request timed out" response, as the loop was not able to be completed. A user would get the same result from a downed server.


References:

Beal, V. (2018) The Difference Between Traceroute and Ping. Retrieved from https://www.webopedia.com

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

Tuesday, July 16, 2019

Documenting a Day


           Regarding documenting my day, I found all applications useful for various reasons. Documenting my day in journal form with the word processor was very straight forward for me. For someone who enjoys writing, a journal entry describing my day allowed me to add some creativity to the assignment, such as feelings or emotions experienced. The word processing application also allowed me to display important parts of the day in a bulleted list, which is helpful for readers who want a more straightforward understanding of my day. An advantage to word processing applications for a user is the number of formatting options available. A user can choose various fonts and page styles. Another benefit to word processing applications are the review options available. A word processing application will automatically display spelling and grammar errors, which can easily be corrected.

            Although word processing applications can be handy, there are some disadvantages. One disadvantage is that a user may feel overwhelmed with the number of different options available for formatting. For someone who is not familiar with computers or word processing applications, one may struggle when using the application. Another disadvantage to a word processing application is the fact that a user is not easily able to organize information like they could with a spreadsheet. Word applications are also limited regarding calculations and formulas.

            Documenting a day with a spreadsheet was also very beneficial. I was able to input each critical aspect of my day into cells, then easily calculate percentages of time spent on each task via a simple formula. The spreadsheet was straightforward as far as the information displayed, and I found the spreadsheet to be the most useful for documenting my day. Some advantages to a spreadsheet application are the number of formula options available to a user as well as the chart options. For example, a statistician might find a spreadsheet more useful for displaying population data for an area. Within the spreadsheet, this user can calculate means and medians as well as input charts to display the data.

             Some disadvantage to a spreadsheet application is the learning curve that is required to operate as well as the limitations on text formatting. As with word processing application, spreadsheet applications require a user to be computer literacy to use. A user will also need some knowledge to understand how to calculate formulas. Furthermore, spreadsheets don’t allow users many text formatting options like a word processor does.

              Regarding the presentation application, I found this one to be the most time consuming when documenting my day. Presentation applications display data on slides. An employee might find this type of application the most useful to view information for a meeting or a teacher might use a presentation application for a lecture. An advantage to presentation applications is the number of design options available. Someone viewing a slide show about my day might enjoy this option the best as presentation applications may be more visually pleasing as the creator can add multiple pictures, animations or different page layouts to attract a specific audience. A disadvantage to presentation applications are the limitations in displaying large amounts of data. Although these applications allow a user to insert charts and spreadsheets, a user is limited with the amount of space on the slide itself. It would not be beneficial for a user to insert a table of data that would require a significant decrease in the size of the chart to fit on the page as individual viewing the slide may not be able to see the data.

            The fourth and final application used to document my day was a database application. I found this application the least exciting. Database applications are used to store data and allows multiple users to access. Some advantages to these applications are the amount of data that can be stored and the search options available. For example, a hospital may use database applications to store patient information. The hospital may have thousands upon thousands of records stored yet easily accessible by the staff via search queries. A cardiologist may need to access records from only heart patients and filter out all other patients and can do so effectively with a database application.

           A disadvantage to database applications, like some of the other applications, are the formatting options available. Although database applications are great for storing data, the look and design are very straightforward. Data is displayed in cells like a spreadsheet but there are limited options for formatting like word or presentation applications, and if someone is viewing a database, they might have a hard time understanding what they are viewing without an explanation. For example, if someone were to open my database file for documenting my day, the viewer may not understand what they are looking at as easily as the journal entry or presentation.