Algorithmic Design and Data Structure Techniques for Newbies.


Some of us have an innate fear or at least a little apprehension about learning new technology, and algorithmic design and data structure techniques are no exception to that notion. Some may even avoid something they are interested in because of industry jargon and preconceived notions of the difficulties of making original code.

Knowing the practical uses of specific types of data structures will make producing better algorithms just a little easier. In the textbook Data Structures and Algorithm Analysis, the author describes two basic rules of thought to direct any programmer to write code that is easy to read, understand, decode and debug – the design should be efficient and effective while using computer resources. Shaffer, (2013)

Starting with the basics of gathering information that will help decide which type of algorithm will benefit your program the most. Think about lists, sorting, and types of searches such as Binary searches. These are core algorithms that can spur your program to be fast and flawless. Understanding that algorithms are structured methods can help your difficulties writing them because they are somewhat modular in their design and scope. Having modular structures means that you will not have to reinvent the proverbial wheel each time you write code so take heart in knowing we all make mistakes, and there is a myriad of corrective actions built into IDEs that can help you resolve yours.   

 

Reference

 

Shaffer, C. (2013). Data Structures and Algorithm Analysis Edition 3.2 (Java Version). https://people.cs.vt.edu/~shaffer/Book/JAVA3elatest.pdf

Week 1 Interactive Assignment 2

Java, one of the most ubiquitous programming software languages available globally, is an Object-Oriented Program (OOP) created by the software company Oracle. It features a Command Line Interface (CLI) reminiscent of C, C++, and Python. They are used by businesses worldwide. Java is often used to automate processes, especially sequences that could be time and labor-intensive.

My first foray into the world of Java was for the class Operating Systems Theory & Design (CPT307) - the project titled Hello My Name is____. After reading the class text and tutorials, I downloaded Java and a Java Development Kit (JDK) to run Java. I also downloaded an Integrated Development Environment (IDE), which allows a developer to compile written code. I initially downloaded NetBeans and tried using it with Java.

I had some difficulty rendering my code, so I decided to move on from that program and downloaded Visual Studio Code. After using that program, I glanced at what student expectations through to the last project then made a practice decision to use BlueJ. I found a YouTube video to guide me while writing my code. it is titled: Hello World and User Input with the  BlueJ IDE.

I found BlueJ very user-friendly and able to produce the desired results of the Interactive Assignment. Here is a screenshot of my results. As of this posting, I would recommend using BlueJ over either of the two other IDEs that I tried before this one.



 "Hello World!" for the NetBeans IDE (The Java™ Tutorials > Getting Started > The "Hello World!" Application) (oracle.com)

 (2063) Hello World and User Input with the BlueJ IDE - YouTube

Lesson: The "Hello World!" Application (The Java™ Tutorials > Getting Started) (oracle.com)


Objective of Operating Sytems

 

OS Concept Map Final Project

Anthony Dulin

CPT304: Operating Systems Theory and Design

Instructor: Nelson Stewart

3/02/2022



Introduction

Today's world of advanced Operating Systems (OS) like Microsoft's Windows 10 and 11, along with Apple's macOS and Linux's MX Linux, have become mainstays in business, classrooms, and the home. They are the divers of industrial machinery and the keepers of applications that maintain our special memories and meaningful projects. Teams of Computer Scientists have meticulously written the inner workings of these ubiquitous programs. Protocol coupled with technology has advanced these programs beyond the expectations of the original designers to the extent that these programs have become nearly autonomous. This paper will primarily focus on the following topics:

·        Features and structure of contemporary operating systems

·        Threads and process synchronization

·        Memory management

·        File systems

·        Mass storage

·        I/O

·        Security and protection (Silberschatz, 2014).

 

Features and Structures of Contemporary Operating Systems


Operating Systems work on principles of design that are common to most modern produced OSs but not to all – most often written as proprietary code - some are open-sourced and manipulated by any user with the knowledge to do so. The Kernel, which sits at the heart of an OS, constantly operates while the computer is running. It communicates with several components such as the Daemon, Input/Output components, Middleware (firmware), and the User interface. The Daemon runs in the background after the Kernel is loaded and executes sets of instructions not handled by the Kernel (Silberschatz, 2014). 

Diagram

Description automatically generated

 

Diagram

Description automatically generated

 

Threads and Process Synchronization

 

Kernel-Level and User-Level Thread Synchronizations are a part of "flow control within a process." (Silberschatz, 2014). Instances of events generate signals which are then delivered to processes and eventually handled by either the default signal handler or the user-defined signal handler. Silberschatz, (2014). Page184.

Memory Management

An often-overlooked portion of Operating System operations is Memory management, the function of an OS to call upon memory components to produce the user's desired result. Memory consists of Cache (onboard the processor), Random Access Memory (RAM), and Hard disk drives (HDD). The two types of drives are Solid State Drives comprised of digital electronic components that have no moving parts. The other drives are those having spinning plates to which data is stored. These plates are spun at high speeds and are read and written to using read/write heads attached to drive arms that sweep across the disks to specific locations called out by the Operating system. Base and Limiting registers, which the OS can only load, rendering users unable to change register content. Instead, the OS has full access to both types of memories to ensure the integrity of the data.

Compile, load, and execution times are parts of a process that lead to successful completion. The Compile time is the part of the process where the Absolute code is derived, while load time is the duration of time it takes to complete that process. If a relocatable code gets generated, the compile-time is unknown. Execution time is the duration of time it takes to run an operation. Silberschatz, (2014).

Table

Description automatically generated

Diagram

Description automatically generated

Mass Storage

Mass storage devices, also known as Hard Disk Drives (HDD), are at the heart of any computer; they are the tools that keep data safe and retrievable. However, some of these devices are more robust than others. Drives are divided into two distinct types; modern mass storage devices can store large amounts of data, sometimes at terabyte levels. Solid State Drives are storage devices entirely devoid of moving parts that benefit the user with fast boot and retrieval speeds. They are also less likely to crash, especially accidental drops or faulty drive arms.

File System

A File system is the means of accessing disks to allow storage, location, and data retrieval. There are n-disk and in-memory structures that may contain vital information, such as the Booting the computer from the Boot Control Block. (Silberschatz, (2014)). The size and number of drive partitions are found in the Volume Control block. A Control File control Clock consists of permissions, file dates, the Access Control List, the size of the file, and data blocks and functions. Silberschatz, (2014). Creating a file is done by making a system call from the application program. The directory is read to memory locations and updated with new file names written to the disk. Silberschatz, (2014).

Security and Protection

Businesses, schools, and home networks all share a common need – the need to be free of malicious and even inadvertent intrusions into their systems. The internet has provided a means for threat actors worldwide access to even the most obscure networks, which has drawn consternation from the network owners. Security: defined as ensuring the authentication of a system user to protect the integrity of information stored in the system. Silberschatz, (2014). This definition acknowledges that any user can be a threat if they lose their credentials to access the network or any of its components.

 Conclusion

Operating Systems such as Linux, Mac OS, and Windows have made business, home, and schools more productive in that processing information is more accessible due to systems organized by Operating Systems. These OSs give the means to store, share and retrieve files created by the user and manage system protection and security. As an alternative to Command-Line Interfaces (CLI), the Operating System makes work less difficult for the average user with Graphical User Interfaces (GUI) that often make tedious chores less labor-intensive.

 Final Concept Map.drawio - diagrams.net

 Diagram

Description automatically generated

Diagram

Description automatically generated

 

 

  

References

 

Silberschatz, A., Galvin, P. B., & Gagne, G. (2014). Operating system concepts essentials (2nd ed.). Retrieved from https://redshelf.com/

 

 

 












Post #  6

Week Four Assignment  - Network Security

My Week Four assignment on Network Security assignment was one that I enjoyed because it is what I have wanted to study for years. I am hoping that this post is illustrative on the subject. I have not seen feedback for this post as of yet. Thank yo all 

Network security is the primary concern of many businesses worldwide, considering the many threat actors challenging individuals and companies' networks. We have seen multiple attacks from independent and nation-states with broad implications that wreak havoc on commerce and infrastructure. Building new strategies to defend against vulnerabilities will undoubtedly be at the forefront of those concerned with mitigating threats.      

The Importance of Information and System Security for Individuals and Organizations.

The likelihood of organizations and individuals encountering malicious acts against their computer infrastructure is almost an eventual certainty. To what extent those adverse actions make on networks and the hardware is directly dependent on how well prepared individuals and companies are.

Computer Viruses


Computer viruses have come to be somewhat ubiquitous, especially since the advent of an always-on internet environment. We have seen more traffic from malicious sources that produced viruses, such as the Colonial Pipeline cyber security attack. This attack occurred due to the threat actors gaining access to the colonial Pipeline's network by implanting ransomware that took control of vital software controlling devices used to regulate the flow of petroleum along the entirety of the delivery system. This ransomware attack is similar to that levied against unsuspecting individuals and businesses to force them to pay a ransom for their data and control of their computers. A way to fight ransomware is to have a robust backup program set up to enable reinstatement of normal computer functions. Maintaining up-to-date antivirus programs is another means to combat ransomware attacks.

