Back-end Internship Program

Launchpad: Elevate Your Career with Our Internship Program!

Welcome

In front of you, there is a path to a great journey. You’ve decided to take the course of your career into what is known as product development and craftsmanship. We are looking forward to this challenge as a test of your abilities and character strengths.

We wish you a great start. Stay sharp, healthy, and happy.
Don’t forget to chase your dreams since “Time is what we want most, but what we use worst”!

Marjan Nikolovski
CEO, Founder


“We don’t get a chance to do that many things in life, and every one should be really excellent.”

Marjan Nikolovski,

Founder, CEO of EMIT KNOWLEDGE

Program

Phase 0 – between two weeks and a month

You will focus on solving 100 exercises on Code Wars.
Please register a new account and start solving the problems with KATA levels 3, 4, and 5.

1. Don’t cheat by looking at the solutions, we will discuss your solutions to the problems at the end of the phase.
2. All of the solutions to the tasks should be put on GitHub. As a note, please commit all changes to a solution on GitHub, not only the final working ones.  

Expected results

– Improve problem-solving skills and solution discovery mapping;
– Get familiar with the language(C#);
– Learn about variables, looping, conditions, arrays, matrices;
– Learn the basics of data structures;
– Learn the basics of GIT based source control;

Phase 1 – between one month and one and a half month

Congrats on making it through Phase 0. It is a great accomplishment you should be proud of!

In Phase 1, we will focus on learning the fundamentals of back-end development including:
– Object-Oriented Design;
– High-level Domain Driven Design;
– Project setup;
– Three-tier architecture as a primitive example of code organization;
– Application configuration;
– Cookie-based user authentication;
– Dependency injection;
– Memory caching;
– Application logging;
– Exception handling;
– Application localization;
– Development of background services;
– Development of API and exposing API documentation via Swagger;
– Unit testing;
– SQL;

SQL Server Internal – guideline for relational databases engines
If you ever wondered how the database works, this video lecture will give you answers to all of your questions.
– https://www.youtube.com/watch?v=34VqSliEfsc;

How the browser and HTTP protocol works
Before writing a single line of code, first, you need to understand what is happening when you open an URL in the browser. How the browser behaves, what the underlying actions are done for you to see the page, rendered, in the browser.
Please view the referenced video examples below for more details.
https://www.youtube.com/watch?v=hJHvdBlSxug
https://www.youtube.com/watch?v=iYM2zFP3Zn0

Expected results

– Understand the concept of how the browser is exchanging data with the webserver;
– How the HTML, CSS, and JavaScript are parsed and rendered;
– The browser pipeline from typing an address to showing the content to the user;

Object-oriented design and high-level domain-driven design
As long living concepts in the industry it is always good to remind of the basics.
Please view the referenced video example below for mode details:
– https://www.youtube.com/watch?v=m_MQYyJpIjg
– https://www.youtube.com/watch?v=HyQlCMU_Ylw

Problems to tackle

Expected results

– Understanding the basic concepts of object-oriented design;

SQL 
For this topic, you will need to download and install SQL Express and SQL Management Studio. 
You are going to work your way up on solving the SQL coding challenges for beginners.

Problems to tackle

Solve the problems and upload the solutions to Github
https://github.com/rradfar/sql-coding-challenges

Create an ER Diagram for UBER alike application.
– The model should support drivers, users, route, user reviews, driver reviews, payments;
– The model should offer a solution for route discovery from point A to point B;

Expected results

– To understand how communication works from the browser to the web server and from the webserver to the database;
– To be fluent in solving easy SQL challenges;
– To be able to model a database based on provided requirements;

C#/.NET5 
This topic will be mostly hands-on, where you will learn how to plan, model, and implement a Calendar Management application.
The client asked us to implement an application that will satisfy the following requirements:
 
FR1: As a user, I would like to be able to register and login into the application;
FR2: As a user, I would like to be able to request a password reset. Once initiated I will receive an email with a link. When clicking on the link, I will be asked to type a new password;
FR3: As a user, I would like to be able to update my profile including Name, Email, Password;
FR4: As a user, I would like to be able to create different calendar events:
– Daily (every: 1, 2, 3 .. N days, until Selected date or infinite);
– Weekly (every: 1, 2, 3 .. N weeks, until Selected date or infinite);
– Monthly (every: 1, 2, 3 .. N months, until Selected date or infinite);
– Yearly (every: 1, 2, 3 .. N months, until Selected date or infinite);
FR5: As a user, I would like to be able to add a title, description, add additional emails to who should get the event reminder;
FR6: As a user, I would like to be able to set an event reminder frequency(daily, every three days, weekly). The reminder will be sent until the event is dismissed;
FR7: As a user, I would like to receive an email when a calendar event occurs.
FR8: As a user, I would like to be able to see who has opened up the email.
FR9: As a user, I would like to be able to see the upcoming events;
FR10: As a user, I would like to be able to cancel an event from the calendar;

Problems to tackle

Create a domain model from the requirement;
Create a three-tier project that will separate the models, business logic, data access, and presentation layer;

Identify the places which can be set in the application configuration.
– Ex: Connection strings, Email sending configuration;

Research and investigate cookie-based authentication in .NET8;
– Bonus points: Implement Login with Google;
https://docs.microsoft.com/en-us/aspnet/core/security/authentication/cookie?view=aspnetcore-8.0;

Try to decouple the hard-coded dependencies by implementing dependency injection:
https://docs.microsoft.com/en-us/dotnet/core/extensions/dependency-injection
https://www.youtube.com/watch?v=tTJetZj3vg0;

Cache and maintain the events for which we need to send a reminder today;
– https://docs.microsoft.com/en-us/dotnet/core/extensions/caching;

Implement exception handling to control the error boundaries and log all of the exceptions that occur in the system;
https://docs.microsoft.com/en-us/dotnet/standard/exceptions/best-practices-for-exceptions;
https://nlog-project.org/;

Add support for application localization to support multiple languages, starting with English
– All resources(Email messages, error messages…) need to be added to resource files. Hard-coding strings need to be avoided;

The email reminders need to be sent via a background service:
https://docs.microsoft.com/en-us/dotnet/core/extensions/windows-service;

The business processes need to be exposed as REST API with Swagger documentation;
https://docs.microsoft.com/en-us/aspnet/core/tutorials/web-api-help-pages-using-swagger?view=aspnetcore-6.0;

Verify the business processes by writing Unit tests;
https://docs.microsoft.com/en-us/dotnet/core/testing/unit-testing-with-nunit;
https://www.youtube.com/watch?v=HYrXogLj7vg;

Expected results

– Being able to develop a web application using .NET8;
– Learn the basic principles of professional software development;

Phase 2 – between two weeks and a month

With a great pace, we are coming to the last phase of the internship.
We hope that by now, you are skillful enough to develop simple web applications that can further improve your skill.

To increase productivity and achieve standardization, this phase will be focused on learning our framework Signals.
​To learn more about Signals, please visit the following link: https://signals.emitknowledge.com/.

Problems to tackle

– Rewrite the Calendar management using Signals;

Expected results

– Basic understanding of Signals;

Apply for internship

We’re on the lookout for bright minds to join our internship programs.
Don’t hesitate to share your CV with us, as we’d love to consider you!

Scroll to Top