Sunday, 7 December 2025

International Computer Science Teachers Week (14–20 December 2025)

International Computer Science Teachers Week (14–20 December 2025)

Online Article, Essay, Poster & Banner Writing Competition


Dear Students,

As you know, 19 December is celebrated as International Computer Science Teachers Day, and this year, 14–20 December 2025 will be observed as International Computer Science Teachers Week. As part of the celebration of International Computer Science Teachers Week (14–20 December 2025), we are organizing an Online Article, Essay, Poster, and Banner Writing Competition.


๐ŸŽฏ Competition Categories


Article Writing – Topic related to Computer Science, Technology, AI, or Digital Innovation.


Essay Writing – 400–600 words on themes such as the role of CS teachers, impact of technology, future of computing, etc.


Digital Poster/Banner Making – Themes:


  • International Computer Science Teachers Week
  • Artificial Intelligence
  • Cyber Safety
  • Coding Culture
  • Digital Empowerment


๐Ÿ“… Important Details


Mode: Online Submission


Last Date for Registration: 12 December 2025


Submission Deadline: 18 December 2025


Result Announcement: 19 December 2025


๐Ÿ“Œ Registration


Students who wish to participate must register using the link below on or before 06 December 2025.

Registration Link: 


https://docs.google.com/forms/u/3/d/10zBu-8N6q0x2eVQwtUjz3zARbPcbbAns44C5RpUD0Ik/preview


We encourage all interested students to showcase their creativity, digital skills, and knowledge of Computer Science.

Let’s celebrate this week with innovation, inspiration, and enthusiasm!


All teachers are requested to kindly share this information in their respective schools as well.

Winners of the competition will be awarded prizes and certificates for their outstanding performance.


Students are requested to email their articles, essays, digital posters/banners, etc. to

support@spsharmag.com

 in any of the following formats: WORD / PDF / JPG / PNG before or on 18 Dec 2025


– Computer Science Department

Thursday, 18 September 2025

เค†เค‡เคฏे เคนเคฎ เคธ्เคตเคฏं เค•ो "Re-Routing" เคฎोเคก เคชเคฐ เคฐเค–ें

Life Lesson เค›ुเคชा เคนै Google Maps เคฎें, เคชเคข़िเค เคœ़เคฐूเคฐ ๐Ÿ‘‡

