As required by the CCE curriculum at the American University of Beirut, I am doing my 3 months internship at Electronic Transaction Systems Corporation (ETS Corporation) which is a company that is headquartered in Ashburn, Virginia. The company deals with credit card processing, merchant processing and ATM driving fields. Moreover, ETS provides solutions and software transaction platforms that enable merchants to have an integrated solution with all their processing needs. As I complete my third week at ETS this progress report aims to present what I have accomplished so far, the projects I am involved at, future and the list of learning experiences since the beginning of my internship.
Accomplished Tasks
First Day
As an intern at this company, I am working in a team consisting of other interns and full-time employees at the company. I started my internship on the 30th of May 2017. On the first day, I was introduced to the company and what it does. Later, I was introduced to the staff members and they showed me around. The same day, they set up emails and computers for the interns.
RESTful Web Services
In the next day and for the rest of the week, I was introduced to RESTful web services and to web APIs. RESTful web services are mainly used to build web services, where it consists of resources accessed by a common interface using HTTP methods (GET, PUT, POST…). Alongside, I was introduced to the representations of RESTful web services, the format, the messages shared between the client and the server using HTTP methods and the characteristics of these services. After doing so, I was assigned to do a basic mini-project. The project consisted of creating a simple web API application with ASP.NET Core, C# and Visual Studio and it was a direct application to what I learned about RESTful APIs, involving creating a toDoItem Object with several attributes, creating a database context for the application, and a controller which is an object that handles HTTP requests and creates the HTTP response. The same object needed to handle all CRUD operations. In the same project, I was introduced to Postman which is a tool used to send requests including Create, read, update and delete requests. I mainly used Postman to test the application.
Unit Testing
After finishing the first project, I was introduced to Unit Testing using Visual Studio. I was asked to follow a basic tutorial about this subject to fully understand the steps required to create a Unit Test using visual studio. Along the way, I was taught the sequence of steps needed to do correct testing which involve asserting that the anticipated result is the same as the actual result if we are seeking a positive result, or that the anticipated result is different from the actual result if we are seeking a negative result. And the last step would be to delete any changes we caused to the program. After fully understanding the basics of unit testing, we were asked to create unit tests in groups of 3 for the first project we created. We were required to create tests for all CRUD operations. To do so, we used the concept of sending HTTP requests using a C# library. For example, for the GET method, we first created a known object which is the anticipated item. Then we used HTTP POST to add the same item in a JSON format to the empty database. Then we used the GET method we initially created to fetch the item known by its ID, this would be the actual item. And then of course we would compare the anticipated item to the actual item. The same steps were done for PUT, POST, DELETE, and PATCH. The next task was to do a similar project with more constraints and more complex details. In groups of three, were asked to develop an Address book web application along with its unit tests. The learning outcomes of this project were to guarantee full understanding of the concepts of web APIs and unit testing, and to learn how to manipulate and serialize JSON strings that are used in the web app. Alongside, we learned Regex (Regular Expressions) to ensure that a user’s phone number and email follow a correct format. We experienced some errors in this project, so we learned how to successfully debug web applications.
Entity Framework
Our next task was to get familiar with Entity Framework. EF enables .NET developers to work with databases using .NET objects. I followed a tutorial and learned how to create models, and manipulate data including creating models and querying data.
Event Management Platform
After learning the requirements needed to start our main project, we were introduced to the brief of the project we’ll be doing. The project revolves around creating an event management platform, which will be used by ETS after it is completed. The event management platform is used by merchants and business owners to easily manage their events and social gatherings, plan them from A to Z, invite people and create pricing modules and ticketing all in one place. Many interns will be working on this project. Thus, the work will be divided among us each according to their expertise. First of all, we were asked to get familiarized with the REST API style guides of both PayPal and Microsoft using two tutorials. The next task was to create the UML of the project, individually, after our supervisor Erik Zettersten provided us with a sample design of the web application (How it might look like with all its functionalities). After everyone created a UML, we gathered together, and reached a unified UML after negotiation between all interns in the group. Consequently, we also agreed on the naming conventions of the objects we are going to implement along with their attributes and methods. After that we agreed on the URL paths that we’ll be using, using PayPal’s & Microsoft’s naming conventions. We also came up with a style guide which will be used in the implementation of the actual API. The next day, we designed the event’s REST API outline, which included the following steps: Defining all the routes, describing each route along with the HTTP verbs available. Then we defined all route’s input models, which are the request models. In addition, we continued the design steps by writing the JSON string representation of the objects that will be used in our project. We also wrote the style sheet associated with such project that includes general information about the errors format, and general attributes of the header.
Reviews & Testing
In the last 2 days of the 3rd week, the company’s CEO Edward Vaughan asked us to do individual testing of the company’s websites and apps. First, we evaluated the company’s different websites, to detect bugs if there are any, and to give general comments about the design of the websites. Secondly, we tested the version of the ETS EMoney app that is currently available on the App Store and Google Play. I tested the app on my android phone, and recorded the bugs and the technical problems I faced. Finally, we were asked to test the updated version of the app that is currently still under development. We were asked to report the bugs using Jira which is an issue tracking software.
Future Tasks
In the following weeks and for the remaining part of the internship, I will be working on the event management platform along with the other interns. We will start coding from scratch. The API of the application is expected to be finished in one month. During this stage, we will be divided into multiple groups each according to their skills. Some people will work on Android, others will work on iOS and the rest will continue working on the event management platform.
Conclusion
In conclusion, what I learned at AUB helped me fit in immediately in the work place atmosphere, and the courses prepared me well to deal with the requirements of a workplace. So far, my skills in C# and web development were enhanced, and I learned the steps of creating software solutions. The employees are always willing to answer our questions and guide us in case we have misconceptions about certain ideas.