Study
  • About
  • Contact
  • Legal information

This website is not mobile friendly

Programming Fundamentals

A great way to start programming is 30 Days of Code From Hackerrank

It has 30 programming exercises with tutorials. Tutorials are in Java and in American accent. Start from the first exercise. Watch the turorial first and then try the exercise.

Data Structures and Algorithms

A great way to learn Data Structure and Algorithms is Data Structure and Algorithm from InterviewBit

It has topics arranged in the right order. Every topic is a must do to learn the next topic. I would recommend to do this in the same order as asked. For every topic they have tutorials and exercises.

Programming Paradigms

This course will give an introduction to all major programming concepts, techniques, and paradigms in a unified framework. Good resources for this are
Paradigms of Computer Programming – Fundamentals and
Paradigms of Computer Programming – Abstraction and Concurrency

Linux and Shell Programming

Most developers use a Linux-based operating system. Those who use something else are basically detached from rest of the world. It is really important that you learn using Linux Terminal. As a developer, terminal will be your best friend. Start by installing a Linux-based operating system. Popular ones are Ubuntu and Fedora. Ubuntu is the one being used the most, but I personally use Fedora.

Finish Introduction to Linux course
And do Linux Shell from Hackerrank exercises

Projects

Spend some time programming. You can a lot of cool stuff with programming. Do a bunch of personal projects, something that you find cool. After that contact your friends/peer and do a bunch of projects in groups.

Apprenticeship

This is how you will create a software development profile and be better at it. It is meant to give you enough practice to make you a good software engineer. Contribute to open source projects. You will be able to find a lot of open source projects to contribute on GitHub. Look at the projects which are accepted in Google Summer of Code and contribute to them. One other way is to work at a company as an intern. At this moment you do not care about money. The reason why you work is to get better at programming. Spend a reasonable amount doing apprenticeship, how about a year!

System Design

This has to do with how to architecture software systems as per the requirement. It is certainly helpful in becoming a better Software Engineer, but It is also something which is amphasized in interviews. As you apply for senior roles, you will face more and more System Design questions. I would recommend this to all, because most of the companies tend to ask on this subject to opening roles as well. So far this material has been helpful. We will keep this space updated as we find more.

Other helpful important subjects

You have to master the subjects listed above, but you should at least once go through these subjects. I would suggest you to do this along with your Apprenticeship.

- Object Oriented Programming in Java Here's an interactive tutorial
- Operating System
- Computer Networking (My personal favourite is Networks course from Stanford. They have explained it in a very simple way and have given good context by providing practical use cases and examples.)
- Assembly Language Programming
- Mathematics for Computer Science
- Parallel Programming
- Computer Security
- Database Systems
- Software Engineering

If you finish all the courses listed above, you can contact us and we will help you get an interview for an internship or a job at companies we are in touch with

500 400 300 200 100 1 2 3 4 5 6 7