เคฐी-เคฐूเคŸिंเค— :
Re-Routing : 
เค•्เคฏा เค†เคชเคจे เค—ौเคฐ เค•िเคฏा เคนै เค•ि เค…เค—เคฐ เค†เคช เค—เคฒเคค เคฎोเคก़ เคฒेเคคे เคนै, เคคो Google เคฎाเคจเคšिเคค्เคฐ เค•เคญी เคญी เคšिเคฒ्เคฒाเคคा เคจเคนीं เคนै, เคจिंเคฆा เคฏा เค†เคชเค•ो เคกांเคŸเคคा เคจเคนीं เคนै।
เคฏเคน เค•เคญी เค…เคชเคจी เค†เคตाเคœ เคŠँเคšी เคจเคนीं เค•เคฐเคคा เค”เคฐ เคจ เคนी เคฏे เค•เคนเคคा เคนै, "เค†เคชเค•ो เค†เค–िเคฐी เค•्เคฐॉเคธिंเค— เคชเคฐ เคฌाเคं เคœाเคจा เคฅा, เคฌेเคตเค•ूเคซ! เค…เคฌ เค†เคชเค•ो เคฒंเคฌा เคฐाเคธ्เคคा เคคเคฏ เค•เคฐเคจा เคนोเค—ा เค”เคฐ เค‡เคธเคฎें เค†เคชเค•ो เคฌเคนुเคค เค…เคงिเค• เคธเคฎเคฏ เคฒเค—เคจे เคตाเคฒा เคนै เค”เคฐ เค†เคชเค•ो เคฆेเคฐ เคนोเคจे เคตाเคฒी เคนै
เคง्เคฏाเคจ เคฆें
"เค…เค—เคฐ เค‰เคธเคจे เคเคธा เค•िเคฏा, เคคो เคธंเคญाเคตเคจा เค•ाเคซी เคนै เค•ि เคนเคฎ เคฎें เคธे เคฌเคนुเคค เคธे เคฒोเค— เค‡เคธเค•ा เค‡เคธ्เคคेเคฎाเคฒ เค•เคฐเคจा เคฌंเคฆ เค•เคฐ เคธเค•เคคे เคนैं"
Google เค•ेเคตเคฒ "เคฐी-เคฐूเคŸ" เค•เคฐเคคा เคนै, เค”เคฐ เค†เคชเค•ो เคตเคนां เคชเคนुंเคšเคจे เค•ा เค…เค—เคฒा เคธเคฌเคธे เค…เคš्เค›ा เคคเคฐीเค•ा เคฆिเค–ाเคคा เคนै
เค‡เคธเค•ी เคช्เคฐाเคฅเคฎिเค• เคฐुเคšि เค†เคชเค•ो เค…เคชเคจे เคฒเค•्เคท्เคฏ เคคเค• เคชเคนुँเคšाเคจे เคฎें เคนै, เคจ เค•ि เค†เคชเค•ो เค—เคฒเคคी เค•เคฐเคจे เค•े เคฒिเค เคฌुเคฐा เคฎเคนเคธूเคธ เค•เคฐाเคจे เคฎें
เค‡เคธी เคฎें, เคฌเคนुเคค เคฌเคข़िเคฏा เคธเคฌเค• เคนै।
เค…เคชเคจी เคจिเคฐाเคถा เค”เคฐ เค•्เคฐोเคง เค•ो เค‰เคจ เคฒोเค—ों เคชเคฐ เค‰เคคाเคฐเคจा เค†เคธाเคจ เคนै, เคœिเคจ्เคนोंเคจे เค—เคฒเคคी เค•ी เคนै, เคตिเคถेเคท เคฐूเคช เคธे เค‰เคจ เคฒोเค—ों เคชเคฐ เคœो เคนเคฎाเคฐे เค•เคฐीเคฌी เค”เคฐ เคชเคฐिเคšिเคค เคนैं, เคฒेเค•िเคจ เคธเคฌเคธे เค…เคš्เค›ा เคตिเค•เคฒ्เคช เคธเคฎเคธ्เคฏा เค•ो เค ीเค• เค•เคฐเคจे เคฎें เคฎเคฆเคฆ เค•เคฐเคจा เคนै, เคฆोเคท เคฆेเคจा เคจเคนीं।
เค•्เคฏा เค†เคชเค•े เคชाเคธ เคนाเคฒ เคนी เคฎें เคฐी-เคฐूเคŸिंเค— เค•्เคทเคฃ เคฅे ?
เค”เคฐों เค•े เคธाเคฅ เคญी เค”เคฐ เค…เคชเคจों เค•े เคธाเคฅ เคญी ?
เค…เคชเคจे เคฌเคš्เคšों, เคœीเคตเคจเคธाเคฅी, เคŸीเคฎ เค•े เคธाเคฅी เค”เคฐ เค‰เคจ เคธเคญी เคฒोเค—ों เค•े เคฒिเค Google เคฎाเคจเคšिเคค्เคฐ เคฌเคจें, เคœो เค†เคชเค•े เคฒिเค เคฎाเคฏเคจे เคฐเค–เคคे เคนैं เค”เคฐ เคœिเคจเค•ी เค†เคชเค•ो เคชเคฐเคตाเคน เคนै।
เค†เค‡เคฏे เคนเคฎ เคธ्เคตเคฏं เค•ो "Re-Routing" เคฎोเคก เคชเคฐ เคฐเค–ें, เคœीเคตเคจ เค•ो เคธृเคœเคจाเคค्เคฎเค• เค”เคฐ เคธเค•ाเคฐाเคค्เคฎเค• เคฌเคจाเคฏे।
S P SHARMA SIR

#spsharmag๐Ÿ™

Wednesday, 9 April 2025

6. A school stores records of Class XII students using a list that contains multiple lists as its elements.

 A school stores records of Class XII students using a list that contains multiple lists as its elements. The structure of each such element is [Student_Name, Marks, MainSubject]. Crate user-defined functions to perform the operations as mentioned below:

