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

String and Linked List Data Structures Explained

Computer science6.48 KB

1. Storage of Strings

At its core, a string is a sequence of characters. How computer systems store and manipulate these characters determines code performance and memory usage. Computer memory is linear, so strings must be mapped to sequential data structures using three primary methods:

A. Fixed-Length Storage (Static Allocation)

Each string variable is assigned a fixed number of bytes at compile time.

  • Mechanics: If a string is smaller than the allocated size, the remaining space is padded with blanks or null characters. If it exceeds it, the string is truncated.
  • Pros/Cons: Very fast to access, but highly inefficient with memory.

B. Variable-Length Storage (Contiguous Array)

The string occupies only the space it needs, stored side-by-side in memory....

Continue reading "String and Linked List Data Structures Explained" »

Android and iOS Mobile App Development Solutions

Computer science11.74 KB

RecyclerView Features and GridView Implementation

1. List and explain any three features of RecyclerView. Develop an Android application to display any five programming languages in GridView.

  • View Recycling: Reuses views to improve performance and reduce memory usage.
  • ViewHolder Pattern: Stores item views to avoid repeated findViewById() calls.
  • Flexible Layout: Supports LinearLayoutManager, GridLayoutManager, and StaggeredGridLayoutManager.

Example: XML and Java

Java Code:

GridView gridView = findViewById(R.id.gridView);
String[] languages = {"C", "C++", "Java", "Python", "Kotlin"};
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, languages);
gridView.setAdapter(adapter);

API Types and Data Passing

...
Continue reading "Android and iOS Mobile App Development Solutions" »

Linux Shell Programming with Bash and the vi Editor

Computer science6.71 KB

🐚 Introduction to Shell Programming in Linux

Shell programming is the process of writing shell scripts—sequences of commands executed by the command-line interpreter (the shell, typically Bash) to automate tasks. It leverages command-line utilities, variables, and control flow structures to create powerful programs.

✍️ The vi Editor

The vi (or vim) editor is a text-based, modal editor crucial for writing shell scripts and editing configuration files in Linux. It operates in distinct modes:

ModeFunctionKey Commands
Command ModeThe default mode used for navigation, deletion, copying, and pasting.h, j, k, l for cursor movement; dd to delete a line.
Insert ModeUsed for typing and editing text.i (insert before cursor), a (append after cursor)
...
Continue reading "Linux Shell Programming with Bash and the vi Editor" »

Cache Mapping, Virtual Memory and I/O Techniques in Computer Architecture

Computer science27.48 KB

Q1. Cache Mapping Techniques

Cache memory is a small, fast memory placed between the CPU and main memory to speed up memory access. Mapping techniques determine how blocks from main memory are mapped to cache lines.

Three Types of Cache Mapping

1. Direct Mapping

In direct mapping, each block of main memory maps to exactly one specific cache line. The cache line number is determined by the formula:

Cache Line Number = (Block Address) mod (Number of Cache Lines)

Address format: The memory address is divided into three fields:

  • Tag: Identifies which block is currently stored.
  • Index: Identifies the cache line number.
  • Block offset: Identifies the word within the block.

Advantages:

  • Simple and easy to implement
  • Fast access time
  • Low-cost hardware

Disadvantages:

  • High
...
Continue reading "Cache Mapping, Virtual Memory and I/O Techniques in Computer Architecture" »

Kerberos Protocol Authentication and Network Transmission Media Types

Computer science2.55 KB

Kerberos: Secure Network Authentication Protocol

Kerberos is a network authentication protocol that allows systems and users to prove their identity to each other before accessing resources, ensuring secure communication within a network. It is a trusted third-party system that verifies user identities without sending passwords directly across the network.

Key Components and Characteristics of Kerberos

Authentication Protocol Definition

Kerberos is a protocol, meaning it is a set of rules and procedures that govern how devices and users authenticate with each other.

Trusted Third Party (KDC)

Kerberos relies on a trusted third party, known as the Key Distribution Center (KDC), to manage authentication.

Single Sign-On (SSO) Implementation

Kerberos is...

Continue reading "Kerberos Protocol Authentication and Network Transmission Media Types" »

Internet Fundamentals: Protocols, Web Browsers, and Network Architecture

Computer science7.49 KB

Internet vs. World Wide Web (WWW)

  • Internet: A global network infrastructure that uses TCP/IP to connect devices worldwide.
  • WWW (World Wide Web): A multimedia service built upon the Internet, utilizing HTML, CSS, web browsers, and hyperlinks.
  • Webpage: A single document accessible via the WWW. | Website: A collection or group of related webpages.

