Expanded Definition of API

TO:              Prof. Ellis 

FROM:        Michael Vanunu

DATE:         Oct. 27, 2021

SUBJECT:   Expanded Definition of API (Application Programming Interface)

Introduction

The purpose of this document is to explain the meaning of an API for what it is and what its used for. The term “API” stands for Application programming interface. The way I will be explaining and defining it is by what it does and how it is implemented into our daily lives. An API has many different forms it comes in, but it essentially has the same job and results for when and how it is used. How we will be looking into this definition of API will be through the lens of how they are designed and what it comes with. There is a lot to investigate when it comes into those things which I will be going through in this expanded definition.

Definitions

The first definition I will get into comes from the Oxford English Dictionary, which goes like this, “Computing application programming (or program) interface, a set of routines, protocols, and tools designed to allow the development of applications that can utilize or operate in conjunction with a given item of software, set of data, website, etc.” [1]. What it is saying is that there is a process that must be followed to achieve the goal of the API, which is designed to develop and utilize itself with what its tasked to do. Examples of which it mentions are software, data as well as websites but there are more instances.

The second definition I will get into comes from the Meriam Webster Dictionary. The definition from them goes like this, “a set of rules that allows programmers to develop software for a particular operating system without having to be completely familiar with that operating system” [2]. This definition, from the Meriam Webster Dictionary, is more precise into its definition of it. What this definition is saying is that an API’s means is to make things easier when two set of things need to communicate, it’s like a middleman that makes things easier for both parties in a sense. An example for this one would be, for example, how a GPU driver and a Game Engine need to communicate with each other. For them to communicate they would need to be programmed and configured in very specific and certain ways just so they can work with each other, which would be a lot of extra and unnecessary work. You can imagine how hard this would be if every single thing, or games in this example, has to be programmed in a very specific way just so they can work together but that is where the API comes in and makes our lives easier. The API becomes our middleman which can connect the two without having to go through a ton of extra rigorous work. This is why API’s are very important and crucial in our lives, they are used for a lot of things we use on a daily basis.

Both definitions are idealistically the same. The difference between the two that are given is that the first one, from the Oxford Dictionary, is saying it’s a set of things that need to be done to develop and utilize the use of itself (The API). The second definition I gave, from the Meriam-Webster dictionary is that it’s talking specifically about how programmers can develop things easier because they have an API as the middleman to help with what they are trying to accomplish. Both are similar in a sense that they are saying that an API is used to connect things that need it to achieve what the user sets out to do. Where the definitions differ from these two dictionaries is that one is broader, and one is more specific. A programmer is more likely to use the Meriam-Webster definition whereas the everyday person may use the Oxford definition.

Context

A quote from the e-book API design for C++, “The important underlying concept is that an API is well defined interface that provides a specific service to other pieces of software.” [3, Pg. 1]. This quote is bringing up the fact of how the API is being a specific service for other pieces, that is what its job is, to connect pieces more easily and make things easier for us in day-to-day life.

A quote from another e-book called Enterprise API Management, “Long story short, APIs become products in their own right and thus require the same level of design thinking, ongoing attention, and evolution as other business products.” [4, Pg. 87]. This quote talks about a way an API is used and explained. An API requires as much design thinking, attention and evolution as most products do in order to be successful.

Working Definition

The working definition for the API is that it is used to connect things together through an easier means to save a lot of time and work. The way an API is related to major is that it is a possible type of thing I may have to be a part of coding one day or it is even a part of the programs I use in order to code and run the codes. API is used every day by almost everyone, it is a big part of our life and society.

References [Heading Level 2]

[1]        “API,” in Oxford English Dictionary, 3rd ed. Oxford, UK: Oxford Univ. Press, 1975, def. 1. [Online]. Available: https://www.oed.com

[2]        “application programming interface,” in Meriam-Webster Dictionary, 11th ed. Springfield, MO: Merriam Webster, 1968, def. 1. [Online]. Available: https://www.merriam-webster.com

[3] R. Martin, API design for C++ 1st ed., Boston: Elsevier/Morgan Kaufmann, 2011.

[4] W. Luis, Enterprise API Management, Birmingham, England: Packt Publishing, 2019.

500-Word Summary of Computer Science Education

To: Prof. Ellis

From: Michael Vanunu

Date: Sept. 21, 2021

Subject: 500-Word Summary of Computer Science Education

Computer science and technology have been developing well over time, this has instantiated multiple computer science courses. These courses can lead to problems which a new student wouldn’t be able to obtain reasonably. This will lead to future problems without assistance of people with more experience and knowledge on the subject.

More systems were developed to solve the problem. People like Chanyan Nuntwawong, Karim Hadjar, Antonio Maffei, and others have tried to fix the problem by presenting their ideas throughout the years.

The paper explains how a computer course can help fresh learners explore reasonable and appropriate curriculums.

The design of OSCCA has five basic steps, “Including data collection, data preprocessing, construction Ontology, establishing reasonable rules and implementing the system” [1, Sect. II]. For the first part, knowledge and unit’s points are being collected from the data that includes courses and universities as well as the likes of those places and locations to provide the best data possible. The second step is a very crucial one. The raw data is going to be processed into NLP, which stands for, Natural language processing. This is going to be a very rough processes that uses Apriori algorithm and things alike. The third step will include the interrelationships of the data collected that will be applied to an ontology. The fourth step defines the four reasoning rules that are important to the whole thing. The fifth and final step is to build a website using java that can provide great and available services for people who are new to learning computer science.

Datasets for the course are being collected through internet information as well as college curriculums. A python spider package named scrappy is used to fetch information for the course. “The course datasets consist of courses, units and knowledge points” [2, Sect. III]. These are the points that “Scrapy” fetches to make the best possible outcome for new students trying to learn.

The analysis and the terms of relationships are analyzed by how each item will be defined. NLP is used to detect and extract the best and contributed items. The Apriori algorithm is used in here again. Apriori algorithm will be solving the frequent items as well as the set problems to assist databases.

Computer courses are increasing at a rapid pace. The courses provided by many courses are independent. Newer learners of the computer science field might be confused by a lot of unneeded and unnecessary information. The solution to the problem is the course for OSCCA (a course ontology stem for computer science education is developed).

Y. Wang, Z. Wang, X. Hu, T. Bai, S. Yang and L. Huang, “A Courses Ontology System for Computer Science Education,” 2019 IEEE International Conference on Computer Science and Educational Informatization (CSEI), 2019, pp. 251-254, doi: 10.1109/CSEI47661.2019.8938930.