CareerHigh - Building Better Career

GATE preparation roadmap for Electrical Engineering Students

In recent years the number of aspirants appearing for Graduate Aptitude Technical Examination (GATE) has increased manifold. This exam not only serves as a filter for admission to IISc, IITs, NITs nowadays most of the Public Sector Union (PSUs)  companies such as Indian Oil Corporation (IOCL), ONGC, SAIL, etc shortlist students for Management Trainee profile from this examination.

With the rising competition and vast course, new aspirants get confused as to how to approach the preparation for GATE Electrical Engineering paper. This roadmap is precisely for such students.

The syllabus for GATE EE paper is in this linkThere are 11 subjects in the Electrical Engineering paper apart from General Aptitude and English which is common across all branches.

The graph below shows the weightage of each subject in GATE 2019 which may vary slightly every year. From the graph, it can be understood that each and every subject is important and it is highly advisable to not skip any subject especially for people aiming for top ranks.

Some of the important points to remember while starting  your preparation.

Do’s

  1. GATE previous 25  years papers are your holy grail. After studying each subject you must thoroughly practice  GATE questions of the corresponding subject.
  2. Prepare all subjects and if there is time crunch don’t skip subjects with heavy weightage.
  3. Give thorough attention to Engineering Mathematics, Aptitude and English.
  4. Prepare short notes containing relevant formulas and important concepts.
  5. Attempt as many full syllabus tests as possible.
  6. Take care of your health, eat nutritious food and get proper sleep.

Don’t

  1. Do not use multiple books rather a single standard book for each subject is sufficient.
  2. Do not take subjects personally. Some people attempt to be experts in a single subject and neglecting other subjects. As I mentioned earlier the exam with consist of questions from all subjects.
  3. Do not spend too much time on a single question. Seek the  help of the concerned faculty or friends.
  4. Neither be worried nor be happy with practice mock tests. Simply understand your mistake and try not to repeat it in future.

Recommended books and online resources for each subject

1. Power Electronics: This subject tends to a headache for many students. A Clear understanding of the properties of R, L and C goes a long way for improvement in this subject.

Books:

  • Power Electronics by PS Bhimbra
  • Power Electronics by MS Rashid

Online Resources:

Additional Resources: Aspirants interested to observe the waveform of voltage and current signals of different types of Power electronics circuit can use a free MATLAB toolbox created by me. 

2. Electrical Machine: Many core concept of electrical machines is derived from electromagnetic theory such as Faraday’s Law, Lenz’s law etc. This subject can be pretty vast thus focus on concepts asked in previous year papers.

Books:    

  • Electrical Machinery by P.S Bhimbra
  • Electrical Machinery by A.E Fitzgerald

Online Resources:

3. Engineering Mathematics: This subject is one of the most important subjects which is frequently neglected by aspirants. Approximately 12 marks of question are asked from this subject each year so do not neglect it.

Books :    

Online Resources:

4. Electromagnetic Theory: Each year 2 to 4 marks come from this subject. Understanding the fundamental concepts of  EMT helps in other subjects such as electrical machines. It is must do for people aiming top rank.

Books:

  • Elements of Electromagnetic Theory by Matthew N.O Sadiku
  • 12th class NCERT Physics (Only study GATE syllabus)

Online Resources:

5. Network Theory: NT is one of the basic and important subjects. Understanding properties of R, L, C, transient analysis, KVL, KCL is crucial for proper understanding of Power Electronics, Analog and electrical machine.

Books:  

  • Fundamentals of Electric Circuits – Alexander and Sadiku
  • Circuit Analysis by Hayt and Kimmerly

Online Resources:

6. Power System: Key to excelling Power System is an extensive practice of previous year questions and continuous revision of formulas.

Books:

  • Power System Analysis by Hadi Sadat
  • Power System Analysis  by Stevenson

Online Resources:

7. Control System: During my attempt for GATE I was able to attempt all questions of control system correctly and in my experience, previous year GATE questions are sufficient for excelling in control system. For additional practice, aspirants can refer to GATE question of other branches.

Books:

  • Automatic Control System by Benjamin C Kuo
  • Modern Control Engineering by Ogata

Online Resources:

8. Analog Electronics: The knowledge of virtual short and its application in problems is important for this subject

Books:

  • Microelectronics Circuit by Sedra and Smith
  • Notes of any coaching institute

Online Resources:

9. Digital Electronics: Almost every year a question is asked from K-Maps along with the question of either Combinational or sequential circuit.

Books:

  • Digital Design by Morris Mano

Online Resources:

10. Signal and System: This is a  subject with weightage of  3 to 7 marks each year. Basic understanding of convolution and Fourier series and Fourier transform helps a lot for scoring high marks.

Books:

  • Signals and System by Oppenheim, Wilsky and Nawab

Online Resources:   

11) Instrumentation and Measurement: Generally very basic questions are asked each year testing the fundamentals. Thus a clear understanding of the working of measuring equipment helps a lot.

Books:

  • A Course in Electrical and Electronic Measurements and Instrumentation by A. K. Sawhney 

Online Resources:

Sources for problems to practice subject wise:

Another important query of aspirants is from where to practice problems. Solving questions from standard books take a lot of time and may not cover GATE syllabus. Thus aspirants can follow the below sources for each subject.

The emphasis on Kreatryx material is because I myself and my friends  have used it extensively during our preparation and it proved immensely useful. The list is no way exhaustive nor the only list aspirants are free to try their own sources for problem practice.

Timeline of syllabus completion:

Usually the summer vacation for 4th year students and droppers start around May thus it is an appropriate time to start preparation. A time line for completion of GATE syllabus is presented in the diagram below. The order of subject completion is such that the aspirant is comfortable with basic fundamentals before jumping into the core electrical subjects.

 

After the completion of all subjects from December 20 till a week before GATE the aspirants should follow the below routine of revising short notes, appearing mock tests and analyzing their mistakes.

Final Word:

With all the advice in the world what matters is smart as well as perseverant practice. Each person has his own map of success. Best of luck for GATE 2020.

By, 

Sambit Dash

Roadmap on CAD Tools Development for VLSI

This roadmap is particularly suited for CS junta ( preferably competitive coders) who are interested in CAD tools development for the Semiconductor Industry. Electronics grads might find this a little too much to consume. 

Most of the jobs in VLSI are heavily dependent on Software Tools. There has been a significant amount of time and effort given to the Software Tools Development. Over the years, the tools have evolved and matured.

Prerequisites → Anyone who has a good hold in Coding, Data Structures and Algorithms.

If you are interested in pursuing your graduate studies and research in EDA, follow this quora link; it gives a very clear insight about the various universities and their strengths in various streams of VLSI & EDA.

EDA Tool development is quite a challenging job since the end product (The Tool) by itself is quite intense and heavy on math and computation. Only the extremely passionate people land here since this stream puts a test to ones’ patience. You could do a lot of hard work and still fail to get the desired output.

The EDA industry is dominated by three major organisations. They are

You can find their product catalogues by following the links given above.

As I mentioned in my previous roadmap VLSI by itself is huge huge industry and it is supported by the wide range of S/W products. Most of the S/W tools are written in C, CPP and Java.

In institutions like the IISc and IIT’s, the grad students are asked to implement all the algorithms taught to them. VLSI taught at IISc is extremely hectic since the student has to cover topics ranging from Algorithms, Analog Design and Digital Design and all the three streams as very vast.

“CAD for VLSI” is a graduate level course and not many schools teach this at the under-grad level. I did my graduation from VIT. We had this course in our M.Tech curricula. I’ll share some of the references followed during our coursework.

  1. Algorithms for Physical Design Automation by Naveed Shervani
  2. Handbook of Algorithms for Physical Design Automation by Sachin Sapatnekar
  3. VLSI Physical Design : From Graph Partitioning to Timing Closure by Andrew B Kahng
  4. Practical Problems in VLSI Physical Design Automation by Sung Kyu Lim

P.S → These references are also followed in prestigious universities like UC Berkeley, MIT, UT Austin, CMU and UIUC.

CAD Job Prospects  Anyone who goes through these books will get a clear idea of the practical problems in EDA CAD industry. For careers in EDA , one could check the careers site of the companies given below and apply for the relevant positions available.

  1. Qualcomm
  2. Synopsys
  3. Cadence
  4. Mentor Graphics
  5. Texas Instruments
  6. Apple
  7. Samsung
  8. Google

These roles are mostly R&D in nature. VLSI companies like Qualcomm, TI, Intel etc. have limited roles of these kind, but they pay a lot. EDA companies like Synopsys, Cadence etc. look for people having these skills. They have a relatively higher number of positions available. A lot of innovation goes into these kind of roles. A career in EDA is very rewarding, fulfilling and satisfying.

 

By,

Sethupathi Balakrishnan

Physical Design Engineer at Qualcomm

Roadmap on Machine Learning for Beginners

Machine Learning, the most acknowledged skill in today's tech world. We all are enthusiastic to get into this field but there are so many options and it's really difficult to choose one and to follow the same. Some people prefer the structure of courses, some like reading books at their own pace, and some want to dive right into the code. So here I will be discussing the roadmap and resources for enthusiastic learners who are completely new in this field so that they get the right guidance to start Machine Learning from scratch. Techies who have already started learning ML can also follow the roadmap for advanced learning and for getting knowledge about future scope and opportunities in this field.

Machine Learning roadmap can be divided into 5 subparts:

1.Linear Algebra
2.Calculus
3.Probability  and Statistics
4.Programming 
5. Algorithms

(NOTE: Without the first 3, later will be of no use as Machine Learning is 65% maths, 25% Algorithms designing and 10% data preprocessing). 

Why Maths? Maths is needed to understand the machine Learning algorithms/models or to implement new ones. There is a large number of models which are already built. Even when you are using existing models you need to understand the internal working of the algorithm so that the hyperparameters can be tuned. A single model may not give the best results for all the problems. Identifying which model to use for a given problem is very important and to choose the right model, you need to understand the internal working/maths.

So, enough talk let's look into the resources:

Machine Learning Resources:

Linear Algebra (takes about 2-3 weeks): While dealing with the ML problems, you will be dealing with Scalars, Vectors, Matrices and Tensors. Also, Some topics like Eigenvalues and Eigenvectors must be known. So, here are 3 ways to master it:

First, for those who have no idea regarding what I have mentioned above(Linear Algebra), don't worry there is a great online course on Linear Algebra by MIT (This course is a complete guide for Learning Linear Algebra). But just like me or most other engineering students, you already get a glimpse of it and if you want a quick recap of it, you can go through  Linear Agebra chapter on Deep Learning Book or if you prefer video lectures over notes, then check out Youtube channel on Linear Algebra (On this channel you can find videos on topics you want to brush).

Calculus (takes 2-3 weeks): Most machine learning models are built with dataset having several features. Hence familiarity with multivariable calculus is extremely important for building a machine learning model. So, familiarity with topics like functions, derivatives, maxima, minima and gradients is must. You can learn all from this really cool playlist or you can follow these notes (not for new bees).

Probability and Statistics (takes 2-3 weeks): It is very important topic. It helps to find out what kind of analysis is required on the data. Some ML algorithms are derived from statistics. Knowledge in probabilities helps in understanding the output of algorithms. Topics you should cover:

1.Combinatorics

2.Probability Rules &Axioms

3.Bayes Theorem

4.Random Variables

5.Variance

6.Conditional Joint Distributions

7.Moments Generating Function

8.MLE & MAP

9.Sampling Methods

10.Prior and Posterior.

There is a great online free course on Probablity and Statistics by Stanford. This course is specially designed for Machine Learning. However, if you prefer book reading, here's one for you (again it is designed for Machine Learning Learners).

Programming (takes about 2-3 months): Till now you are already done with the hardest and essential parts. And if you belong to the coder's groups, ahead journey is smooth sailing for you. Today's most machine learning algorithms are implemented in python or R. I prefer python over R as python is a general purpose language with vast amount of frameworks. Topics which are highly useful in implementing ML models are:

1.Functions

2.Object-oriented Programming

3.Scope of Variable

4.Loops

5.Conditional Statements

6.Operators

There are plenty of courses for you, but the courses I found most engaging is Python Tutorials for Beginners (I find this content quite exhaustive even for complete beginners). But if you are looking for some course which can trace your progress report, here's one for you: Complete Python Bootcamp by Udemy

But remember despite this, you should refer to python documentation.

Learning Syntax Only won't help, Practice as much as you can as practice is the only way to excel in this field. Coding Platforms like Codechef, hackerrank, etc have plenty of problems from beginners to Expert level.

Data Structure & Algorithms (non-ml): Though this part will not help you directly rather it enhances your thinking and logic designing which is helpful in designing new ML algorithms and in understanding concepts like:

1.Time Complexity

2.Space Complexity

3.Sorting and Searching

4.Shortest Path between two Points

5. Problem Solving approaches like Greedy, Dynamic, etc.

For Data structure follow mycodeschool playlist on Youtube.

You can implement the teachings in python by following Nptel videos.

For  Algorithms part, you can go through Algorithms playlist on Youtube (This is a really cool playlist on youtube, covering almost all topics) and for advanced algorithms you can refer : Algorithms 1 and Algorithms 2  playlists by Stanford Algorithms (I would suggest you to go through both the playlists).

Machine Learning (Algorithms and Implementation) (about 5-6 months): Now here comes the most awaited part, so let's start to get into actual ML. Machine Learning course by Coursera is highly recommended worldwide for ML learners (Most fundamental and comprehensive course anyone ever came across).

On completing this course you will be familiar with:

1.Decision Trees

2.Naive Bayes

3.Linear Regression

4.Logistic Regression

5.Support Vector Machines

6.KNN

7.Ensembling

8.Unsupervised Learning

9.Gradient Descent

Disclaimer: This course is taught in Octave/Matlab which might lower your interest, you can implement the course teachings using  numpy, pandas and matplotlib or seaborn (python libraries).

After completion of Andrew Ng's course, you need to know how to implement these Algorithms (in Python) which can be done by taking Udemy's Machine learning A-Z course . The best part I found about the course is "Problem Solving on each Algorithm type" with complimentary two real-world kaggle problems.

Knowing one framework (Scikit-Learn in the above course) is not enough for any ML Engineer to work in this field. Familiarity with other frameworks gives you a headstart over others. However, out of all frameworks I find tensorflow ahead of all others (due to high demand in Industries and compatibility with other languages) and no one can teach you better than Tensorflow developers  (Google free crash course for everyone).

Now, you are done with all the learning part, the only part you are left with is practice and practice, and no one can beat Kaggle for practising ML models and implementing it. Solve 5-10 problems which you can add to your resume and try to compete in Kaggle competitions and add some achievements in this field.

Machine Learning Project Ideas

For some cool projects and new ideas in this field, you can follow: 

1) GitHub NirantK project ideas

2) Sentdex

3) Siraj Raval videos

What's next?

You can either go for jobs, become an entrepreneur or go for higher studies & research.

Machine Learning Job Opportunities:

Machine Learning is expanding in every field. No wonder you can find it almost everywhere. As more and more businesses are leaning towards algorithms, machine learning jobs are increasing at a very high pace. Almost every company is keen on increasing its workforce in this field. ML professionals get very high packages and a rewarding career. Now I am going to shed some light on the most in-demand machine learning jobs:

Machine Learning Engineer: It is the initial role for any Machine Learning jobs. Ability to develope highly-scalable distributed systems and address different business challenges by implementing machine learning algorithms are two major job responsibilities of machine learning engineers.

Data Scientist: According to the Harvard Business Review, Data Scientist is the sexiest job in 21 century.The role primarily involves gathering data from different touchpoints, analyzing and interpreting it, drawing insights and inferences, and coming up with forward-looking solutions for business concerns.

Data Analyst: A strong background in statistics, probability and programming is required to excel in this field. Roles and responsibilities of Data analyst involve data mining, algorithm design, data pruning and code debugging.

Business Intelligence Developer: For this role apart from Machine Learning skills you will also require a strong business background.

Apart from the above, machine learning jobs include positions like Data Warehouse Engineer, Software Architect, Designer in Human-Centred Machine Learning, Computational Linguist etc.

So, which Companies hire for these positions?

Google: A familiar name in the tech world, hardly anyone is left who has not used any of the Google products. From google search to google assistant, one way or another are based on machine learning algorithms and there are lots of positions available at Google Careers page.

Amazon: From Alexa to kindle, all are using machine learning techniques. You can apply for it at Amazon jobs.

Facebook: Every user of Facebook is influenced by ML without realizing it. Things like personalized news feed, friend tagging suggestions, group recommendations, mutual friend analysis etc are done through machine learning.

Other than these, companies like Uber, ola, Flipkart, Zomato, IBM, Microsoft are now some big fishes in this field. You can also check out jobs at Linkedin. If you are interested in joining the role in some emerging startup you can check it out here.

Entrepreneurship:

Machine Learning is the bold new frontier in businesses and entrepreneurship. All signs point to an even bolder future for the technology. Applications for Machine Learning in businesses are nearly boundless, and new use cases emerge on a weekly basis. Some of them are:

Marketing: Machine Learning has boosted this sector to a new height. According to a report by Harvard, sifting through chat logs for words and phrases reports an increment in the success rate of recommender systems by 54%. Moreover, ML based chat bots and voice bots  support have completely transformed customer experience. It helps businesses to provide automated customizable support to their customers and in the process reduces man power requirements. Startups like AllinCall, GoHero.ai are already making big out of it.

Health: One of the main benefits of Machine Learning is its innate ability to find anomalies in visual data which can be used to detect diseases based on symptoms with higher accuracy. Nowadays many medicines are being prepared with high precision using Machine Learning. Startups like Beato, Ten3T are some of the emerging newbies in this field.

CyberSecurity: Application of machine learning in endpoint detection of IT network threats is rapidly growing cybersecurity market arena today. Real-time analysis of data from endpoint events across the global crowdsourcing communities, allowing detection and prevention of attacks based on patented behavioural pattern recognition technology, have paved the path for machine Learning in this field. Startups like CrowdStrike are already differentiating themselves from others in this field.

Machine Learning is not limited to this only but also it is establishing its roots in other sectors too like Fintech, Education and many more.

Machine Learning Future Scope (Higher Studies and Research):

Today, with a high demand for ML skills, many post-graduate programs, diplomas and research programs have been introduced all over the world which promises a successful career in this field. Some of the diploma courses  which are highly anticipated by many people are:

PG program in Machine Learning and AI from IIIT-B by UpGrad: This course focuses on statistics essentials such as using statistics to describe data and infer insights, building machine learning models using supervised, unsupervised learning, natural language processing, neural networks, deep learning, graphical models, reinforcement learning etc. In addition to these, students get a chance to work on cutting-edge projects such as predicting customer churn in the telecom industry, building a chatbot engine, disease prediction using medical imaging, among several others. You can check it out by clicking here.

Foundations of Machine Learning and AI from IIIT-H by TalentSprint: The program is delivered using five different components — classroom lectures, where they learn concepts; labs which are done on the cloud; mentors; industry workshops and hackathons. As a part of industry workshop, senior technical heads from top tech companies share their experience and insights on using and implementing AI. Some of them are Ranga Pothula (President, HYSEA; VP and Centre Head Infor), Dr Anbumani Subramanian (Lead Architect, Intel Corporation), Dr Shailesh Kumar (Vice President and Distinguished Scientist, Ola), Mithun Das Gupta (Principal Applied Researcher, Microsoft), Sundar Srinivasan (General Manager, Microsoft AI and Research), and others. The curriculum is designed keeping in mind working professionals. You can find more details by clicking here.

Post Graduate Program in Machine Learning and AI by Great Learning: This 12-month blended program builds a solid foundation by covering areas like computer vision, NLP and intelligent virtual agents, among others. This comprehensive program covers a range of topics from traditional supervised and unsupervised learning methods to ensembles. It focuses more on labs, projects and Capstone project building, a robust e-portfolio of work. It has 9 hands-on projects, GPU based lab environment to build deep learning models, guidance from industry experts through workshop session, among others. You can check it out at Greatlearning.

