Notes, summaries, assignments, exams, and problems for Computer science

Understanding the Instance Relationship in AI and Knowledge Representation

Computer science1.61 KB

Understanding the Instance Relationship

In Artificial Intelligence and knowledge representation, the "instance" or "instantiates" relationship describes the connection between an individual object (an instance) and the class or concept (the type) it belongs to.

Explanation of Instance Relationship

  • An instance is a specific object or entity that belongs to a broader category or class. For example, "Snoopy" is an instance of the class "Dog."
  • The instantiates relation links this individual object to the class it is part of. It shows that the object "is a specific example of" that class.
  • This is different from the "is-a" (ISA) or subclass relationship, which connects broader categories or classes to more specific subclasses. The instance relation connects
...
Continue reading "Understanding the Instance Relationship in AI and Knowledge Representation" »

Blockchain Cryptography: ECC, Hashing, and Consensus

Computer science19.16 KB

Elliptic Curve Cryptography (ECC) in Blockchain

Elliptic Curve Cryptography (ECC) is a public-key cryptography technique based on the mathematics of elliptic curves over finite fields. It is widely used in blockchain systems such as Bitcoin and Ethereum for generating secure public-private key pairs and digital signatures. The main advantage of ECC is that it provides high security with smaller key sizes, making it faster and more efficient.

The Mathematical Equation of ECC

The general equation of an elliptic curve is:

y2 = x3 + ax + b

  • a and b are constants that define the shape of the curve.
  • The curve is defined over a finite field Fₚ (where p is a prime number) for cryptographic applications.
  • To be a valid elliptic curve, it must satisfy the condition:
...
Continue reading "Blockchain Cryptography: ECC, Hashing, and Consensus" »

CPU Registers: Functions, Types, and Architecture

Computer science3.31 KB

What Are CPU Registers?

Registers are very small but very fast memory units located inside the CPU. They are used to store data temporarily during the execution of instructions.

Whenever the CPU processes operations like addition, subtraction, or fetching data from memory, it uses registers to hold the data in between. You can imagine registers like a small notepad that the CPU uses to write down important information while working.

They are much faster than RAM and closer to the processing unit, allowing the CPU to read and write from registers instantly without wasting any time.

Types of CPU Registers

The CPU contains different types of registers, each with a unique function.

1. Accumulator (ACC)

  • This register is used to store the results of arithmetic
...
Continue reading "CPU Registers: Functions, Types, and Architecture" »

Mastering JavaScript Regular Expressions

Computer science5.38 KB

JavaScript Regular Expressions: An Introduction

This concise and clear introduction to Regular Expressions (RegExp) in JavaScript covers their usage, modifiers, patterns, methods, and string integration.

Regular Expressions are powerful patterns used to match, search, and manipulate strings. In JavaScript, regular expressions are objects used with string methods to perform pattern matching.


RegExp Syntax Fundamentals

You can define a regular expression using literal notation:

const pattern = /expression/modifiers;

Or by using the RegExp constructor:

const pattern = new RegExp("expression", "modifiers");

RegExp Modifiers (Flags) Explained

Modifiers change how a Regular Expression behaves:

ModifierDescription
gGlobal match (find all matches, not just the
...
Continue reading "Mastering JavaScript Regular Expressions" »

Cybersecurity Threat Landscape: Actors, Vectors, and Defenses

Computer science9.76 KB

🔎 Threat Actors & Their Attack Paths

Who is attacking?

Threat Actors are the people or groups launching attacks. Mnemonic: “NO HIS” (Nation-State, Organized Crime, Hacktivists, Insiders, Script Kiddies).

Actor TypeMotivationTactics
Nation-State (APT Groups)Espionage, warfareAdvanced, persistent attacks
Organized CrimeFinancial gainRansomware, phishing
HacktivistsSocial justice, ideologyWebsite defacement, data leaks
InsidersRevenge, profitData theft, sabotage
Script KiddiesFun, fameLow-skill attacks using existing tools

How do threats reach systems?

Threat Vectors are the attack paths used by threat actors. Mnemonic: “MFWDVN” (Messages, Files, Websites, Devices, Vendors, Networks).

Attack PathExampleHow It Works
Message-BasedPhishing, smishingTrick
...
Continue reading "Cybersecurity Threat Landscape: Actors, Vectors, and Defenses" »

Essential Linux Commands: A Practical Reference

Computer science3.95 KB

Essential Linux Commands

File and Directory Management

  • mkdir: Create a new directory.
  • ls: List contents of a directory.
  • rm: Remove files or directories (-r for recursive).
  • cp: Copy files or directories.
  • mv: Move or rename files or directories.
  • cat: Display file contents or create files.
  • less: View file contents one page at a time.
  • head: Display the first 10 lines of a file.
  • tail: Display the last 10 lines of a file.

System Information

  • uname: Show system information (kernel, version, etc.).
  • top: Display running processes and resource usage.
  • df: Show disk space usage.
  • df -h: Show disk usage in human-readable format.
  • free: Display memory usage (RAM and swap).

File Creation and Editing

  • touch: Create an empty file or update its timestamp.
  • echo: Write text to a file
...
Continue reading "Essential Linux Commands: A Practical Reference" »

Essential Linux Commands & System Administration Toolkit

Computer science7.26 KB

File Operations

  • ls — List files and directories (-a for hidden, -l for detailed)
  • cd [directory] — Change directory
  • mkdir [directory] — Create directory
  • cp [source] [destination] — Copy files/directories (-r for recursive)
  • mv [source] [destination] — Move or rename files/directories
  • rm [file] — Remove files (-r for recursive)
  • chmod [permissions] [file] — Change file permissions
  • chown [user]:[group] [file] — Change file ownership

System Monitoring

  • top / htop — Monitor system processes
  • ps — List running processes
  • df -h — Display disk space usage
  • free -m — Show memory usage

Networking Commands

  • ifconfig / ip a — Display network interfaces
  • ping [host] — Test network connectivity
  • netstat -tuln — List network connections
  • nmap [IP] — Scan
...
Continue reading "Essential Linux Commands & System Administration Toolkit" »

Python Best Practices: Style, Concepts, and Comprehensions

Computer science386.58 KB

Python Coding Style: PEP 8

PEP 8: Indentation: Use 4 spaces. Line Length: Limit to 79 characters. Imports: Import on separate lines. Naming: Follow naming conventions. Comments: Explain non-obvious code. Whitespace: Use blank lines judiciously. Function Arguments: Use spaces after commas. Annotations: Follow type annotation guidelines.

Documentation: Use docstrings. Vertical Whitespace: Separate code logically. Imports Formatting: Organize import statements. Avoid Wildcard Imports: Be explicit. Consistency: Maintain consistency in style.

Four Core Programming Concepts

Four Big Programming Concepts: Abstraction and encapsulation, Parameterization, Iteration (loops), Expressions (calculations).

Understanding NamedTuple

NamedTuple: Named Fields: namedtuple...

Continue reading "Python Best Practices: Style, Concepts, and Comprehensions" »

C Code Examples: Data Structures and Algorithms

Computer science5.54 KB

Recursive Binary Tree Traversals

Inorder Traversal:

void inorder(struct node *root)
{
  if(root != NULL)
  {
    inorder(root->left);
    printf("%d\t", root->data);
    inorder(root->right);
  }
}

Preorder Traversal:

void preorder(struct node *root)
{
  if(root != NULL)
  {
    printf("%d\t", root->data);
    preorder(root->left);
    preorder(root->right);
  }
}

Postorder Traversal:

void postorder(struct node *root)
{
  if(root != NULL)
  {
    postorder(root->left);
    postorder(root->right);
    printf("%d\t", root->data);
  }
}

Linked List Operations

Search

void search(struct node *head,int key)
{
  struct node *temp = head;
  while(temp != NULL)
  {
    if(temp->data == key)
      printf("key found");
    temp =
...
Continue reading "C Code Examples: Data Structures and Algorithms" »

Understanding Internet Architecture and Network Protocols

Computer science5.8 KB

Internet Fundamentals: A Network of Networks

The Internet is often described as a "network of networks," comprising interconnected Internet Service Providers (ISPs).

Key Components of the Internet

  • Hosts: End Systems for Applications

    Hosts are the end systems (clients & servers) that run applications. They connect at the edge of the Internet.

  • Packet Switches: Forwarding Data

    Packet switches forward data in chunks called packets. These include:

    • Routers: Forward data between different networks.
    • Switches: Operate within the core of the Internet, not at the edge.
  • Communication Links: The Data Pathways

    Communication links connect routers and can be made of:

    • Fiber optic cables
    • Copper wires
    • Radio waves
    • Satellite connections

    The transmission rate of a link is

...
Continue reading "Understanding Internet Architecture and Network Protocols" »