Sunday, 8 July 2018

DSC Summit 2018 Experience

Transformation: A revolutionary act or process which brings about change in our 
lives. It is the phenomenon which governs the birth of many ideas, inspirations, 
motivations and I got the opportunity to undergo such a transformation at the first ever 
DSC Summit 2018, as I became a part of the exciting congregation of DSC Leads 
from all over India, who religiously worship technology 
in their own campuses and ecosystems!

My journey to the DSC Summit began with an email stating that I had been 
selected as the DSC Lead of PICT, on the 30th September 2017, a day I 
remember so well! Since then, I had been conducting sessions on mobile 
development along with the ACS Facilitator, Nikita Kotak, and Akshay Ubale, 
a friend who is extremely passionate about development on my campus, out of 
my interest to learn about technology and share the learnings. We enjoyed the
process as it was! The sessions were going well, we were still to get the 
bigger picture of things, at that time! All of that was about to be levelled up soon! 

The DSC Summit, the catalyst, began with the enthusiasm of leads from all 
over the nation, moving towards one goal: harnessing the power of technology to 
create impact in the society! Till that day, each of us had been engaging in technological
activities in our respective campuses, transcending limits and yet, a little oblivious to 
what other leads were doing. And there we were, on the first evening of the Summit, 
gathered at one magical place, Goa, introducing ourselves, talking about our work, 
our likes and dislikes and networking with each other! On the very first evening, 
I got to know about the wider perspective of things, which was only to be expanded 
further on the next days!

We had sessions on leadership which gave me teachings of a lifetime, design thinking 
workshop which introduced me to innovative and effective ways of problem-solving, 
panel discussion on careers in technology on the first day! The next day unfolded exciting 
tech-talks, a talk on internationalization, storytelling, and much more.., each of which gave 
tremendous amounts of learning, much more than any tutorial, lecture or book :D

Here’s a slightly more detailed account of the sessions in the Summit: 

Day 1:
  • The Persuasive Leader by Anson Ben: The session on effective communication skills 
    gave me teachings of a lifetime!
  • The Design Thinking workshop by University Innovation Fellows: Ghanshyam S and the Fellows 
    conducted a fun session which enabled us to interact with a local business person, understand 
    his/her problems and develop a solution prototype. The activity helped me to understand a 
    creative, innovative and fun process to approach a problem, gave me an opportunity to 
    work in a team and exposed me to innovative ideas!! 

  • Product Excellence by Dimple Batra: The session by Program Manager at Google gave wonderful insights on how to develop fantastic products.  
  • Panel Discussion on Careers in Tech- Anson Ben, Shikha Gupta, Arjun Pratap, moderated by 
Vaishali Sabhahit: I got a chance to view technological careers from different perspectives.

Day 2:

Included sessions like: 

Karthik Ramakrishnan, and moderated by Deepak Sridhar:
This discussion made me understand that the scope of DSC activities 
can extend far and wide beyond the college campus. It was truly 
motivating to hear success stories of each of the community leads,
  including one involving the setting up of a startup support 
platform by the Mangalore Government, because of startups being founded 
by the efforts of the Community Lead!

  • Jobs at Google By Suhail AH: This was the most awaited talk of the day!! 
    Suhail talked about what Google looks in a candidate before hiring, how 
    students can prepare and how we, as DSC leads can spread information 
    regarding this. Google looks for the following qualities while hiring candidates:
    • The thought process
    • Leadership skills
    • Domain knowledge
    • A hint of Googliness!
     
The pathways to a job at Google:  
  • CodeJam Kickstart
  • YouTube Livestreams
  • Tech Dev Guide
  • Developmental Workshops
With these exhilarating sessions, we also had a fun DJ night, where all of us put on our 
dancing shoes and grooved to the beat! The standup comedy by Azeem Banatwala 
lightened the air!

The DSC Summit was a combo of networking, leadership skills, problem solving and 
more than that, FUN!! Every minute, I learnt something and eventually realized that 
I have a world full of possibilities, to be traversed, explored and discovered! 
With every step that I took, I could learn something new, move closer to transformation, 
for, “Life and death are illusions, we are in a constant state of transformation”!



