Monday, May 13, 2024

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 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. 


Today, as I finish up my degree, I ask myself, "Where do I go from here?" Well, in my current position, I have a little under two years until my job is gone. During this time, I plan to continue learning. Along this journey, I have taken an interest in some programming languages, such as Python, SQL, HTML, and PHP. I have already enrolled in a Coursera program to learn more about Python and have an account with Codecademy where I will continue to learn more with these and other programming languages. I plan on continuing to learn and work on some certifications to get me ready for the day when I find a new career in software development. 


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.


Insertion sorting (left) and merge sorting (right) (Seif, 2022)

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.


(Click here for additional file storage diagrams that are mentioned below.)


 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.

 


Protection and Security

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.

Summary

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...