Tuesday, November 7, 2023

Post 7 - Final Blog Post - Tech Topic Connection

How Computers Operate


In the realm of Information Technology (IT) and Computer Science, the understanding of

 how computers operate is fundamental. It is the linchpin that connects various concepts and

 components in this ever-evolving field. Exploring the mechanisms behind computer

 operation not only delves into the history of computing but also elucidates the complex

 interplay between hardware, software, programming languages, databases, and network

 architecture, profoundly impacting our technological landscape.



To comprehend the essence of how computers operate, it's pivotal to trace the historical

 trajectory of computing. The roots of modern computing can be found in the 19th century,

 primarily with the inventions of Charles Babbage's Analytical Engine and Ada Lovelace's

 contributions to programming. Progress continued with the advent of vacuum tubes in the

 1940s, ushering in the era of first-generation computers, followed by the development of

 transistors, integrated circuits, and microprocessors, which accelerated the evolution of

 computing. Understanding this evolution is crucial as it forms the basis of modern

 computers and their operations.



The operations of computers are reliant on major hardware components such as the Central

 Processing Unit (CPU), Random Access Memory (RAM), storage devices, and input/output

 systems. The CPU functions as the brain of the computer, executing instructions and

 performing arithmetic and logical operations. RAM serves as volatile memory, allowing

 quick access to data currently being used by the CPU. Storage devices, like hard drives and

 solid-state drives, store data persistently. The interaction between these components is

 integral to the computer's operations.



Programming languages and their execution methods are the cornerstone of how

 computers operate. They enable humans to communicate with machines by providing

 instructions. These languages, ranging from low-level languages like Assembly to high-

level languages such as Python or Java, are translated into machine code for execution.

 Compilers and interpreters play crucial roles in converting human-readable code into

 machine-readable instructions, allowing for the smooth functioning of software on

 computers.


The relevance of application software in computer operations cannot be overstated.

 Applications are the interface between users and the underlying system. From operating

 systems like Windows or macOS to word processors, web browsers, and games,

 applications harness the hardware capabilities, enabling users to perform various tasks

 efficiently. Each application relies on the system's resources and interacts with the hardware

 to deliver its intended functionalities.



Databases and their management are integral to the storage and retrieval of vast amounts of

 data, which is central to computer operations. Structured Query Language (SQL) is

 commonly used to manage and manipulate databases, facilitating the efficient organization

 and retrieval of information. Database management systems (DBMS) govern the creation,

 retrieval, updating, and deletion of data, ensuring data integrity and security, which are

 paramount in the computer's operation.



 The intricacies of network architecture, management, and security profoundly influence

 how computers operate in a connected world. Networks facilitate communication between

 devices, allowing data to be shared and accessed remotely. Protocols, such as TCP/IP,

 govern data transmission over networks. Network security measures, including firewalls,

 encryption, and intrusion detection systems, are crucial to safeguarding data during

 transmission, ensuring the confidentiality, integrity, and availability of information.



 In conclusion, the understanding of how computers operate is the fulcrum upon which the

 entire edifice of Information Technology and Computer Science stands. It intertwines

 historical foundations, hardware components, programming languages, application

 software, database management, and network architecture into a cohesive whole. As

 technology continues to evolve, comprehending the operations of computers remains

 pivotal in driving innovation and progress in the digital age.


References:

Wolf, M. (2012). Computers as components: principles of embedded computing system

 design. Elsevier.


Kanich, D. G., & Byrd, J. R. (1996). How to increase efficiency in the operating room.

 Surgical Clinics of North America, 76(1), 161-173.

Thursday, November 2, 2023

Post 6 - Network Security (Week 4 Assignment 1)

 

Information and system security are essential in the contemporary digital landscape. Protecting sensitive data is vital to maintaining privacy, trust, and operational continuity. Cyber threats come in diverse forms, making it essential to comprehend these risks to fortify defenses against potential attacks.

 