Wednesday, 9 May 2018

Google India Challenge Scholarship : Android Developer Track

Hello everyone! I am Nikita Kotak, a Computer Engineering student, a Tech enthusiast and have deep interest in the fields of Android, IoT, AI, ML and OS..

Background : So coming to a brief history, my interest in programming commenced right from my Grade I when computer as a subject was introduced to me. Till my second grade I was learning to play around that little turtle in LOGO and studying the history of Computer Development, its hardware/software components and much more.. In those days I didn't have a computer at home so used to go Dad's office to introspect the machine further. Later fascinated by my interest in computers Dad bought me a machine in my third Grade.. And the journey began... I started exploring all sorts of applications, dad also introduced me to E-mail and other social networking later. I also joined a training course  in Computer Basics to understand more about Windows, the OS and all technicalities(I was little to understand these concepts in detail then, but tried to understand whatever I could). Meanwhile in school we were progressing with programming concepts like if-else, loops etc and languages like QBASIC, HTML, CSS, C etc. Believing in my interest I took Computer Engineering after HSC and am happily working today in fields of Android, IoT, AI, ML and OS..

(Computer Day celebrated every year in school, in which I always participated in Quiz and Project Competitions and have also won few awards..!! )

Coming to the Android Developer Track Scholarship, my journey in Android started with few projects and assignments in Second Year in college. I had a basic understanding of the concepts then. But I developed further interest as I started conducting workshops as a facilitator for Google Applied CS with Android program at my campus along with the DSC Lead at my Campus Rucha Tambe.(Our story : https://www.youtube.com/watch?v=yjtSSkUNWDo) I started watching videos, tutorials and reading on  Android. There were many activities that we conducted in Applied CS program like quizzes, code sprints, group discussions and we also solved a local business problem by developing an Android App.. The best part of this was that in the tenure I interacted with many facilitators from institutions all over India and we formed a group of like-minded developers. 



I had previously done free Android courses of Udacity and then read about the Google India Challenge on twitter and also there was a talk about the same on the facilitators group! I applied for the same but was not sure if I'll be able to make it as there are such talented Android professional developers all across India. But the sunshine of 7th Feb showed me a new path to garner my interest further in Android when my phone buzzed with an Email's notification.. 😄😄 My happiness knew no bounds..



A fully enthusiastic and active community on slack channel and forums right from freshers to the experiences!! I was equally excited like a kid on the first day of school is😂 After introducing myself on the slack channel and forum, I started with the course on 15th Feb and was happy to see the well-structured format of learning. I made it a point to be active on slack channel and forums atleast an hour or two everyday and simultaneously complete the course content.. 

I absolutely enjoyed discussing with various developers about their ideas on #showcase, #general_discuss, #share_ideas etc.. The most amazing fact was that you post a query with this amazing community and get solutions within minutes. Even searching about that error on web browsers would take time😃 Such was the experience and readiness to help of developers here!!! Also every week AMA and live_help sessions helped us get guidance from mentors and experts! The concept of meet_study_buddies and native place channels helped us interact better and grow further. 

The learning process was absolutely amazing, but it did not end here.. Concept wise Quizzes and weekly practical challenges helped test our understanding of the subject! Later collaborative projects commenced... Another amazing short episode of this journey.. I got the privilege to become Co-Mod for Explore India app and meet amazing developers in the process. Being a student, I learnt the way industry functions with making applications and also got to learn many new concepts.. Donut was another interesting concept wherein we were paired in groups to learn and develop together..

We are in the last week of this journey now and I am sure much more awaits us.. Overall it has been such a great learning experience that has strengthened me as a developer!!!😄 Do leave your comments below!

Saturday, 5 May 2018

Smart India Hackathon 2018

The journey of Smart India Hackathon'18 started with the notice put up in our college and of-course the whatsapp messages that were doing rounds on our class groups. We had heard about this last year as our seniors had done amazing projects and also had won prizes. That was the motivation and  thus started the phase of team formation. Each one approaching the other and trying to form a best team with multi-talented students! It was indeed fun! We thus landed up forming a team with each one have various technical expertise and different domains of interest. Every live or facebook session raised the bar of excitement within in and there began the process of selecting problem statements. This was a tough task, with more than 300 problem statements, selecting a task where we can contribute to build an application to the best of our abilities and more importantly learn in the process was very difficult. 

But the spirit and enthusiasm of the team was high. The fact that each member  was regular and on time for all the discussions regarding problem statements selection and solutions building proved the excitement 😊 We submitted three solutions, and awaited the results as each day passed by.. Eventually on 28th feb the results were announced and guided our ways to the first ladder of success!! Our idea of a web portal to document stories, historical facts and anecdotes of India’s international trade had succeeded.We were all happy and equally encouraged to bring our  ideas into action. With academics and other extra-curricular activities each one of us gave atleast few hours every day to  shape our design and mould it into a useful product... Then came the date of Grand Finale. We were ready with our standee, banner, tshirts and most important our application model😄

Our nodal centre was Mumbai, a 4 hour journey from Pune and unlike any other journey our 4 hours were filled with tech-talks, our design, what could be improvised. Each brain was processing to its fullest to turn the idea into a successful product. And thus arrived the day of Finale : 30th March. With a sense of honour and privilege to be able to witness such a grand Hackathon we put on our t-shirts with our names and reached the nodal centre. With the live telecast from so many colleges all across India and a inspiring opening speech boosted our confidence to develop thus removing that small pinch of nervousness within us!




We began coding for our design which was a webapp for international trade stories, with badges to encourage writers, daily updated trade news, trade related annecdotes and summaries based on articles, an intelligent assistant to guide and help on the web portal, graphs and statistics, chat rooms, OCR for uploading articles and much more.. We began developing modules one after the other and in the process did not realize that time had flown from morning to evening. After dinner we continued, though we were a little sleepy but Yoga and Zumba sessions kept us awake and going. Throughout we had mentors and reviewers reviewing and guiding and gave us deep insights into making our product. The guidance helped us understand what the industry actually needs and what should be our target audience. This was the turning point where we tried to include better summarization techniques from data available and presenting it to user in essential format thus guiding one into trade..



We also had fun interactions with a radio and news channel interviewers! The successive day began and being able to implement on the guidance received from experts energized us further. We were almost ready with a proper product until the final review commenced! The experts appreciated our efforts, the idea and implementation!! We felt a sense of satisfaction and content. Then was time for results for the final presentation. Hurray!!We rejoiced as we heard our name second in the list.. Quickly we prepared ourself for the final presentation. The presentation went well and we relaxed. Awaiting the results we felt nervous but also a sense of pride and content of getting the opportunity to witness the finale! And the announcements started with us hoping for the best.. and finally our name announced, we won the fourth prize in Department of Commerce. With immense joy we accepted the award enjoyed the moment.



I know, The article has been a long read.. But it was difficult to sum up such an amazing, learning and memorable experience in words. In this entire event we learnt team spirit, time management, industry standards and got strengthened as developers. We had fun and simultaneously learnt new technologies in the process and also realized our strong point in technology and got a chance to improve weak points in technology. Now we sincerely wish to completely develop and deploy this as an end product useful to society!!😄😄😄

Your views and comments are welcome!! 😄

Thursday, 21 December 2017

Using Divide and Conquer Strategies and object-oriented software design technique using Modelio to design a software function for Binary Search for an un-ordered data stored in memory. Use necessary USE-CASE diagrams and justify its use with the help of mathematical modeling and related efficiency. Implement the design using Eclipse C++ or python.

Code :  (A1.cpp)

//============================================================================
// Name        : A1.cpp
// Author      : Nikita Kotak
// Version     :
// Copyright   : Your copyright notice
// Description : Binary Search in C++, Ansi-style
//============================================================================

#include <iostream>
#include <stdlib.h>
using namespace std;

class BinarySearch
{
public:
    int binary_search(int *array,  int upper,int lower, const int key);
    void quick_sort(int *array,int lower,int upper);
    int partition(int *array,int lower,int upper);
};

int BinarySearch:: binary_search(int *array,  int upper,int lower, const int key)
{
    upper = upper - 1;
    int middle = (lower + upper) / 2; //divide and conquer strategy
    while (lower <= upper)
    {
        if (array[middle] == key)
            return middle;
        else if (array[middle] > key)
            upper = middle - 1;      // change upper position
        else
            lower = middle + 1;   // change lower position
        middle = (lower + upper) / 2;  //new middle element's position
        binary_search(array, upper, lower, key);
    }
    return -1;
}

void BinarySearch::quick_sort(int *array,int lower,int upper)
{
    int j;
    if(lower<upper) //recursive quick sort for sorting elements for binary search
    {
        j=partition(array,lower,upper);
        quick_sort(array,lower,j-1);
        quick_sort(array,j+1,upper);
    }
}

int BinarySearch::partition(int *array,int lower,int upper)
{
    int pivot,i,j,temp;
    pivot=array[lower];
    i=lower;
    j=upper+1;
    do                    //partitioning function for quick_sort
    {
       do
           i++;
        while(array[i]<pivot&&i<=upper);
        do
           j--;
        while(pivot<array[j]);
        if(i<j)
        {
            temp=array[i];
            array[i]=array[j];
            array[j]=temp;
        }
    }while(i<j);

    array[lower]=array[j];
    array[j]=pivot;
    return(j);
}

int main()
{
    BinarySearch obj;
    cout << "\n\nBinary Search";
    int length, key, choice = 1;
    cout << "\n\nEnter the length of an array: ";
    cin >> length;
    int *array=new int[length];
    cout << "\nEnter the elements: ";
    for (int i = 0; i < length; i++)
        cin >> array[i];
    obj.quick_sort(array,0,length-1);
    cout << "\nSorted array: [ ";
    for (int i = 0; i < length; i++)
        cout << array[i] << " ";
    cout << "]";
    while (choice != 0) {
        cout << "\n\nEnter element to be searched: ";
        cin >> key;
        int result = obj.binary_search(array, length,0, key);
        if (result != -1)
            cout << "\n\n" << key << " found in the array at index " << result+1 << ".\n\n";
        else
            cout << "\n\n Element " << key << " not found in the given array.\n\n";
        cout << "\n Do you want to continue(1/0)?";
        cin >> choice;
    }
    return 0;
}






Output :













Wednesday, 13 September 2017

Intermediate code generation for sample language using LEX and YACC.

CL1_A5.l :

%{
   #include "y.tab.h"
   extern char yyval;
%}

%%
[0-9]+         {yylval.symbol=(char)yytext[0]; return NUMBER;}
[a-zA-Z]+   {yylval.symbol=(char)yytext[0];return LETTER;}

\n {return 0;}
.  {return yytext[0];}

%%


CL1_A5.y :

%{
    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    void ThreeAddressCode();
    void Triple();
    void Qudraple();
    char AddtoTable(char ,char, char);

    int index1=0;
    char temp='A';
    struct expr
    {
        char operand1;
        char operand2;
        char operator;
      };
%}

%union
{
    char symbol;
}

%token <symbol> LETTER NUMBER
%type <symbol> exp
%left '-''+'
%right '*''/'

%%

statement: LETTER '=' exp ';' {AddtoTable((char)$1,(char)$3,'=');}
           | exp ';'
       ;

exp: exp '+' exp {$$ = AddtoTable((char)$1,(char)$3,'+');}
      | exp '-' exp {$$ = AddtoTable((char)$1,(char)$3,'-');}
      | exp '*' exp {$$ = AddtoTable((char)$1,(char)$3,'*');}
      | exp '/' exp {$$ = AddtoTable((char)$1,(char)$3,'/');}
      | '(' exp ')' {$$ = (char)$2;}
      | NUMBER {$$ = (char)$1;}
      | LETTER {$$ = (char)$1;}
      ;

%%

yyerror(char *s)
{
  printf("%s",s);
  exit(0);
}

struct expr arr[20];
int id=0;

char AddtoTable(char operand1,char operand2,char operator)
{
    arr[index1].operand1=operand1;
    arr[index1].operand2=operand2;
    arr[index1].operator=operator;
    index1++;
    temp++;
    return temp;
}

void ThreeAddressCode()
{
    int cnt=0;
    temp++;
    printf("\n\n\t THREE ADDRESS CODE\n\n");
    while(cnt<index1)
    {
        printf("%c : = \t",temp);  
        if(isalpha(arr[cnt].operand1))
            printf("%c\t",arr[cnt].operand1);
        else
            {printf("%c\t",temp);}
        printf("%c\t",arr[cnt].operator);
        if(isalpha(arr[cnt].operand2))
            printf("%c\t",arr[cnt].operand2);
        else
            {printf("%c\t",temp);}
        printf("\n");
        cnt++;
        temp++;
    }
}

void Quadraple()
{
    int cnt=0;
    temp++;
    printf("\n\n\t QUADRAPLE CODE\n\n");
    while(cnt<index1)
    {
        printf("%d",id);
        printf("\t");      
        printf("%c",arr[cnt].operator);
        printf("\t");   
            if(isalpha(arr[cnt].operand1))
                printf("%c\t",arr[cnt].operand1);
            else
                {printf("%c\t",temp);}  
            if(isalpha(arr[cnt].operand2))
                printf("%c\t",arr[cnt].operand2);
            else
                {printf("%c\t",temp);}      
            printf("%c",temp);
        printf("\n");
        cnt++;
        temp++;
        id++;  
    }
}

void Triple()
{
    int cnt=0,cnt1,id1=0;
    temp++;
    printf("\n\n\t TRIPLE CODE\n\n");
    while(cnt<index1)
    {
        if(id1==0)
        {
            printf("%d",id1);
            printf("\t");      
            printf("%c",arr[cnt].operator);
            printf("\t");   
            if(isalpha(arr[cnt].operand1))
                 printf("%c\t",arr[cnt].operand1);
            else
                {printf("%c\t",temp);}
            cnt1=cnt-1;
            if(isalpha(arr[cnt].operand2))
                printf("%c",arr[cnt].operand2);
            else
                {printf("%c\t",temp);}
        }
        else
        {
            printf("%d",id1);
            printf("\t");      
            printf("%c",arr[cnt].operator);
            printf("\t");   
            if(isalpha(arr[cnt].operand1))
                printf("%c\t",arr[cnt].operand1);
            else
                 {printf("%c\t",temp);}
            cnt1=cnt-1;
            if(isalpha(arr[cnt].operand2))
                printf("%d",id1-1);
            else
                {printf("%c\t",temp);}
        }
        printf("\n");
        cnt++;
        temp++;
        id1++; 
    }
}

main()
{
    printf("\nEnter the Expression: ");
    yyparse();
    temp='A';
    ThreeAddressCode();
    Quadraple();
    Triple();
}

yywrap()
{
    return 1;
}


OUTPUT :



Sunday, 10 September 2017

Implementation of any 2 uninformed search methods with some application.

CODE :

#include<iostream>
#include <list>

using namespace std;

class Graph
{
    int vertices; 
    list<int> *ptr;
    void DFSUtil(int vertex, bool visited[]);
public:
    Graph(int vertices); 
    void addEdge(int vertex1, int vertex2);
    void BFS(int start_vertex);
    void DFS(int start_vertex); 
};

Graph::Graph(int vertices)
{
    this->vertices = vertices;
    ptr = new list<int>[vertices];
}

void Graph::addEdge(int vertex1, int vertex2)
{
    ptr[vertex1].push_back(vertex2);
}

void Graph::BFS(int start_vertex)
{
    bool *visited = new bool[vertices];
    for(int i = 0; i < vertices; i++)
        visited[i] = false;

    list<int> queue;
   
    visited[start_vertex] = true;
    queue.push_back(start_vertex);

    list<int>::iterator itr;

    while(!queue.empty())
    {
        start_vertex = queue.front();
        cout << start_vertex << " ";
        queue.pop_front();

        for(itr = ptr[start_vertex].begin(); itr != ptr[start_vertex].end(); ++itr)
        {
            if(!visited[*itr])
            {
                visited[*itr] = true;
                queue.push_back(*itr);
            }
        }
    }
}

void Graph::DFSUtil(int start_vertex, bool visited[])
{
    visited[start_vertex] = true;
    cout << start_vertex << " ";

    list<int>::iterator itr;
    for (itr = ptr[start_vertex].begin(); itr != ptr[start_vertex].end(); ++itr)
        if (!visited[*itr])
            DFSUtil(*itr, visited);
}

void Graph::DFS(int start_vertex)
{
    bool *visited = new bool[vertices];
    for (int i = 0; i < vertices; i++)
        visited[i] = false;
    DFSUtil(start_vertex, visited);
}
 
 
int main()
{
    int no_vertices,start_vertex;
    cout<<"Enter the number of vertices"<<endl;
    cin>>no_vertices;
    int matrix[no_vertices][no_vertices];
    Graph gr(no_vertices);
    cout<<"\n\nEnter Adjacency Matrix of size ["<<no_vertices<<"x"<<no_vertices<<"]: \n"; 
    for(int i=0;i<no_vertices;i++) 
    { 
        for(int j=0; j<no_vertices; j++) 
        { 
            cin>>matrix[i][j]; 
        } 
    }
   
    for(int i=0; i<no_vertices; i++) 
    {            
        for(int j=0; j<no_vertices; j++) 
        { 
            if(matrix[i][j] == 1) 
            { 
                gr.addEdge(i,j); 
            } 
        } 
    }
     
    cout<<"Enter start vertex"<<endl;
    cin>>start_vertex;
    cout<<"BFS"<<endl;
    gr.BFS(start_vertex);
    cout<<"\nDFS"<<endl;
    gr.DFS(start_vertex);
    return 0;
}


OUTPUT :


Thursday, 17 August 2017

Parser for sample language using YACC.

***Note : While executing the program remove the comments in blue. Comments mentioned are for understanding purpose

calc.l:

%{
//declarations for c code
#include<stdio.h>
#include"y.tab.h"
//extern because it is declared in yacc file and used here   
extern int yylval;

%}

//regular expressions and corresponding actions for input streams read
%%
[0-9]+ {
    yylval=atoi(yytext);
    return NUMBER;
    }   
    //If any number is encountered yylval stores its value and we are returning token number which shows yylval's type ie int

[\t];    //we are ignoring white spaces
[\n] return 0; 
. return yytext[0];  //return all the other characters as it is
%%

int yywrap()   //returns 1 when end of file is reached otherwise its value is 0
{
return 1;
}


calc.y :

//for c declarations
%{
#include<stdio.h>
 #include<time.h>
int flag=0;
extern FILE* yyin;    //file pointer by default points to terminal
%}

//for declarations in yacc
%token NUMBER        //declaring token NUMBER
%left '+''-'        //to maintain associativity
%left '*''/''%'
%left '('')'

//context free grammar rules and corresponding action
%%
ArithematicExpression:E{
    printf("\n Result=%d\n",$$);
    return 0;
    }

E:E'+'E{$$=$1+$3;}    //$$ refers to non-terminal on left side, $1 to first E on right and so on
|E'-'E{$$=$1-$3;}    //Pseudo varibles in {} describe action to be performed for given grammar rule
|E'*'E{$$=$1*$3;}
|E'/'E{$$=$1/$3;}
|E'%'E{$$=$1%$3;}
|'('E')'{$$=$2;}
|NUMBER{$$=$1;}
;
%%

void main()
{
clock_t starttime;
clock_t endtime;
double timeinterval;
int i;
FILE* fp=fopen("expressions.txt","r");        //file contains expression to be evaluated
yyin=fp;

starttime=clock();
yyparse();     //yyparse() in turn calls yylex()

endtime=clock();
timeinterval=(double)(endtime-starttime)/CLOCKS_PER_SEC;
printf("Time required for execution=%lf Seconds.\n",timeinterval);

if(flag==0)
{
printf("\n ENTERED ARETHEMATIC EXPRESSION IS VALID \n\n");
}

}

void yyerror()
{
printf("\n ENTERED ARETHEMATIC EXPRESSION IS INVALID \n\n");
flag=1;
}


expressions.txt:
5+2*6
3*2+1

OUTPUT: