cover photo

COURSEWORK

Khushi's EV-RE-001 course work. Lv 1

KhushiAUTHORACTIVE
work cover photo
This Report is yet to be approved by a Coordinator.

LEVEL 0

15 / 9 / 2025


TASK 1: API

LEARNING OBJECTIVE

The aim was to understand what an API is, how it works, and explore its applications.

LEARNING

An API (Application Programming Interface) is a bridge that allows different software systems to communicate by sending requests and receiving responses, often in formats like JSON. APIs power many of the tools we use daily, from weather apps and maps to payment systems and social media integrations. Through this learning, I understood the role of APIs in enabling seamless connections between platforms and services. To put this into practice, I built a weather app using HTML, JavaScript, and an API key that fetches and displays live weather data. This project helped me see how theory translates into real-world applications and gave me hands-on experience in working with APIs.

OUTCOME

Here is a screenshot from my Weather App project:

Weather App Screenshot """

TASK 2: Working with GitHub

LEARNING OBJECTIVE:

The aim was to understand GitHub workflows, including GitHub Actions, Issues, and Pull Requests, and how they streamline collaboration and automation in software projects.

LEARNING:

GitHub is not only a code hosting platform but also a powerful collaboration tool.

  • Issues help in tracking bugs, tasks, or enhancements.
  • Pull Requests (PRs) enable team members to propose changes, review code, and merge contributions into the main project safely.
  • GitHub Actions automate repetitive workflows such as running tests, deploying applications, or checking code quality whenever changes are pushed.

Through this task, I learned how these features integrate seamlessly to make development more efficient and team-friendly.

OUTCOME:

By working with GitHub Issues, Pull Requests, and Actions, I gained hands-on experience in collaborative software development. This helped me understand how professional teams manage projects, ensure quality through code reviews, and automate tasks with CI/CD pipelines.The images for the same is attached below : github github """

TASK 3: Working with the Command Line on Ubuntu

LEARNING OBJECTIVE:

The aim was to get familiar with the Ubuntu command line and perform essential operations such as creating folders and files, navigating directories, listing contents, generating multiple folders programmatically, and concatenating files.

LEARNING:

Through this task, I explored practical use of the Linux terminal. I learned how to efficiently manage files and directories, automate repetitive tasks using loops, and handle text files directly from the command line. These exercises gave me confidence in working with Ubuntu’s CLI and understanding its importance in development workflows.

OUTCOME:

I successfully completed all the subtasks and strengthened my command-line skills.
All relevant screenshots are added to visually show what I have done. ubuntu ubuntu """

TASK 4: Build Your Own Brain - Linear Regression from Scratch

LEARNING OBJECTIVE:

The aim was to implement Linear Regression from scratch using gradient descent, understand how optimization works, and compare the custom model’s performance with the scikit-learn implementation on real-world data.

LEARNING:

Linear Regression is one of the simplest and most widely used machine learning algorithms that models the relationship between input features and an output variable by fitting a straight line to the data, represented as ( y = w \cdot x + b ). To train this model, Gradient Descent is used as an optimization technique where the weights and bias are iteratively updated by moving in the opposite direction of the error gradient, thereby minimizing the cost function such as Mean Squared Error. Implementing the algorithm “from scratch” meant coding all steps manually using Python and NumPy without relying on machine learning libraries, which gave me deeper insights into how the calculations, weight updates, and convergence work in practice. Optimization in this context refers to gradually reducing the error and finding the best line of fit, and through this I learned the importance of concepts like feature scaling and choosing the right learning rate, as too small a rate slows down convergence and too large a rate may cause divergence. In contrast, the scikit-learn implementation of Linear Regression (sklearn.linear_model.LinearRegression) is highly optimized, efficient, and user-friendly, as it handles the mathematical computations internally and provides easy evaluation through metrics like MSE, MAE, and R². While the scikit-learn model was faster and more accurate due to its optimizations, building the algorithm manually helped me understand the mathematics, the role of gradient descent, and how optimization truly works.

OUTCOME:

I successfully implemented Linear Regression from scratch and compared its performance with scikit-learn’s built-in model using the California Housing dataset. The evaluation involved plotting the line of best fit along with the data points and analyzing metrics such as MSE, MAE, and R². The exercise showed that while scikit-learn offers speed and convenience, the scratch implementation provided valuable hands-on experience and strengthened my understanding of how Linear Regression and optimization techniques function in practice. All relevant screenshots and plots are added to visually show what I have done. ubuntu ubuntu ubuntu ubuntu """

TASK 5: The Matrix Puzzle — Decode with NumPy & Reveal the Image

LEARNING OBJECTIVE:

The objective of this task was to strengthen skills in NumPy and Matplotlib by decoding a scrambled matrix into a hidden image through reshaping, reorienting, and visualizing the data.

LEARNING:

NumPy is a powerful Python library for numerical computations, providing tools for handling arrays, reshaping data, and performing mathematical operations efficiently. Matplotlib, on the other hand, allows us to visualize numerical data through plots and images. In this task, I downloaded the scrambled matrix and experimented with NumPy operations such as reshape, transpose, flip, and slicing to reorient the data into a recognizable image. Once the correct arrangement was achieved, I used matplotlib.pyplot.imshow() to render the hidden picture. The puzzle taught me how data orientation affects visualization and how to debug issues step by step by checking array shape, size, and orientation.

OUTCOME:

I successfully decoded the scrambled matrix into its hidden image and visualized it with Matplotlib. This exercise not only improved my understanding of NumPy operations but also gave me hands-on experience in combining logical problem-solving with visualization techniques. It sharpened my debugging skills and reinforced the importance of array manipulation in data science and image processing.
All relevant images are added to visually show what I have done. ubuntu """

TASK 6: Speed Control of DC Motor

LEARNING OBJECTIVE:

The aim was to explore techniques for controlling the speed of DC motors using an Arduino UNO and an L298N H-Bridge motor driver, simulate the setup on Tinkercad, and then implement the same on hardware with a 5V BO motor.

LEARNING:

Through this task, I learned the working principle of DC motor speed control and how Pulse Width Modulation (PWM) signals from the Arduino can be used to vary the motor’s speed. The L298N motor driver acted as an interface between the Arduino and the motor, allowing safe current and voltage handling while enabling bidirectional control. By writing Arduino code to generate PWM signals, I was able to observe how increasing or decreasing the duty cycle of the PWM wave directly affected the motor’s rotation speed. Initially, I simulated the circuit in Tinkercad, which helped me verify the wiring connections and test the code in a safe environment before moving to real hardware. Once confirmed, I implemented the setup physically using an Arduino UNO, L298N driver, and a 5V BO motor, successfully achieving smooth control over motor speed. This gave me confidence in both the theoretical understanding of motor drivers and their practical applications in embedded systems.

RESOUCES:

https://lastminuteengineers.com/l298n-dc-stepper-driver-arduino-tutorial/#:~:text=The%20L298N%20module%20has%20four,PWM%20(Pulse%20Width%20Modulation)

OUTCOME:

I successfully controlled the speed of a DC motor using an Arduino and the L298N driver, first through simulation on Tinkercad and then on real hardware. The motor’s speed varied according to the PWM values programmed, demonstrating effective use of embedded systems to control electromechanical devices. Videos were recorded during both simulation and hardware implementation to showcase the task. All relevant media are added to visually show what I have done. dc

TASK 7: LED Toggle Using ESP32

LEARNING OBJECTIVE:

The aim was to learn the working of an ESP32 microcontroller, configure the Arduino IDE to program it, and create a standalone web server that controls an LED connected to one of its GPIO pins.

LEARNING:

The ESP32 is a low-cost, low-power microcontroller with built-in Wi-Fi and Bluetooth, making it highly suitable for IoT applications. In this task, I explored how to set up the Arduino IDE to upload programs to the ESP32 by installing the required board packages and selecting the correct port. I then coded a simple web server using the ESP32, where the web interface could toggle an LED connected to a GPIO pin. This taught me how GPIOs are controlled in ESP32, how HTTP requests can be handled, and how web-based device control can be implemented.

OUTCOME:

I successfully built a standalone ESP32 web server to toggle an LED and gained practical experience in programming ESP32 with Arduino IDE. This task helped me understand how IoT devices interact with the internet and can be remotely controlled.
All relevant images are added to visually show what I have done.

TASK 8: Soldering Prerequisites

LEARNING OBJECTIVE:

The aim was to get familiar with soldering tools and practice basic soldering on a perf board under supervision.

LEARNING:

Soldering is a process of joining electronic components using a metal alloy called solder, which melts and creates a conductive path when cooled. The soldering iron is used to heat the solder, while accessories like flux improve conductivity and soldering wick help remove excess solder. In this task, I learned about the soldering equipment in the lab, their safe handling, and practiced soldering a simple LED circuit on a perf board. This experience taught me the importance of precision, safety precautions, and how soldering forms the foundation of assembling reliable electronic hardware.

OUTCOME:

I gained hands-on experience in soldering and understood its importance in hardware prototyping. A basic LED circuit was assembled successfully on the perf board.
All relevant images are added to visually show what I have done. dc

TASK 9: 555 Astable Multivibrator

LEARNING OBJECTIVE:

The aim was to design and implement a 555 timer-based astable multivibrator circuit with a 60% duty cycle and observe its output waveform using a Digital Storage Oscilloscope (DSO).

LEARNING:

The 555 timer IC is a versatile chip widely used in electronics for generating stable timing signals. In astable mode, it continuously oscillates between high and low states, producing a square wave output. By selecting appropriate resistor and capacitor values, the frequency and duty cycle of the output waveform can be controlled. In this task, I designed a circuit with a 60% duty cycle, rigged it on a breadboard, and connected the output to the DSO to visualize the waveform. This helped me understand the working principle of astable multivibrators and their use in applications like pulse generation, clock signals, and LED blinkers.

OUTCOME:

I successfully designed and tested a 555 astable multivibrator circuit and verified its waveform on the DSO. The experiment gave me practical insight into timing circuits and their applications.
All relevant images are added to visually show what I have done. ubuntu ubuntu

TASK 10: Karnaugh Maps and Deriving the Logic Circuit

LEARNING OBJECTIVE:

The aim was to understand Karnaugh Maps (K-maps) for simplifying Boolean expressions and apply them to design a burglar alarm circuit based on specific conditions.

LEARNING:

A Karnaugh Map is a visual method of simplifying Boolean algebra expressions to minimize the number of logic gates required in a circuit. In this task, the problem was defined using four variables: door lock/open and key pressed/not pressed. By plotting the truth table and transferring it into a K-map, I derived the simplest logical expression for the alarm system. Using basic logic gates on a breadboard, I implemented a burglar alarm where the buzzer or LED activated under certain conditions. This task demonstrated how K-maps optimize digital logic design and reduce circuit complexity.

OUTCOME:

I successfully designed a logic circuit for a burglar alarm using K-maps and implemented it using logic gates and push buttons. The LED/buzzer responded correctly to the given conditions, validating the design.
All relevant images are added to visually show what I have done.

CONTINUATION --> https://hub.uvcemarvel.in/article/d059484d-ddd4-4a7a-8aee-687991a1c533

UVCE,
K. R Circle,
Bengaluru 01