The significance of information and system security lies in the sophistication of cyber threats. Cyber attacks can cause extensive damage, resulting in financial losses, compromised personal data, reputation damage, and operational disruptions. For individuals, concerns include identity theft, financial fraud, and privacy breaches, while organizations face risks of data breaches, intellectual property theft, and service disruptions. Our work is broadly related to problems of concept spotting and named entity recognition (Mulwad, Li, Joshi, Finin, & Viswanathan, 2011). While named entity recognition has been extensively explored, primarily focusing on extracting people, places, and organizations from free text, there has been limited effort in extracting computer security exploits and associated entities, relations, and events from free text. Notably, Mulwad et al. (2011) highlighted the gap in existing approaches, mentioning that although portions of the NVD database have been mapped into RDF using a schema-based approach, a substantial amount of information remains in strings rather than RDF instances.

 

Ping commands can be utilized in attacks such as "ping flood" or "ping of death," involving the flooding of ICMP echo request packets to overwhelm a target system, leading to unresponsiveness or system crashes.

 

Security holes emerge from unpatched software, misconfigured systems, and poor security practices, creating entry points for attackers. Vulnerabilities such as software bugs, weak encryption, or inadequate access controls are among these weak points.

 

For safeguarding against password cracking, enforce strong password policies with regular changes and the use of complex combinations. As stated by Morris and Thompson (1979) in their study on password security, meticulous record-keeping of all attempts to access a remote-access time-sharing system, particularly logging unsuccessful attempts, is crucial for maintaining robust security measures. This is akin to the necessity of keeping records of both successful and unsuccessful attempts to gain access to secured resources.

 

Password cracking attempts to gain unauthorized system access by systematically trying various password combinations. This can be executed through brute-force or dictionary attacks, exploiting weak or easily guessable passwords.

 

Computer systems are vulnerable due to complex interconnected networks, human error, and the evolving nature of cyber threats. Successful breaches can result in data theft, service interruptions, financial losses, and reputational damage. Symptoms of a breach may include unusual network activity, unauthorized access, or system slowdowns.

 

To protect against ping attacks, implement network firewalls, intrusion detection/prevention systems, and regularly update systems and network devices to patch vulnerabilities.

 

In conclusion, information and system security are vital in understanding potential threats and implementing robust security measures. By employing preventive technologies, regular updates, and user education, individuals and organizations can significantly reduce their vulnerability to cyber threats, protecting their valuable data and systems.

Post 5 - Computers In The Workplace (Week 4 Discussion Forum)

 Chosen Industry: Video Game Development

 

Computers are pivotal to video game development, serving a multitude of essential functions in the industry. Game development, even at a beginner or intermediate level, heavily relies on computer technology for various aspects of the creative and technical process. Here is an overview of how computers are central to video game development and the importance of computer literacy among professionals in this field:

Content Creation: Game developers use digital content creation software to craft 2D and 3D assets like character models, textures, and animations. This creative process depends on powerful computers equipped with software like Photoshop, Blender, Maya, or 3ds Max.

Coding and Scripting: Developers write code and scripts to bring the game to life, creating gameplay mechanics, user interfaces, and AI behavior. Integrated development environments (IDEs) such as Visual Studio or Unity are the tools of choice, all of which run on computers.

Testing and Debugging: Computers are indispensable for testing and debugging throughout the game's development cycle. Developers rely on debugging tools, emulators, and simulators to identify and address issues.

Simulation and Rendering: Rendering high-quality graphics and simulating complex environments require robust computing hardware. Advanced CPUs and GPUs are essential for real-time rendering and physics simulations.

Sound and Music Production: Composing and editing game soundtracks and audio effects necessitate specialized software like Pro Tools or Adobe Audition, which run on computers.

Collaboration and Communication: Collaboration with team members and communication within the development team are essential. Developers use computers for project management software, version control systems, and video conferencing to coordinate their efforts.

Computer literacy is of paramount importance in a video game development environment for several reasons:

Efficiency: Proficient computer users can work more efficiently, navigating software and tools quickly and effectively. This translates to increased productivity and a smoother development process.