Also, you can check out the post-graduate and Doctorate programs in some renowned institutes of India like IISc Bangalore, IIT Bombay, IIT Delhi, IIT Madras, ISI Kolkata where you can select the programs in Machine Learning and Statistics, you can check the enrollment procedure at their home site with just a simple google search with name of Institute, you can find some of the renowned professors in this field to complete your research under them at Analytics India.

In a nutshell Machine Learning is the new electricity in today's world, it is not limited to what you have learned, rather it's about Development, Improvisation and Application.

I wish you all the best, keep learning and keep Exploring.

By,

Vibhor Bhatnagar

Static Timing Analysis Roadmap

In the VLSI roadmap, the writer has introduced you to the field of VLSI. This roadmap will specifically be focused on a sub domain of VLSI called as Static Timing Analysis. Before I get going into the details, I’ll give a little brief about the various sub domains within VLSI.

VLSI contains two major sub sections.

  1. Analog Circuit Design
  2. Digital Design

There is EDA (Electronic Design Automation) as well. But it is mostly Computer Science driven. Both of these sections (Analog & Digital) have Front End and the Back End Design Cycles.

I’ll briefly describe about what Front End and Back End design cycles are:

 

Front End Design → The Design cycle starts with the description of the problem/specification of the circuit.

Some specifications samples include:

  1. What are the inputs? Input Voltage and current ranges.
  2. What is the frequency at which the design is required to operate?
  3. What is the tech node to be used in the design?
  4. What are the P,V,T corners to be used for analysing the circuit?
  5. What are the libraries to be used? This is generally provided by the Foundry as a PDK (Process Development Kit) package.
  6. What are the design constraints? (This is developed according to the requirements of the Client by the Design Team) and so on & so forth.

So, what does a Front End Guy do?

He analyses the constraints and the specifications and develops the circuits to meet the requirements. (This is applicable for both Analog and Digital Designs). However, people perceive Front End in different ways.

In Analog design, Circuit Designer is the Front End Guy. He generally designs PLLs, Amplifiers, SRAM Memories etc. Analog circuits are designed using a S/W tool named "Cadence Virtuoso". In Digital design, RTL (Register Transfer Level) Designer is the Front End Guy. He designs subsystems like Buses, ALUs, DSP units, Camera Blocks, GPU blocks etc.

VLSI Front End Design Tools:

Designs are developed by using a H/W Description Language called Verilog & VHDL. The S/W tool used is Cadence NC Sim (Industry Std Tool). Students in the Universities can use Xilinx Vivado Tool for practising.

NOTE → Analog Designs are small (consists of a few transistors but extremely complex). Digital Designs are extremely large and are relatively less complex when compared to Analog Designs. Both Digital and Analog designs are developed keeping in mind the constraints and the design requirements.

 

Back End Design → Now that the circuits and the sub-systems have been designed in accordance with the design requirements, the Back End guy implements them. He implements them keeping in mind the design constraints such as Area, Frequency etc.

The Back End Implementation Engineer is responsible for the following:

  1. Where should the circuit/cell be placed in my chip?
  2. Where should the pins be placed?
  3. How should the Floorplan of the chip look like?
  4. What should be the dimension of the block/SoC ?
  5. What are the Routing Layers to be used in the design?
  6. What should be the Power Delivery Network be like?
  7. What should be Clock Planning Strategy Look like?
  8. How to meet the timing requirements of the block?
  9. Is the design DRC clean?
  10. Congestion Removal Strategies. So on and so forth.

In Analog design, the Layout Engineer is the Back End Guy. He is given with the circuit design and he plans the implementation with the circuit guy. In Digital design, the Physical Design Engineer is the Back End Guy. He is provided with subsystem synthesized RTL.

NOTE → Synthesized RTL is different from bare metal RTL. Once the RTL is developed it is synthesized (i.e the code is binded with the standard cells from the LEFs).  Synthesis is the hardware equivalent of compiling in software.

There are various sub positions under Physical Design. They are →

  1. Power Delivery Network Engineer
  2. Physical Design Engineer. (FloorPlan, Place, CTS, Route)
  3. Physical Verification Engineer.
  4. Timing Engineer

The PD Engineer does the Floor Planning of the chip, places the cells, plans the Clock Tree strategies and Routes the Design. All these are performed by using TCL scripts which is fed to the Design Shell.

 

VLSI Back End Design Tools:

There are two major S/W tools used for this process.

  1. Innovus by Cadence.
  2. ICC2 by Synopsys.

 

Now where does Timing Engineer have a role in the Design cycle?

The answer is “Everywhere”. Timing has to be met in the design stage as well as in the implementation stage. STA is one of the ways to enter the VLSI Design Industry.

 

The Roadmap for Static Timing Analysis is as follows:

PREREQUISITE → You must know the functioning of FLIP FLOPS (specifically D flops). If you don’t, you can learn it from the following links:

  1. Introduction to JK Flip Flop
  2. Introduction to D flip flop
  3. Truth Table, Characteristic Table and Excitation Table for D Flip Flop
  4. What is a clock?

These videos will give you a detailed insight about the basic functioning of flip flops.

Now that you know the operation of a flip flop, you need to push further to expand your “knowledge base” to sequential circuits. In fact it would be the best to go through all of their videos. You can find that here:

  1. Analysis of Clocked Sequential Circuits (with D Flip Flop)
  2. Shift Register (SISO Mode)

Assuming that you’ve gone through those tutorials, the next step is to understand what Setup and Hold Time of a flop is. You can find those here:

  1. How to do STA Introduction To Slack And Hold Timing Analysis??
  2. Introduction to data and latch timing

These videos just deliver the basic fundae. However, I would recommend the candidate to purchase Kunal Ghosh’s Lecture on STA from the online learning platform Udemy.

Why am I recommending specifically this guy’s course? It’s because of the following reasons.

  1. Short and Concise
  2. “To the point” content delivery.

His course on Physical Design is also quite good. 

The blog by VLSI-Expert is the most famous blog that almost everyone aspiring for a VLSI job goes through on a regular basis. This blog not only contains info about VLSI but also contains resume/CV recommendations and job listings. So, this is a very important site.

Assuming that you’ve gone through the blogs and the courses, now it’s time to dive deep into STA.

You have to read J.Bhasker’s “Static Timing Analysis for Nanometer Designs, A Practical Approach” completely to understand the nitty gritties of STA.

TIP → Take a print out of the book and read from it. (It helps)

Now, you’re ready to take on the VLSI Industry.

The following steps are for those who want to go even further. It contains certain site listings that might be limited to universities having the S/W Tool Licenses.

So, if your university has Cadence Tools, you can enroll into the Cadence Support Site. Once you’ve enrolled, you can search through the various articles on STA. Please be informed that these articles are of the Industry standard. Hence, they would be complex since these are real design problems faced by the Engineers.

 

Advanced Static Timing Analysis

Very few universities in India have got Synopsys Tool since they are very expensive. Now, if your university has one, you can create an account in SolvNet. After registering yourself in SolvNet, you can go through the Synopsys PrimeTime Manual for Advanced STA. PT-Manual is a very detailed document and is vast. It contains a lot of corner cases.

 

That’s about it. STA is a very vast and a challenging field in VLSI. You got to spend a lot of time with it to understand it.

 

Job ListingsJobs in VLSI domain can be found in VLSI Expert Site

So by now you would have got an idea as to how much is expected from a candidate by the Industry. Companies like NVIDIA, Qualcomm, Broadcom, AMD etc. hire from premium institutions and even if they hire they do not take the risk of assigning a block to a fresh candidate. They train the candidate in house even after the hiring process.

So, how does a candidate who is not from a premium institute get into these companies?

The way is to work for VLSI start-ups and gain enough knowledge and build the skill set and then get into Big Firms like Intel, Samsung etc.

Some VLSI Startups in which you can have experience→

  1. Si2Chip Technologies.
  2. Mindlance Technologies..
  3. Mirafra Technologies.  
  4. InSemi Technologies.
  5. SignOff Semiconductors so on and so forth.

How to apply to these companies?

You can either contact the HR or someone who is working in that organisation. Usually, referrals work better. Build your resume properly. And also prepare well for interviews. For interview preparation for job in VLSI domain, there is a great course in Udemy : VLSI - Essential concepts and detailed interview guide. This course will be a very good start point for interview preparation for STA.

 

Expected Salary for STA jobs:

A student, who has followed the roadmap and has got a stronghold in STA, can expect a CTC of up to 6LPA in start-ups and up to 16 LPA CTC for Big corporates as a fresh graduate.

 

Tips on CV preparation for STA jobs

VLSI Expert Site  and  Internshala are very good websites to get best tips on CV preparation for STA jobs.

 

By,

Sethupathi Balakrishnan

Physical Design Engineer at Qualcomm

Web Development Roadmap- Learn Front-End, Back-End & Wireframe Development

Web development – A field which brings up ideas along with various questions in engineer. Every engineer dreams of developing a website in his/her starting days of college. Most of them even make this field as their profession. But many few of us know how to get started into this field of web development.

As of now many of us think that there are only two types of web developers namely front end and back end web developer. But very few of us know that there is a third division as well, which is a wireframer/prototyper.

Wireframer/Prototyper – A person who develops wireframes or dummies of a demanded application so that it can be used to assess goals, milestones, and deliverables in a future course, also it can be used for pitching the product to customers or investors before actually starting the development. Click here for better understanding.

Front end developer – A person who designs the user interface of an application is called a web developer. Click here for better understanding.

Back-end developer – A person who codes features and functionalities of an application using server-side scripting is called as a back-end developer. It is also essential for a back-end developer to have an understanding of client-side scripting. Click here for better understanding.

Now as you understand the difference between these three divisions you can now refer sections of your interest(s). For each section, I will be pointing out ways to get started, courses, milestone and job opportunities.

A. Wireframing / Prototyping

Well this is a job which very much less preferred by engineers. But now because of job opportunities, many people are eyeing on this field as well.

How to learn wireframing?

1. Its time to let you know if you are fit for a wireframing job? Look at this video. Do not implement what he does but watch and check if you find this interesting.

2. Now if your answer is Yes, take Udemy course on How to Design & Prototype in Adobe XD  as it will take you through the basics of how can you start developing prototypes.

Things you will learn by taking this course -
a. Installing tools
b. Basic setup 
c. Basic prototyping
d. Advanced prototyping 
e. Related Examples

3. Now as you know the very basics of prototyping its time to check if you really got it right.
Using the prototyping skills that you learned in the above course, design a wireframe for following websites –
a. 9GAG b.Udemy  c. Youtube d. Paytm

4. Now its time for a deep dive into a complete course which makes you a professional in prototyping. Below are the courses - 
a. Master the fundamentals of rapid protyping
b. iRise11 Hands on training for beginners

Things you will learn by taking these courses -  
a. User centered designing
b. Irise
c. User experience process
d. Guidelines for design
e. Project – Geico website wireframing

5. Now as you have become a professional in prototyping, its time for some tough tasks. Prototype following web applications and practice them
a. Facebook b. 
Twitter c. Linkedin

6. Now you have become a professional web application prototype. But nowadays most of the products have mobile application as well, which is to also be prototyped. Learn mobile application prototyping by taking course on Wireframe & protype a Mobile App.

Things you will learn by taking this course-
a. Installing Balsamiq (Tool for Mobile App prototyping)
b. Using Balsamiq
c. Wireframing Mobile application

7. Now its time for you to try a hand on prototyping a mobile application. Create prototypes of following mobile applications  -
a. Whatsapp
b. Facebook
c. Instagram
d. Pubg

Bonus: Many people now-a-days use just-in-mind prototyping tool. It is quite easy to use. I would recommend giving it a shot. If you don't have a lot of time to deliver wireframes, just-in-mind can help you.

Job opportunities for prototyper

There is high demand for prototypers / wireframers nowadays. You can see some job listing here in these documents.
1. Prototyping Jobs (1)
2. Prototyping Jobs (2)

How to get a prototyping / wireframing job / internship ?

1. Linkedin -  Add your skills as wireframer, prototyper and also add names of software you use to do prototyping
2. Glassdoor – Many companies post opportunities on glassdoor, keep checking time-to-time.

Note – It will take around 4-5 weeks (everday 1-1.5 hours) to complete the courses and be it will be able develop ability to take up projects.

B. Front-end web development

How to become a front end web developer?

1. Learn HTML5 the very basic of web development. A complete introductory tutorial on HTML5 is a very good course to learn it.

2. Now you just have a hunch of how it works. You need to get more familiar with it. So follow this tutorial Learn HTML5 programming from scratch. But if you are looking for free courses you can do a free course on HTML5 and CSS3 fundamentals and follow HTML tutorial for beginners youtube video.

These courses will take you through important topics of HTML5. You can choose one of the option. But if you decide to choose 2nd option, most of the things will get repeated and  time will be wasted. Also the 1st option has a project section in it which can be very helpful.
Things you will learn by taking this course-
a. Links
b. Layouts 
c. Tables
d. Multimedia
e. Forms
f. Viewport Setting 

3. After learning HTML5 its time to learn CSS3. CSS3 is used to enhance user experience. Follow this tutorial HTML and CSS for Beginners - Build a Website & Launch ONLINE.

Famous proposal sentence for designers’ – You are CSS to my HTML page.

4. Its time to be a perfectionist in designing. You need to take a deep dive. Follow this course to be a professional designer ->
 The Complete HTML & CSS Course - From Novice To Professional  

Or

CSS Tutorial for Beginners on youtube.

You can choose one of the options as both are quite similar but in 1st option there is a project. This course is very famous for CSS3 and if you have this certification it can blossom up your resume.
Things you will learn by taking this course-
a. Basic CSS3
b. Selectors
c. Dimensions
d. Box model
e. Lists
f. Text
g. Fonts
h. Designing forms
i. Tables

5. Bootstrap is a CSS3 framework. It has various essential classes which can be directly implemented to make pages more interactive. You can learn bootstrap from the following courses.
a. Complete Bootstrap 4 course - build 3 projects
b. Bootstrap 4 Quick Start: Code Modern Responsive Websites
c. Learn Bootstrap 4 by Example

OR 

you can follow The Bootstrap 4 Bootcamp course

In this section you will be learning –
a. Basics of bootstrap
b. Designing navbars
c. Grid System
d. Using classes
e. The base six colors
f. Cards
g. Lists
h. Using a prebuilt bootstrap template

6. Its time to try some tasks to check whether are you really getting concepts! Try mimicking following pages from what you have learned so far
a. 9GAG b.Udemy  c. Youtube d. Paytm

You can show this to your friends , relatives and ask for some feedbacks.

7. As a designer you should also know about client side scripting. There are many languages and frameworks available for client side scripting.
a. Javascript
b. Typescript
c. React Js
d. Angular Js
e. Vue Js

I would recommend you to start with javascript as it is easy, popular and most widely used.

8. Now its time to learn javascript. Take Javascript Essentials course on Udemy.
9. Its time to be a professional javascript developer. Become a professional javascript developer by taking  The Complete JavaScript Course 2019: Build Real Projects! or Learn to Program in Javascript: Beginner to Pro course on udemy.

In this course you will be learning –
a. Basics of javascipt
b. Flow control
c. Functions
d. Objects
e. Events
f. Ajax

10. Now its time to practice and get hands on a big task. Do any 7 tasks out of 20 listed in this link : 20+ Projects You Can Do With JavaScript

Job opportunities for front-end web developer

Front end web development is very vast and progressing field. You can find multiple opportunities on internshala, linkedin, and glassdoor.
Note – It will take around 5-7 weeks (everday 1-1.5 hours) to complete the courses and you'll be able develop ability to take up projects.


C. Back-end web development

Well, there are many frameworks & Languages for back end development -
1. PHP - Most used language for back end development till date. But it is very basic in nature and one should start with PHP for back end development. Because it is very old many free hosting platforms are available.
2. Laravel - A framework based on PHP , which is very user friendly. Laravel also is losing its popularity because of some advanced frameworks coming into corporate.
3. .NET - Very old & vanished backend development framework while its release it wasn't open source.
4. Python (web.py) - When python came into market one of its module was developed for backend & web development. It is not used very frequently in the market.
5. Django - A most popular framework for backend development using python recently version 2.0 was launched which made very easy for developer to gets hands-on with it.
6. Flask - One of the emerging python framework for backend development. Slowly people are learning about it.
7. Ruby on Rails - Most widely used nowadays and gaining demand exponentially. This framework is getting very popular fastly. This is most in demand skill in the tech market. I would suggest using this for backend development.
8. NodeJS - This is also getting very popular and this could be your second option for back end development.

Note - If you are new into this field please start learning a framework , because framework rely on MVC architecture which helps developing secure application.
Now for backend development you need to choose one of the above methods to get started for backend development. You need to first learn base language and then framework for development. But before you choose one, I would request you to have a look on a trend below.

Now as you know about trends and you an select base language you want to learn.

Note - It is not necessary to have certificate of base language but you should have at-least one certificate for framework. In this table below you can do one for learning language and one for framework.

In each basic language course you will be learning about
a. Installations
b. Fundamentals
c. Control structures
d. Functions
e. Classes and objects
f. Assignments

And in each framework course you will be learning about –
a. Installations
b. Environment Setup
c. Setting up local server
d. Getting started by creating pages and routes
e. Adding HTML5 and CSS3 to backend
f. Database installation
g. Database connectivity
h. Inserting data to database
i. Retrieving data from database
j. Update data in database
k. Delete database
l. Session Management
m. Cookie
n. Authentication
o. Capstone project  

 No. Technology  Base Language Framework
1. PHP PHP- Udemy PHP Course OR PHP Tutorial in Youtube  
2. Laravel PHP- Udemy PHP Course And OOPS PHP ( It is essential to do this course as for understanding Laravel you need to know basic OOPS in PHP) Laravel
3. Web.py Python- Udemy Python Course OR  Python Tutorial in Youtube web.py
4. Django Python- Udemy Python Course OR Python Tutorial in Youtube Django
5. Flask Python- Udemy Python Course OR Python Tutorial in Youtube Flask- Course1, Course 2
6. Ruby on Rails Ruby Rails- Course 1, Course 2
7. Node Js Javascript: Javascript Essentials, Programming in Javascript Udemy Node Js course & Node Js tutorial in Youtube

Note -  It would take 3-6 months for you to become a backend web developer.

Very Important Point:
While going through these courses you will be facing many difficulties but do not worry as you are not alone. Just google your problem and you can find suggestions in stackoverflow. Open that, take a look and your problems will be solved in minutes.

Job opportunities for back-end web developer
1. Amazon     
2. Flipkart        
3. Udaan
4. Capgemini
5. Tata Digital & many more..

How to ace in field of web development?

1. Create projects & solve real world problems.
2.  Do open source contributions at github.
3. Complete internships (find them using internshala).
4. Try implementing features you find interesting while surfing web.
5. You should be always willing and ready to learn something new.
6. Keep your linkedin profile always updated. Keep your projects links and allows add skills you possess in your linkedin profile.

How to host web development projects?

1. Front end web developers can showcase by pushing it into a github repository
2. Back end developers can host through following ways:
a. PHP & Laravel – 000webhost
b. Python & Ruby – Heroku
c.  Node.Js – Google Cloud Platform

A developer always try to solve real world problems. There are many places where automation and data sharing can be implemented to reduce the time involved in task and as a developer its now your responsibility to do so. Learning is just a first step , experience and persistence can add up a lot more to what we can do. 
Now you know how much efforts are required to become a web developer. I wish you all the very best for your ventures. Keep learning, keep building and be humble.

By,
Pawan Dhanwani

Analog Circuit Design Roadmap: Best Books, Courses & Project Ideas

For an ECE undergraduate there are a gazillion options after college, but people who aim at acquiring a core job, the job categories mainly narrows down to 3 prominent fields of core ECE jobs:

1. Digital design (ASIC, FPGA, Embedded Firmware etc)
2. Analog Design (Analog circuit design, Vaidation etc)
3. Communication (Wireless 4G, 5G, GSM etc)
 
I will be discussing here today the roadmap and resources to be followed to get the hang and mastery of subject which has been given many names by generations of students, some call it “a work of mystic arts”, for some it is a “Nightmare” while others say it’s “As easy as a pie”!  i.e ‘Analog Electronics’, and some bare-minimum skills that you require to ace an Analog profile based interview.

Let me begin with stating -“Analog VLSI” is a misnomer. Because the term “Very Large Scale Integration (VLSI)” is applicable only to digital circuits where the transistor / gate count is in millions. So,  Analog VLSI is Analog Design predominantly it is based on a Complimentary Metal Oxide Semiconductor ( CMOS ) platform and hence most often than not it is CMOS Analog Design.

The primary difference between Analog and Digital circuits is that the former deals with Analog Signals ( continuous in time and continuous in amplitude / space ) while the latter deals with Digital Signal ( discrete in time discrete in amplitude / space ). In order to work with analog signals the analog circuits needs to be biased in their linear operating region, while the digital circuits need no biasing and they can operate in non-linear / switching mode.

The world may seem like it has been shifted to digitized circuits yet the heart of most circuits has some intuitive Analog circuit design engineers who, along with their mystic tools, acquired through persistent practise and sheer resilience are designing ADC’s(Analog to Digital convertors), Sensors, Filters etc. so that the circuit is capable of interacting with the real world and is able to acquire information form it.

Getting straight to the point, some continual and serious practise sessions are required to get the feel of this subject because everything that you will learn here, is connected to what you will learn in future, that means, you cannot learn this subject overnight, the knowledge acquired is layered. The layer by layer knowledge will pave your way to some amazing opportunities in the semiconductor industry!

Although the pointers are generalized with both job point of view as well as future research, yet the pointers that I will mention here are mostly related to cracking the interviews for internships and jobs for some leading semiconductor companies. (For eg. Texas Instruments, Qualcomm, STMicrocelectronics, ARM, Intel etc)

This is going to be the most detailed roadmap that you will find anywhere over the internet for an ECE fresher, because I will tell you everything that I know, The info given here is verified by industry experts and is a generalization of the trend of interviews being conducted by semiconductor companies in India.  

 

• NETWORK ANALYSIS AND SYNTHESIS: (Takes about 2 months for thorough practise)


To begin with, the subject which requires the most detailed understanding as a pre-requisite for Analog circuit design is ‘Network Analysis and Synthesis’. The circuits, even the most complex ones would become a piece of cake for you if you understand and practise lots and lots of questions from Network Analysis.
Important topics that will surely come handy:
1. A solid understanding of voltage, current, resistors, capacitors, inductors etc.
2. KVL, KCL, nodal, mesh etc.
3. All the theorems Thevenin, Norton, Max. Power transfer etc.
4. Sinusoidal Steady state analysis of RLC circuits.
5. Resonance in RLC circuits
6. Transient response.
7. Laplace in RLC circuits
8. Two-port network analysis
9. Graph theory
10. Passive filter/analysis using R, L and C.

I would like to emphasize on the fact that, while all topics in the book - Circuit theory by A. Chakrabarti are prescribed to be covered in one semester(3rd usually) by you (doesn’t matter what the curriculum your college is) still the topics/chapters that I mentioned above are serious things that you won’t be able to survive without in the Analog field.
Note: Following A chakrabarti is enough for practise but if you wish to dig deep you may purchase ‘Network Analysis by M.E Van Valkenburg’, it has less practise problems, but is a good read if you have enough time.


The theory and lectures are available on Youtube.
NPTEL Lectures on Circuit theory

Some basic understanding can be acquired from these lecture series on Youtube also
1. Basic tools for Network Analysis
2. Practise lectures by NESO ACADEMY

>>Softwares for Simulation
1. Tina T.I
2. Multisim
3. LTSpice


• CONTROL SYSTEMS: (Will be covered in college curriculum)


This is yet another crucial building block that an aspiring Analog engineer must possess in his tool-kit. The approach for tackling this subject is pretty much straightforward, the main topics that need to be done with very good understanding are:
1. Laplace and Transfer function
2. Time domain analysis of Control systems
3. Feedback.
4. Frequency domain Analysis of Control systems
5. BODE Plot(Most important)

This is important as this subject gives an introduction to feedback and frequency domain analysis, after getting the hang of it, the student understands the reasoning beyond this and the meaning on why are doing this.

The only Book to be followed: Control systems by Samarjit Ghosh

Lectures and Online help:
1. NPTEL lectures on Control systems
2. UDEMY - Control Systems: From Mathematical Modelling to PID Control  (If after completion of your syllabus you find yourself interested in learning how to control machines accurately and effectively, this certified course can be done which also gives you a hold on ‘PID’).


• TRANSISTORS (Will require at-most 2 semesters with continual practise)


This is your starting point in the world of Analog electronics, and has to be taken most care of.

We will be following a fool-proof method to get the most out of the resource that I will be mentioning here as well as the practise that you will be doing alongside following the resources. The section of transistors consists broadly of 3 parts
1. Semiconductor Physics
2. BJTs
3. MOSFETs
There are newer technologies available in market these days, like FinFETs but they are not in your syllabus as of now and if they’ll be included in your curriculum, I will update it at some point later in time. 

Moreover, this blog post is created for students aspiring to get jobs and internships in the field of Analog Electronics so the main focus of yours shall be on Transistors, They are the heart and soul of the semiconductor industry, whatever you learnt until now, Networks, Control etc, were just tools that will greatly enhance your understanding while tackling this subject!

I have to repeat this time and again, There is no short-cut to success, especially in Analog, you can’t remember all these information overnight. 
This is a dedicated process and requires intuitive thinking. Once you have done enough practise all the concepts given in this blog post(by enough I mean more than 5000 questions), you will notice your brain’s superiority over others. 
The circuit, whatever it shall be, will begin to solve itself, This intuition is required in this field and trust me, no one is born with this type of intellect, this is sheer practise, and people aspiring core companies have to stand out from the crowd! 

I guess that’s enough motivation for beginning with the most crucial part of you journey TRANSISTORS!

  
1. Starting with Semiconductor physics:
Get the best at it, derive as much equations as you can and most importantly know the physics behind whatever is happening. The maths alone never helps, you need to find a way to visualise the equations until they make sense to you else the technique fails.
(Note – This is in itself a domain with good research scope)

The resources that I provide here will be invaluable to your preparation:

• Start with lectures by Dr. Behzad Razavi(Lecture 1 to Lecture 12).
PN junction and diode modelling lectures by Dr. Razavi

• Then read the corresponding theory and practise corresponding problem sets from his book
Microelectronics by Dr. Razavi

• Read and practise further from Microelectronics by Sedra/Smith

• Courses for Online certifications : Semiconductor Specialization

2. Starting with Bipolar junction Transistors:
Some important concepts that must be understood by heart
1. Small and large signal modelling
2. Early Effect
3. Bipolar amplifiers
4. Common emitter with degeneration etc.
5. Common Base/Collector
6. Biasing techniques(Most important)

Get the hold of all the theory from Dr. Razavi’s lectures(Lecture 12- Lecture 28).Trust me, the understanding and the depth provided in these lectures are invaluable.

Continue doing a rigorous practise of the above learned concepts from his book  Microelectronics by Dr. Razavi

If you have enrolled yourself in this course Semiconductor Specialization while studying semiconductor physics you’d know that this covers BJT too. Also I’d like to mention this is an invaluable specialization and will come very handy during interviews.

Lastly, I’d say practise practise practise! There’s is no substitute to it. The course contents and topics that are covered in BJT may seem overwhelming at first, but once you understand the bigger picture, you’ll actually love every circuit that is given to you to solve and will soon be able to design your own amplifier and various other circuits! Voila! Your first step towards a career in Circuit design. 

Some of the concepts like h-parameters re-model, that are not explained by Dr. Razavi in his lectures and book, can be done from here: NESO ACADEMY- Analog

>>Softwares for simulation
1. LTSpice (Free)
2. Multisim (Free for trial period)


Once you have simulated enough circuits go to the lab, grab a multimeter and measure and verify your results, measure the voltages across emitter/collector, measure the terminal currents, make note on how the small signal model although looks complex but is the most powerful tool while solving transistor based circuits!


3. Metal Oxide Semiconductor Field Effect Transistors
The reason I mentioned the full name for MOSFETs is that, the name, in itself defines the structure and making of these seemingly strange yet magical devices!

The MOSFET is a relatively new device as compared to BJT, and is considered faster, cheaper and more efficient with minimal static power dissipation(CMOS) (Which you’ll learn about later in the course, don’t be alarmed) . MOSFET is one of the favourite topic of interviewers in the semiconductor companies, you have to learn everything you can about them and beyond that too!

To begin with, Start from Lecture 29 (Intro to MOSFETS) of Dr. Behzad Razavi’s lectures and then read about it from his textbook. After completing you may proceed with the following lectures while following the same pattern as followed above for BJT.

Some of the Important concepts that must not be omitted
1. Construction of both depletion/enhancement type MOSFET
2. Significance of Transconductance/Channel length modulation
3. Common emitter/source/drain and all these stages.
4. Biasing techniques
5. CMOS Inverter
6. CMOS digital gates designed
7. Static/dynamic power dissipation
8. CMOS Amplifiers
9. Cascode stages/current mirrors

The course for online certification remains the same as it is a specialization of Diodes, BJT and MOS:  Semiconductor Specialization.

Books to be followed
1. Microelectronics by Dr. Razavi
2. Microelectronics by Sedra/Smith
3. Analog CMOS IC design By Dr. Behzad Razavi

>>Softwares for Simulation
1. Cadence Virtuoso Analog design Suite. (Licensed)


Once you understand all the theory and have practised enough questions, you may get started with one or two projects from here: HACKSTER MOSFET projects

Projects are an essential part of the learning curve and it primarily gives you a reality check!, as everything that you have been learning and solving is utilised in real life too, nothing is boring in Electronics, as every concept can be covered while doing projects.

I would greatly emphasize on taking this online certification and understanding the underlying physics of MOS being taught in this course MOS Transistors, This certification will hold great value during interviews as it is considered a fairly advanced course, but then again, a little more information never hurt anyone!

You have successfully completed 60% of your preparation!


• OPERATIONAL AMPLIFIERS (In the semester following transistors, cover this)


Op-amp is a versatile device that is used to amplify DC as well as AC input signals and was originally designed to perform addition, subtraction, multiplication and integration.

This comes after BJT and MOS and is the most important topic if you are preparing for interviews in core companies based on semiconductors (For eg. Texas instruments, Qualcomm etc). Therefore a full-on mastery of this subject is quintessential!

Some important topics to be covered at all costs:
1. Frequency response of an Op-amp.
2. Active filters.
3. Oscillators.
4. Comparators.
5. Phase locked Loop
6. Automatic Gain Control
7. Universal active/Switched capacitor filter.

The main focus for this subject should remain on covering nook and corner of this book 
Linear Integrated Circuits by Ramakant A. Gayakwad

After its completion you can move on to more advanced texts:
1. Sergio Franco
2. Microelectronics by Dr. Razavi (Op-Amp chapter)

The online lectures available on op-amps are kind of vast, you may follow two routes here:
1. If you are preparing in a hurry and just need to understand the concept and then will read and solve questions on it by yourself, learn from here - Youtube – Op-Amp
2. If you have enough time you may start from these NPTEL Lectures - Analog Ics
(This is the advised source to learn because this is very popular topic with interviewres and you don’t want to leave any stones unturned while preparing Op-Amps!)

The online certified course for Op-amp is quite useful as the instructor presents the practical use of op-amp at each step of explanation.
 

Projects section:
Please cover all the projects given from Page 476 in Linear Integrated Circuits by Ramakant A. Gayakwad, They are very useful for your practical understanding.


We are Almost done with the extensive preparation now all that is left are the things, that are quite complex and require a very good understanding of all the subjects mentioned above, but being able to understand the following topics from the specific resources will be an invaluable addition to your toolkit!, 
It will benefit you during interview because the interviewer will surely be impressed by the vast knowledge pool that you are, and the most important thing is never memorize any formulae without understanding its significance!

Addition to your toolkit:


1. Differential Amplifiers (Pg 399)  Microelectronics by Dr. Razavi

2. Frequency Response (Pg 460)  Microelectronics by Dr. Razavi

3. Feedback and current mirros/cascode stages (Pg 513)  Microelectronics by Dr. Razavi
    Please watch  ELECTRONICS 2 By Dr. Behzad Razavi.

4. Noise (Pg 219) Analog CMOS IC design By Dr. Behzad Razavi

5. An intro to FinFETs and their principle of operation.

6. Read about Silicon Photonics.

7. Know how the technology node shifted from microns to 22nm and even upcoming 7nm.

8. Be master to variety simulation software as well as a good hardware designer of circuits.

9. Cover more and More Projects related to the field, deepens the understanding.

10. Please have a good understanding of the subject “Signals and System” too, although not quite necessary yet is good to know in depth about fourier, laplace and Z transforms and the reasons why they are performed as well as their physical significance.


Be consistent, each day matters, each day you should be learning something or solving something, the syllabus is very vast and may seem overwhelming at first but trust me once you get past BJT, everything else will make sense and will be a rewarding journey. 

If you will truly follow the blog post, you will be having in-depth knowledge in Analog that is required and expected from an undergraduate fresher as well as you will have enough Online certifications to prove your credibility in addition with the projects that you will undertake. 

A synopsis of resources that you will collect during this journey!

>>Online certification courses:
1. Control Systems: From Mathematical Modelling to PID Control
2. Semiconductor Specialization
3. MOS Transistors
4. Op-Amp

>>Books to be followed:
1. Circuit theory by A. Chakrabarti
2. Network Analysis by M.E Van Valkenburg
3. Control systems by Samarjit Ghosh
4. Microelectronics by Dr. Razavi
5. Microelectronics by Sedra/Smith
6. Analog CMOS IC design By Dr. Behzad Razavi
7. Linear Integrated Circuits by Ramakant A. Gayakwad
8. Sergio Franco

Here is bonus point to enhance your practical knowledge. 
Udemy has a ‘Crash Course’, That is being taught by Dr. Andre Lamothe who is a renowned Computer scientist, Electrical Engineer, Mathematician as well as a Game developer. This course is to be joined from the beginning of first semester itself. This is 95 hour long course and is the most extensive course in the history of online courses!
The guy explains stuff theoretically and literally takes you to his lab and performs practical on each and every topic that he explains. Pretty insightful and knowledgeable I’d say!
Moreover there is a section on PCB DESIGN using ‘Circuit Maker’, which is must have tool in every electronics engineer’s pocket. This is a very essential skill that can easily land you a job, and this is an Advanced course at a very cheap price. It covers everything from Analog to Digital electronics, trust me you won’t be disappointed!

Here it is - Electronics CRASH COURSE and PCB Design By. Andre LaMothe

By,

Ajay Rajan

Embedded Hardware/Firmware Engineer

VLSI Roadmap : Best VLSI Courses, Project Ideas, Jobs/Internships

Have you ever seen the Internal structure of your smartphone? Nope, right? If you will have a look at its internal structure then you will find that there are numbers of Integrated circuits (ICs) connected inside. Not only in your smartphone, almost in all the electronics devices you will find these ICs in huge numbers. Do you know, these ICs are very important for the proper functioning of the device. Processors (Contains numbers of ICs inside it) are considered as a heart of the device. Whatever commands you give through various Inputs that directly goes inside the processor and after executing them, the processor produces an output which is shown on the display. As of now, we talked about ICs and processors. But do you have any Idea that what actually integrated Circuits (ICs) contains inside it?

An Integrated Circuit contains billions of transistors inside it which together perform any specific functionality. Integrated Circuits are embedded in nature that means they are built to perform any specific task. Now, among these all from where VLSI term comes?

 

What is VLSI?

So, VLSI is an acronym of Very large scale Integration. VLSI is a process through which billions of transistors are integrated together on a small piece of silicon. Don't even think that it's an easy process, which can be done through various existing technologies. Lots of challenges are involved in it & that is why it is quite a popular term. Now, you must be thinking then why it is in trend most of the times?

So, do you still have your last phone which you used before getting the new one?  If have, then just have a look on it. You will find that your new phone is much thinner than your last one. Your new phone is now able to run more apps at a time than your previous phone. Battery usage of your new phone is also quite good than the last one. Agree? This is all possible because of the new innovations in the VLSI field. If I try to explain this thing in technical terms then simply over the years technology node has been reduced. The processor of your older phone might have been designed on the 28nm technology node while the phone which you are using currently may have a processor designed on 12nm technology node. So as we are moving towards the lower technology nodes the size of the circuits are getting reduced so as the mobiles and other electronics items are getting thinner. Also, performance of the device is getting better. So, we are getting benefitted through it. Nowadays you must have heard about Mediatek P70 helio processors, Qualcomm Snapdragon 855 processors. Most of the top-tier flagship phones rely on these processors. These processors are made on 12nm & 7nm technology node respectively. So, this is just to provide you an idea about how fast the VLSI industry is changing and because of its fast innovation, we are getting an improved version of existing electronics devices on frequent intervals. So, I hope as of now you will have a clear picture regarding VLSI & its innovation in your mind.

Now let's talk about something from the student's point of view. Now, what I have experienced is that most of the students have little bit Idea about all of these things but what they don't know is that how to enter in this field as a fresher? How to grab an internship opportunity in the VLSI field? Which courses they should do for a better understanding of the VLSI related subjects? Right?

So, in the remaining part of this roadmap, I will emphasize the ways through which one can apply for the full-time job or as an intern in VLSI companies. I will also enlist some of the courses which will be quite useful for the students who want to make their career in VLSI. So let's start:

 

There are so many ways through which one can apply for a full-time job or as an Intern in any VLSI company.

1. Linkedin: It always stands at the top in my list. Linkedin is the best platform for jobs & Internship if you use it appropriately. Grow your connections first. And then simply ask your connections who are already working in this VLSI domain that whether they can refer you in their company for any open Job/Intern position. If they replied affirmatively then go through the process directed by them. But make sure you have certain things related to VLSI in your resume which makes you eligible for the job. If you didn't know anything related to VLSI then no one can help you in getting the job. Also, there is a specific section related to Job you can find on the LinkedIn website. You can check this section frequently as most of the companies post about there new openings here with all the required details.

 

2. Internshala: It's a good website for Internships. You can easily find Internships related to VLSI domains. But again in order to grab those internship opportunities, you should have those skills which can make you different than others. Otherwise, you will simply keep on applying but no one will select you.  You can also do some training courses on this website to enhance your skills.

 

3. Companies Website: There are so many companies which are working in VLSI Domains. Some popular names are Intel, Broadcom, Qualcomm, MediaTek, STMicroelectronics, Synopsys, Invecas, Cadence, etc.  You can visit the websites of these companies. In their website, there will be a specific section known as "Career Section". Under the Career section, you can provide all the asked information and upload your resume. If companies will find you suitable and if they have any open positions then they will definitely mail you.  

 

So, these are some ways through which students can apply for Jobs and Internships if any of the company related to VLSI do not come for the recruitment process in their college. If companies visit your college then you can simply appear for their screening tests and if you pass all their tests and Interview then you can get a job easily.

 

Now, let's discuss about various things which should be in your resume if you want to get a good job in VLSI domain.

 

1. VLSI Projects:

Projects are the best way to learn anything. When you will make your hands dirty with some projects then you will understand the theoretical concepts in a much better way. You can design a few circuits like Opamps, ADC/DAC, Charge Pumps, etc. on a cadence tool, which is basically used for the VLSI design process in most of the companies. First, learn how to handle the tool and then start with design. For a better understanding of the designs you can follow few textbooks I am listing here:

 

(i) Design of analog CMOS Integrated Circuit by Behzad Razavi

 

(ii) Microelectronics circuit by Sedra and Smith

 

(iii) CMOS VLSI design by Neil Weste

 

I am listing few VLSI projects as well on which you can try your hands:

 

1.  Design of LDO(Low Drop Out)

2. Design of BGR Circuit (Band Gap Reference)

3. Design of 2 stage miller compensated Op-Amp

4. Design of folded cascode Op-amp based on gm/Id method

5.  Design of 2-bit delta-sigma modulator

6. Design of an Inverter with a capacitive load

7. Design of Half and full adder

8. Design of D- Flip Flop

9. Design of 2nd order charge pump

10. Design of PFD (Phase frequency detector)

11. Design of 2 bit ADC

12. Design of sample and hold circuit

 

See, whatever projects I have listed here, none of them have any specification. You can take a few assumptions wherever it requires. First of all, you should be able to design the circuit correctly. If you can design the circuit properly then it will not take too much time to get the desired specifications.

 

2. VLSI Internships:

If you are aiming for Internships then projects play a vital role in getting good internships while in case of job your internships become important. Getting a good Internship is very important because it helps in a different way. Through good Internships, you can get a chance to work with some of the top companies where you get a chance to interact with some of the great minds. It helps in your learning. Meanwhile, who knows your good work during internships may give you a PPO (Pre-placement offer). Also, the network which you build during an internship can help you in your further career. From the money point of view, you may get heavy stipend too. So, don't sit idle look for every internship opportunity which you can get.

It's quite obvious for tier 3 college students that most of the time they may get a rejection from top companies when they applied for their open intern positions. So the best thing is that start doing any work which you get. Doesn't matter whether you are getting paid or not. At the starting of your career what matters is that how much you can learn. Based on your these small learnings someday you may get approval from some big company. So work, wherever you get a chance to do.

 

3. VLSI Theoretical Knowledge:

You should have a sound knowledge of your theoretical subjects. Although it’s very good to have sound knowledge in all your subjects but there are some specific subjects in which you should have a proper command, if you are looking to make your career in VLSI. I am listing those subjects here:

 

(i) Network Theory:

VLSI is all related to circuits. And we can't ignore network analysis wherever circuit comes. You should have a sound knowledge of RC Circuits, Capacitor charging, discharging, Impedance matching concept, Laplace transform, Two-port network, Pole-Zero concept, etc. You can follow the following book for a detailed analysis of the mentioned topics.

1. Fundamentals of Electric Circuits by Alexander and Sadiku

2. Network Analysis by M.E.Van Valkenburg

 

(ii) Analog Electronics:

This is the subject on which VLSI rely almost. Prepare and learn it by heart. Follow Analog Electronics Roadmap to study it in detail. Read everything and try to find out the rationale behind everything. This subject is very important and somewhere in the industries all of its topics are being used at some level.

You can watch these NPTEL videos for a better understanding of the topic.

1. Basic Building Blocks in Analog ICs

2. Introduction to Analog IC Design

3. Overview of Linear and Non Linear System

 

(iii) Digital Electronics:

Nowadays things are moving into the digital era so as the importance of digital electronics is increasing. In this subject also you cannot leave any topic. Each & everything is being used. You should have a clear understanding of basic topics like Flip Flops, Latches, Basic Gates, K-map, Mux, Demux, Decoders, Encoders, etc. Then you can easily take it in use for applications.

You can do Digital Systems course from online platform Coursera for better understanding of the subject.

 

(iv) Control System:

We want that our system should be stable. We use Op-amp mostly in the negative feedback configuration, so we should have a clear idea of feedbacks and all. Because of all this purpose control systems are used in VLSI. There are certain topics which are quite important and one should try to cover them:

1. Different type of signals

2. Different responses of system and their mathematical expression (Underdamped, overdamped, undamped, etc.)

3. Bode Plot, Nyquist plot, Polar plot

4. Feedback mechanism

5. Stability analysis through Routh-Hurwitz method

6. Root-Locus

7. Pole-zero analysis

8. Frequency domain analysis

So, you can have a look at these topics. These topics are very important and generally you will find the application of these devices in the circuit.

 

(v) Communication system:

You will find the application of this subject in the specific area of VLSI. Communication is mostly used in data converters like ADC, DAC, Sigma-delta modulators, etc. Also, you can find its application in rf related circuits. You should have a clear cut idea of topics like sampling, SNR, quantization, noise, filters, modulators, demodulators, etc.

 

4. Your Academics:

Most of the companies set their cut off percentage below which you won't be allowed to sit in their recruitment process. So, for the safer side if you have percentage more than 80% overall in your graduation (or till 6th semester) then almost all the companies will allow you to sit in their placement process. So work on your academics and read all the syllabus topics carefully. So that you can get good marks and can sit in almost all the placements. Sometimes you may have knowledge regardless of your percentages but in order to get the good placement, you will have to struggle there. Generally, no one cares how much you know, they will first check whether you are eligible to sit in the recruitment or not then knowledge comes.

 

So, these are some of the important points which should be in your resume while applying for VLSI Jobs. Other than this if you have something more to add in your resume than it will be a bonus for you but at least try to maintain the above-mentioned points in your resume. Your main aim should be learning. If you will learn well then definitely you will earn well. So, develop those skills first which industries are looking in candidates.

I, hope this roadmap will help you in shaping your career.

 

By,

SATYAM SINGH

Analog Design Engineer

Entrepreneurship in College Roadmap

Entrepreneurship in College Roadmap

A lot of students across various colleges want to get into entrepreneurship. Keeping this in mind, we have created a roadmap for students who want to create jobs rather than get a job. Note that this is just a rough sketch of what you should do in college to get started with entrepreneurship. You should explore entrepreneurship yourself and learn from your experiences.

Let’s get started?

What is Entrepreneurship?
We will not bore you with the definitions, so let’s get straight to the point - entrepreneurship is about creating value for others so that in return you can make money. A wrongly perceived definition of entrepreneurship is - making money by selling products and services. If you read the first definition carefully, you will observe that entrepreneurship isn’t really about making money. It is about creating value for others. Money comes as a byproduct.

Let that sink in again - entrepreneurship is about creating value for others. Money comes as a byproduct. As an entrepreneur, you are supposed to solve the problems of others so that they get benefitted and in return, they pay you.

We all are aware of the well-known entrepreneurs like Jeff Bezos, Bill Gates, Elon Musk, Steve Jobs, Larry Page, Sergey Brin and many others. All of them have solved problems for billions of people (including us) and we are all happily paying them. They are solving our problems - the problem of purchasing something online, the problem of finding information on the internet, etc.

Case studies of some well-known entrepreneurs
Before delving into how you can get started with entrepreneurship, let us first take a look at some of the case studies of entrepreneurship:

  •     • Jeff Bezos: Jeff Bezos is the founder of Amazon, the global e-commerce giant. Jeff Bezos started Amazon in 1994, initially selling books online. Today, Amazon has more than half a million employees across the world. Jeff Bezos is impacting billions of lives - customers, employees and shareholders. For customers, he is solving the problem of getting anything at their doorsteps. For employees, he is creating so many jobs. For shareholders, he is creating value by helping them make money through his company’s shares. You see how much value he is creating? Undoubtedly he is the richest person on earth.

  •     • Bill Gates: Bill Gates is the founder of Microsoft, the global Software giant. Bill Gates started Microsoft back in 1975, selling software for computers. Today, we all use Microsoft Windows in our Personal Computers. Like Jeff Bezos, Bill Gates has also impacted billions of lives. He stayed as the richest person on earth for several years.

  •     • Larry Page and Sergey Brin: Larry and Sergey started Google back in 1998 and today, the products of the multinational technology giant have become an indispensable part of our lives. Larry and Sergey have impacted billions of lives and no wonder both of them are billionaires.

Now, let us delve into the important question - how can you, as a college student, get started with entrepreneurship?

How to get started with entrepreneurship?
The most important aspect of entrepreneurship is getting started. Remember, time in the market is more important than timing in the market. Therefore, the earlier you start, the better would it be.

Let us first talk about some small ideas with which you can get started. We will talk about some bigger ideas as well.

First, make a list of marketable skills - things at which you are good at. For instance, writing articles, creating software, communication, teaching, etc. These skills are your strengths. Since you are great at them, you can find out how to create value for others with these skills. This is particularly useful for 1st and 2nd-year college students who may not have too much knowledge.

Once you have the list, try mapping it to use-cases where you could apply these skills. For instance, if you are good at writing articles, you can start with freelance content writing. If you are good at teaching, you can consider tutoring online.

Basically, the objective here is to find out a well-known business idea and execute it. Your idea would not be unique since there are millions of software developers or content writers out there. But, the important point here is to get started with something. This way, you can quickly learn the basics of business - handling clients, sales, marketing, negotiation, hiring, etc. These are extremely important skills for any business.

Remember - college teaches you how to become a better employee and not a better employer.

So, your aim should be to learn about the most important pillars of entrepreneurship mentioned above. Here are some more details about these pillars:

  •     • Business Development: Business Development is about making a list of your potential clients. For instance, if you have created software for professors to manage their lectures, you will have to make a list of all of the professors in your college and possibly, other colleges. Once you have created this list, you will probably reach out to the professors. This exercise is called as Business Development.

  •     • Sales: Sales is about actually selling your product/service. For instance, in the above case, you reached out to 10 professors and 2 of them called you for a meeting at their office. In the meeting, you presented your product and showed them a demo. This is sales.

  •     • Marketing: Marketing is about making customers aware of your products/services. For instance, in the above case, you may want to run a Facebook advertisement campaign so that Professors across Mumbai get to know about your offering.

  •     • Hiring: Hiring is about building a strong team of people who will help you in the day-to-day activities of your business. We all are aware of hiring, and so, we won’t talk much about it.

  •     • Finance: Finance is about managing the cash flow - how much money you are getting from customers, vs how much money you are spending on the salary of your employees, rent of the office, etc.

  •     • Product Development: Product Development is about actually building the product that you are offering to your customers. For instance, it could be an app, or a hardware device, or a web-based platform.

Unfortunately, except for the basics of product development, none of the above is taught in college. This is why there is a need to revamp college education. Let us talk about it later.

For you as a student, the most important point is to get started with something where you don’t really have to invest much money. This is why we suggested that you can you should start with offerings where you don’t have to hire anyone. Hiring involves a fixed cost in terms of salary. So does an office space. You should try and avoid getting into such fixed costs at an early stage because if you don’t get enough revenues, you will make losses.

Entrepreneurship terminology
Here are some basic terms that you should keep in mind while starting up:

  •     • Revenues: Revenue for a year comprises of the total money that you collect from your customers.

  •     • Expenses: Expenses are the costs that you incur in terms of employee salaries, office rent, etc.

  •     • Profits: Revenues minus expenses. Profit is the money that you make once you have factored all your expenses from the revenues.

Case Study
Suppose that you start a simple business of partnering with restaurants near your college to get them more business. Your idea is as follows:

  •     • You go to a restaurant near your college and tell them that you will get them more customers if they give you a 25% discount. They agree.

  •     • You create a simple restaurant booking app and market it to your friends. Through this app, your friends can book tables at a restaurant and get a 20% discount.

  •     • Since your friends are getting a discount of 20%, they are super happy. Since the restaurant owner is getting more customers, he is happy to offer a 25% discount.

You as an entrepreneur get 5% of revenues that you bring for the restaurant. Imagine that you partner with 50 such restaurants near your college. At each restaurant, you are able to drive traffic of 100 students. Assume further that each student purchases food worth Rs. 200. The total revenues that you have created for these restaurants (in 1 month) = Rs. 200 x 100 students per restaurant x 50 restaurants = Rs. 10 lakhs. Since you are charging 5%, you make a cool Rs. 50,000. This amount can easily cover your basic expenses of developing a mobile application (provided you know how to do), and server and hosting charges.

Isn’t that a great business idea?

What skills do you need for this business? Let’s see:

  •     • Sales: you need to go and convince each of these 50 restaurants to offer a discount of 25%.

  •     • Marketing: you need to make your friends aware of your app.

  •     • Core skill: the core skill here is Software Development. If you don’t know how to develop the software (app), you can hire a developer for say Rs. 10,000 who can easily develop such an application in a matter of 1 week. Alternatively, a smarter way would be to partner with your friend from the Computer Science department and take his/her help. In return, you can offer them a 20% share (Rs. 10,000 in this case). The latter way is smart because you are avoiding a fixed upfront cost of paying a developer Rs. 10,000.

As you can see, without much fixed cost, a small business could easily be started. Through this simple idea, you may not make much money, but you will get to learn a lot. When you interact with 50 restaurants, you will learn how to sell - one of the most important skills for any entrepreneur. When you tell your friends about your app, you will learn marketing - another important skill.

There are hundreds of such small business ideas that you can execute locally. It is tough to scale such ideas because some or the other large company would already be a leader. But, you can always start it locally to gain more knowledge of business and create income for yourself.

Bigger ideas
For bigger, unconventional ideas, you need more insights into a specific industry domain. For instance, banking, pharma, food, etc. It is not easy to find a startup idea in such industries without prior knowledge or experience. But, the best part is that you can always learn. How? Let’s see.

  •     • First, you should try and make a list of domains that you are fond of. It could be education, it could be the food industry, etc. You could have fondness to these domains for whatever reasons. But, it is important that you start with something that you enjoy. If you start something in say finance domain, but if you are not passionate about it, you won’t go a long way. Therefore, it is the best to stick to a domain that is close to you.

  •     • Once you are certain, try and read the online articles about the startups and businesses in that domain. For instance, if you are targeting the education sector, read about EdTech startups. The basic idea is to see what problems other people are targeting and what are the key pain-points of the customers.

  •     • Once you are through with this, go and meet 5 experienced people in the domain. For instance, meet 5 people who have been in the education sector for say 2 decades. Talk to them and understand their problems. They will tell you more in 60 minutes than you can learn on the internet in 60 days. The objective of reading online articles was that when you meet an experienced person, you should be able to speak and understand their language. These experienced people can tell you a lot of problems that are to be solved and no one has probably developed solutions for them. It could be a great opportunity for you.

  •     • Once you have made a list of possible problems, go and meet the end customers to get feedback from them. For instance, an experienced person may tell you - school students lack mentorship in Chemistry and they struggle understanding the subject. In that case, you should go and meet 50 school students to see what they are saying. Are they really facing a problem in Chemistry? What books do they currently use? How do they currently study? What’s the syllabus? What type of questions are asked in the exams? You should be completely aware of the answers to all of these questions. The best way to do so is to talk to 50 students.

  •     • The aim above is to take a data-driven decision because something that is a problem for 50 students is highly likely to be a problem at the entire area-level, city-level, state-level or maybe even national level. Your job as an entrepreneur is to validate this problem and then build a solution.

  •     • To validate this problem at a larger scale, you can use your social network - conduct surveys on Facebook, get on a call with your friends, relatives, etc. They will give you more feedback about the problem.

  •     • Once you are certain with the problem, you can start working on the solution - possibly a great Chemistry workbook. Or a platform to pair Chemistry mentors with students. Or any other creative solution that you can think of. The most important task here is to make sure that your solution indeed solves the problem.

Once you have identified the problem and have created a basic, first version of the solution, you can start your journey of entrepreneurship. You have something sellable which customers are willing to purchase. Over time, you can gather more feedback and improve your product by developing more features to it.

This was just a suggested way to find a startup idea. There is so much to be learnt in this whole journey that it cannot be summarized in 1 roadmap. And therefore, we would like to mention some great resources (books) on entrepreneurship that you should definitely read:

  •     • Rich Dad Poor Dad: This is arguably one of the best books on Entrepreneurship. I wish I had read it in college.
  •     • The Lean Startup: This book is known to be the Bible for entrepreneurs.
  •     • Think and Grow Rich: Another excellent book. This is known to be the best book on Entrepreneurship/self-improvement.
  •     • How to win friends and influence people: This book should be read by anyone who is considering starting a business. In the business world, you have to effectively communicate with so many people so that you can develop a relationship with them. This book teaches you how to do that.
  •     • Secrets of the Millionaire Mind: Another classic bestseller on Entrepreneurship.

The above books are my favourites. Here are some more recommended books:

An important point that you should note is that a lot of self-help books on business may be quite repetitive and you may feel that all of them convey the same information. Therefore initially, you may want to stick with the top 5 recommended above (Rich Dad Poor Dad, The Lean Startup, Think and Grow Rich, How to win friends and influence people and Secrets of the Millionaire Mind). These books are self-help books and almost every entrepreneur reads them.

There are some great YouTube channels on entrepreneurship:

We hope that you find the roadmap interesting. Do signup for more interesting content by CareerHigh. We would also appreciate if you can share the roadmap with others so that the maximum number of people can benefit from it.
 

Electronics Engineer Roadmap

Electronics engineering has been one of the world changing streams, still, statistics show that people are shifting from ECE to CSE after graduation. The trend is that a student opted for CSE and didn’t get it so he ended up with ECE.  A large section of such people finds Electronics “tough” and “intimidating” and then all they do throughout their college life is “Coding”. Maybe it’s ok if you have passion for it but this is like studying two degrees simultaneously for the other non-passionate ones.

An Electronics engineer has a lot of fields to explore and that may create confusion. All sorts of confusions can be cleared through proper guidance which is rare to find these days. Maybe that’s why a large section of ECE graduates don’t have industry level knowledge and they find it hard to cope up with the rapid pace of the industry.

Interacting with several electronic students over the years has bought the problems to our sight.

  1. Lack of guidance in electronic sub domains
  2. Absence of a project mentorship
  3. Lack of career guidance

Electronics & Communication engineering drives the world. There are a lot of employment opportunities. The rapid change in solid state technology from BJTs to CNTs, the expansion of Signal Analysis, innovation in Communication Systems, Evolution in System Architectures has made it appear a humongous task. But our team at CareerHigh has designed just the right plan for you.

An ideal work-plan which transforms you step by step into an Embedded System Designer or Communication Engineer or maybe a Network Engineer and many more to choose from.

A detailed work plan for specific subdomains will also be added in future. But for now, let’s focus on the key phases through which you have to go through.

  1. Explore areas of work
  2. Mastering core subjects
  3. Getting an internship

 

Explore Areas of Work

It is well known to all electronics students (even the ‘Passionate for CSE’ ones) that there are a lot of fields to explore in electronics. Now it obviously requires a credible guidance to know what to learn.

Yeah that is the question most asked by everyone. What to learn? But I’ll do one more to you. Where from?

What to learn and Where from should be asked. Just knowing the required areas isn’t enough.

So let’s skip talk and discuss about the principal domains.

 

Embedded System

Embedded System designing is the most sought after field by ECE graduates. It’s obvious how much technology has transformed the society but there is a lot left to do.

Industries are utilizing this technology to automate their tasks, enhance their production efficiency, prevent system failures through adaptive control methods. All these tasks are achieved through a systematically designed system which mainly involves microcontrollers, sensors, control system theory and above all a thought out work-plan.

With Internet of Things becoming more popular day by day, search for a capable embedded system designer will be more frequent than ever.

The world is moving towards total connectivity and industries want to do their work smartly. So skilled people will be asked for every now and then.

We’ll be discussing about the required skills in a later phase.

 

Communication

Communication Sector is extremely important nowadays, as data access speeds need to be increased. On the other hand, with the highly increasing number of users, the industry needs to tackle the congestions and resource availability too.

The work force will be required more now as the work in areas of 5G and full time connectivity is also required. Fading and increasing congestion calls for a system modification. An opportunity to be a part of the always changing communication sector requires dynamic people too.

Engineers are required for positions like Cloud Assistants, Network Engineers & Architects, Telecom Engineers and much more. One with the right set of skills will be guaranteed a prospering career. Let’s discuss these skills later on and move on to discover the next possible work area.

 

VLSI

We’re moving into a digital era and the need of a hardware that can live up to the expectations of the mankind is on the high.

Solid state electronics has evolved from conventional Bipolar Junction Transistors to Carbon Nanotubes and finFETs. The main goal is to make things smaller and powerful.

Ever wondered how Xiaomi managed to provide so much battery and functionalities to your phone? Or how games like GTA V and FarCry can be run on a NVIDIA GTX ? Or how Qualcomm is drawing battle lines in the processor market?

It’s the EC guys doing it. You can be a lot. So pick one and work for that.

This needs people who can work in the following areas.

  1. ASIC frontend designed
  2. FPGA frontend designer
  3. ASIC physical design engineer
  4. AMS (Analog Mixed Signal) designer
  5. Library developer
  6. IP design engineer Verification Engineers
  7. Front-end verification engineer
  8. FPGA Back-end verification engineer
  9. Physical design verification engineer
  10. AMS verification engineer
  11. EDA tool validation engineer
  12. IP verification engineer
  13. Board validation engineer
  14. EDA/CAD Engineers
  15. Software Development Engineer
  16. Software Test Engineer
  17. Regression and Automation Engineer
  18. Build and Release Engineer Application EngineersField Application Engineer (FAE)
  19. Corporate Application Engineer (CAE)
  20. Application Engineer Technical Support
  21. Tech Support Engineer
  22. Product Application Engineer (PAE)
  23. Reliability Engineer
  24. Fab/Foundry Engineer

 

Mastering Core Subjects

A big reason why ECE graduates find it difficult to cope up with problems later on while working in a core industry is because they did not attain the required knowledge during their four years at college. Apart from the industrial skills section, is the knowledge of core engineering subjects which an electronics guy should take seriously. As these subjects are the theory or rather principles which solve any technical issue while we work on a project as an engineer.

Remember how the most difficult seeming problems could be solved using the very basic concepts during our JEE preparations? It’s like that.

All we need is the vision to identify the problem’s roots which you’ll through practice and experience.

Now, all this is good but we also need to study these subjects in the correct manner to understand them in a better way. By correct manner we mean the references for a subject.

Here’s a list of the core ECE subjects with references to understand them:

  1. Engineering Mathematics: Book by B.S Grewal is the best one. There is also a book by Erwin Kreyszig which is good for concept building but it lacks certain topics so you’ll be wasting energy in searching for the missing ones. PRACTICE IS ALL THAT IS REQUIRED.
  2. Network Analysis & Synthesis: Book by A. Chakraborty is popular but it is intimidating for a sophomore beginner and that’s not what will help you. So go for the book by “Pankaj Swarnkar”. It’s the best for understanding the concepts and also provides some really good problems to master them.
  3. Electronic Devices & Analog Circuits: This is the nightmare of an ECE guy if not guided properly. There are three courses on MIT OCW by Prof. Anant Agarwal by the name Circuits & Electronics. Take them. Apart from this, Book by Sedra & Smith is the best one for concept building. It will be your bible. But it is vast. You mainly need to study Diodes, BJTs, MOSFETs and Op-Amps. Op-Amp circuits and High frequency Analysis of MOS & BJT circuits are very important and have been explained very clearly.
  4. Digital Electronics: This is easy. Go To YouTube,search Neso Academy. Neso Academy lectures on digital electronics will do the job.
  5. Microprocessor & Microcontroller: Everyone will go on about DV Hall but don’t waste your time in studying that. Book by K Bhurchandi is the goto help. It covers everything you’ll need to know, right from 8086 basics to interfacing devices and 8051 microcontroller. For 8085, Book by Ramesh Gaonkar is your help.
  6. Communication Systems: Book by Simon Haykins is the help for Analog & Digital Communication.
  7. Signals & Systems: Oppenheim will always solve any doubts in the field of signals. Use Oppenheim for Digital Signal Processing too. Solve the problems on MIT OCW for Systems & Signals.
  8. Control Systems:  Book by Norman S Nise is easy to grasp. Schaum Series book for problems.
  9. Electromagnetic Theory: Book by Hayt covers everything and has good problems too.

 

Getting Internships

Industries are out there looking for a skilled person. Now that doesn’t mean you need to be a pro. Someone with the right set of beginner knowledge or abilities can land an internship.

First Let us talk about how you can find an internship in your desired field.

  1. LinkedIn, AngelList, Internshala have always been the most used portals for grabbing employment of all kinds. AngelList and Internshala will get you mostly startups which are very good for learning. LinkedIn can be used to get entry into an established company which can provide you the correct exposure and will also test your skill.
  2. A lot of Summer Internship programs are run by IITs and other technical institutes. If you want to learn and you’re not from a premier institute, go for this. These help more than industrial internships for ECE.

Some examples are SRFP by IAS, SPARK by IIT Roorkee, SRIP by IIT Gandhinagar, GIPEDI by IIT Delhi and Summer Research Internship by IIT Guwahati.

  1. Global Internship opportunities like Charpak ,OIST SFP programme are also there.

If you don’t make it through these somehow, then if you’re having the right set of skills, simply look out for a professor who is working in your field of interest and write a mail to him briefly stating about your Interest, work experience and skills. Attaching your resume will do the rest.

Now let’s dive into the various skills you need to acquire.

 

Embedded System

Freshmen year is the most idle you’ll ever be in engineering. We are fresh into our college with most of the courses being non-core and relatable to JEE syllabus. So it is highly advisable to utilise this time as you got your academics covered. Keeping yourself on the same page with the lectures is enough. (Well, assuming you took your JEE preparation seriously)

 

Make it your goal to discover ‘Embedded System’ in the first semester. Start out with building your very own ‘DPDT controlled MANUAL BOT’. For help, Instructables will always be your saviour.

We all remember how much we used to cry for a ‘Remote controlled Car’ as a kid. Well now build one of your very own and make your parents happy.

Now, keep this one aside for a while. We’ll come back to modernise it later.

Next, let’s meet your best friends for project work. These are the tools you’ll be using for making all your institute level work. You want to add the magic into whatever you design right? You can do it using a widely used microcontroller board, named, Arduino. I would recommend Jeremy Blum’s tutorial to know all that you can do with arduino as a beginner.

 

You also will need to know about the following too:

  1. Diodes
  2. Resistors

  3. LED

  4. Transistors

  5. Capacitors

  6. ICs

  7. Potentiometer

 

These are the commonly used electronics components in any circuit. For this and many more things after this, refer to Electronics Hub or Circuit Digest

We would recommend the following circuits to understand these components and improve your skills at circuit designing and analysis.

  1. Clap Switch Circuit using Mic Condenser

  2. Light Sensing Circuit using LDR

  3. Seven Segment Display Counter(0-9 & 0-99 both)[Using NE555]

  4. Standard Logic gates using TTL or RTL technology(NOT, AND, OR)

  5. Intruder Alert Alarm using Arduino

  6. Seven Segment Display Counter Using Arduino[0-9 only]

  7. DC Motor control using L298N and arduino

  8. Arduino Calculator

 

Do all this before your second semester. Winter Break will be very crucial for this. Once you master this level, the road becomes a lot easy.

Semester 2 calls for Project#1: Bluetooth controlled robot

Using Arduino, bluetooth module HC-05, build a robot which can be controlled by a smartphone via bluetooth.

This will give you a sense of satisfaction like never before as all that hard work on arduino circuits finally pays off.

Next, there’s an INNOVATION CHALLENGE held by Texas Instrument every year. Participate in that. This competition will make you come up with innovative ideas and test your technical skills with each stage. And if your idea is a feasible one, this can be the top project on your resume.(Tentative Project#2)

Embedded System projects have a greater impact if they are meant to solve the society’s problem. Your Project#3 will be this. Come up with such an idea (perhaps something which requires a database to make smart decisions. Raspberry Pi is a lot of help to control such systems.)

Example: Traffic Management System (which reduces the density on roads by varying the timer as per traffic)

After this you’re all set with the projects. A balance of theoretical knowledge and implementation is what leads to a real system designer. Industry needs such people and so shall you become .

 

Communication

The communication sector has evolved due to the combined progress in solid state technology as well as the communication research.

We’ll talk about the two most opted sub fields here.

In theory, you need to know the ‘Evolution of Telecommunication’ deeply if you want to target giants like Airtel or Jio later on. Other option is to choose ‘Networking’ and perhaps be a part of maybe Cisco, Juniper, Arista, Amazon or maybe Google.

To begin with networking, you need to understand the core of it. Skipping the details. Here’s what you need to do.

Watch this Video by David J. Malan to get an induction to HTTP and Networking. It proves very helpful later on.

After this you will be ready to dive into 'Computer Networking: A Top-down Approach by Kurose & Ross'. This book is the 'Bible for Networking' with relatable analogies, systematic approach, helpful assignments and inspiring quotes xD.

Cisco Packet Tracer is an important tool to master. It helps you experiment with networks and analyse them for unwanted issues. It also happens to be an important skills Networking giants look for.

Cisco also has a course on Cisco Networking Academy

 

Project#4: Network Packet Analyser using TCPDUMP command. (You’ll require a bit of a php and sql for this)

 

Telecommunication requires you to know:

  1. Generations of Telecommunication (principles, architectures, technical specifications)

Reference: Radio Electronics

   2. Antenna & Microwave Basics

Reference: Digital Communication Course by Dr. Bikash k. Dey on NPTEL

   3. Analog & Digital Communication by Simon Haykins

 

VLSI

VLSI is the core of electronics. Every new technology that makes it possible to have smaller and powerful devices is due to this field. Since 1948 when William Shockley invented BJT to the FinFETs and CNTs, VLSI has been the Hero in the shadows. This is the field which has seemingly insoluble problems every day but yet people break through in order to provide more power to the hands of mankind.

Actually, it no longer is VLSI as it has evolved from SSI to ULSI and further.

VLSI has two domains: Front end(design and testing) Back-end(fabrication)

Here’s a plan for this field:

  1. Start studying circuits through simulations on LTSPice / Proteus. These are simulation softwares which let you design any circuits by drag n drop. Simulations are done after configuring the components. They have an exhaustive library for that.
  2. Take this short course on VHDL/Verilog on  Youtube. VLSI front end is purely VHDL coded circuits.

Link: Youtube Playlist

Software for VHDL: ModelSIM(recommended) , Xilinx ISE, Vivado.

Now VLSI concepts are very important if you want to design or test circuits.

Integrated Circuits by Thomas DeMassa gives you a dive into the circuit level of these circuits.

(Student version is available for free on official site)

  1. For VLSI Backend, Get acquainted to HSPICE. Simulate basic gates like AND, NOT & OR on HSPICE using MOS technology. Varying the parameters (Aspect ratio etc) will affect the circuit performance parameters. Studying this variation is a very important task.

 

Project#5: Implement low power VLSI design techniques and Study the results.

(This will be your research project. Do write a paper with the guidance of a professor from your institute in this field.)

Note: An internship might help you learn but it is not the only way. So if you don’t get one then doesn’t matter. Work on significant projects and that will teach you a lot.

Once through with these phases, you will be all ready for a career in one of those domains. Before we move ahead, there is an important point to be noted. While you may move ahead in any of the domains but you should be acquainted with the other domains too. Above were mentioned the principle pillars. Know them and you’ll be all set for future.

Now we are sharing the Interview Experience of Ayush Tripathi for the role of EEDP program of General Electric. He is pursuing B.Tech in  ECE at Maulana Azad National Institute of Technology.

This will be a guide for how one takes on his interview and what all you should be ready with.

 

Interview Experience

I am Ayush Tripathi, a final year Electronics undergraduate student at NIT Bhopal. I recently landed an offer for the Edison Engineer Development Program which is the flagship technical program at General Electric. Under this program, General Electric hires innovative and curious minds and subjects them to their world class technical training for two years. These engineers after this course are known as Edison Engineers and they lead projects in one of the GE’s business. But In India the scene is quite different. Here they look for someone who actually has exposure to that particular domain before hiring him/her. So, here I am going to tell you about how I prepared myself and how I handled my interview questions.

There are a lot of things to explore in college. I started with robotics, mastered Arduino and 8051 microcontroller to an intermediate level. Embedded System was my primary field of interest. I didn’t do any internship and focussed more on projects. I did take an industrial training but that was purely for academic reasons.

One thing which I consider to be the most significant is that I always utilised my semester breaks. I used to discover technologies through workshops and blogs and every semester I used to think of a project to explore them more. Most of my projects were meant to serve a community by making their jobs easy.  I started out simple. The first project I designed was a voice controlled bot using 8051 microcontroller. So I want to tell that decide your goal and start living for it and even if you don’t have the skills to achieve it today, you’ll get them and achieve it somehow.

I worked on 5 key projects during my engineering out of which two are entrepreneurial, one is my minor project, one is summer work and one is a research work. I have explored a lot of technologies and skills to make them. The key being Embedded System, Wireless Communication and Computer Vision.

Circuitdigest, RadioElectronics and Udemy have been my guide for project assistance.

As far as preparation for my placement is concerned. It was these projects along with a brief theoretical knowledge of Embedded System and Wireless Communication. The online test for GE consisted of Aptitude, Verbal Reasoning and Technical MCQs (mostly op-amps and MOS based analog circuits). If you have a decent understanding of your subjects then you will do a decent job on the technical. For Aptitude, I would recommend Aptitude section on GeeksforGeeks and Indiabix.  I also went through common embedded system questions on Wisdomjobs

There were two rounds, 1 technical and 1 techno-managerial. My interview was mostly resume based once I told him that embedded system is my area of interest.(The HR asked everyone what our favourite topic was and people confused it with subject) We discussed the technical aspects and scope of my projects. He asked me to design control system solutions for some parts of projects which would reduce the present shortcomings. I did that and he was impressed with the ideas. Then he asked me questions on wireless communication. Then it concluded. The next round was more about my extracurricular activity. The HR asked me about my role as the head of the technical club of my college and some other common questions.

They key to my success was that I knew my projects from every aspects. I even knew the shortcomings and that was how I could accept them boldly and come up with a solution on spot. Being confident while solving on paper and proving myself to be the man I looked from my resume through problem solving skills got me this job.

CareerHigh provides an ideal work-plan for any ECE guy and I would recommend people to follow it. I did the same things and managed to get a dream job like this.

 

Sincerely,

Ayush Tripathi

Department of Electronics & Communication, NIT Bhopal

Back End Developer Roadmap

One of the most basic Software Engineering skills today is the knowledge of Backend Development. Almost every application today has a cloud-based Backend which connects to multiple frontends, which could be connected to several frontends - Web, iOS, Android and today, even to voice-based interfaces like Alexa, Google Assistant, etc.

Backend Development is a key skill and has a huge demand in the market. Think about any startup today - all of them need to have a website, an Android app and an iOS app. So, all of them need a basic backend which can manage user data and provide them functionalities of transactions. All of this comes under backend development (coupled with frontend/mobile development).

In this roadmap, we will talk about how you can learn the basics of Backend Development and land a great job at a tech company.

 

Client-Server Architecture

Look at the image below. As can be seen, there are 2 parts to it:

  1. A Frontend which comprises of Laptop, Android and iOS device

  2. A backend which consists of Web Server, App Server and Database Server

 

 

Let us understand the difference between frontend and backend and what they comprises of.

 

Frontend

A frontend could comprise of a Laptop, Desktop, Mobile Web, Mobile Application (Android/iOS). Frontend is basically where the user gets an interface to interact with the application’s backend. For instance, the Facebook mobile app is the interface through which you use Facebook. Frontend contains 3 parts:

 

  1. HTML: the language that renders the content of the frontend.

  2. CSS: the language that is used to beautify the content.

  3. JS: the language that is used to bring interactivity to the content.

 

Backend

The Backend is where the real magic happens. A backend typically consists of the following 3 components:

  1. Web Server: A Web Server typically serves ‘static’ content - the content that doesn’t change with time. For instance, CSS files, JavaScript files, font files, etc. These files remain fixed and do not change. The requests that are dynamic in nature (like serving your Facebook news feed) are forwarded to the App server for the dynamic computation.

  2. App Server: An App Server, as mentioned above, serves dynamic content. App server looks at the input parameters of the request and accordingly performs computation on the data that is available in the Database Server. It queries the Database to get the data and renders it back to the Web Server, which in turn forwards it back to the client.

  3. Database Server: A Database Server stores the data. This could be user data, application data or some form of metadata which is used by the application. For instance, Facebook uses scalable Database Servers to store user data which could include things like user’s profile details - name, email, phone number, the posts by other users, list of friends, posts liked, etc.

 

Here is a step by step guide to learn Backend Development:

Typically, most developers use modern Backend frameworks that provide a ready-made implementation of various common aspects of a backend like authentication, session maintenance, security, language, timezone, etc.

Here are some of the most popular Backend development tools:

  1. Django: Django is a well-known Python-based Backend framework. Django is fast, secure and highly reliable. Django is free and open-source and so, great for developers. Many well-known websites use Python-based Backend - YouTube, Instagram, Pinterest, SurveyMonkey, etc.

  2. Ruby on Rails: Ruby on Rails is another popular Backend framework, quite common among startups. It uses Ruby as the Backend programming language.

  3. NodeJS: NodeJS is a well-known JavaScript-based Web framework. Node is quite popular since it allows JavaScript to be used both in the backend as well as on the frontend.

  4. Laravel: Laravel is an MVC (Model-View-Controller) based Backend framework that uses PHP as the programming language.

  5. Spring: Spring is a Java-based web framework used largely in enterprises.

 

Case Study: 

Let us consider Django as the Backend framework (Python). The following could be a typical setup:

  1. Web Server: Nginx

  2. App Server: Gunicorn

  3. Database Server: MySQL

Django is installed in the App Server since it forms the Application’s backend. The crux of learning Backend Development is to master the Backend framework. For instance, mastering Django will open up a lot of job opportunities for you. Typically, the salary of a Django Developer in India could range anywhere from 5 lakhs per annum (freshers) to up to 10 lakhs per annum (2 - 3 years experience). More experienced Backend Developers make upwards of Rs. 15 - 20 lakhs a year.

 

 

Django is extremely flexible and since it is based on Python, you can couple it with the Machine Learning libraries of Python to develop intelligence backends. If you have a knowledge of Backend Development in Django and at the same time you know the basics of Machine Learning and how to integrate it with Django, you can earn an excellent salary in the market and you will have a lot of opportunities. Almost any company would love to hire you because this is a skill which has a high demand.

By far, the best tutorial that we’ve seen for learning Django is the Djangogirls Tutorial. It is simple, elaborate and most importantly, end-to-end. It teaches you how to create a simple Blog Application in Python using Django as the Backend framework and host it on a server. Simply by completing this simple tutorial, you’d have a great resume point which you can showcase as a project. You can also talk about your blog project during your interview and it is sure to help you stand out of your competitors.

Once you are through with Djangogirls Tutorial, you should start taking up as many Django projects as possible. Basically, your aim should be to build better and better Django-based applications so that you can improve your skills and also add points to your resume. Learn Django by Building Projects is a great course to achieve the same. The course focuses on Project-based approach which helps you not only learn, but also build your resume.

With the above tutorial and course completed, you should have enough resume points to land you interviews at great tech companies for both, internships as well as full-time jobs. You should, therefore, focus a lot on resume building and interview preparation.

Roadmap on Competitive Programming for Beginners

How to start Competitive Programming?
  • Are you a total beginner to Competitive Programming?
  • Do you always feel like starting Competitive Programming but are too scared to do so?
  • Did you find the problems too hard to start with?

 

Related Articles:

 

In this roadmap, we are going to talk about a key topic - How to start Competitive Programming?

For those who don’t know what is Competitive Programming (CP), it is a mind sport with which you compete with individuals from all over the world.

Note: The target audience for this roadmap are total beginners who find Competitive Programming too hard to start with, in the first place.

 

How will Competitive Programming benefit you in your Career?

  1. You can very well use your ratings [achieved on various competitive programming platforms] on your resume to show how you outstand amongst your colleagues! (Believe it or not, recruiters do get impressed by seeing your performance on online platforms).
  2. You will learn how to approach a problem with the best of the best possible ways, you will learn how to analytically think and solve a problem and analyze it’s space and time complexity.
  3. Every large MNC or Product-based company prefers to have initial filtering round which consists of Competitive Programming problems.
  4. You will get to learn a programming language end to end.
  5. The adrenaline rush that you will get after seeing the green tick and your name on the leaderboard - there’s nothing compared to that.

 

Refer to this document to know what all is there in the world for you to learn or follow and how they will help you. Don’t start memorizing the contents of it but rather understand them.

We don’t want you to use your brain as a Hard Disk but as Processor.

 
Step 1: Learn a well-known programming language

You can do competitive programming in any programming language but it is highly recommended that you choose one of C/C++ or Java. The reason being that the time of execution is a key factor in Competitive Programming and so, choosing a language whose time of execution is fast is surely going to give you a benefit. C/C++ and Java are relatively faster, particularly when compared to languages like Python.

It’s better to use C++ because it’s among the fastest in terms of execution time and it provides a lot of inbuilt functionalities, is most widely used and has support for various data structures through STL (Standard template library), however, Java is also a good choice as it supports BigInteger (the ability to store large numbers without the overflow problems).

If you are a total beginner to programming, it is highly recommended that you learn a programming language. Head to our Programming Beginner Roadmap for the same.

 

Step 2: Starting with Competitive Programming

Before you jump into the world of competitions it would be better to get familiar with I/O style and the way coding is done on the online platforms, for that we would suggest you to:

  1. Start practising on Hackerrank, it has a great IDE and a wonderful beginners program which will help you in getting started. Hackerrank has a great set of problems whose difficulty increases gradually and hence you will not face a sudden rise or fall of difficulty and it also lets you view the test case on which you code failed which will help you greatly in making test cases as well as learning how to debug the code for the case on which it failed. As a total beginner, it is important that you are able to see the test case which failed so that you can learn how to target such corner cases.
  2. Once you are familiar with Hackerrank it would be good to dive a little bit more into a little harder problems for which you can go for SPOJ. SPOJ is not a competitive programming site but it consists of a lot of variety of questions which will help you in learning the implementation of a lot of new data structures and algorithms. If you will solve the first 20 problems on SPOJ you will cover topics like arrays, strings, sorting, searching. If you will solve the first 50 problems you will cover topics like bit manipulation, recursion, backtracking, Graph. If you will solve the first 100 problems you will have covered advanced topics like Dynamic Programming, Heaps, Hashing, Tries and segment trees.

 

As mentioned above, try to start with Hackerrank and solve at least first 20 problems to get an idea as to how Competitive Programming works.

After you’re done with Hackerrank’s first 20 problems you should move to SPOJ and try to solve few problems here also.

As a side note, we would like to suggest that while you are solving these problems, you shouldn’t really wait for completing them first. Rather, in parallel, you should start participating right away as soon as you get an idea as to how the I/O works because participating in competitions and competing with others are the best part of Competitive Programming.

 

Note: For those of you who have a little bit Idea of Data Structure and Algorithms, you may want to practice only those parts of Step 3 and 4 below, which you are not familiar with.

 
Step 3: Get Familiar with Data Structures

Again, Please keep in mind our motive is not to make you memorize these Data Structures or Algorithms in the next step but to show you how can you implement these in real life problems.

We have also added some questions along with each topic so that you can get hands-on experience as to how to apply which data structure in which problem.

 

Arrays and Vector: A collection of similar data types is called an Array. Vectors are also like arrays but when combined with STL functions they prove to be far more useful than an array in Competitive Programming. Here are some great resources to understand the basics of Arrays and Vectors in C++. If you are going ahead with Java as the programming language, you can do a quick Google Search to find the equivalent Java resources as well.

 

Arrays and Vector Tutorials:

  1. GeeksforGeeks Array Data Structure

  2. GeeksforGeeks Vector in CPP

Problems on Arrays and Vector:

  1. Hackerrank - simple array sum problem
  2. Hackerrank - Circular array rotation
  3. https://www.hackerrank.com/challenges/equality-in-a-array/problem
  4. https://www.interviewbit.com/problems/wave-array/
  5. https://www.interviewbit.com/problems/max-sum-contiguous-subarray/

 

Basic Maths: Problems from basic mathematics and implementation are fairly common in contests as well as in interviews. Therefore, it is recommended that you should have an idea of the fundamental mathematics concepts.

 

Mathematical ProgrammingTutorials:

  1. https://www.geeksforgeeks.org/c-program-find-gcd-hcf-two-numbers/

  2. https://www.geeksforgeeks.org/sieve-of-eratosthenes/

  3. https://www.geeksforgeeks.org/modular-exponentiation-power-in-modular-arithmetic/
     

 Questions on Mathematical Programming:

  1. https://www.spoj.com/problems/ADDREV/

  2. https://www.spoj.com/problems/FCTRL2/

  3. https://www.spoj.com/problems/FENCE1/

  4. https://www.spoj.com/problems/PALIN/

  5. https://www.spoj.com/problems/DIVFACT/

  6. https://www.spoj.com/problems/AMR11E/

  7. https://www.spoj.com/problems/TDPRIMES/

  8. https://www.spoj.com/problems/TDKPRIME/

 

Strings: They are collections of multiple characters and can be referred to as an array of characters. String problems are quite common in various programming contests and in fact string problems are among the favourite problems for tech interviewers.

Strings Tutorials:

  1. https://www.tutorialspoint.com/cplusplus/cpp_strings.htm

  2. https://www.hackerearth.com/practice/algorithms/string-algorithm/basics-of-string-manipulation/tutorial/

Problems on Strings:

  1. https://www.interviewbit.com/problems/palindrome-string/

  2. https://www.hackerrank.com/challenges/two-characters/problem

  3. https://www.hackerrank.com/challenges/gem-stones/problem

  4. https://www.hackerrank.com/challenges/the-love-letter-mystery/problem

  5. https://www.hackerrank.com/challenges/anagram/problem

  6. https://www.interviewbit.com/problems/minimum-characters-required-to-make-a-string-palindromic/

 

Stack: Stack is a linear data structure which follows a particular order in which the operations are performed. The order may be LIFO (Last In First Out) or FILO (First In Last Out). Stack follows LIFO.

Tutorials:

  1. https://www.geeksforgeeks.org/stack-in-cpp-stl/

  2. https://www.hackerearth.com/practice/data-structures/stacks/basics-of-stacks/tutorial/

  3. https://www.tutorialspoint.com/data_structures_algorithms/stack_algorithm.htm

Problems:

  1. https://www.hackerearth.com/practice/data-structures/stacks/basics-of-stacks/practice-problems/algorithm/sniper-shooting/

  2. https://www.interviewbit.com/problems/evaluate-expression/

  3. https://www.hackerearth.com/practice/data-structures/stacks/basics-of-stacks/practice-problems/algorithm/monk-and-prisoner-of-azkaban/

  4. https://www.hackerearth.com/practice/data-structures/stacks/basics-of-stacks/practice-problems/algorithm/a-game-of-numbers-1-5d3a8cb3/

  5. https://www.interviewbit.com/problems/rain-water-trapped/

  6. https://www.spoj.com/problems/STPAR/

  7. https://www.spoj.com/problems/HISTOGRA/

  8. https://www.spoj.com/problems/MMASS/

 

Queue: A Queue is a linear structure which follows a particular order in which the operations are performed. The order is First In First Out (FIFO).

Tutorials:

  1. https://www.geeksforgeeks.org/queue-cpp-stl/

  2. https://www.hackerearth.com/practice/data-structures/queues/basics-of-queues/tutorial/

  3. https://www.w3schools.in/data-structures-tutorial/queue/

Problems:

  1. https://www.hackerearth.com/practice/data-structures/queues/basics-of-queues/practice-problems/algorithm/monk-and-chamber-of-secrets/

  2. https://www.hackerearth.com/practice/data-structures/queues/basics-of-queues/practice-problems/algorithm/chocolate-distribution-3-f9297a6e/

  3. https://www.hackerearth.com/practice/data-structures/queues/basics-of-queues/practice-problems/algorithm/little-monk-and-goblet-of-fire/

  4. https://www.spoj.com/problems/ADAQUEUE/

  5. https://www.spoj.com/problems/LAZYPROG/

 

Map: Map is by far one of the most useful Data Structures. It can be used to find, iterate, add, delete numbers, and is also one of the most widely used Data Structures.

Tutorials:

  1. https://www.geeksforgeeks.org/map-associative-containers-the-c-standard-template-library-stl/

  2. https://www.tutorialspoint.com/cpp_standard_library/map.htm

  3. https://www.studytonight.com/cpp/stl/stl-container-map

Problems:

  1. https://www.hackerrank.com/challenges/cpp-maps/problem

  2. https://www.spoj.com/problems/ADACLEAN/

  3. https://www.interviewbit.com/problems/colorful-number/

  4. https://www.interviewbit.com/problems/anagrams/

  5. https://www.interviewbit.com/problems/substring-concatenation/


 

Step 4: Get Familiar with Algorithms

Algorithms are logics that are implemented on various Data Structures to achieve the desired output.

Time/Space Complexity: Every Algorithm has a Time and Space complexity which refers to the maximum amount of time an Algorithm will take and the maximum amount of memory an algorithm will require. While doing Competitive Programming these two will play a key role in determining the verdict of your solution.

Always try to think of the most optimal solution, that is, one which runs with least time complexity and occupies minimum space.

Sorting: You must have heard of a number of sorting techniques to sort but while doing Competitive Programming most of those techniques prove to be time-consuming hence the STL library comes to rescue, it offers a function sort() which sorts the array in the most optimal way.

 

Types of Algorithms:

  • Greedy: A solution in which we move step by step towards our final goal if referred to as greedy algorithm.

 

Tutorials:

  1. https://www.hackerearth.com/practice/algorithms/greedy/basics-of-greedy-algorithms/tutorial/

  2. https://www.topcoder.com/community/competitive-programming/tutorials/greedy-is-good/

Problems:

  1. https://www.hackerrank.com/challenges/minimum-absolute-difference-in-an-array/problem

  2. https://www.hackerrank.com/challenges/marcs-cakewalk/problem

  3. https://www.spoj.com/problems/BUSYMAN/

  4. https://www.spoj.com/problems/GERGOVIA/

  5. https://www.spoj.com/problems/BAISED/

  6. https://www.spoj.com/problems/BALIFE/

  7. https://www.hackerrank.com/challenges/grid-challenge/problem

  8. https://www.hackerrank.com/challenges/maximum-perimeter-triangle/problem

  9. https://www.hackerrank.com/challenges/sherlock-and-the-beast/problem

 

  • Divide and Conquer: As the name suggests, in this we try to make the problem easier by dividing it into a number of subproblems and then solving them one at a time and then combining them all together in the end to give a final answer.

Tutorials:

  1. https://www.hackerearth.com/practice/algorithms/searching/binary-search/tutorial
  2. https://www.hackerearth.com/practice/notes/power-of-binary-search/
  3. https://www.topcoder.com/community/competitive-programming/tutorials/binary-search/

Problems:

  1. https://www.spoj.com/problems/INVCNT/
  2. https://www.codechef.com/problems/MRGSRT
  3. https://www.spoj.com/problems/ABCDEF/
  4. https://www.spoj.com/problems/AGGRCOW/
  5. https://www.spoj.com/problems/PIE/
  6. https://www.codechef.com/problems/STRSUB
  7. https://www.spoj.com/problems/MKUHAR/
  8. https://www.spoj.com/problems/SUBS/

 

  • Recursion and backtracking: Recursion in the type of algorithm in which a function calls itself again and again to achieve the final output. It makes use of stack data structure. Backtracking is an algorithmic paradigm that tries different solutions until finds a solution that “works”. It makes use of recursion.

Tutorials:

  1. https://www.geeksforgeeks.org/recursion/

  2. https://www.topcoder.com/community/competitive-programming/tutorials/an-introduction-to-recursion-part-1/

  3. https://www.geeksforgeeks.org/backtracking-algorithms/

Problems:

  1. https://www.hackerearth.com/practice/basic-programming/recursion/recursion-and-backtracking/practice-problems/algorithm/simran-and-stairs/

  2. https://www.interviewbit.com/problems/subset/

  3. https://www.interviewbit.com/problems/kth-permutation-sequence/

  4. https://www.hackerearth.com/practice/basic-programming/recursion/recursion-and-backtracking/practice-problems/algorithm/n-queensrecursion-tutorial/

  5. https://www.hackerearth.com/practice/basic-programming/recursion/recursion-and-backtracking/practice-problems/algorithm/a-tryst-with-chess/

  6. https://www.interviewbit.com/problems/sudoku/

 

  • Dynamic Programming: In DP we break a problem into a number of problems and then conquer them one by one and store the outcome of the previous subproblem to compute the output of the next one.

Tutorials:

  1. https://qr.ae/TUnXQo

  2. https://nitkcccc.wordpress.com/2014/02/27/dynamic-programming-tutorial-level-1-easy-medium-part-12/

  3. https://www.topcoder.com/community/competitive-programming/tutorials/dynamic-programming-from-novice-to-advanced/

Problems:

  1. https://www.spoj.com/problems/COINS/

  2. https://www.spoj.com/problems/EDIST/

  3. https://www.codechef.com/problems/DELISH

  4. https://www.codechef.com/problems/GRID

  5. https://www.codechef.com/problems/MATRIX2

  6. https://www.codechef.com/problems/DBOY/

  7. https://www.codechef.com/JUNE13/problems/LEMOUSE

 

  • Graph Theory:

Tutorial:

  1. https://www.hackerearth.com/practice/notes/graph-theory-part-i/
  2. https://www.geeksforgeeks.org/fundamentals-of-algorithms/#GraphAlgorithms
  3. https://www.topcoder.com/community/competitive-programming/tutorials/introduction-to-graphs-and-their-data-structures-section-2/

Problems:

  1. https://www.spoj.com/problems/PPATH/ (Breadth-first Search)
  2. https://www.spoj.com/problems/ONEZERO/ (Breadth-first Search)
  3. https://www.spoj.com/problems/PT07Z/ (Depth-first Search)
  4. https://www.spoj.com/problems/BUGLIFE/ (Depth-first Search)
  5. https://www.spoj.com/problems/SHPATH/ (Shortest path)
  6. https://www.spoj.com/problems/TRAFFICN/ (Shortest path)
  7. https://www.spoj.com/problems/SAMER08A/ (Shortest path)
  8. https://www.codechef.com/problems/DIGJUMP (Shortest path)
  9. https://www.codechef.com/AMR14ROS/problems/AMR14B (Shortest path)
  10. https://www.codechef.com/problems/SPSHORT (Shortest path)

 

For more information on Algorithms refer to this link: https://www.geeksforgeeks.org/lmns-algorithms-gq/

 

Step 5: Starting with actual online competitions

Once you are familiar with time complexities, I/O operations of online IDE’s and penalties you can start with actual competitions, for which the following sites provide the best environment for competing with others:

 

  1. Codechef: Codechef offers three monthly contests in which you can participate and test your skills:

    • Codechef Long: This is a 10-day long contest and is one of the best contest to start Competitive Programming with as it does not have any wrong answer penalty and gives you a lot of time to think and implement your solution for a particular problem.

    • Cook-Off: This is a much shorter contest that lasts for 2.5 hours and features 5 problems of varying difficulty, this contest will teach you how to think and implement a solution within a given time constraint,

    • Lunchtime: This is a 3-hour contest meant for school students. A Lunchtime usually features 4 problems. If you think that the problems in this one are gonna be easy, you are in for big surprise.

  2. Codeforces: Codeforces segregates users into three categories: Div 1, Div 2, Div 3.

Start by solving Div 3 problems at first. Codeforces offers multiple contests in a month and you can even try to start a virtual contest if you like. Don’t get demotivated if you find it difficult to solve more than 2,3 problems or even a single problem during a contest when the contest ends look at the tutorials for the problem that you couldn’t solve and then upsolve it.

Codeforces is also good for beginners as it also helps you in looking at the test cases for which your solution which failed which again, in turn, helps you in debugging as well as learning to make your own test cases for further future problems.

 

Upsolving is the key aspect of improving yourself, also look at the codes of other programmers as it will help you in improving your own coding style.

As a beginner, you should never care about rating because that is your biggest barrier in trying harder and trying problems out of your comfort zone during a competition. Even if your rating is going down, it doesn't mean you aren't improving; rating is relative to others and isn't a sole grader of what you can do.

Solve as many as possible, but don’t get discouraged if you can’t solve a problem after the contest ends, watch the tutorial and also read the code of other participants to learn the coding style and pattern of others.

 

Step 6: Practice Practice Practice

People say that practice makes man perfect but in the world of Competitive Programming, no one has ever achieved that mark yet no matter how much you practice you will always miss something but that’s the glorious part of Competitive Programming that you never get done with it.

Don’t lose hope and keep trying and submitting until you get that green tick, because trust me when I say this seeing that green tick is one of the best feelings in this world.

Also read about the world championships that are organized by various prestigious organizations like ACM, Google, Facebook, Vk cup, SnackDown and one of the best ways to secure a job interview with companies like these is Competitive Programming and performing well in the competitions organized by them. But first things first, get up from that couch and start enjoying the sport.

The above roadmap may seem quite challenging to you. However, it is meant to be followed over a period of 3 - 6 months, depending on your speed. We would like to suggest that rather than just following the roadmap, you should try and develop habits that help you improve your Competitive Programming skills. For instance, a simple habit could be - ‘I will solve 3 problems from SPOJ every day’. If you follow this habit, in just 1 month, you’d have solved 90 problems on SPOJ which certainly is a great achievement!

Interview Preparation Roadmap

To crack a great job that you have been dreaming of, the most important step is to nail the Interview. In Software Engineering, the interview procedure is pretty much standardized across most companies and comprises of the following phases:

  1. Coding Test: the purpose of the Coding Test is to filter out the bad candidates who certainly do not have much idea of Coding or general Computer Science.

  2. Interview Round 1: the objective of the Interview Round 1 is to assess the basic programming and problem-solving skills of the candidate.

  3. Interview Round 2: this is the final round to confirm that the candidate is hired.

Some companies also conduct HR round, but it is uncommon in Software Companies.

Let us now delve into the details of each of these phases.

 

Coding Test

Coding Tests are typically conducted to filter out bad candidates. In a coding test, companies typically ask 2 - 3 coding problems that involve Data Structures and Algorithms. You are expected to solve the problem in a span of 2 - 3 hours of time. There are several test cases provided and your code should pass all of the test cases. Most companies do not have a partial marking - you get full marks if all test cases pass or else you get 0 marks.

In coding tests, the problems could be from a diverse set of topics from Data Structures and Algorithms. Here are some of the most important ones:

  1. Arrays/Vectors/Lists: these are the most common ones. You could be given a simple array-based problem which would involve some logic to obtain the answer. For example, finding duplicates in an array, maximum continuous subarray sum, etc. These problems are most common not only in coding tests but also in interviews. Typically, the problems are easy and it should take you no more than 30 minutes to crack these type of problems, provided you have practised well. To get well-versed in this topic, aim to solve some 50 - 100 problems over a period of 1 - 2 weeks. At the end of this sprint, you will be familiar with almost all types of ad-hoc problems and you would be able to correlate a new problem with a problem that you’ve already solved. SPOJ, TopCoder, CodeForces, CodeChef, HackerEarth, etc. are all great problems to hone your skills in this section.

  2. Dynamic Programming (DP): this is the 2nd most common domain from which problems are quite common in Coding Tests. Problems from DP range from simple 1D array problems to complicated 3 dimensional DP problems. DP is easy provided you practise a lot of problems from it. The problems in DP mostly have a specific pattern which is easy to observe if you are able to break down the problem into sub-problems. There are gazillions of online resources on learning DP and practising DP problems. Topcoder has some great problems on DP. You can filter problems by difficulty level and start with the easiest one. Gradually, you can increase the difficulty. Basically, start with Div 2, level 1 and gradually proceed to Div 2, level 2 and then Div 1, level 1. For most interviews, it would be sufficient if you are able to solve Div 1, level 2 of Topcoder. Aim to solve no less than 30 - 50 problems on DP to get a firm grip over it.

  3. Trees and Graphs: this is another extremely common topic. Lots of Coding Tests involve problems from Trees and Graphs, particularly from Binary Search Trees. Problems could be as simple as traversing a tree in Depth-First Search manner and could be complicated involving DP in a Tree. You can use the above-mentioned resources to study Trees and Graphs as well. Solve a diverse set of 30 - 50 problems ranging across difficulty levels to master Trees and Graphs.

For Coding Tests, keep the following points in mind:

  1. Right at the beginning, skim through all the problems quickly to get an idea of the easy ones and the difficult ones.

  2. Start with the easiest problems first. Solving it will boost your confidence and you’d be able to do much better in other problems.

  3. If you get stuck in a particular problem for more than 5 - 10 minutes, skip it and move to other problems.

  4. Use the library functions heavily to arrive at a solution faster. No need to rewrite something which is already available as a part of the programming language.

 

Interview Round 1 and Round 2

In interview rounds, you are usually sitting 1 - on - 1 with an interviewer who would be asking you questions related to various topics. Questions could range from your likings and dislikings to the projects on your resume. You should, therefore, be thoroughly prepared for the same. Aim to prepare the following:

  1. Projects on your resume: the interviewer may be interested in certain projects on your resume and they would certainly want to know more about the project. In particular, they would be interested in knowing your contributions to the project. Therefore, you should be absolutely comfortable explaining your projects. The interviewer may ask you about the tools and technologies you used and you should also be familiar with them. For instance, if you did a Java-based project, the interviewer may ask you general questions about Java like Object Oriented Programming in Java, garbage collection in Java, etc.

  2. Interview problems: be prepared with 1 - 2 medium to tough level problems in which you would be asked to find a solution, explain it to the interviewer and implement it in the programming language of your choice. Most interviewers don’t really care which programming language you are using for the implementation, even if they are not very familiar with the language. However, C, C++, Python and Java are the recommended ones since most interviewers are familiar with at least one of these languages and so, can correlate better. Remember - your relative performance matters far more than your absolute performance. Most companies compare candidates and then choose the best one, rather than creating an absolute benchmark.

  3. General questions: some interviewers may ask you general questions related to you, your family background, your hobbies, likes and dislikes, etc. Be frank and open and do not hesitate. The objective of such questions is not to judge you, but rather to give you an opportunity to stand out of other candidates. For instance, if you talk about something interesting that the interviewer remembers, it would be a good plus point for you.

Often at the end of the interview, you may be asked a simple question - ‘do you have any questions to ask?’ Now, this is often quite tricky to answer. Here are some recommended answers:

  1. May I know your inputs about the areas where I could improve myself?
  2. What are some of the most challenging problems on which you work?
  3. What tools and technologies do you use at the company to perform X?

Generally, it is a bad practice to ask the interviewer ‘how did I perform in the interview?’. Remember, most companies evaluate you relative to other candidates and so, the question in itself is irrelevant.

Here are some great resources for Interview preparation:

  1. InterviewBit

  2. Cracking the Coding Interview

  3. Codeforces

  4. Hackerrank

Resume Building Roadmap

One of the most important steps in getting shortlisted for your dream company is to make sure that your resume clears the screening procedure. The resume screening is generally done by automated systems or the HR of the company, both of which look for ‘keywords’ on your resume.

In this roadmap, we will understand how to build an excellent resume that gets shortlisted almost in every company that you apply for.

Key Components of a Resume

The following are some of the key sections that you should put as a part of your resume:

  1. Education: This section should clearly mention your Institute’s name, City, Degree, Major, GPA/CPI and the year of your course beginning and end. Here is an example: Bachelor of Technology, Indian Institute of Technology, Bombay, GPA - 9.22/10.0. Computer Science and Engineering, 2013 - 2014. It is important that you mention the start and the end year. Recruiters always would want to know when you graduated so that they have an idea of your experience.
  2. Scholastic Achievements: In this section, you should mention your general scholastic achievements like your rank in Competitive exams, your achievements in Programming Contests (like ACM ICPC, CodeJam, etc.), any certificate of achievements that you may have won. Do not talk about ‘course-based’ certificates. Mention only general Scholastic Achievements.
  3. Internship Experience: This is a crucial section and you should take the utmost care when writing about your internship experience. Keep the following points in mind:
    1. Mention your internships in the chronological order only, the latest one being at the top.
    2. For each internship, mention the Internship Type, University or Company name and the City/Country. For example, Research Intern, TU Braunschweig, Braunschweig, Germany.
    3. For each internship, write 2 lines of description. The first line should talk about ‘what you did?’ and the second line should talk about ‘what tools and technologies you used?’ Mentioning the tools/technologies is very important because recruiters look for these keywords on your resume. So, if you have mentioned a Python-based Internship project on your resume, you are sure to catch the attention of companies that use Python as the programming language.
  4. Projects: This is another crucial section, much like the internship section. An important point that you should keep in mind is that you don’t really need to have a ‘certification’ for your project. Basically, even if you did an Android App based project on your own, you surely can mention it on your resume. No one is asking you for a proof of the project. In case an interviewer is interested in validating it, they will ask you some related questions, which is enough to give them an idea of your skill. For your projects, keep the following points in mind: 
    1. Mention in 1st line what you achieved as a part of the project. This is much like how you’d have done in the internship section.
    2. Mention in the 2nd line what tools/technologies you used to achieve what you did in the project. Again, this is similar to what you did in the internship section.
    3. Do not write detailed paragraphs about your project. No one is really interested in reading the details.
    4. At the very most, your interviewer may be interested in knowing more about a specific project that may be of interest to him/her.
  • Skills: Write skills in the order of your proficiency. Write those first in which you are most proficient. Do not write unnecessary skills like MS Word, etc. Focus on key skills - programming languages, frameworks, tools, etc. For example, Python, C/C++, Java, Web Development (Django), Android App Development, LaTeX 2ε, Bash Scripting, MATLAB, GNU Octave, Prolog.
  • Positions of Responsibility/Extra-Curricular Activities: For Software Jobs, this would arguably be the least useful section. Most companies do not care about Positions of Responsibility or Extra Curricular activities (talking only about Software jobs). You can, however, use this section to talk about your non-academic interests. Do not mention irrelevant skills. While you may be a great dancer, it would not be a good idea to put that on a resume which you are using to apply for Software Jobs.
Some other important points

Here are some important points that you should keep a note of:

  1. Do not mention any ‘Objective’ at the top of your resume. Employers simply hate it because almost all resumes have the same beaten-to-death Objective
  2. Do not make any typos or spelling mistakes on your resume. Get it proof-checked by at least 3 different people. While most employers do not judge you on your English/Grammar skills, a typo or a spelling mistake indicates carelessness, which of course, no one appreciates
  3. When you share your resume with someone, share it only and only in PDF format. Do not send Doc/Docx resume
  4. Do not mention irrelevant skills. For instance, if you are applying for a Backend Development Job, do not mention MS Word or Outlook. It would be counted as a negative point
  5. Do not mention any personal information on your resume. For instance, no need to mention your father’s name or marital status
  6. Do not add an attestation/certification statement at the end of your resume. Many students mention “I certify that the above information is true to the best of my knowledge” and add their signature. This is clearly irrelevant. This doesn’t add any value to your resume.
Resume format

If you are applying for a Software Job, it is recommended that you create a resume using LaTeX. There are some great LaTeX resume templates on Overleaf and Sharelatex. You can use any of them. A widely used template is Curriculum Vitae. You can alternatively use MS Word to build your resume. However, it is generally seen that correct spacing an alignment is quite difficult to achieve in MS Word than in LaTeX. In any case, it is just a matter of choice - if you are comfortable with LaTeX, use it or else, use MS Word.

Some great sample resumes:

  1. Shubham Goel from IIT Bombay has a great resume.??????
  2. Ashish Kedia has an excellent resume.??????
  3. Saurabh Gupta??????
  4. Rohan Jain??????
  5. Akash Trehan

Cybersecurity Roadmap

One of the fastest growing fields in Computer Science is that of Cybersecurity. The world is digitizing and today, we have more computers and smartphones than ever before. Large corporates have a lot of digital information and so, the security of this data becomes critical. As a result, they are investing heavily in data security.

This opens up a lot of job opportunities in the market for Engineers who are looking for jobs in a cutting-edge, fast-growing field.

In this roadmap, we will talk about the various domains of cybersecurity and how you can build a career in it.

This roadmap has been contributed by Nimit Jain from IIT Kanpur. Nimit works at a reputed Cybersecurity firm as a Senior Security Engineer. Surprisingly, Nimit is not from Computer Science - he has learnt it all by himself, setting up a great example for all those who are not from Computer Science, but want to build a career in the tech domain.

Cybersecurity is a broad domain and it can be classified into the following 5 subdomains:

  1. Web Application Securit
  2. Network Securit
  3. Android/iOS Security (Mobile Security
  4. Forensic
  5. Cybersecurity Training

For a beginner who has recently graduated from college and is looking to build a career in cybersecurity, the first 3 (Web Application Security, Network Security and Mobile Security) are great starting points. In fact, for those who have some prior experience of Cybersecurity in college, even Cybersecurity Training is a great opportunity. All 3 of them have common starting steps:

  1. Learn the basics of the Security domain as a whole to get a high-level understanding of all the concepts
  2. For Network domain, you should consider brushing up with the fundamental concepts of Computer Networks (TCP, UDP, IP, DNS, etc.
  3. For Web domain, you should be aware of the related terminology like Web Browser, HTML, JavaScript, HTTPS Request and Response, etc
  4. For Android/iOS, it is recommended that you have some prior experience (or a project) of mobile application development so that you have a better understanding of what’s happening under the hood.

Note that the above concepts have nothing to do with Cybersecurity. The above are all rather domain-related concepts where you are trying to first understand what is Web and how does it work before getting into the security of the Web.

Once you have a brief understanding of the domains, you can take an introductory Cybersecurity course on Cybrary. Cybrary offers some great courses on Cybersecurity in various domains and it is a great starting point for beginners. Aim to complete the most basic Pentesting course on Cybrary. As you get to know about various domains, you should try and see which one interests you and accordingly, you can choose to develop skills in that domain in order to get a job.

Among all the above 5 domains, the most demanded one is the Web. For web, once you’ve completed the above Cybrary course, you can start practising on various vulnerable machines that are available on Vulnhub. Another great resource is Hack The Box. Both are one of the finest resources available to practice your skills. A few of the machines available on Vulnhub from beginner's perspective would be DVWA, Metasploitable 2.0, Necromancer, and Kiotrix series. ctftime.org is another great platform, although Vulnhub and Hack The Box are recommended.

Talking about books, you may want to start with The Web Application Hacker's Handbook and Mastering Modern Web Penetration Testing. As you read books, try and apply those concepts in practice. Remember, the theory will help you just get started. However, applying your learnings to real-life scenarios is most important to develop your skills.

As a Cybersecurity aspirant, you should also consider learning some widely used Cybersecurity related tools. One of the must tool to master, particularly if a person is going in Web application pentesting or Android/iOS is Burp Suite. It is one of the best tools and most widely used across the globe by almost all hackers.

You should also read a lot of Cybersecurity blogs to get an idea of what’s going in the market. These blogs give you a perspective of activities happening in the rest of the world. You may want to refer Cybrary and other good blogs.

If you have time, you should consider attending Cybersecurity related conferences like NULLCON. Not only will these conferences help you improve your knowledge, but also they will help you in networking with other Cybersecurity experts.

To summarize:

  1. Take courses on Cybersecurit
  2. Read Cybersecurity related book
  3. Apply your learnings on machines available on Vulnhub and Hack The Box

Once you are through with the above, you can start reading reports on Hackerone which is a great platform for bug bounties. You can try your hands on real-life cases too. However, you should make sure that you are through with the fundamentals before you do that. In the beginning, this may seem tempting. However, such concepts are advanced and you may get demotivated if you skip the fundamentals

Interested in building a career in Machine Learning? You may want to read about our Machine Learning Roadmap as well

Roadmap on Programming for Beginners

Computer Programming today has become one of the most important skills in almost all domains. A basic course on Computer Programming fundamentals has been made a part of the curriculum of all colleges across all departments. Basically, every graduating student has to take a “CS101” course which is about the basics of programming.

Unfortunately, the way CS101 is taught in most colleges is not effective. This results in students losing complete interest in Computer Programming. Many students become afraid of Computer Programming and they want to stay away from it for life.

The reality is that Computer Science is easy and anyone can learn it, provided that the learning approach is correct. If you try to memorize things because your teacher told you to do so, then you are sure to lose interest. After a time, memorization becomes irritating. What students should really focus on is the right approach to learn Programming so that they can utilize it for various purposes.

In this roadmap, we have focused primarily on 1st-year college students who are new to programming and also on non-CS students who want to give a shot to it. The roadmap would be organized as follows:

  1. Choosing the Programming Language
  2. Learning the fundamentals of Programming
  3. Interesting Project ideas at the beginner level
  4. Things you can do next
Choosing the Programming Language

A lot of students are always worried about the programming language that they should use to start learning to program. Many in fact, argue on which programming language is the best.

The reality is that at the CS101 level, it hardly matters which programming language you start with. Your focus should not be on specifics of a particular programming language. Rather, you should focus on the most fundamental concepts which are by and large same across various programming languages. The differences are at the advanced level which you can always pick up later.

The most popular programming languages that are taught in various colleges are C, C++, Java, and Python. For instance, at IIT Bombay, C++ is the programming language that is used in CS101. Note that I have italicized the term “used”. It is because nobody really teaches C++. They teach the fundamentals of programming. C++ happens to be the programming language that they’ve chosen to teach the fundamentals. Similarly, at IIT Kanpur, they use C.

In quite a few colleges, Python has started picking up and gaining popularity. In fact, in a large number of online courses, Python is the primary programming language. Java is also popular in many institutes. In fact, as mentioned previously, you could choose either - it hardly matters at this stage.

Learning the fundamentals of Programming

The core objective at the beginner level is to learn the basics of programming and to get good at writing code in a well-known programming language of your choice. The following are some of the most important concepts that you should cover:

  1. Variable

  2. Constant

  3. Operators and computation

  4. If-else statement

  5. Loops - for loop, while loo

  6. Switch/case statement

  7. Function

  8. Classes and Objects

Computer Programming is like swimming - you need to apply it to learn it. You can’t learn to swim by watching someone else swim. You yourself need to dive deep.

For Python, Udacity has a great course on Intro to Python Programming. For Java as well, there is a course on Intro to Java Programming. For C/C++, you can check Udacity’s C++ for Programmers.

Taking one of these fundamental courses and implementing the programs and concepts that are taught is sure to give you a great first-hand experience of programming. In fact, even if you are from a completely non-technical background, these courses are easy to grasp and help you get started in the world of Computer Science and Programming.

Interesting Project ideas at the beginner level

Once you are through with a course on fundamentals of programming, you should certainly try and implement a basic project. It need not be too complicated. The key idea here is to recall all of the learnings of the course and assemble them into a project that you can not only learn from but also showcase on your resume. Here are some sample project ideas:

  1. A quiz game

  2. Student/Employee basic data management portal
  3. Hangman game
  4. Digital clock

The project should ideally be no less than 500 lines of code. Agreed that different programming languages have different syntax and so, the number of lines of code isn’t really a good indicator of the project quality. However, 500 lines is a good benchmark to aim for in any of the above-mentioned languages (C/C++, Java, Python).

You should create a basic document that talks about the concepts that you learned as a part of the project. That will help you to track your learning experience through the online course and also help you showcase on your resume.

Things you can do next

There are a huge number of things that you can do next. Here are some suggestions:

  1. If you are in the 1st year of college and you have vacation time, you can start learning Competitive Programming. SPOJ is a great problem-solving platform where you can apply what you learned in the above courses.
  2. If you are in the 2nd year of college, you might want to consider taking CS courses on Data Structures and Algorithms to further enhance your skills. We have talked about it in the Software Engineer roadmap Phase 2
  3. If you are a working professional who just started learning how to program, you may want to learn other tools and technologies like Web Development, Android Development, etc. We have talked about it in the Software Engineer roadmap.

Your focus should be on 2 things:

  1. Going deeper into what you learn
  2. Learning new concepts

You may want to check our Software Engineer roadmap which is meant to guide people like you in building a successful career in Software Engineering, right from 0 levels.

Conclusion
  1. While the choice of a programming language is important, at this stage, you can choose any and proceed forward

  2. You don’t really have to join an offline class to learn to program. There are tonnes of online courses from which you can learn at your home

  3. Focus on building fundamentals and right concepts
  4. Try and work on a project so that you can showcase on your resume.

We would love to hear your feedback and suggestions. Click here to provide your feedback so that we can improve the platform.

 

Roadmap on Machine Learning Internship

Machine Learning is one of the fastest growing fields. Top tech companies like Google, Facebook, Amazon, Apple, and Microsoft are investing heavily in Machine Learning. For students, it is a great opportunity because not only does it open new avenues for learning but also it creates a lot of high-paying jobs and internships which the students can grab.

In this roadmap, we will talk about a step-by-step guide on how can a normal student like you get a great Machine Learning/Data Science Internship at a tech company.

This roadmap would be organized as follows:

  1. Understanding the end objective
  2. Preparing the basics
  3. Picking up the basics of Machine Learning
  4. Machine Learning project ideas
  5. Building your resume
  6. Interview Preparation
  7. Reaching out to companies

Okay, so let us get started.

Understanding the end objective

First, you should understand your end goal. Your aim is to get a great Data Science/Machine Learning related Internship. However, you need to refine your goal under the following areas:

  1. Timing and duration of the internship: for how long do you wish to intern? Is it a 1-month long winter internship or is it a summer internship lasting for 3 months? Are you looking for a semester-long internship?

  2. Startup vs large organization: are you excited to work at a startup? Or, are you looking to join a large organization? The environments, stipends, working hours are all very different in a startup as compared to a large organization. You will have to plan accordingly on what suits you the best.

  3. Paid vs unpaid: are you fine with joining a great company where you believe that there is a huge learning potential, but may not pay you well?

The above factors are important to analyze before you start your preparation so that you can design your preparation strategy accordingly. Also, knowing the above parameters will help you refine the list of companies that you are reaching out to.

Preparing the basics of Computer Science and Programming

It is highly recommended that you are clear with the basics of Computer Science and Programming before you jump into Machine Learning. A lot of students start to learn advanced concepts without the preparation of the very basics of Computer Science. Such students eventually face difficulties because the implementation of Machine Learning algorithms requires great programming skills. Not being fluent in Programming will make you feel handicapped while implementing Machine Learning algorithms.

Therefore, before you dirty your hands with Machine Learning, make sure to revise/prepare the following concepts:

  1. Basics of Programming (the CS101 stuff): make sure that you are comfortable with at least 1 well-known programming language. It doesn’t matter if it is C or C++ or Java or Python or something else. If your concepts are right, it is easy to pick up any new programming language. Revise the fundamentals of loops, variables, constants, functions, classes and objects.

  2. Calculus: Machine Learning involves a lot of concepts from multivariate Calculus. Not knowing these concepts would make you feel that “ML is a black box” - which obviously you don’t want. Therefore, you should revise Calculus thoroughly. In particular, make sure you are familiar with the concepts of Differential Calculus. Coursera’s course on Mathematics for Machine Learning: Multivariate Calculus is excellent for picking up Calculus.
  3. Linear Algebra: Linear Algebra is heavily used in Machine Learning. Some algorithms like PCA involve heavy use of Eigenvalues and Eigenvectors. Most students take Linear Algebra lightly and skip the advanced portions. They eventually face challenges in understanding ML algorithms. Coursera’s course on Mathematics for Machine Learning: Linear Algebra is great.
  4. Probability and Statistics: You should be absolutely comfortable with the theory of Probability before you start Machine Learning. Probability and Statistics course offered by MIT OCW is something you should definitely give a try.

For Machine Learning, it is highly recommended that you use Python as the programming language. Python has excellent libraries for Machine Learning and it integrates well with quite a few web-frameworks. For learning Python, you can take Introduction to Python Programming course offered by Udacity.

Once the basics are in place, you would find it far easier to understand the concepts of Machine Learning. Having done the above, you’d be in a position to start with the core ML concepts.

Picking up the basics of Machine Learning

By far, the best known introductory course on Machine Learning is Andrew Ng’s Course on Coursera. The course is an excellent mix of theory and programming and would give you a first-hand experience at ML. There is just 1 major drawback - the course uses Octave as the programming language which for all practical purposes is not used in the industry. Most companies, including startups, rather use Python for ML.

But that isn’t an issue. When taking Andrew Ng’s course, you can parallelly implement the algorithms in Python as well. To start off with, you can use the Sklearn library in Python which is one of the easiest to learn and implement. Sklearn offers readymade implementations of a large number of Machine Learning algorithms.

Some of the key concepts that you should focus on as a part of the course are:

  1. Supervised vs unsupervised learning: a lot of companies ask basic questions on this topic during the interviews.
  2. Difference between Regression and Classification
  3. Backpropagation in Neural Networks

At the end of the course, you’d be able to implement Machine Learning algorithms on simple datasets which is quite good to grab an internship.

Machine Learning project ideas

As soon as you complete Andrew Ng’s course, one of the most important things that you should do is to aim for at least 1 decent project in Machine Learning. Putting a great project on your resume is sure to give you an edge.

Many students worry about project “validation”. You should understand 1 important point - most companies don’t care about the “validation” of your project. Basically, you need not necessarily show that you did the project under a professor. You can always take up a project on your own and put it on your resume. At the very most, the interviewer might want to verify if you are lying or not. They always have a simple way to check this - ask you questions. In fact, that’s what most interviewers do - they ask you questions about your projects that you have mentioned on your resume.

Therefore, having some great Machine Learning-based projects on your resume gives you a great opportunity to create that “story” in front of your interviewer. You can talk about how you implemented your project, the concepts that you learnt and the scope of improvement. These things help you stand out of your competitors.

To get some great project ideas on Machine Learning, you can visit Kaggle. Kaggle contains a large number of datasets on which you can implement your own algorithms. Google has also launched a repository of ML Datasets. Each dataset is a project opportunity for you.

There is also a great course by Eduonix on Learning Machine Learning by Building Projects.

While doing a project, focus on the following key points:

  1. How did you clean the data in the particular dataset
  2. Why did you choose a particular Machine Learning algorithm for that dataset
  3. What metrics have you used to evaluate the performance of the algorithm
  4. How does the performance get impacted if you use some other algorithm?

Basically, aim to create a 1 - 2 page long report which highlights these points. It would be great to carry a printout of this report during your interview.

Building your resume

The first step in cracking a great Machine Learning internship is to get your resume shortlisted by some top companies you are aiming for. Generally speaking, resumes are screened by recruiters of the company. Recruiters often do not have the technical knowledge and therefore, they look for “keywords” on your resume. These keywords are highlighted in the form of skills, projects and certifications.

For instance, under the skills section, you should mention "Machine Learning" and "Data Science".

Under the projects section, you can add something like this: implemented a Neural Network which predicts _____ with an accuracy of __%. The implementation was done using Sklearn library in Python.

Under the certifications section, you should mention any certificates that you may have obtained in Machine Learning. Obtained a certificate of Machine Learning course completion by Coursera’s Machine Learning class.

Interview Preparation

When preparing for the interviews, divide your preparation into 2 parts

  1. Preparing for Non-Machine Learning based interview
  2. Preparing for Machine Learning based interviews

It is highly likely that even if you are applying for a core-Machine Learning company, they will have a round of screening which evaluates you on your basic knowledge of Data Structures and Algorithms, Python programming, Operating Systems and related fundamentals.

The last thing that you would want is that after 3 months of Machine Learning preparation you are rejected during the screening round which has nothing to do with Machine Learning.

Therefore, preparation for non-Machine Learning based interviews and screening tests is equally important. To do so, you should aim for the following:

  1. Practice some simple implementation based problems, primarily on arrays, trees and Dynamic programming - these are most common in screening tests
  2. Revise the concepts of Operating Systems and a bit about Databases as well
  3. Recall all of the concepts involved in various projects that you’ve mentioned on your resume, by it ML projects or be it non-ML projects - remember, interviewers can pick up anything.

Often, the companies carry out a generic hiring process and then depending on the skills and projects mentioned on the candidate’s resume, they shift the candidate to a specific position (like Machine Learning Engineer Intern). Make sure that you are able to crack the generic hiring process by revising the concepts mentioned above.

For Machine Learning interview preparation, you should revise all the projects that you’ve mentioned on your resume. Besides, you should review Andrew Ng’s course quickly so that all the algorithms and related concepts are fresh in your mind.

Reaching out to companies

A great platform to reach out to startups and middle stage companies is AngelList. Create a proper AngelList profile, highlighting your education, courses, skills and most importantly, the projects in chronological order. Add a decent profile image. Recruiters tend to skip profiles without an image - often thinking it to be a fake profile. Add a professional photograph. Do not add a casual picture with your friends.

Now, you can use AngelList to filter roles and companies by location, and even skills. For instance, you can filter all companies that are hiring for Machine Learning or Data Science.

You should post about your projects on LinkedIn so that the audience can see your progress and potential recruiters can reach out to you. Make a decent LinkedIn profile and connect to recruiters of the companies that you found on AngelList. Drop them a polite message, attaching your resume

 

Dear X,

My name is Y and I am a 3rd-year Computer Science student at PQR college. I am glad to be connected with you on LinkedIn.

I am very passionate about the domain of Machine Learning and for the past 3 months, I have been working hard to develop my skills around it. I believe that your organization could be a great opportunity for me to improve my skills and at the same time, create value for your company by working on your backend Machine Learning infrastructure.

I would be glad if you could kindly consider my resume for a position of a summer internship for 3 months, starting 1st of May, 2019.

Looking forward to hearing from you.

Thanks and Kind Regards,
Y
B.Tech 3rd year
Computer Science and Engineering
PQR College

 

After a week or so, if they have seen your message but not replied, you could drop a gentle follow-up message something like this:

 

Dear X,

I hope you got a chance to see my last message. I was wondering if there is something else you need from my end which will help you consider my candidature.

Thanks and Kind Regards,
Y
B.Tech 3rd year
Computer Science and Engineering
PQR College

 

Aim to reach out to at least 10 - 20 decent companies. Assuming a success rate of 50%, you’d hear back from 5 - 10 of them for the interview.

 

Conclusion

Learning Machine Learning and cracking a great internship is easy. All that is needed is that you create a systematic plan and execute it. Unfortunately, Tier 2 and Tier 3 college students do not get much attention from the companies and so, if you are from one such college and are looking for a top internship, you should aim to differentiate yourself. Your resume and your skills should be that key differentiator. Aim to create a superb resume which will help you catch the eyes of the companies. Increase your visibility to recruiters by being active on LinkedIn and AngelList.

At CareerHigh, we will soon be partnering with companies and recruiters who would be able to recruit students like you who have successfully followed our roadmaps.

We would love to hear your feedback and suggestions. Click here to provide your feedback so that we can improve the platform.

If you are looking for a general Software Internship roadmap and the various types of Software Internships, you can check our Software Internship section.

Software Internship Roadmap

Introduction

With the rise of the tech startup ecosystem in India, the number of tech jobs and internships are at the peak. Today, a large number of companies hire fresh graduates from college because college freshers bring fresh thinking, they are quite agile and they can easily be molded into any domain.

College freshers should consider this as a great opportunity to grab through which they can enhance their Software Engineering skills and also get a flavor of how things work in the industry. In this roadmap, we will talk about how as a college student you can grab a great internship opportunity at a top tech company - be it a corporate, or a startup.

First, let us note 2 key points:

  1. Generally speaking, the opportunities are available for the following profiles - Backend Developer, Frontend Developer, Full-stack Developer, Machine Learning Engineer (or Data Scientist), Android/iOS Developer, etc.
  2. Most companies perform recruitment via a 3-step process - screening round, the first round of interview and finally, the second round of interview.

Now, let us delve deep into each of the above points.

Backend Developer

Any Web or Mobile based application today is generally connected to a cloud-based Backend and therefore, by knowing the nuances of Backend Development, you bring in a lot of knowledge on the table. If you have a decent exposure to Backend Development, you will certainly be eligible for a lot of companies, particularly startups.

There are many Backend Development frameworks in multiple programming languages. The choice of the Backend framework usually is driven by your proficiency in the underlying programming language.

  1. Java: Spring
  2. Python: Django
  3. JavaScript: NodeJS
  4. Ruby: Ruby-on-Rails (RoR)
  5. PHP: Codeigniter

So, if you are proficient in say JavaScript, you can start with NodeJS or any other related JavaScript framework. Other than the underlying programming language, the differences between these frameworks aren’t really significant at the beginner level. Note that for advanced features, the frameworks may differ completely. However, for beginners, either is fine.

Django, NodeJS and Ruby-on-Rails are quite popular in the startup world. Spring and Codeigniter are common among corporates. You can choose 1 accordingly.

You should note an important point - although it could be a big plus point to have knowledge of the framework that is used by the company where you are applying, it is not really necessary. For instance, a company who uses NodeJS as their backend framework would certainly appreciate the fact that you know Django and have demonstrated good projects in Django. A good company understands that problem-solving ability and the ability to learn new things are far more important than knowledge of a specific programming language or web framework and that smart students can pick-up any new skill in almost no time.

How to learn Backend Development in Python? 
Django Girls Tutorial is arguably one of the best tutorials for picking up Django. Django is a well-known Python-based Web framework. It is fast and easy to learn. Most importantly, Django is currently being used widely among startups and therefore, there is a huge market out there for Backend Development in Django. In fact, CareerHigh is also built using Django as the backend framework.

What should you aim for? 
To catch the attention of companies, you should aim for a decent project in Django. For instance, in the Django Girls Tutorial, the blog project is a great simple project that you can put on your resume.

Machine Learning Engineer

Machine Learning is one of the most common technology today in the market. It is relatively new and the best part is that Software Engineers who have knowledge of Machine Learning are being paid quite well. A lot of startups, particularly FinTechs are emerging in this space which creates a huge market out there.

Again, Python is one of the most widely used Programming Languages in Machine Learning. Google recently open-sourced Tensorflow, Google’s internal Machine Learning framework which is essentially a Python-based Machine Learning library that allows you to train your own Machine Learning models on custom data.

Machine Learning requires 3 key concepts as a prerequisite:

  1. Calculus: the entire domain of Machine Learning is about optimizing a function and so, Calculus is at the heart of it. A sound knowledge of Calculus, particularly Differential Calculus would help you understand the concepts of Machine Learning better. Coursera provides an excellent course on Mathematics for Machine Learning: Multivariate Calculus which primarily is focused on Multivariate Calculus - a topic that is extremely important in the Machine Learning domain.
  2. Linear Algebra: Machine Learning is all about data and the simplest way to store data is a matrix. Therefore, you should have a sound knowledge of Linear Algebra as well. Many Machine Learning algorithms, in fact, employ the concepts of eigenvalues and eigenvectors which are taught in Linear Algebra. Mathematics for Machine Learning: Linear Algebra is a great course on Linear Algebra.
  3. Probability and Statistics: every Machine Learning model is probabilistic in that you can never predict something perfectly. You will always have some form of “confidence” score about the prediction, which is usually measured in probabilistic terms. Therefore, it is important to have a deep understanding of Probability and Statistics to master Machine Learning. Probability and Statistics course offered by MIT OCW is a great course.

If you have studied any of the above topics as a part of one of your college course, you can probably skip it. Usually, all the above 3 courses are taught as a part of the 1st/2nd-year college curriculum.

Once you are done with the prerequisites, you can take a formal Machine Learning course online. Andrew Ng’s course on Coursera is the standard course on Machine Learning. The course teaches the fundamentals of various ML algorithms so that you can easily get a quick start. However, the course uses Octave as the programming language. As such Octave isn’t used in the industry. It is recommended that you use Python to program the algorithms taught in the course.

Another great course on Machine Learning which you can take as a follow-up to Andrew Ng’s course is the Udacity’s Intro to Machine Learning. The best part is that the course focuses on the application, which is good because Andrew Ng’s course is more theory oriented.

Finally, once you are through with the theory as well as the application portion of Machine Learning, you should consider a project-oriented course so that you can build resume points. Eduonix’s Learn Machine Learning by Building Projects is a great course for the same. The course will help you build some great projects which you can put under the “projects” section of your resume. You can also talk about the projects during your interviews.

If you enjoyed learning ML, you can try dirtying your hands at Kaggle which is a great platform for Machine Learning contests.

Android Developer

Almost any startup today that is consumer-facing needs a mobile application. The users spent most of their time on mobile and therefore, creating a great mobile application is important. This opens up a huge market for Mobile App developers. Android is one of the leading platforms which has a huge market share of mobile users. Therefore, Andoird App developers are high in demand.

Udacity’s Android app development course is excellent and it will teach you all of the basics of Android app development. Aim for 1 simple Android App development project so that your resume can pass the shortlisting process. Further, you can talk about the project during your interview as well.

Here are some suggested project ideas:

  1. Timetable management application
  2. Fitness tracker
  3. Weather application
  4. Music player
Resume screening process

If you are aiming for say, Android app developer internship, you should certainly try and get some projects on your resume. Many students worry about the “certification” of the project. The fact is that the interviewer doesn’t really care about the “certification”. The fact that you took an initiative to learn Android app development and you implemented a project, in itself tells the interviewer about your enthusiasm and learning capabilities. If they want to further verify it, they will question you about the details of the project which will make it clear to them if you are bluffing.

Obviously, a good GPA/CPI also helps a lot. However, don’t worry if your GPA is low. You can always make up for it through some great projects that align well with what the company wants.

Interview preparation

Usually, for internships, companies carry out a 3-step interview process:

  1. Aptitude and/or Coding test: aptitude test is focused around basic questions on aptitude and is meant to filter out bad candidates. Coding test, however, is different. In a typical Coding test, students are given 60 - 120 minutes of time and are given 2 - 5 problems with test cases. They are supposed to implement the solution and get all of the test cases right to get a score in that particular problem. SPOJ and Codechef are 2 of the most popular platforms for practicing such problems. Another great platform that you might want to consider is InterviewBit. Most problems are implementation based - usually from your CS101 or Data Structures course. However, some may be tricky as well. Some companies often do not take any Coding test.
  2. The first round of interview: this round of interview is about one-on-one interaction with the candidate to understand their college journey and see if they are a good fit for the organization. Generally, questions are asked around the projects, your courses, your skills and possibly your previous internships. Don’t forget to talk about the projects that you did which may align well with what the company needs. For instance, if you are applying for a company that uses Machine Learning, make sure to talk about your journey of learning ML and your projects. Most interviewers will often throw a problem at you and ask you to provide a solution and write code for it. Usually, you won’t really be writing the code in an editor. These interviews are pen-and-paper based and the interviewer is primarily evaluating your thought process and your approach. When you are asked to write code on paper, don’t write pseudo-code. Write as if you are typing the code on the editor to execute it.
  3. The second round of interview: this round is often with a senior person from the organization, particularly if you are interviewing for a startup or a small company. The round may be an extension of the first round where you may be asked to solve more problems. The purpose is to get a “go-ahead” by 1 more team member to make sure that you indeed meet the standards of the company. Again, like in the previous round - make sure to mention the projects that you did which are in alignment with what the company does/needs. This will give you an edge over your competitors.

A few pointers:

  1. Make sure that you have brushed up Data Structures and Algorithms.
  2. Revise all of your projects. If the interviewer throws a question about any of your projects and you are unable to answer, that’s a serious red flag.
  3. If you have mentioned about any past internship on your resume, make sure that you are able to answer most of the questions around it that the interviewer may ask.
Searching for Internship

Many students rely heavily on the Campus Internship procedure for getting an internship. In this digital world, that’s one of the worst things you can do to yourself. Companies today are open to hiring students from all institutes from across the country. Focus on building the right skills and you are sure to land up with a great internship.

Here are some great platforms that will help you in your search for an internship:

  1. AngelListAngelList is great for startup internships. You can filter startups by location, technology, domain, and many other parameters and approach those who are of interest to you.
  2. InternshalaInternshala is also quite well known. It is dedicated to internships only.
  3. LinkedInLinkedIn isn’t really an internship portal. However, many recruiters are active on LinkedIn and therefore, you should keep your LinkedIn profile up-to-date to catch their eye.
Summary

To secure a great technical internship, follow the following steps:

  1. Decide a domain of internship.
  2. Build the right set of skills for that domain by taking up online courses.
  3. Implement projects to develop your resume.
  4. Prepare thoroughly for the interviews.
  5. Market your resume to companies using internship platforms.

We would love to hear your feedback and suggestions. Click here to provide your feedback so that we can improve the platform.

Software Engineering Roadmap

According to the All India Council for Technical Education (AICTE), out of the eight lakh graduate engineers from technical institutions in the country, more than 60 per cent remain unemployed.

Only 7 per cent of the engineering graduates are employable.

These statistics are shocking and they lead to lots of questions about India’s Education system:

  1. Why are so many students unemployable?
  2. What could be done to help so that they become employable?

We, at CareerHigh, are a team of mentors and educators who have interacted with thousands of students to understand the cause of this problem. We realized that there was a common theme

  1. Most students who struggled to get a job were from tier 2 or tier 3 colleges.
  2. Quite a lot of students in these colleges are hard-working and motivated.
  3. Unfortunately, due to lack of proper guidance, they face challenges in getting a good job.

Students in most colleges are primarily dependent on their seniors for advice. The sad fact is that seniors are often not the best people to take advice from because most of them are themselves struggling in their career. Taking advice from such people only makes it worse for you.

In most colleges, students generally do not interact with professors outside of the class and so, they don’t get guided by professors either. At the college level, parents are usually not too qualified to mentor their children.

As a result, most students wander aimlessly on what is to be done about their career. Some try and pick up coding skills. Others prepare for GRE. Some others start with CAT preparation. The fact is that such decisions are usually uninformed and miscalculated. Students do things because their peers are doing the same thing.

At CareerHigh, our vision is to provide the right mentorship to college students and job freshers so that they develop the right industry skills leading to a great career.

As we all know that today, the Software Industry is one of the fastest growing industries. The industry is growing at a rate faster than ever and is creating a lot of employment opportunities. Due to this growth, a lot of people are trying to learn Programming so that they could also become Software Engineers and work at top tech companies to make hefty salaries. Today, there are gazillions of online resources on learning Programming - Mobile App Development, Web App Development, Machine Learning, Artificial Intelligence, Blockchain, AR/VR and many others. However, as mentioned above, most students do not have the right understanding of what to learn and in what order to learn.

For instance, we’ve seen that many students pick up Android App Development in the very first year of their college, without developing the basics of programming and problem-solving. This, of course, leads to challenges and eventually, students become demotivated.

Therefore, through CareerHigh, we plan to create a platform for the aspiring Software Engineers to pick up the relevant industry skills at the right time and at the right pace so that they can get the best jobs as per their potential.

By and large, all successful Software Engineers go through 4 phases of learning

  1. Learn to write code
  2. Learn probem-solving
  3. Crack the internship
  4. Get that Dream Job

At CareerHigh, we will help you progress through each of the above phases. By seriously following this roadmap, you’d be able to build the right set of skills that are required for the industry and end up with your dream job. The platform has been inspired by our Medium Blog post.

GET STARTED

?Let us now talk about how exactly your approach should be so as to achieve your goal of becoming a software engineer. Click on the relevant phase to start learning.