Assignment 01
Name: Hemesh Chopade
Roll No. 11
Q1 (Bloom’s Level 1 – Remembering):
What does the term Open Source Software (OSS) mean?
Open Source Software (OSS) refers to software whose source code is made freely available to
the public, allowing anyone to view, use, modify, and distribute the code without restrictions.
Unlike proprietary software—where the code is kept secret and controlled by a company—OSS
encourages transparency, collaboration, and community-driven development.
OSS is usually released under special licenses such as GPL, MIT, Apache, BSD, etc. These licenses
define what users are allowed to do with the software. The core idea of open source is that
software should be developed in a way that anyone can improve it, fix issues, or create new
versions (forks).
Examples of open-source software include:
• Linux operating system
• Android OS
• Python language
• Django, [Link], React
• Mozilla Firefox
In simple terms, OSS empowers users with freedom—freedom to learn from the code, freedom
to innovate, and freedom to share improvements back with the community.
Q2 (Bloom’s Level 2 – Understanding):
Describe in your own words why contributing to open-source projects is important for
developers.
Contributing to open-source projects is important because it allows developers to grow
technically, gain real-world experience, and become part of a global community. When
developers contribute, they get the opportunity to work on large-scale projects, understand
complex architectures, and collaborate with experienced programmers. This helps them
improve skills such as coding, debugging, testing, documentation, and version control.
Open-source contribution also builds a developer’s professional reputation. Recruiters and
companies often look at GitHub contributions as proof of practical skills. By contributing,
developers can showcase their work publicly, which helps in internships, jobs, and networking.
Another important aspect is that open source encourages a culture of sharing and learning.
Developers benefit from others’ code, and in return, help improve the tools that everyone uses.
This creates a positive cycle of knowledge and innovation.
In simple terms:
Open-source contribution helps developers learn, collaborate, gain visibility, and give back to
the technology community.
Q3 (Bloom’s Level 3 – Applying):
How would you apply debugging techniques to identify and resolve performance issues in a
newly released OS version?
To identify and resolve performance issues in a newly released operating system (OS) version, I
would apply systematic debugging techniques in the following way:
1. Reproduce the Performance Issue
The first step is to reliably reproduce the problem. This involves running the OS under similar
hardware and software conditions reported by users. Once the issue can be observed
consistently, analysis becomes easier.
2. Use Performance Profiling Tools
I would apply tools such as:
• CPU profilers (to check high CPU usage)
• Memory analyzers (to detect memory leaks or excessive RAM consumption)
• Disk I/O monitors
• Network analyzers
These tools help identify which processes or system calls are creating bottlenecks.
3. Analyze System Logs
Operating systems generate extensive logs. By examining logs, I can trace:
• Unexpected errors
• Slow system calls
• Kernel-level warnings
• Crashes or timeouts
This helps locate the exact point where performance degrades.
4. Apply Code Tracing and Breakpoint Debugging
I would trace critical modules of the OS and use breakpoints to inspect:
• Variable values
• Function execution time
• Resource allocation patterns
This helps pinpoint inefficient code segments, loops, or functions that cause delays.
5. Compare With Previous OS Version
By comparing the performance of the new version with the previous stable version, I can
identify:
• Newly added modules or features causing slowdown
• Changes in kernel scheduling or memory management
• Differences in system resource usage
This comparative debugging helps isolate the root cause faster.
6. Fix the Identified Issue
Once the issue is found, I would:
• Optimize slow algorithms
• Reduce unnecessary system calls
• Fix memory leaks or dangling pointers
• Modify kernel parameters
• Improve thread or process scheduling
The goal is to eliminate the bottleneck at the source.
7. Test the Fix Thoroughly
After applying the fix, I would perform:
• Stress testing
• Load testing
• Regression testing
• Compatibility testing
This ensures the fix does not introduce new bugs and that the OS performs efficiently under all
conditions.