IT

IT

Thursday, April 6, 2023

Algorithmic Design and Data Structure Techniques for Beginners

    In this blog post I will attempt to simplify algorithmic design and data structure techniques in developing structured programs. An algorithm is a series or sequence of steps that are taken to accomplish a task or multiple tasks. “Data structures are implemented using algorithms. An algorithm is a procedure that you can write as a C function or program, or any other language. An algorithm states explicitly how the data will be manipulated.” (Shaffer, 2013)

Computer programs follow different sets of rules so that they can operate flawlessly daily with minimal human interference. Algorithms create these rules and before an algorithmic code is created the rules it must follow need to be identified. The process used to create and implement an algorithm is referred to as algorithm design. Each step in an algorithm has its own logical sequence which makes them easy to debug and algorithms are not dependent on a particular programming language. 

 

The complexity of algorithms varies, dependent upon the amount of data it must process, and the time in which it takes to complete the process. The two main complexity measurements to determine the efficiency of an algorithm our time complexity and space complexity. Time complexity is used to describe the amount of time the algorithm takes to complete the task. Time can mean several different things, from the number of memory accesses performed, to the number of comparisons between different integers or the number of times a loop is executed. The space complexity of an algorithm describes the amount of memory or space that the algorithm takes. Fixed length units are used to measure this. Which is usually a measurement in the number of integers used or the number of fixed size structures. Space complexity is often ignored because in modern computing the space that algorithms utilize is minimal, in comparison to the amount of memory, or space available.


Sorted List Algorithm

 

Are some algorithms and data structure designs better than others? Yes.

 

As they say in the mechanical world every tool has its use. The same can be said for different algorithms and different data structure designs. 

 

There are several different types of programming algorithms. Here are just a few.

 

Sort algorithms

Search algorithms

Hashing

Dynamic Programming

Exponential by squaring

String matching and parsing

Primality testing algorithms

(Indicative Team, 2021)


 

            There are two different data structure techniques which are linear data structures and nonlinear data structures. Linear data structures are structures in which the data is arranged sequentially or linear. Two linear data structures are static data structures and dynamic data structures static data structures have a fixed memory size and dynamic data structures do not. An example of a static data structure is an array an example of a dynamic data structure is a queue or a stack.

 

Non-linear data structures are data structures in which the information, or data elements are not sequential or linear. Examples of non-linear data structures are trees and graphs. In non-linear data structures the data cannot be traversed in a single run.

 

Each different programming algorithm and data structure serves a different purpose and are each efficient in their own way. Some algorithms perform specific tasks better than other algorithms, in different scenarios. It is important to utilize algorithmic design and data structure techniques to ensure the most efficient and effective algorithm is created for the task at hand. 

 

 

 

 

 

References:

 

GeeksforGeeks. (2022, December 15). Difference between searching and sorting algorithms. GeeksforGeeks. Retrieved March 16, 2023, from https://www.geeksforgeeks.org/difference-between-searching-and-sorting-algorithms/

 

Geeksforgeeks. (2023, February 15). Algorithms design techniques. GeeksforGeeks. Retrieved April 6, 2023, from https://www.geeksforgeeks.org/algorithms-design-techniques/?ref=gcse

Shaffer, C. A. (2013). Data Structures and Algorithm Analysis. Dover Publications. 

Team, W. by I. I. (2021, September 15). What is a programming algorithm? data defined. Indicative. Retrieved April 6, 2023, from https://www.indicative.com/resource/programming-algorithm/  

 

Thursday, March 9, 2023

Object-Oriented Programming (OOP) and Java/IDE Installation

Hello World,

Today I'm going to discuss object-oriented programming or, OOP. OP is a type of programming that organizes the software design around objects or data rather than the functions and logic. Objects can be defined as data that has unique attributes or behaviors. it focuses on what developers want to manipulate instead of the logic used to I'm manipulate them. Object oriented programming is beneficial for collaborative creation and development where a project is divided into different responsibilities or groups. OP code benefits include reusability, scalability and efficiency.