Social Engineering

Social engineering is the systematic approach of using persuasion to affect change in individuals that exploit vulnerabilities. Zhu and Sun (2021). Some of these attacks begin with seemingly benign inquiries about personal information. From there, they escalate to include questions about the business and then the network itself. The aim is to gain access to networks by gathering bits of information to build a big picture view of the entirety of the network, including its vulnerabilities which primarily are the typical user. Washo (2021).

Combating this type of threat requires immersing the system's users in training that stresses privacy, password protection, and a layered security system that requires varying levels of protected security access. Vahid & Lysecky (2017).

Conclusion

Network security is the responsibility of all users on a network because networks are only as strong as the policies that govern them and the people who follow those protocols. Staying abreast of possible threats and their sources can enable Information technology professionals to stem the tide of malware, including ransomware, trojan horses, phishing expeditions, and social engineering.

 

 

 

References

Vahid, F., & Lysecky, S. (2017), Computing technology for allSection 8.3 - INT 100: Fundamentals of Information Technology & Literacy (zybooks.com)

Z. Wang, H. Zhu and L. Sun, "Social Engineering in Cybersecurity: Effect Mechanisms, Human Vulnerabilities and Attack Methods," in IEEE Access, vol. 9, pp. 11895-11910, 2021, doi: 10.1109/ACCESS.2021.3051633.

Washo, A. H. (2021). An interdisciplinary view of social engineering: A call to action for research. Computers in Human Behavior Reports4. https://doi-org.proxy-library.ashford.edu/10.1016/j.chbr.2021.100126

 

 

 

 

 

Post # 5

Week Four Discussion

My post shows how computers are so vital to the day-to-day operations of the aerospace industry.

In the week four discussion, one of my peers lamented that the prediction of upgrades to WiFi would make speeds better and faster.  He also mentioned the importance of teaching younger generations many programs that are so important to commerce writ large.

Another peer stated that perhaps society has become too dependent upon technology. She believes that my statements are correct about technological advancements moving forward to a better society are correct. She also stated that this was a good post.

Professor Flores stated that innovations such as those I wrote about were not possible as early as ten or fifteen years ago.

My Week Four Discussion post:

The aerospace industry comprises a multitude of specialties ranging from Aerospace Engineers, Avionics Specialists, and Supply Procurement Specialists. This broad range of jobs necessitates heavy data transfers and a means to store and retrieve data, in addition to ways to communicate over Local Area Networks (LANs) and the internet. 

Computer literacy is imperative when cataloging parts, researching electronic component specifications and designing new, improved enclosures with space and weight in mind. There are jobs within the Aerospace industry that are primarily computer-centric such as Computer Operated Design (CAD) Technicians and Graphic Design Artists. These jobs, compartmentalized mainly due to their nature and scope of purpose -- require considerable training and skill. 

As you might have already surmised, computers, deeply entrenched in the culture and everyday working environment, have become so crucial to the day-to-day operation of this industry that to remove them would be akin to eliminating the industry or reducing innovation in considerable measure. 

Considering the exponential growth the world has experienced in computer use, it stands to reason that n the next ten years; we will see more expansion and innovation. One of those innovations will undoubtedly be in the realm of processing speed. There are currently experiments to bring Quantum computing theories into fruition. Quantum computing, believed to enhance encryption dramatically, will be of great importance to businesses with concerns about privacy and security. 

Hardware will become more reliable and smarter due to the necessity of keeping up with new software innovations. Hand gestures will become commonplace instead of using a mouse, while frequency hopping to evade unwanted internet access will help defray compromised networks. Wireless Fidelity (WiFi) uses the 2.4 Gigahertz and five Gigahertz frequencies ranges for internet access; however, I believe there will be more frequencies approved for WiFi, requiring upgraded Network Interface cards to accommodate reception and transmission of WiFi signals.

Faster computers, better and smarter hardware with improved software will undoubtedly become normal. The only unknown is to what degree these improvements will take. 

 

Post # 4

Week Three Interactive Assignment

In the week three interactive for packets traveling through a network, one of my peers expressed that he enjoyed reading my post and thought my breakdown of the results to help him understand it better. He noted that some packets timed out, making my results somewhat different than others he had read.

Ping and Traceroute are time tested troubleshooting tools that rely on sending signals through a medium to a destination on the internet. The trip is timed and and tracked through any number of hops. These hops are the number of routers and switches the signal has to traverse bi-directionally. If there are no issues there will be a clear indication of how long the trip took and  and indication of a time out is indicated when there is a failure.




 