History and Evolution of the Internet

  • 1960s: Development of ARPANET (Advanced Research Projects Agency Network).
  • 1983: Adoption of the TCP/IP protocol suite (developed by Vint Cerf and Bob Kahn).
  • 1989: Invention of the World Wide Web (WWW) by Tim Berners-Lee.
  • 1992: Release of the Mosaic browser (developed at UIUC), popularizing the graphical web.

Understanding the Client-Server Model

  • Client: Initiates a request
...
Continue reading "Internet Fundamentals: Protocols, Web Browsers, and Network Architecture" »

Network Fundamentals: Protocols, Addressing, Security

Computer science17.78 KB

TCP Reliable Transfer and Connection Management

TCP Reliable Transfer

  1. Sequence Numbers

    • Each byte of data is assigned a sequence number. This number is used by the receiver to correctly order the data and ensure there are no missing segments.
  2. Acknowledgements

    • The receiver sends back an ACK to the sender for the sequence number of the next expected byte. If the sender receives the ACK before its timer expires, it knows everything up to that byte was received correctly.
  3. Retransmission

    • If the ACK is not received before the timer expires, the sender retransmits the data.

TCP Connection Management

Managing a TCP connection begins with a three-way handshake, which establishes a connection before any actual data is transmitted.

Steps in Three-Way Handshake

  1. SYN
    • The
...
Continue reading "Network Fundamentals: Protocols, Addressing, Security" »

Essential .NET Concepts: CLR, FCL, MSII

Computer science3.35 KB

Key .NET Concepts Defined

Managed Code Explained

Managed code is the code executed by the .NET runtime (CLR), which provides memory management, security, and exception handling.

.NET Framework Class Library (FCL)

FCL is a collection of reusable classes, interfaces, and value types that provide core functionalities like file handling, data access, and networking in .NET applications.

Boxing in VB.NET

Boxing is the process of converting a value type (e.g., Integer) into an object type (Object), allowing it to be stored in the heap.

Option Explicit Statement

In VB.NET, Option Explicit forces variable declarations before use, preventing errors due to undeclared variables.

Progress Bar Control Use

A Progress Bar control visually represents the progress of...

Continue reading "Essential .NET Concepts: CLR, FCL, MSII" »

Java AWT: Button Events and Arrow Key Shape Movement

Computer science3.75 KB

Button Click Action Events

import java.awt.*;

import java.awt.event.*;

public class ButtonClickActionEvents

{

public static void main(String args[])

{

Frame f=new Frame("Button Event");

Label l=new Label("DETAILS OF PARENTS");

l.setFont(new Font("Calibri",Font.BOLD, 16));

Label nl=new Label();

Label dl=new Label();

Label al=new Label();

l.setBounds(20,20,500,50);

nl.setBounds(20,110,500,30);

dl.setBounds(20,150,500,30);

al.setBounds(20,190,500,30);

Button mb=new Button("Mother");

mb.setBounds(20,70,50,30);

mb.addActionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e)

{

nl.setText("NAME: " + "Aishwarya");

dl.setText("DESIGNATION: " + "Professor");

al.setText("AGE: " + "42");

}

});

Button fb=new Button("Father");

fb.setBounds(80,70,50,30);

fb.addActionListener(

...
Continue reading "Java AWT: Button Events and Arrow Key Shape Movement" »

CUDA Matrix Multiplication: Shared Memory

Computer science3.23 KB

CUDA Matrix Multiplication Using Shared Memory

This code demonstrates matrix multiplication in CUDA, leveraging shared memory for optimization. It includes two examples: a kernel using shared memory and a host-side implementation using the Thrust library.

CUDA Kernel with Shared Memory

The following CUDA kernel performs matrix multiplication using shared memory to optimize data access:


__global__ void matMulShared(int *A, int *B, int *C, int rowsA, int colsA, int colsB) {
    __shared__ int tile_A[TILE_SIZE][TILE_SIZE], tile_B[TILE_SIZE][TILE_SIZE];
    int row = blockIdx.y * TILE_SIZE + threadIdx.y, col = blockIdx.x * TILE_SIZE + threadIdx.x, temp = 0;
    for (int i = 0; i < (colsA + TILE_SIZE - 1) / TILE_SIZE; ++i) {
        if (row <
...
Continue reading "CUDA Matrix Multiplication: Shared Memory" »