One of the most popular OP programs is Java. The installation of Java is straightforward. Whether you're using a Windows based, Mac, Linux or other operating systems the program is available for download directly from java's website. Once you have downloaded and installed Java, you will need to download an IDE or Integrated Development Environment. This is a software application that assists programmers in the development of software code. It makes the creation of code easier and more efficient. Below are the links to a great article about OOP, Java’s website for the Java download, A link to a website that has the top 15 IDE’s, and a YouTube video that discusses the ins and outs of installation and use of the IDE that I use which is IntelliJ IDEA. After installing the IDE you will also need to install an SDK (Software Development Kit). I used JDK ( Java Development Kit) which was available for download within the IntelliJ IDEA application. 

 

Learn more about OOP here, 

https://www.techtarget.com/searchapparchitecture/definition/object-oriented-programming-OOP

 

Java Download site

 

https://www.java.com/en/

 

Article about the Top 15 IDE’s

 

https://www.guru99.com/best-java-ide.html

 

IntelliJ IDEA download site

 

https://www.jetbrains.com/idea/

 

YouTube tutorial for installation of IntelliJ IDEA and JDK

 

https://www.youtube.com/watch?v=hVac_or-qPU

 


Thanks for reading! Comment below with any questions if need be.

-Eddie

Monday, March 6, 2023

CPT304 Summary

In section one we learned about operating systems and their primary functions. There are two sets of functions which are user functions and system functions. User functions include the user interface (UI), file system management, program execution, input output (I/O) operations and control, error detection, and communications management. The system functions of the OS are resource allocation, protection and security, and accounting. The UI is what the user visually sees and interacts with. The UI is displayed on a monitor and manipulated with a keyboard and mouse, which are part of the I/O portion of the operating system. The file management system of the operating system allows users to create and rename some files. (Silberschatz et al., 2014) The developer of the operating system or a System Administrator will have control of who can access certain files and programs. This is called the access matrix. Program execution is somewhat self-explanatory in operating systems as it gives them the ability to start and stop programs. During starting or stopping these programs there will occasionally be errors. These errors are detected by the error detection system. 

 



            In section two we discussed Processes, process state, control blocks, single and multi-threaded motivations, and the critical section problem. A process is the unit of work in a modern timesharing system, and it’s also described as a program in execution. The process includes the current activity, and the contents of the processors register. It also includes a process stack that contains temporary data, a data section to contain global variables, and it may also include a heap which is described as memory allocated during the process runtime. (Silberschatz et al., 2014) The process state is the current activity of the process. The different states of the process are new, running, waiting, ready and terminated. Only one of these processes can be running on any processor at any one time. Many processes can be ready and waiting, but not running. The different states of processes are new, running, waiting, ready and terminated when the process completes. 

    Threads were created to “provide a way to improve application performance through parallelism. Threads represent a software approach to improving the performance of the operating system.” (TutorialsPoint, 2021) A single thread completes a single task, so multiple threading is required in complex computer systems because many programs are executing at the same time. Multithreading although more efficient, more complications arise due to the complexity. The most important of which is the critical section of the processes. The critical section of a process requires the design of a protocol that all of the processes can use to cooperate with one another, and each process must request permission to enter its own critical section. The section of code that implements this request would be the entry section. It requests to enter the critical section and may be followed by an exit code. It is important to make sure that only one process is in the critical section at a time. If multiple processes enter the critical section at once it creates a race condition.

 



 

Section 3 was dedicated to the memory management in the operating system. The main purposes of memory management system are speed and efficiency. This is accomplished by optimized memory allocation between logical and physical organization. The objectives and functions of memory management are to allocate and de-allocate memory before and after a process, minimize fragmentation issues, keep track of used memory space by processes, proper utilization of memory, and to maintain data integrity during process execution. (Geeksforgeeks, 2023) The memory management unit, or MMU, is responsible for the assignment of memory space to a specific process. The MMU utilizes logical and physical addresses. The physical address space is an address that is seen by the memory unit, also known as the real address. Virtual memory is a technique that allows the execution of processes that are not completely in memory. Virtual memory allows programs to be larger than the physical memory. Virtual memory can execute a program that is only partially in physical memory. This allows more programs to run at the same time. Virtual memory is stored in a virtual address space and is accessible as if it were a physical address. The MMU is used to translate virtual addresses to physical addresses in the main memory which enables a process to use more space than exists in primary storage.

 



 