I am posting my interactive for your approval:

We have all had opportunities to see connectivity failures in our networks - these failures can be problematic for businesses that rely on internet connectivity for the livelihood of their commerce. 

Network engineers and technicians have tools that can verify connectivity speed and the number of hops required for data packets to travel from their point of origin to their final destination. Latency is the unwanted variable that users and technicians alike want to rid their networks of most often. 

Using Ping and Traceroute to determine the speed and routes of packets can be analogous to using a multi-meter to perform a continuity test on a wire and then having specialized devices linked by that wire also tested. This analogy is a simplistic way of looking at the processes, but sometimes, simple explanations can go a long way to explain the complexity of things. 

Both Ping and Traceroute can sometimes fail due to loose or missing connections at the destination or a faulty wire within the cable. Another cause of failure could be incorrect IP addresses on the devices at the destination or along the way to the destination.

Ping

I used Ping to test Google.com, BBC.co.uk, and Rakuten.co.jp; the results varied because each website belonged to different world regions. The round trip for Google took an average of 18 milliseconds with a maximum journey of 36 milliseconds. The ping of the BBC site produced an average trip time of 13 milliseconds with a max time of 14 milliseconds. The pinging of the Japanese site Rakuten produced round an average round trip time of 121 milliseconds with a maximum time of 122 milliseconds. 

Traceroute

Traceroute and ping differ in that ping merely provides a means to determine continuity between sending and destination points. At the same time, Traceroute provides the number of hops (number of routers accessed) on the way to and from the destination. Vahid, & Lysecky (2017).

The Traceroute to Google in the United States yielded a result of 14 hops at a maximum time of 39 milliseconds. The same command sending inquiries to the British Broadcast Company (BBC), a United Kingdom site, yielded 25 milliseconds in 11 hops. Then a Traceroute to Rakuten, a Japanese site, produced a result of 163 milliseconds in 18 hops. These results are consistent with other results from similar Traceroute requests, except for the number of hops and the time required to complete the journey.  

The Traceroute and Ping commands are powerful tools used to provide assurances of network integrity. Without these commands, Network Engineers would have to visit each component and find ways to sense the presence of the number of devices along the travel path -- an impossible task given the number of networks worldwide.  

Reference:

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

 

Post # 3

Week Two Assignment One

Exercise one of week two called for class members to document a day in the life using the word processing application Microsoft Word in part one in a journal. Calculating the time spent during the operation of each activity during the day was done in part two of the assignment, while using the application PowerPoint to create a slideshow that visually depicts the tasks captured in a Word journal. Part three was for creating a PowerPoint presentation of the activities in the journal, and part four is for reflecting on the role of each application.

Dr. Flores gave feedback of each of the four areas of the assignment written in the above paragraph. He mentioned the function of Excel, PowerPoint and Word along with the primary functions of each program.

Below is a portion of the assignment that I submitted. It has several descriptions of the the Microsoft Office programs required for the assignment.

 Microsoft Word is a word processor program that allows users to type passages that can be easily manipulated by accessing many features that make one's writing stand out. Microsoft Excel is a spreadsheet program that can render sums from numbers put together as a formula – statistics, lists, and addition are a couple of the types of math Excel can perform without flaw. Vahid, F., & Lysecky, S. (2017),

Many features within PowerPoint could greatly assist a user that requires access to slideshows and presentations. Comparing PowerPoint to Excel and Word has always been challenging because each program is different and has  

Word: This word processing program has many features, such as editing and providing users with grammar and spell-check; however, these editing features are only as good as the data stored within the program.   

Excel: Designed to organize and analyze data to make studying databases easier. A key feature of Excel is its ability to render statistical values from data input into its cells. A con of this process is that it can be challenging to find and utilize the required formulas. Navigating cells can be challenging, but with practice, one can accomplish much more with this program than they could without it.

PowerPoint: This presentation program has been used in companies and schools worldwide as the premier presentation program.  PowerPoint is a slide-based interface; this program can incorporate pictures and animation as a couple of its most used features. One of the cons of this program is that it does not have any ability to make slides that can perform any active function such as math. Vahid, F., & Lysecky, S. (2017).


 

Post # 2

Week Two Assignment

In the week two assignment, our class was tasked to assess a software application  

Dr. Flores expressed that blogs provide opinions on a subject that may interest the public. He used the term "top-of-mind," which means it is at the forefront of topics related to today. He also gave a little insight about withing blogs for content and not for volume. I am encouraged by that portion of his comment.