(a) Push_student(): To push the Student_Name and Marks of all those students, who have Science as MainSubject, into a Stack StudentInfo
(b) Pop_student(): To delete all items (one at a time) from the stack StudentInfo in LIFO order and display them. Also display "Empty Stack" when there are no items remaining in the stack.
For Example:
If the stored information is:
[['Akansha',98,"Mathematics"],["Priti",96,"Science"],["Garima",99,"Science"],["Ayushi",78,"English"]]
The stack should contain:
[['Priti', 96], ['Garima', 99]]
The output should be:
["Garima",99]
["Priti",96]
Empty Stack

Solution:

def Push_student():
    for S in L:
        if S[2]=="Science":
            StudentInfo.append([S[0],S[1]])
    print(StudentInfo)
    
def Pop_student():
    while StudentInfo!=[]:
        print(StudentInfo.pop())
    else:
        print("Stack is Empty")

Push_student()
Pop_student()




8. Write a program in Python to input 5 words and push them one by one into a list named All.

  Write a program in Python to input 5 words and push them one by one into a list named All.

The program should then use the function PushNV() to create a stack of words in the list NoVowel so that it store only those words which do not have any vowel present in it, from the list All.
Thereafter, pop each word from the list NoVowel and display the popped word. When the stack is empty display the message 'EmptyStack'.
For Example:
If the words accepted and pushed into the list All are
['DRY','LIKE','RHYTHM','WORK','GYM']
Then the stack NoVowel should store
['DRY','RHYTHM','GYM']
And the output should be displayed as
GYM 
RHYTHM 
DRY 
EmptyStack


Solution:

Words=[]
for i in range(5):
    w=input("Enter any word: ")
    Words.append(w)

print(Words)
Stk=[]
V='aeiouAEIOU'

def  PushNV():
    for w in Words:
        c=0
        for v in V:
            if v in w:
                c=c+1
        if c==0:
            Stk.append(w)

def PopNV():
    while Stk!=[]:
        print(Stk.pop())
    else:
        print("Stack is Empty")


PushNV()
PopNV()

5. Priyanka has created a dictionary 'emeployee_data' containing EmpCode and Salary as key value pairs

 Priyanka has created a dictionary 'emeployee_data' containing EmpCode and Salary as key value pairs for 5 Employees of Cyber Intratech. Write a program, With separate user defined function, as mentioned below, to perform the following operations:

(a)  push_emp(): Push all those EmpCode, where the Salary is less than 25000, from the dictionary into a stack 'stk_emp'
(b)  pop_emp(): Remove all the elements from the stack, one at a time, in a Last-In-First-Out(LIFO) manner and displays them. It also displays 'Stack is empty' once all the element have been removed.
For Example:
If the sample content of the dictionary is as follows:
{'E001':15000,'E002':27000,'E003':30000,'E004':15000,'E005':19000}, then the stack 'stk_emp' will contain EmpCode E001, E004, E005 after push_emp(). pop_emp() will pop and display employee record in LIFO fashion and display 'Stack is empty' at last.

Solution:

stk_emp=[]
employee_data={'E001':15000,'E002':27000,'E003':30000,'E004':15000,'E005':19000}

def push_emp():
    for k in employee_data.keys():
        if employee_data[k]<25000:
            stk_emp.append(k)

def pop_emp():
    while stk_emp!=[]:
        print(stk_emp.pop())
    else:
        print("Stack is Empty")



push_emp()
pop_emp()

3. Write a program in Python, with separate user defined functions to perform the following operations on Stack 'City'.

Write a program in Python, with separate user defined functions to perform the following operations on Stack 'City'.

(a) - Push the pin code and name of the city in the stack 'City'
(b) - Display the latest added element in the stack 'City'


Solutions:


City=[]
data=[['Delhi',110001],['Sonipat',152364],['Khatauli',251201]]

def Push_City():
    for i in data:
        City.append(i)
    

def Display_City():
    L=len(City)
    print(City[L-1])

Push_City()
Display_City()

2. A School has created a dictionary containing top players and their runs as key value pairs of cricket team.

 A School has created a dictionary containing top players and their runs as key value pairs of cricket team. Write a program with separate user defined functions to perform the following operations:

(a)    Push the name of the players(Keys) of the dictionary into a stack, where the corresponding runs (value) is greater than 49.
(b)    Pop and display the content of the stack.
For Example
If dictionary has the following values:
Data={'Rohan':40, 'Rihaan':55, 'Tejas':80,'Ajay':90}
The output should be:
Ajay
Tejas
Rihaan


Solutions

S=[]
Data={'Rohan':40, 'Rihaan':55, 'Tejas':80,'Ajay':90}
def Push_Player():
    for k in Data.keys():
        if Data[k]>49:
            S.append(k)

def Pop_Player():
    while S!=[]:
        print(S.pop())
    else:
        print("Stack is Empty")



Push_Player()
Pop_Player()

1. Suppose L = [3, 4, 5, 20, 4, 5], What is L after L.pop()?

 1. Suppose L = [3, 4, 5, 20, 4, 5], What is L after L.pop()?

  1. [3,4,5,20,4]
  2. [3,5,20,4,5]
  3. [3,5,20,5]
  4. Error

Ans: 

1. [3, 4, 5, 20, 4]

Explanation:

>>> L = [3, 4, 5, 20, 4, 5]
>>> L.pop()
5
>>> L
[3, 4, 5, 20, 4]

Sunday, 6 April 2025

How to Host Multiple Next.js Applications on a Single VM with Nginx and Custom Domains

 If you're working with multiple Next.js applications and want to host them all on a single virtual machine (VM) while assigning different domains or subdomains to each, this guide is for you. We'll walk through setting up PM2, Nginx, domain pointing, and even HTTPS using Let's Encrypt.


๐Ÿงฑ Step 1: Set Up Each Next.js Application

1. Build Each App

First, navigate to each app directory and build it for production:

# App 1 cd /path/to/your/nextjs-app1 npm install npm run build # App 2 cd /path/to/your/nextjs-app2 npm install npm run build # App 3 cd /path/to/your/nextjs-app3 npm install npm run build

2. Manage Your Apps Using PM2

Create an ecosystem.config.js file to manage your apps:

module.exports = { apps: [ { name: "app1", script: "npm", args: "run start", cwd: "/path/to/your/nextjs-app1", env: { NODE_ENV: "production", PORT: 4300 } }, { name: "app2", script: "npm", args: "run start", cwd: "/path/to/your/nextjs-app2", env: { NODE_ENV: "production", PORT: 4301 } }, { name: "app3", script: "npm", args: "run start", cwd: "/path/to/your/nextjs-app3", env: { NODE_ENV: "production", PORT: 4302 } } ] };

Start all apps using PM2:

pm2 start ecosystem.config.js

๐ŸŒ Step 2: Install and Configure Nginx

1. Install Nginx

sudo apt update sudo apt install nginx

2. Create Nginx Configuration for Each Domain

Create a configuration file for each app in /etc/nginx/sites-available/.

Example: app1.yourdomain.com

server { listen 80; server_name app1.yourdomain.com ; location / { proxy_pass http://localhost:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }

Repeat the same for other domains like app2.yourdomain.com and app3.yourdomain.com using the corresponding ports.

3. Enable the Sites

sudo ln -s /etc/nginx/sites-available/app1.yourdomain.com /etc/nginx/sites-enabled/ sudo ln -s /etc/nginx/sites-available/app2.yourdomain.com /etc/nginx/sites-enabled/ sudo ln -s /etc/nginx/sites-available/app3.yourdomain.com /etc/nginx/sites-enabled/

4. Test and Restart Nginx

sudo nginx -t sudo systemctl restart nginx

๐ŸŒ Step 3: Point Your Domains to the VM

Log in to your domain provider (e.g., GoDaddy, Namecheap) and update the DNS records:

app1.yourdomain.com[Your VM IP] app2.yourdomain.com[Your VM IP] app3.yourdomain.com[Your VM IP]

Add A records for each subdomain, pointing to the public IP of your VM.


๐Ÿ” Step 4: Enable SSL with Let's Encrypt (Recommended)

1. Install Certbot

sudo apt install certbot python3-certbot-nginx

2. Obtain SSL Certificates

sudo certbot --nginx -d upload.inditechit.com -d app2.yourdomain.com -d app3.yourdomain.com

Follow the prompts to complete the setup.

3. Test Renewal (Optional)

sudo certbot renew --dry-run

✅ Done!

Now you have multiple Next.js apps running on a single VM, each served on a custom domain with HTTPS. Nginx handles the routing via reverse proxy, while PM2 keeps your apps alive and running in the background.

Saturday, 29 March 2025

Class 12 Computer Science 2025 CBSE Question Paper Solution


SECTION - A


1-False

2-C-20

3-D-ValueError

4-B-Break

5-B

6-D

7-is

8-A

9-A-UNIQUE

10-A - 25$$15

11-B

12-A-dict()

13-A-UPDATE

14-B-count()

15-C-FLOAT

16-True

17-C-Repeater

18-D-VoIP

19-Advanced Research Project Agency Network

20-C

21-B



SECTION - B

22:

The return statement in a function is used to send a value back to the caller. If a function does not have a return statement, it returns None by default.


def square(num):

    return num * num


result = square(5)

print(result)  # Output: 25


23.

(i) Syntax Error in Python:

A Syntax Error in Python occurs when the code violates the rules of the Python language. These errors prevent the program from running because Python cannot interpret the incorrect syntax.

Example of Syntax Errors:

  • Missing or Mismatched Parentheses
  • Misuse of Keywords
  • Incorrect Indentation
  • Using Reserved Keywords as Variable Names
  • Missing Colon (:) in Control Statements


(ii) Implicit Type Conversion in Python:

Implicit Type Conversion, also known as Type Promotion, occurs when Python automatically converts one data type into another without explicit intervention by the programmer. 

Example: Integer to Float Conversion

a = 10      # Integer

b = 2.5     # Float

c = a + b   # Integer is automatically converted to Float


print(c)    # Output: 12.5

print(type(c))  # Output: <class 'float'>



24 (i)

(a) D['Raj']

(b) len(D1)


(ii) 

(a) D1.update(D)

(b) D1.pop('Amit')   OR  del D1['Amit']



25 - A - Spade#Diamond

26

def Sum(N):

    S=0

    for I in range(1,N+1):

        S=S+I

    return S

print(Sum(10))



first line me last me : add hoga

second line add hogi S=0

range me (1,N+1) likha jayega isme (0, N+1) bhi likh sakte hai

print wali line me ) add hoga


27 (i)

(a) EMPNO

(b) NOT NULL


(ii) 

(a) Alter table EMPLOYEES modify column BASICSAL float(7,2);


(b) drop table EMPLOYEES



28 

(a) URL - Uniform Resource Locator


(b) PPP - Point to Point Protocol

PPP is a data link layer protocol used to establish a direct connection between two network nodes primarily for dial-up internet access, DSL and VPNs


SECTION - C


31

(a) The new string is: g0n2Ge

(b) 

SYNTAX ERROR of Indentation in the for loop


OR

(If Syntax Error will remove output should be)


[1, 2, 3]

['ONE', 'TWO', 'THREE']

{1: 'ONE', 2: 'TWO', 3: 'THREE'}



SECTION - D


32.

(a)

(i) Select  WNAME, WAGE from worker where WAGE between 800 and 1500;

(ii) Select * from worker where SITEID is NULL;

(iii)  Select WNAME, WAGE, HOURS from worker where TYPE = "Skilled";

(iv) Update worker set WAGE=1200 where TYPE="Semiskilled";


(b)

(i)


 wname   | wage*hours |

+---------+------------+

| Ahmed J |     300000 |

| Anju S  |     156000 |

+---------+------------


(ii)

count(distinct type) |

+----------------------+

|                    3 |

+----------------------


(iii)


max(wage) | min(wage) | type        |

+-----------+-----------+-------------+

|      1500 |       780 | Unskilled   |

|      1200 |       520 | Skilled     |

|      1200 |      1200 | Semiskilled


(iv)


+---------+--------+

| wname   | siteid |

+---------+--------+

| Jacob B |    101 |

| Ahmed J |    103 |

+---------+--------+


34.

(i)  Select * from Articles order by price desc;

(ii) Select * from Articles where YEAR(DOC)= 2020;

(iii) DESC Artists;

(iv)

(a) Select Artists.Name from Articles Join Artists on Articles.A_Code=Artists.A_code Where Articles.Article='Painting';

(b) Select Name from Articles natural join artists where article = 'Painting';


SECTION - E


(i) Server should be placed in PSYCHIATRY Block, because it has the maximum number of computers

(ii) Switch

(iii)


Star Topology based on Server location

OR you can design using BUS topology for minimum distance



(iv)  Router should be placed in PSYCHIATRY Block

(v) 

(a) Telnet

(b) LAN