In Section 4 file management systems and the supported operations, mass storage and input output devices (I/O) were discussed. The main purpose of the file management system is to manage files on a computer. The file management system is responsible for creating, editing, erasing, and organizing files. This system manages different folders that are called directories. These directories keep files organized and different directory structures are used to achieve this. Some of the things performed by a directory are searching for a file, creating a file, deleting a file, rename a file, and to traverse the file system. Some of the different directories are a single level directory, a two-level directory, tree structured directory, the acyclic-graph directory, and the general graph directory. 



Input-Output or I/O devices are used for data input, and output. “The role of the operating system in computer I/O is to manage and control I/O operations and I/O devices.” (Silberschatz et al., 2014) Common input devices are keyboards, mouse, webcam, microphone, trackpad, and stylus. Common output devices are monitors, speakers, headphones, and printers. Input output interfaces interpret the communications between different peripheral devices. This communication between hardware and software makes I/O devices operate properly. These interfaces are sometimes called drivers.

The final Section, Section 5, discussed the goals and principles of domain- and language-based protection in a modern computer system and how security is used to protect programs, systems, and networks from threats. The goals of domain and language-based protection are to prevent malicious activity by users or programs on a computer system. Domain based protection specifies the resources that processes may access, and each domain contains a set of objects and the different types of operations that may be utilized on said object. A domain is basically a collection of access rights. It dictates which operations a process can perform. The language-based protection is the protection type that allows for user defined functions. It allows system administrators to allow access or deny access to users or objects. this protection type allows more flexibility for application designers, which helps guard application subsystems against tampering. (Silberschatz et al., 2014)

In the figure below there are three domains and there are four objects. The print object is shared by domain two and domain 3. Domain one is the only domain that can read and write to object one, yet domain 3 can execute on object one. This is an example of how domains are granted access to different objects.




 

The Figure below is an access matrix that is like the other figure as it represents domains and objects. If a process is executing on domain 3 it can read files on object F2 and execute on object F3. Domain D4 has the same privileges as D1 but can also write in addition to read. Only domain D2 can print. 


 

            Security is accomplished using four different levels of security measures. these four levels are physical, human, OS, and network. The physical level refers to the actual physical security of the device, as in where it is stored and how it is kept. The human level is in reference to humans either maliciously or unintentionally compromising systems. Humans can be bribed or tricked via social engineering attacks, or phishing. The third level which is the OS level is in reference to the operating systems need to protect itself from accidental or intentional security breaches, faulty processes. The last level of security is network security. Networks must be secure to prevent the loss or theft of data.

            The further understanding that this course gave me about how an operating system functions is something I will need to eventually work in the cybersecurity career field. Much of these concepts and processes are unfamiliar to me. Expanding my understanding of how the operating system processes inputs, provides protection, and manages memory and files will be very helpful. 

 

            


 

 

 

 

 

References: 

 

1.     GeeksforGeeks. (2023, January 9). Memory management in operating system. GeeksforGeeks. Retrieved February 16, 2023, from https://www.geeksforgeeks.org/memory-management-in-operating-system/

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

3.     TutorialsPoint. (2021, July 28). Operating system - multi-threading. TutorialsPoint. Retrieved February 12, 2023, from https://www.tutorialspoint.com/operating_system/os_multi_threading.htm 

 

Monday, January 30, 2023

The History of Computers and Computer Hardware Selection


    In today’s day and age computer programs and computer hardware are evolving so rapidly that one can get quite a bit overwhelmed when trying to select a new laptop or desktop PC. Today’s cellular phones, or smartphones, are faster than the average desktop computer was just a few years ago. some of the newest smartphones are faster and more capable than some of the computers still being sold in stores. Many people forgo PC's and Laptops all together and opt to use a tablet. As with smartphones, today’s tablets are extremely capable and outperform laptops and PC's. This blog post will attempt to teach you how much computer components have evolved and help you, the consumer, make the most educated choice about what hardware to buy to accomplish what you wish to accomplish, and run whatever programs you plan on running without going overboard and spending more than necessary to get the job done.


    The first "computers" were mathematical calculating devices called abacuses. "The oldest surviving counting board is the Salamis tablet (originally thought to be a gaming board), used by the Babylonians circa 300 B.C., discovered in 1846 on the island of Salamis." (Fernandes, 2015)

These early abacuses or counting machines paved the way for the computers we use today. Mankind has always been on the pursuit to make tasks quicker, easier, and basically more efficient. The evolution of knowledge and technology are evidence of exactly that. Fast forward to the 1960's and 1970's and computers became massive machines programmed to complete specific computations. "The first substantial computer was the giant ENIAC machine by John W. Mauchly and J. Presper Eckert at the University of Pennsylvania. ENIAC (Electrical Numerical Integrator and Calculator) used a word of 10 decimal digits instead of binary ones like previous automated calculators/computers." (Wolfe) After the 1960's computers and computing machines started to evolve quite expeditiously. The 1970 brought and explosion of personal computers with the Steve Jobs and Steve Wozniak creating the first Apple II. It was considered the first "affordable" personal computer but priced at 1298$ in the 70's it was far from affordable for the average household. To give somewhat of a price comparison, A base model 1975 Ford Mustang was 3,805$. Apple's direct competition IBM created a personal computer called the IBM PC and was priced at 1265$



    The 1980's brought an explosion of new advances. Apple's Macintosh had the first GUI's (graphical user interface) and the first mouse which made it the more popular home computer due to ease of use. IBM released Spreadsheet and Word which made it the preferred business computer. Now in the 2023 Apple and Microsoft (IBM) are very similar and function virtually identically. User preference and comfortability with one platform or the other is what drives sales now.


    Now we will explore computers today, their uses and what exactly you need to accomplish what you wish to with a computer. The first specification you'll want to look at is the processor, how old it is, how fast it is, how many cores it has and what you want it to perform. INTEL, AMD, and many other computer processor sales sites have processor comparison tools. The tool I suggest using is https://www.cpu-monkey.com/en/ With this tool you can quickly and easily compare processors and read relevant articles to help make selecting the correct processor for your computing needs.
Next is memory and storage. With the advent of cloud computing, many are opting for smaller hard drives. Hard drives are basically long-term storage. Comparatively, Random Access Memory or RAM is something you will want more of and to pay attention to as RAM directly dictates how quickly your computer will function and is short term storage of memory to speed up application operation and access. As of now 1TB is the minimum I would suggest for hard drive space for word processing and 4tb for gaming. When considering the amount of RAM one needs, it really is more user specific. For word processing programs and surfing the internet 16gb of RAM is a healthy amount to keep your PC from ever bogging down. If you intend to play games or do 3D rendering of any sort 32gb is the absolute minimum I would suggest. 64gb or more is ideal, but not necessary.


    Many of the large game studios have begun to offer cloud gaming. Cloud gaming "allows consumers to enjoy high-end games without owning expensive hardware such as consoles or computers." (Mochizuki, 2021) If you plan on cloud gaming it would behoove you to do further research on what minimum specifications those services require and decide if that's the only way you'll be gaming. The future is in cloud computing and gaming, but I strongly recommend against ever buying the bare minimum if you can afford not to.


    One last note, I strongly recommend creating a backup of important data such as photos, important documents and other sentimental or vital data. The backup should be an external hard drive that is inaccessible from the internet. This will ensure the safety of that information from hacks, data corruption or other unforeseen problems.




References:


Fernandes, L. (2015, January 11). The Abacus: A Brief History. The abacus: A brief history. Retrieved January 30, 2023, from https://www.ecb.torontomu.ca/~elf/abacus/history.html


Mochizuki, T. (2021). Tencent, Sony Step Up Investment in Cloud-Gaming Initiative. Bloomberg.Com, N.PAG.

Wolfe. (n.d.). History of Computers. History of computers. Retrieved January 30, 2023, from https://homepage.cs.uri.edu/faculty/wolfe/book/Readings/Reading03.htm


Sunday, January 29, 2023