In the main critique of my post, one of my classmates commented that the Knots 3D application would be of great help to him because it is difficult to find a video that offers adequate instruction with video instruction to suit his needs. He finds that the program will aid him due to the embedded  3D content of the program.

Dr. Flores mentioned in his critique that my analysis of the program was  "good." Also noted is that the aesthetics of the app adequately provides a presentation of color and synchronization.

 

Post#1

In my assessment of the Scratch application in the first week's assignment, I made assertions about programs that I thought were similar -- Dr. Flores mentioned some other programs closer in operation than the ones I chose. Below is my Week one assessment, Dr. Flores's comments, and the link to my blog thereafter. 

Introduction

Scratch is an interactive website that allows one to create and design simple programs using modular components containing coded commands. Some interesting concepts were conveyed to users of this program. For instance, each modular piece is set within a particular group representing a type of function. Those functions are similar to input values on a command line of a programming language such as Python or C++.

Using Scratch.                                              

While Scratch is quite an interesting program that can be a gentle introduction into the world of program languages, it is fraught with many boundaries that could pose some difficulties for new users.

Identifying the Problems

Making the Sprites move to the positions one wishes them to be can take some time. The characters are not fluid and are stiff. Adding sound can be challenging to add to the program for the duration of the program. 

Working Through the Problems

The process of building a program revealed several of those boundaries --semi-rigid by design, one can overcome them by studying the code embedded within each piece. One may also find simple trial and error to be of great use to resolve problems.

Gained Insights

Some of the gained insights are that the ability to couple commands together with others to get the desired response can sometimes be difficult due to the shape of the modules. The keyed modules only fit with specific other modules. That is sometimes the same as other programs such as C++, and  Python.  

Compare Experiences Working with Snatch Textbook Activities

Manually inputting inputs on a command line is much more complex than using a modular approach. The modules are used more readily because memorization is not imperative. High-level languages require a greater knowledge of how to operate the system as a whole.

Differences Between Programming Languages

The types of programming languages are Assembly language and High-Level programming languages. The difference is in the complexity of the languages and their ability to produce high-quality graphics and programs.

Machine Language: Operate as switches to allow changes in voltages to determine the output of a device. Lysecky, and Vahid (2017).

Assemblers and Assembly Languages: The Language of ones and zeros that get controlled by Program languages. "a textual human-understandable representation of a machine language's 0's and 1's." Lysecky, and Vahid (2017).

High-Level Language: "is a programming language having higher-level instructions than assembly language, enabling greater programmer productivity." Lysecky, and Vahid (2017).

Identify which Language you found easiest to use: I believe High-Level Programs, particularly Python, are the easiest to use.

Describe scenarios where each type of programming language would be most effective.

 

Machine language would work very well when one may need a controller to maintain the speed and direction of servos and synchros to a gimbal assembly tracking correctly.

Assembly Language may be necessary to keep machinery such as an auger on a plastic extrusion machine running smoothly.

High-level programs are used primarily to create high-quality graphics and games as well as Operating systems for computer hardware.

Explain which programming language you think is the most popular and why.

Python is a robust High-level program that is more user-friendly than most other Hoh-level programs. This ease of use makes Python the more straightforward program to navigate successfully.  

Dr. Flores's Comments.

Comment #1

"An essential part of every programming language is to fully understand the syntactical and logical structural components of any language chosen to code or create an application. However, with Scratch, the ready-made solutions with the help of tutorials can make the work facile." - Dr. Jimmy Flores

Comment #2

"Although initially the various components of scratch can be difficult to understand, it is a simple process where no technical coding is required for one to design any application from the beginning. The animations, graphical interfaces are appealing in a manner that educationalists, children and anyone can drag and drop the various aspects like sound, color, sensing, control, events along with the other factors of the animative stage." - Dr. Jimmy Flores

Comment #3

"Scratch can be confusing as compared to python where syntax related logical statements are used to obtain relevant results. Scratch is more comparable to visual basic programs, where a drag and drop option of the various components is done, with the backend comprising of programming language such as SQL or oracle to support their behavior and working." - Dr. Jimmy Flores

Scratch Link:

https://scratch.mit.edu/projects/579226885


References:

Lysecky Susan, and Vahid Frank (2017), Section 2.9 - INT 100: Fundamentals of Information Technology & Literacy (zybooks.com)




Thank you for visiting the inaugural posting of my tech blog. My hope is to help inquisitive minds follow tech news through the posting of articles and video. 

Algorithmic Design and Data Structure Techniques for Newbies.

Some of us have an innate fear or at least a little apprehension about learning new technology, and algorithmic design and data structure te...