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
c. User experience process
d. Guidelines for design
e. Project – Geico website wireframing
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 -
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
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-
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
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
d. Box model
h. Designing forms
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
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
h. Using a prebuilt bootstrap template
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.
c. React Js
d. Angular Js
e. Vue Js
In this course you will be learning –
a. Basics of javascipt
b. Flow control
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
c. Control structures
e. Classes and objects
And in each framework course you will be learning about –
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
o. Capstone project
|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|
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
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.
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
>>Softwares for Simulation
1. Tina T.I
• 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
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
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.
>>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.
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.
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
>>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!
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 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.
(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.
(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
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.
Analog Design Engineer
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:
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.
So, your aim should be to learn about the most important pillars of entrepreneurship mentioned above. Here are some more details about these pillars:
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.
Here are some basic terms that you should keep in mind while starting up:
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 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:
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.
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.
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:
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 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.
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.
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 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 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.
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.
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:
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.
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.
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.
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:
We would recommend the following circuits to understand these components and improve your skills at circuit designing and analysis.
Clap Switch Circuit using Mic Condenser
Light Sensing Circuit using LDR
Seven Segment Display Counter(0-9 & 0-99 both)[Using NE555]
Standard Logic gates using TTL or RTL technology(NOT, AND, OR)
Intruder Alert Alarm using Arduino
Seven Segment Display Counter Using Arduino[0-9 only]
DC Motor control using L298N and arduino
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 .
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:
Reference: Radio Electronics
Reference: Digital Communication Course by Dr. Bikash k. Dey on NPTEL
3. Analog & Digital Communication by Simon Haykins
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:
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)
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.
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.
Department of Electronics & Communication, NIT Bhopal
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.
Look at the image below. As can be seen, there are 2 parts to it:
A Frontend which comprises of Laptop, Android and iOS device
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.
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:
HTML: the language that renders the content of the frontend.
CSS: the language that is used to beautify the content.
JS: the language that is used to bring interactivity to the content.
The Backend is where the real magic happens. A backend typically consists of the following 3 components:
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.
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.
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:
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.
Ruby on Rails: Ruby on Rails is another popular Backend framework, quite common among startups. It uses Ruby as the Backend programming language.
Laravel: Laravel is an MVC (Model-View-Controller) based Backend framework that uses PHP as the programming language.
Spring: Spring is a Java-based web framework used largely in enterprises.
Let us consider Django as the Backend framework (Python). The following could be a typical setup:
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.
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?
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.
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.
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:
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.
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:
Problems on Arrays and Vector:
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.
Questions on Mathematical Programming:
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.
Problems on Strings:
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.
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).
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.
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.
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.
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.
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.
For more information on Algorithms refer to this link: https://www.geeksforgeeks.org/lmns-algorithms-gq/
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:
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.
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.
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!
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:
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.
Interview Round 1: the objective of the Interview Round 1 is to assess the basic programming and problem-solving skills of the candidate.
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 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:
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.
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.
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:
Right at the beginning, skim through all the problems quickly to get an idea of the easy ones and the difficult ones.
Start with the easiest problems first. Solving it will boost your confidence and you’d be able to do much better in other problems.
If you get stuck in a particular problem for more than 5 - 10 minutes, skip it and move to other problems.
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.
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:
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.
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.
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:
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:
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.
The following are some of the key sections that you should put as a part of your resume:
Here are some important points that you should keep a note of:
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:
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:
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:
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.
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
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:
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.
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:
Operators and computation
Loops - for loop, while loo
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.
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.
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:
A quiz game??????
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 learnt 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.
There are a huge number of things that you can do next. Here are some suggestions:
Your focus should be on 2 things:
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 level.
While the choice of programming language is important, at this stage, you can choose any and proceed forward
You don’t really have to join an offline class to learn programming. There are tonnes of online courses from which you can learn at your home
We would love to hear your feedback and suggestions. Click here to provide your feedback so that we can improve the platform.
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:
Okay, so let us get started.
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:
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?
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.
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.???????
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:
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.
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.
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:
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.
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:
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.
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.
When preparing for the interviews, divide your preparation into 2 parts
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:
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
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,
B.Tech 3rd year
Computer Science and Engineering
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:
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,
B.Tech 3rd year
Computer Science and Engineering
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.
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.???????
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 moulded 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 flavour 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:
Now, let us delve deep into each of the above points.
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.
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 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:
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 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 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.
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:
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.
Usually, for internships, companies carry out a 3-step interview process:
A few pointers:
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:
To secure a great technical internship, follow the following steps:
We would love to hear your feedback and suggestions. Click here to provide your feedback so that we can improve the platform.
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.
These statistics are shocking and they lead to lots of questions about India’s Education system:??????
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
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
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.??????????????
?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.