Troubleshooting: Computer literacy equips employees to diagnose and address technical issues effectively, minimizing disruptions in the development pipeline.

Adaptability: The video game industry is dynamic, and computer-literate individuals can adapt to new software and tools, ensuring they stay current in a rapidly evolving field.

Quality Control: Skilled computer users can maintain a high level of quality by identifying and rectifying issues during development, ultimately resulting in a more polished and successful game.

Looking ahead to the next decade, evolving computer technology is expected to shape video game development in several ways:

Realistic Graphics: Advancements in GPU technology will enable even more realistic graphics and immersive experiences in games.

AI Integration: AI and machine learning will play a more significant role in game development, enhancing NPCs' behavior, procedural content generation, and more.

Cloud Gaming: Improved networking and cloud computing capabilities will facilitate the growth of cloud gaming services, changing how games are developed and distributed.

Cross-Platform Development: The rise of versatile operating systems and middleware solutions will make cross-platform development more accessible, allowing developers to target multiple platforms with ease.

Enhanced Virtual Reality (VR) and Augmented Reality (AR): Advances in hardware and software will drive the development of more immersive VR and AR games.

Computers are the backbone of video game development, and computer literacy is essential for professionals in this field. As technology continues to evolve, video game development will experience significant advancements in graphics, AI, networking, and cross-platform capabilities, shaping the industry over the next decade. Staying up-to-date with these changes will be vital for those involved in the development of video games.

Post 4 - Traveling Through A Network (Week 3 Discussion Forum 2)

 Ping: Ping is a simple utility used to test the reachability of a host on an Internet Protocol (IP) network. It operates by sending Internet Control Message Protocol (ICMP) Echo Request packets to the target host and waiting for ICMP Echo Reply packets in return. This helps measure the round-trip time (RTT) it takes for packets to travel to and from the target.

Traceroute: Traceroute is a more advanced tool that helps map the path packets take from your computer to a destination server. It works by sending a series of UDP packets with incrementally increasing Time To Live (TTL) values, causing routers along the path to send ICMP Time Exceeded messages. This reveals the "hops" between your computer and the target server, providing insights into network congestion and possible issues.

Comparison of Results: When comparing Ping and Traceroute results from different websites, several factors come into play. The paths to different destinations can vary significantly based on factors like network configurations, server locations, routing policies, and even temporary congestion.

For example, a website hosted in the same region as you may have a lower round-trip time compared to one hosted overseas. Additionally, the number of hops in Traceroute results can vary based on the network infrastructure.

Conclusion on Round-Trip Time and Geographical Location: The relationship between round-trip time and geographical location is generally inversely proportional. Packets take less time to travel to nearby locations due to shorter physical distances and often more direct network paths. Conversely, longer distances and more intermediate network hops usually lead to higher RTT.

 

Troubleshooting with Ping and Traceroute: Ping and Traceroute are invaluable tools for diagnosing network issues. They can help pinpoint problems in various ways:

Packet Loss: If a Ping command returns a high packet loss rate or a Traceroute shows a sudden break in the route, it can indicate a network issue, like a faulty router or congested link.

Round-Trip Time Spikes: Unusually high ping times in the results can be a sign of network congestion, server overload, or routing problems.

Possible Reasons for Timeouts or Errors:

Firewall or Security Policies: Some network devices or servers may be configured to block ICMP traffic, causing Ping or Traceroute to time out.

Routing Changes: Network routes can change dynamically, and if a router along the path is misconfigured or experiences issues, Traceroute might return an error.

Post 3 - Documenting A Day (Week 2 Assignment 1)

 

Introduction

In today's digitally driven world, software applications have become indispensable tools for various tasks, including journaling, data analysis, presentations, and database management. This essay reflects on my recent experience using different software applications in the "Documenting a Day" assignment and explores the functions, advantages, and disadvantages of word processors, spreadsheets, presentation tools, and databases.

 