Network Security


    There are many different computer attacks that bad actors utilize like viruses, ransomware, social engineering, trojans, phishing, and DDOS attacks. All these exploits are intentional and malicious. They are designed to either steal personal, confidential, or proprietary information, cause losses of billions of dollars due to the downtime caused, gather information about individuals to be used as an exploit, or steal sensitive information to hold for a ransom. Every time exploits are resolved with security patches or updates; more are created in a never-ending vicious cycle of exploitation.



    A DDOS attack can be initiated utilizing a ping in what is called a “Ping Flood”. A ping flood is a Denial-of-Service attack in which an attacker takes down a victim’s computer by overwhelming it with ICMP echo requests, also known as pings. Overwhelming a computer or server creates a situation where valid users are denied service. In the sales industry, this can cause millions of dollars in lost revenue in a very short time. In the professional environment, a DDOS attack can force workers to come to a complete halt, which also costs a company time and money. Malicious DDOS attacks first began occurring in 1996 and continue to this day, completely disrupting whatever system they are targeted at.



    Another extremely common type of computer vulnerability or security incident is Phishing Attacks. This attack is perpetrated through emails. A bad actor sends emails that are pretending to be and look like emails from legitimate businesses. These emails try and steal your login credentials to the legitimate business they are masquerading as. To try and counter phishing attacks automated tools such as spam filters, spam blockers, and machine learning have been developed. Those methods along with employee training have still not been enough to completely prevent phishing. The average person can install anti-phishing or anti-spam software and educate themselves about what a phishing attack is and looks like, to prevent one from happening.Social engineering attacks rely on human interaction and a lack of situational awareness on the internet and social media. The attacker compiles information about an individual to create a dossier that has extensive personal information such as important dates, names of those closest to them, addresses, phone numbers, workplaces, and any other available information. This information can then be used to crack passwords, imitate the victim to their employer or others, or convince the victim the attacker can be trusted. Social engineering is sort of like hacking a human. To protect oneself from this type of attack personal information divulged on the internet or social media sites and apps should be kept to a minimum. It is recommended to keep personal social media pages private, instead of public, and verify that you know the individuals on your friend list. The less personal information available, the smaller the dossier. Another recommendation is to always verify individuals are exactly who they say they are. If there is any doubt proceed with extreme caution.

    There are many ways to avoid becoming a victim of an internet crime. The most important is situational awareness and knowledge. Educate yourselves, friends, and family about the dangers and preventative methods. Verify, verify, verify. If you are unsure about something, or it doesn’t seem right, it probably isn’t. Fortify your information. Create backups and a backup schedule, install security software on personal devices and utilize a firewall, utilize multi-factor authentication (MFA) whenever possible, and lastly, create difficult and different passwords and change them routinely. These are some simple things we all can do to lessen the likelihood of being victimized by individuals with malicious intentions.

Computers In The Workplace



   


    The specific industry I am going to write about today is the automotive repair industry. I have experience working in automotive and Harley Davidson specific shops. Computers have completely changed the way automotive repair and maintenance is accomplished. "The first chips in cars were introduced in the late 1960's and early 1970's to manage simple functions such as fuel injection and transmission shifting." (Swinhoe, 2018) Fast forward to 1996 when the federal government legally mandated OBD (On-Board Diagnostics) Ports in vehicles. The OBD system is used to monitor emission systems, mileage, speed, and store fault codes when a malfunction occurs. These fault codes or DTC's (Diagnostic Trouble Codes), can then be used to diagnose and repair a vehicle. These systems have made the troubleshooting and fault isolation of the many complex electrical and mechanical systems dramatically easier and more efficient. In my current vehicle I have an application on my phone that communicates with my vehicle, and can automatically set up an appointment with my local dealership for routine maintenance and fault code repair when necessary.

It is vital for employees to be computer literate in the automotive repair industry primarily due to the phasing out of paper manuals. Every major manufacturer now uses computer based manuals and repair publications. When a repair manual is written sometimes there are errors in the procedures, and when discovered can be corrected fleet wide through computer manual updates. In the past these types of updates could take months to reach every repair facility. Now it is almost instantaneous, which has increased the efficiency and effectiveness of technical repair manual update procedures.

Once the workstation computer is connected to the OBD2 port in a vehicle, the vehicles software version is verified and can be updated. These updates sometimes correct potential software faults in the different systems, many of which are safety related. If an electrical or mechanical fault is detected the OBD2 system will display a code. Technicians then use these codes to identify repair procedures in digital technical manuals. From my years experience in the automotive industry I can honestly say most DTC's are either in emissions related systems or ABS (anti-lock brake system) systems. I can also say with 100% confidence troubleshooting is far easier with computer technology and the OBD2 system.

With the dawning of the automated age computers are making things like self-driving vehicles a possibility. Drones have already begun to deliver packages in some large cities. I believe that in the next ten years there will be more of a push for automation and autonomous vehicles. Once the use of autonomous vehicles can be proven to be safer than having vehicles under human control, I believe the government will start to mandate things like public transportation to be automated first, followed by all passenger vehicles.

