Today is the day that I have been looking forward to for the last couple of years. I have put a lot of hard work and dedication into my studies over the last two years. I originally started working on my degree in Information Technology, but somewhere along the line found more of an interest in learning about programming and software technology, so I changed my course of study. As I began working on my degree, I became interested in automated mechanical systems as a Control Room Operator in my current job. During the last two years, I have developed a better understanding not only of the development of the software that I use daily, and software development in general.
Adam's Information Technology Blog
My life as I study for a career in Information Technology
Monday, May 13, 2024
I Have Completed My Degree in Computer Software Technology
Friday, December 16, 2022
CPT 307: Newbie to Newbie Part 2 - Data Structures and Algorithms
Throughout this course, we learned about data structures and algorithms when writing computer programs. We learned about the importance of writing more efficient programs. This course also gave us some experience with writing code in Java.
In week 2 we learned different methods for writing programs
to search for information in a list and different ways to sort data. Of the
different search and sort methods, some methods are much more efficient than
others. With computer programming there are many ways to get a final desired
result. The most efficient way is usually the most desired.
In week 4 we were worked on recursion problems. Recursive
programs are defined in terms of themselves. I provided an example below of a
factorial program that I did for this week’s interactive assignment. We were
given the choice of two recursion problems from this website https://codingbat.com/java/Recursion-1
and encouraged to look at our classmates’ solutions to their problems.
In the different algorithms discussed throughout this course, we learned that efficiency of a program has always been important since computers were much larger and slower than they are today. This is still very important for programmers to consider today. Our textbook discussed the O notation, which is a way to evaluate the efficiency of an algorithm. Algorithms can be shortened down and compared to the functions in the left-hand columns of the tables below. N is the number of iterations that the program is run through and the time of running the program that many times is estimated below.
In addition to these lessons of algorithmic design and data structures, we learned some Java programming. I wish I had more time to learn more Java in the past 5 weeks, but I am sure that will be another learning adventure for me in the future. It may be a while, but I intend to post on my further learnings of Java.
References
Data Structures: Lecture 2. (n.d.).
https://www.cs.utexas.edu/users/djimenez/utsa/cs1723/lecture2.html
Java Program to Find
Factorial of a Number Recursively - GeeksforGeeks. GeeksforGeeks | A computer
science portal for geeks. (n.d.). Retrieved December 6, 2022 from
https://www.geeksforgeeks.org/java-program-to-find-factorial-of-a-number-recursively/.
Lysecky, R., Vahid, F., Lysecky, S., & Givargis, T. (2015). Data structures essentials. zyBooks.
Seif, G. (2022, February
11). A tour of the top 5 sorting
algorithms with Python code.
Medium. https://medium.com/@george.seif94/a-tour-of-the-top-5-sorting-algorithms-with-python-code-43ea9aa02889
Thursday, November 17, 2022
Newbie to Newbie - Introduction to Java and Object Oriented Programming
Object-oriented programming (OOP) is programming built
around data and objects rather than using functions and logic. Object-Oriented
Programming has four main types of blocks: Classes, objects, methods, and
attributes. Classes define the nature of an object. Objects are data fields
with unique attributes. Methods are the behaviors of the objects, or the
actions that the object can perform. Attributes are additional characteristics that
the object has besides the class of the object. This makes the object more unique
and identifiable.
As an Information Technology student with little programming
experience, many of these terms and concepts are new to me. My experience with
programming languages is limited to taking a course on Python a few months ago.
This week I am beginning to learn another programming language, Java.
To begin my learning experiences with Java, I found the benefits of OOPs and Java here. After reading about some of the advantages of Java, I went on to download Java. The download can be found here (Java downloads)
After downloading Java successfully, the window above appeared
on my screen. Next, the tutorials on the website walked me through creating a
brief “HelloWorldApp.java” program. This is a brand new programming language
for me so I appreciated this help.
In addition to downloading Java, you will need to download an ILE. It is recommended that we use Apache NetBeans 15 for this class. This tutorial on Oracle's website will walk you through how to use Java on the NetBeans ILE. They recommend using this version of Java (jdk1.8.0_181).
Now with the installation complete, you are set to begin learning how to write code in Java. There are many tutorials out there to help. Remember, Java and JavaScript are two different languages. Make sure you are learning the correct language.
Good luck learning this new language, Newbie.
References
Bradshaw, R. (2022, January 27).
Why Object-Oriented Programming Matters. Apollo Technical LLC. https://www.apollotechnical.com/why-object-oriented-programming-matters/
Java OOPs Concepts - Javatpoint. (n.d.). www.javatpoint.com. https://www.javatpoint.com/java-oops-concepts
Sunday, November 13, 2022
CPT 304 - Operating Systems Theory & Design
(Click here to view larger diagram.)
Introduction
and Operating-System Structures
The major functions of an
operating system are to control the hardware of a computer and coordinate the
use of the hardware among several applications for the use of various users.
Operating systems provide a means for the proper use of hardware, software, and
data in the operation of the computer.
There are six major components
of an operating system; process control, file management, device management,
information management, communications, and protections. Javatpoint.com
identifies eight major components, splitting file management into main memory
management and secondary storage management and adding network management,
which wouldn't necessarily pertain to standalone computers.
Process control is the
component of an operating system that starts and ends programs. If there is an
error in the process, the operating system determines what to do with the error
in order to keep the computer processing.
File management allows the
operating system to create and delete files. It allows us to open, read, write,
and close files.
Device management involves
several components of the computer. It involves the main memory, drives, and
access to files. It also includes the inputs and outputs of devices such as
keyboards, mouses, keyboards, monitors, and printers.
Information maintenance can
track the amount of time the computer accessed certain information in the
memory. It can also track when the memory was last used.
Communication involves
interprocess communication. This would involve the message passing between two
processes that are taking place. It also involves shared memory between
different processes.
Protecting gives the operating
system a means for controlling access to the computer’s resources.
Processes,
Threads, and Process Synchronization
Processes
A process is a program that is being executed. This is more
than just the code of the program. The process includes the current activity in
the program, contents in the processor’s registers, and other temporary data.
The process state could be one of five different states of
the process:
- New - When the process is being created
- Running - When instructions are being executed
- Waiting – When the process is waiting for an event to occur, such as an input or output
- Ready – When the process is waiting to be assigned to a processor
- Terminated – When the process is finished being executed
The process block control is also referred to as the task
control block. This is where each process is represented in the operating
system. The process control block (PCB) would include the following
information:
- Process state – One of the states mentioned above
- Program counter – The address of the next instruction to be executed
- CPU registers – Registers vary depending on the computer’s architecture
- CPU-scheduling information – Process priority, pointers to scheduling queues, or other scheduling information
- Memory-management information – Could include values of the base and limit registers and page tables or segment tables
- Account information – Includes the amount of CPU and real-time used, time limits, account numbers, job or process numbers, etc.
- I/O status information – Includes a list of input/output devices allocated to the process, a list of open files, etc.
Threads
A thread is a basic part of CPU usage. Threads have an ID,
a program counter, a register set, and a stack. In a real-life scenario, I can
think of a thread as a task that I would perform, such as doing laundry, making
dinner, and watching a football game. Some tasks can be performed while
performing other tasks, like the three that I listed. Modern computers are
great at multitasking. They can take on several tasks and perform them at the
same time. One single program could have multiple threads to perform. With a
single-threaded process, each of these threads would be performed one at a
time. If I were to do each of my three tasks individually. That would take six
hours or more. Modern computers perform multithreaded processes to save a lot
of time. Many threads can be performed concurrently. When one thread is waiting
on an input from the user, the other threads can continue to keep working. In a
single-threaded process, waiting on an input would really slow things down.
Critical-section problem
A critical section is a part of the code that does not
allow any other process to occur while the program is in the critical section.
The critical-section problem is designing a way that allows for processes to
work around the critical sections. A solution to this problem must have the
following requirements:
- Mutual exclusion – If one process is executing its critical section, no other process can execute its critical section.
- Progress – If no processes are executing their critical section, but some processes are ready to enter their critical section, it must be decided which process will enter its critical section. This cannot be postponed indefinitely.
- Bounded waiting – A bound is established to limit the number of times that other processes are allowed to begin their critical sections after a request has been made and before the request is granted.
CPU
Scheduling, Main Memory, and Virtual Memory
Physical memory is the memory that is stored in the hard
drive or other memory of a computer. Physical memory is your RAM. It is fast
but volatile storage. RAM usage is measured in nanoseconds, while hard drive
disk is measured in milliseconds. When the computer runs programs off the
physical memory, it takes that data into the RAM where it will use that data to
run a program.
Virtual memory is when the computer makes references to where the data is that it will use to run a program. Virtual memory has the illusion of being larger than the actual physical memory. Instead of copying a lot of information into the RAM, the computer will make a reference of where the needed data is and then use it when it is needed.
Physical memory is limited to RAM size, while virtual memory is limited to your hard drive space. Physical memory can access the CPU, while virtual memory cannot access the CPU.
Mass-Storage Structure, File-System Interface & Implementation, and I/O Systems
The process files that a
computer runs and the data files that it stores are stored on different methods
of secondary storage. These include hard disks, magnetic tapes, optical disks,
and solid-state drives (SSDs). The operating system of a computer provides
logical ways of making this data convenient to use. Different operating systems
require files to have specific attributes to help identify files. These include
the name, identifier, type, location, size, protection, times, date, and user
identification. A file directory will view this information in a table, which
allows the operating system to view and organize the files in several different
ways. These attributes will be used to help a directory search for files,
create files, delete files, rename files, list directories, and traverse the
file system. Examples of different types of directories are listed below.
Single-level directories are
the simplest. All files are files of are located in one directory. This makes
the information easy to understand. Searching in a single-level directory is
faster when the file sizes are smaller. Creating, deleting, renaming, and
updating files are also easier. One limitation of a single-level directory is
that it limits the user or users to use unique names for each file. Searching
for files takes longer when the directory is larger.
Two-level directories are
similar to single-level directories, however, each user has their own user
files directory (UFD). This allows multiple users to have files with the same
name. Each UFD lists only that user’s files. The master file directory (MFD) is
above all of the UFDs. It can be searched to find each user and then their
files. Searching files is easier with this type of directory. Users in a
two-level directory are unable to share files with other users. A single user
cannot have two files with the same name.
Tree structure directories
provide many advantages and are widely used. Every file has a unique pathname.
There is a much smaller chance of having name collisions. Searching for files
in a tree structure directory is easier. Paths to each file are well laid out. In
tree directories, the same file may be saved into multiple directories, which
would make this type of directory less efficient and potentially lead to the
user having several different versions of the same file. File sharing is not
allowed in tree structure directories.
Outline the goals and principles of domain- and
language-based protection in a modern computer system and describe how an
access matrix is used to protect specific resources a process can access.
(Consider using a matrix representation to illustrate concepts.)
Goals and Principles of domain and language-based
protection:
One of the goals and principles of domain and
language-based protection is to dictate that the programs, users, and systems
are given just enough privileges to perform their tasks with need-to-know
access. If given too many privileges, accidental or malicious corruption or
loss of files can occur. A matrix, like the one below, gives programs or
domains (left column) permission to perform allowed functions on the objects (and
printer) shown in the top row.
How security is used to protect from threats:
Computers, programs, systems, and networks are vulnerable
to numerous security threats. These possible security violations include
breaches of confidentiality, integrity, and availability, as well as theft of
service and denial of service. Security measures are carried out on four levels
to protect systems: physical, human, operating system, and network. Physical
security is allowing or denying access to the actual physical equipment. Human
security involves allowing login access to systems. This involves keeping
passwords secure and private. Users must learn to identify and avoid phishing
schemes and other attempts to gain password information. Operating systems protect
themselves from accidental or purposeful security breaches. Network security
protects break-ins from outside sources. It protects our systems from trojan
horses, viruses, worms, and other security breaches aimed at stealing,
corrupting, or deleting passwords, sensitive information, and other files.
Operating systems and network security are constantly facing newer challenges
and must be updated frequently as a result.
I learned many responsibilities of operating systems in this class. I can't quite imagine which of these I would use in the future. I would imagine that if I got more into programming and took several more programming classes, I would learn much more about processes and how they would affect my programs. I think the same would hold true for dealing with the usage of physical and virtual memory while a program is running. I believe that file storage would be very important in any aspect of Information Technology that I find myself in in the future. File storage, access, and sharing are very important in any office setting that I can imagine. Everyone involved in computers has at least a small amount of responsibility when it comes to protection and security. I believe that I will learn a lot more about protection and security while I am working on my degree, and when I find a career in IT, my responsibilities could be critical to a project or organization. As I get closer to my graduation date, I would like to look back at this course and see how much more I learned about these parts of operating systems.
(Click here for my full operating system concept map.) (Click here for the drawio file.)
References
Components
of Operating System - javatpoint. (n.d.). Www.javatpoint.com.
https://www.javatpoint.com/components-of-operating-system
Protection
in OS: Domain of Protection, Association, Authentication. (2021, March 1). GeeksforGeeks.
https://www.geeksforgeeks.org/protection-in-os-domain-of-protection-association-authentication/
Silberschatz,
A., Peter Baer Galvin, & Gagne, G. (2014). Operating system concepts.
Wiley.
Sunday, July 31, 2022
Careers in Information Technology
![]() |
An example of a retro Burroughs computer system |
When I think about beginning a career in Information Technology, I think back to around 1984 when I was about 5 years old. My dad worked for the Burroughs Corporation as a Field Engineer. He showed me the computers where he worked, computers that had taken up entire rooms. I thought this was incredible. I remember seeing computer punch cards and plenty of dot matrix paper. Most computer screens were black with green font. I remember playing Wheel of Fortune with red, green, and yellow colors, choppy animation, and beeps for sounds and music. I was amazed by all of this technology at the time. Technology has changed immensely over the last four decades. The number of computer-related jobs has grown incredibly as well.
Going into an IT
degree, I have some ideas about what I want to do when I graduate. “Working in
IT can mean a variety of different things. You can work in computer support,
cybersecurity, data, cloud computing, and other areas (Coursera, 2022).” Many IT
jobs out there deal with the topics we covered in our textbook.
Chapter 2 of our textbook
covered hardware and software. One of the first IT jobs that comes up in an IT
job search is computer support or tech support. These careers can start out as
being an IT support technician, help desk technician, or supporting roles in
other aspects of computer operations. The average salary for these careers is around
$71,000 and the projected growth is 9%.
In Chapter 3 we
learned about the Internet and the web. Chapters 5 and 6 taught us about computer
applications and web and mobile apps. There are several jobs out there in Web
Development. These careers include web developer, web designer, other developer
jobs, and other engineering jobs. Web development jobs average $95k per year
and have an expected growth of 13%. It is recommended to take courses in
programming languages such as Python, JavaScript, CSS, and HTML. We use several
different websites every day. As the growth of the Internet continues and
technology continues to grow, I believe that this field will continue to grow
as expected.
Chapters 7 and 8 explained
privacy and security. I have a coworker that is going to college for cybersecurity.
I did not realize how important this career field was until I read these two
chapters. I imagined that cybersecurity was mainly for government, banking, and
other more sensitive information. After I finished reading these two chapters I
had more of an understanding of the importance of privacy and security in the
lives of everyone as they use their computers and smartphones throughout the
day. There are many careers in cybersecurity with a projected growth of 33% and
an average salary of $96k. Careers include information security analyst, cybersecurity
analyst, engineers, managers, and even ethical hackers. As the attacks on our
personal information and cyber attacks continue to grow, this career path will continue
to grow in importance.
Cloud computing is
another IT career field that continues to grow with an average annual salary of
$119k and a growth of 27%. These careers include cloud engineers, architects,
programmers, and consultants. Google and Amazon have cloud computing careers
and require special training and certificates to get hired.
These were some of
the career fields that I read about that I would be interested in. I am also
interested in robotics and automation. How do I choose which route to go? The IT
field offers steady employment, opportunities for career growth, and high wages
(Indeed, 2021). Indeed recommends that you consider your interests in the IT field,
like the careers I mentioned earlier. Then look to pursue a job in the area of
technology, government, healthcare, banking, etc. Next, research education and certificate
requirements, average salaries, projected job growth, work schedules, and work
environments. Indeed recommends shadowing a professional in one or two IT
specialties for one day or several days to get a better idea of that job. Completing
an internship if available is another good way of getting a taste of a certain career.
I chose to enroll in
an IT degree because information technology is everywhere. The field continues
to grow. As I have learned recently, there are many different career paths to choose.
The salary can be pretty good. I chose this degree because I believe I can find
a job wherever I want to live and quite possibly work from home. My dad worked
with computers for over 40 years without a degree. His experience and knowledge
kept him employed until retirement. He worked mostly from home for the last 15
years of his career. Looking at his career with computers, I can see the possibility
for a long an interesting career in the IT field.
References
Coursera. (2022, July 12). 7 IT
Career Paths and How to Get Started in 2022. Coursera. https://www.coursera.org/articles/it-career-paths-how-to-get-started
Indeed Editorial Team. (2021, March
15). How To Choose an IT Career Path. Indeed. https://www.indeed.com/career-advice/finding-a-job/career-path-for-it
Vahid, Frank, (2019, February). TEC
101: Fundamentals of Information Technology & Literacy.
Sunday, July 24, 2022
Network Security
![]() |
From Introduction to Network Security Protocols |
As the Internet connects billions of users together, villainous people will attempt to carry out malicious activities. These security issues include security holes or vulnerabilities, computer viruses, Email spam, phishing scams, password cracking, and social engineering. Individual users can be targeted in multiple ways which could scam the user out of money, steal the user’s personal information, or have their computer infected by computer viruses. Most frequently, Internet users are subject to Email spam and phishing scams.
Email spam is “unsolicited and unwanted junk email sent out in bulk to an indiscriminate recipient list. Typically, spam is sent for commercial purposes. It can be sent in massive volume by botnets, networks of infected computers. (What is Spam (2022)” Spam that is sent by companies for commercial purposes can easily be opted out by selecting an unsubscribe link at the bottom of the email. Spam can also be used by people or groups with the intent of spreading computer viruses or botnets which could be used to cause a denial-of-service (DOS) attack on a targeted website.
A DOS attack is an outcome of botnets that have been installed on users’ computers without their knowledge. These computers will attempt to access or ping a website at a specific date and time, causing the website to become overloaded. Actual Internet users attempt to access these websites and are given a “Denial of Service” message. A ping flood attack occurs when millions of computers attempt to ping a website in a short period of time (Ping Flood Attacks, 2022). A ping of death is another DOS attack where pings are sent with malformed or oversized packets when using the ping command (What is a DDoS Attack? 2016). Ping of death attacks usually occur when the data packets in a ping exceed 65,536 bytes. Some reasons DOS attacks are used are to disrupt a company, hassle an organization, or for political reasons (Vahid, 2019).
Many email users are also the target of phishing scams. The designers of phishing scams are trying to get email users’ money or their personal information. One common money-making scam is the 419 scam or Nigerian scam (Vahid, 2019). It has been a while since I received and read one of these emails, typically an email from a Nigerian prince asking for some of my money so that they can move their fortune and later pay me greatly in return later. These phishing scams still work on a very small number of recipients, but the originators still make money off of these scams. In 2021, 36% of data breaches involved phishing (Kerner, 2022). Other phishing scams are sent out in the appearance of an email from a person’s bank, online shopping website, or utility company. For example, I have had emails allegedly from Bank of America stating that I need to log in for some reason and to use the link provided to enter my username and password. Looking closely at the recipient’s email address, I determine that it is not Bank of America, but a phishing scam. One should also look for bad grammar or misspelled words to avoid falling victim to one of these scams.
Statistics draw a bigger picture of how important network security is. From 2020 to 2021 security attacks increased by 31% (Kerner, 2022). In April 2021, Facebook was a victim of a data breach that cost them $553 million. Last year, $56 billion was lost in identity fraud. In the first half of 2021, there were 5.4 million DOS attacks. Being able to identify phishing scams and spam emails will help an individual computer user from contributing to some of these numbers.
References
Kerner, Sean Michael. (2022, March 15).
34 Cybersecurity Statistics to Lose Sleep Over in 2022. TechTarget. https://www.techtarget.com/whatis/34-Cybersecurity-Statistics-to-Lose-Sleep-Over-in-2020
Ping Flood Attacks. (2022, March 28).
Retrieved from https://securityboulevard.com/2022/03/ping-flood-attacks/
Vahid, Frank, (2019, February). TEC
101: Fundamentals of Information Technology & Literacy.
What is a DDoS Attack? (2016, April
27). Retrieved from https://www.globaldots.com/resources/blog/types-of-ddos-attacks/
What Is Spam Email? (2022). Retrieved
from https://www.cisco.com/c/en/us/products/security/email-security/what-is-spam.html
Thursday, July 21, 2022
Computers in the Workplace - Demilitarization of Weapons
![]() |
Projectile/Mortar Disassembly System https://www.peoacwa.army.mil/2021/04/12/facts-projectilemortar-disassembly-system/ |
I chose the manufacturing industry for this week’s post. I currently work at a plant that disassembles old chemical weapon munitions. I figure there are a lot more manufacturing jobs out there than there are "demanufacturing" jobs. I will compare the uses of computers at my current job to those in the manufacturing industry as I believe that the use of computers would likely be very similar.
I work as a Control Room Operator that operates many different systems, including fluid systems, HVAC systems, and systems that disassemble munitions. Many of these systems can be controlled remotely with little assistance from operators out at the equipment. As Control Room Operators, we use computers to control this equipment, take readings on this equipment, make log entries on this equipment, and visually observe this equipment. We all need to have a basic knowledge of operating Windows. Where our IT department comes in is maintaining and updating these computers. There are different server rooms on site that the plant needs to operate. For example, CCTV (Closed Circuit Television) has its own servers that store video footage from several cameras for the last month and has additional storage space for archived footage. In addition to CCTV, Automation has a server room for operating equipment throughout the site and recording data on this equipment. There is the Automation aspect of all of this equipment. They create, maintain, and troubleshoot the computer codes that run the equipment. (The equipment that I seek help from Automation the most can be found at the 6:45 mark of this video PCAPP Technical Overview:
These servers also store data for the equipment for the last few weeks. One example is the boss’s office across the hall from the Control Room. I can control the temperature of his office. I can also bring back historical data on the temperature of his office over the last day. There is another group of servers on site used for all of the other workstations around the site that are connected to the Internet. These servers are all monitored frequently and updates are performed periodically.
I can picture the need for everything I just described to be used in a manufacturing setting. There is the need for servers to store all this information and hold the code that runs the equipment. In a manufacturing setting, this equipment could be controlled and updated by someone far away from the site. “Smart manufacturing uses Internet-connected machinery to monitor the production process. This allows machines to communicate with each other via the Internet and work together to reduce errors and improve the workflow in the manufacturing plant (“The Role of IT,” 2019).” If multiple factories had the same new equipment, the programs to run that equipment can be sent through the Internet. Revisions can also be made over the Internet.
I see the need of disassembling old munitions continually decreasing. I see little to no jobs in this field in the next ten years. I do see the need for IT in the manufacturing industry. As long as there is a need for manufacturing, there will be a need for the IT and Automation associated with it.
References:
The Role of Information Technology in
Global Manufacturing. (2019, September 20). Retrieved from https://www.global-imi.com/blog/role-information-technology-global-manufacturing#:~:text=In%20simpler%20words%2C%20smart%20manufacturing,workflow%20in%20the%20manufacturing%20plant.
I Have Completed My Degree in Computer Software Technology
Today is the day that I have been looking forward to for the last couple of years. I have put a lot of hard work and dedication into my stud...
-
Today is the day that I have been looking forward to for the last couple of years. I have put a lot of hard work and dedication into my stud...
-
Throughout this course, we learned about data structures and algorithms when writing computer programs. We learned about the importance of w...
-
Gamio, Lazaro, (2015, May 31). How data travels across the Internet. The Washington Post. This exercise was my first time using the pin...