Word Processor: Word processors like Microsoft Word or Google Docs are essential for creating textual documents. Their primary functions include text editing, formatting, and document layout. They are perfect for journaling and writing narratives.

 

Advantages:

  • User-friendly and widely available.
  • Rich text formatting and spell-check features.
  • Real-time collaboration for group projects.

Disadvantages:

  • Limited data manipulation capabilities.
  • Not suitable for complex data analysis or visual representations.

 

Spreadsheet: Spreadsheets such as Microsoft Excel or Google Sheets are designed for numerical data organization, analysis, and calculations. They excel in handling numerical information and are perfect for calculating percentages.

 

Advantages:

  • Powerful data manipulation capabilities.
  • Support for complex formulas and functions.
  • Visual representations through graphs and charts.

Disadvantages:

  • Less intuitive for text-based tasks.
  • Limited document formatting options.

Presentation: Presentation software like Microsoft PowerPoint or Google Slides is ideal for creating visual and interactive presentations. They enable the seamless organization of ideas and data in a compelling manner.

 

Advantages:

  • Effective for conveying information visually.
  • Supports animations, transitions, and multimedia integration.
  • Engages the audience during presentations.

Disadvantages:

  • Less suited for text-heavy documents.
  • Limited data analysis functions.

 

Database: Database applications like Microsoft Access or MySQL are used for storing, managing, and retrieving large volumes of structured data. They provide powerful data storage and retrieval capabilities.

 

Advantages:

  • Efficient data storage and retrieval.
  • Data consistency and security.
  • Excellent for managing large datasets.

Disadvantages:

  • Complex for beginners.
  • Not designed for text-based tasks.

 

Recommendation

For documenting a day, a word processor is the most appropriate application. It allows for easy and flexible text entry, making it suitable for journaling. However, in scenarios requiring numerical data analysis, spreadsheets are the best choice.

 

 

Additional Scenarios

  1. Word Processor: Apart from journaling, word processors are invaluable for creating essays, reports, and personal letters.
  2. Spreadsheet: Spreadsheets are indispensable for tasks such as financial budgeting, tracking expenses, and managing inventory.
  3. Presentation: Presentation software is perfect for designing slideshows for business meetings, academic lectures, or product demonstrations.
  4. Database: Database applications are essential for managing customer records, inventory databases, and complex data-driven applications like library catalogs.

 

Conclusion

Software applications have distinct strengths and weaknesses that make them suitable for specific tasks. My experience with the "Documenting a Day" assignment highlighted the importance of choosing the right application for the job. Word processors are excellent for journaling, but each application type has its unique purpose and is invaluable in various scenarios. Understanding the role of these applications is crucial in today's digital age, as it can significantly enhance productivity and effectiveness in various aspects of life.

Post 2 - Web/Mobile App Critique (Week 2 Discussion Forum)

Steam

Steam is a video game digital distribution service and storefront developed by Valve Corporation.

The Windows PC-only version of the client was released in 2003, and the Mobile App for iOS and Android was released in 2012.

The first page you see on your mobile device after signing in is the storefront, where The most recent announcement or news for the gaming community is at the top, with the “Featured and Recommended” games posted underneath it in a sideways scrolling menu. At the top of the screen are the search bar, the profile icon representing the profile menu, the main menu, your wishlist, and your wallet. Scrolling down further will show special offers, a more specialized “Recommended” tab, and relevant information and updates to games you own. You can access your library, friends list, settings, authentication preferences, etc. through sub-menus or cascading menus.

          Screenshot_20231012-182031.pngScreenshot_20231012-182024.pngScreenshot_20231012-182054.png

Usability: For basic things, like searching for a specific game to show a friend a video of, finding out the cost of a game, adding friends, or checking the latest patch notes or updates, the app excels. Anything more than that requires finding the appropriate option from a slew of sub-menus that are difficult to find when first using the app.

Flaws in Usability: Excess. The menus that all have links leading back to other menus or pages is unnecessary. Swiping “back” on your phone while in a specific games page minimizes/closes the app instead of going to the previous page.

Improvement Suggestions: Correcting the accidental closing of the app when trying to redirect to the previous page, limiting or combining menu options, and including a “most searched for” and “things you’ve recently searched” in the search bar as a dropdown cascading menu would be incredibly useful.

Design: The design is acceptable. Some menus are styled differently than others. Some icons or tiles include too much “whitespace”. The search bar and other menus can be simplified to exclude several options that are available on them now for simplicity and easier access.

Flaws in Design: Excess again, as well as clashing menu types. I don’t need an option in the menu for the “Store Home” when the leftmost icon at the bottom of the screen does just that. I don’t need to see my own profile icon, except to know that I’m signed in, and with most mobile apps (this one included) you don’t have to sign into it more than once.

Improvement Suggestions: Combine menu options and have the bottom icons BE the menus themselves. Shrink tiles and include an arrow on the right side of the screen to indicate there are more options available for horizontal swiping.

Functionality: The app’s functionality isn’t flawless, but it was clearly the priority of the developers. Aside from all menus and searches working exactly as intended, the app can also show you what your PC is downloading or updating remotely (see picture, game titled Icarus) if you’re signed in on your PC. The interconnectivity of the mobile and PC platforms is excellent.

                                                                                                                                                                                                         Screenshot_20231012-181958.png

Flaws in Functionality: The app functions exactly as intended, and I can’t think of any flaws in the functionality itself. More features could be added, but as it is now, there are no issues.

Improvement Suggestions: Some features that could be added would be a customizable front page to give you news on the latest games or upcoming events, as well as updates you may need to download and install when you boot up your PC next.

Post 1 - Programming Languages (Week 1 Assignment)

 

Building a program from or with Scratch, while easy, efficient, user-friendly, and quick, seemed to lack the one thing that most programming languages offer: complexity and customizability. Scratch offered plenty of customization options, which can get complex depending on the task, but was designed with the intended audience of children and beginners. Anyone with any amount of programming knowledge in languages such as C#, C++, Python, or Java will find that Scratch seems convoluted and difficult to use, with its drag-and-drop coding taking more time than typing the code out by hand. Though Scratch would take significantly less time to master than a programming language like Java or Python, it offers less reusability and long-term applications. Scratch programs can only be opened and edited in Scratch itself, much like other languages, but Scratch can only interact with the data and resources that you give it, whereas more complex programming languages can interact with files that you’ve never even opened, data you’ve never even seen, or text you’ve never read.

            Some of the difficulties I encountered when using Scratch were the layout of the options on the left side menu of the page, which were organized but fairly limited, the value or random input system, and the timing of the blocks of your code. Some of these can be overcome, others are merely limitations of the programming language and need to be accepted.

            Using Scratch helped me gain an understanding with a visual aid of the order in which code executes as well as how code blocks directly integrate with others.

            The main difference between a programming language like Scratch and more complex languages is what the program can interact with. As mentioned in the first paragraph, more complex languages can open files for the user, and extract data from files as specified by a user, all with unlimited customizability. Languages like assembly can even directly communicate with the computer’s hardware.

            In my experience, Python has been the easiest to use, aside from its indentation system, which most people will often find frustrating when compared to the bracket systems of other languages.

            Python is best for data collection, artificial intelligence, and machine learning. JavaScript is most used in web applications with its sister languages like TypeScript. C and C++ are commonly used for operating systems and video games or video game engines. Every language excels and fails in certain areas compared to others and each has a specific use application.

            I believe JavaScript to be the most popular since most full-stack developers are fluent with JavaScript or “JS” and most full-stack development training focuses on JS.

            In conclusion, Scratch is an excellent teaching tool for beginners seeking to understand how code interacts with itself and outside sources, and form an understanding that can be utilized and implemented in other more complicated languages.

Newbie to Another Newbie

Applying Algorithmic Design and Data Structure Techniques  in Developing Structured Programs (in Java) In the introductory phases of program...