Traveling Through a Network



     I have done many ping tests while gaming online but have little experience with Traceroutes. Pings confirm the connectivity between two devices (computers or servers) on a network and also lets you know the latency between the two. In other words it tells you the length of time it takes to receive a response from the destination of the ping. My goal when gaming was always to find a server with a ping less than 20ms. The ping to google was by far the fastest average speed at 28.860ms. second fastest was the .JP site at 87.652ms and the slowest was the .CZ site at 197.354. What I find odd with these ping tests is that the .CZ ping had the lowest deviation at 3.025ms. Google was second with a 6.991ms Deviation. Comparatively the .JP site had an astronomical deviation at 59.840ms.

Traceroutes track the pathways of packets from a source to a destination. They also indicate the amount of time it takes the packets between each hop along a network until they reach their destination. Two of the traceroutes I ran were similar. Neither the Google and .CZ trace routes maxed out the 64 hops, but the .JP one did, and the .JP test had 53 timeouts. The .CZ had 4 timeouts and completed in 13 hops. The Google Traceroute only had one timeout and completed in 15 hops. What is interesting is that many of the early hops too .JP site were quite fast but wound up maxing out the hops and did not complete due to the only 11 completed hops and 53 timeouts. The .CZ test was quite fast until it left Sacramento to Prague. That hop took the longest obviously because it was traveling across the ocean either by satellite or the underwater telecommunication lines, and was the farthest hop.

A few reasons pings and traceroutes can timeout or fail would be security or firewall settings at the destination or one of the hops on a trace route, the remote host could be down, or your own firewall settings could be the issue. To further investigate I would first try a different destination. If the tests are good to a different destination, you know the issue lies with the initial destination. If it fails or times out again, your connectivity is most likely the issue.


A Day In My Life


    A day in my life is always eventful and rarely routine, aside from hygiene practices. Today for instance, I had an in-home masseuse come to my house and give me a one-hour massage. After the massage I took my daughters to several stores to spend their Christmas money that was burning a hole in their pockets. Each day is a new adventure and sometimes a new challenge around here. Having three kids, two of which are in High School keeps me on my toes and usually very busy. I also volunteer at my youngest daughter’s school frequently. There are many things that I am consistent about in my daily routine. The following is a list of those tasks.

·      Brush my teeth and floss

For at least the next few months I have braces on my teeth, so oral hygiene is extremely important. I use a waterpik and electric toothbrush.

·      Drink bone broth with added bovine and marine collagen

I drink hot bone broth every morning. I quit drinking all forms of caffeine, so the bone broth is like my morning coffee. I add the collagen because it accounts for 30% of our body’s protein. As we age, we start to age our bodies produce less and less collagen. Supplementing helps increase the amount available for the body to use. Collagen plays and important role in skin, hair, and joint health.

·      Eat carbs, usually Cream of Rice

Food is fuel to me and easily digested carbohydrates such as Cream of Rice are an excellent source. Eating carbs 30 minutes or so prior to physical activity increases energy and performance.

·      Take my kids to school

This consist of travelling to two different schools and waiting in the drop off line to drop off my kids.

·      Go to the gym

I have a set workout split that I do every week and modify every 6 months or as often as necessary to progress. I use the sauna for 30 minutes post workout.

·      Drink a post workout whey protein shake with added creatine and glutamine

Post workout protein is most effective when consumed within one hour of physical activity. Creatine and Glutamine are added for recovery purposes.

·      Take a shower

·      Eat lunch

Typically, tuna and rice or chicken and rice and some sort of greens or berries.

·      Read school material or work on homework for minimum one hour

I spread out my work as much as possible during the week so I’m not overwhelmed on the weekends.

·      Pick up my kids from school

Same as drop off. Wait in line to pick up.

·      Help my kids with homework if necessary

It’s not often that they need my help but I make sure I have time to do so.

·      Cook Dinner

My family and I do not eat out much. Two times a month is the norm. 

·      Wash dishes

My 17 year old son loads the dishwasher and I wash the pots and pans.


And that is what a typical day in my life consists of aside from being in bed by 9pm.


Algorithmic Design and Data Structure Techniques for Beginners

     In this blog post I will attempt to simplify algorithmic design and data structure techniques in developing structured programs. An alg...