Thursday, September 29, 2016

Data Structures

In the world of Computer Science, a Data Structure is a basic way of organizing amounts of data in a computer so that it can be used efficiently. The structures of data can implement one or more particular abstract data types (ADT), these specify the operations that can be performed on a particular structure and also the computational complexity of those specific operations. When compared, a data structure is a concrete operation specified and provided by the ADT.

Different kinds of structure of data are suited to different kinds of applications of usage. Others are highly specified to do specific tasks. Data structures provide a mean to manage large amounts of in order to have databases and internet indexing services which are basically methods of indexing website content and webpage content. Efficient data is critical in certain efficient algorithms. Data structures can also be used to organize the storage and retrieval of most information stored in main memory and secondary memory.


There are several types of data structures who are generally built on top of simpler and more primitive data types.
  1. An array is a number elects in specific order, usually all the same type
  2. A linked list is a linear collection of data elements of any type
  3. A record is a value that contains other values, it is an aggregate data structure
  4. A union is a data structure which specifies what number of permitted primitive types are allowed to be stored
  5. A class is a data structure that contains data fields, as well as methods which operate based on the contents of the record. It is usually used in the context of object oriented programming, where records are known more as old or plain data structures to distinguish them from specific classes.

    Most programming languages feature some sort of library that allows data structures to be reused by different programs. Examples are C++ Standard Template Library , the Java Collections Framework, and Microsoft's .NET Framework.


    References:
    https://en.wikipedia.org/wiki/Web_indexing
    https://en.wikipedia.org/wiki/Data_structure
    http://venus.ifca.unican.es/Rintro/_images/dataStructuresNew.png
    https://www.cs.rochester.edu/u/brown/172/pics/data_structures_01.jpg


Friday, September 23, 2016

The Turing Machine

The Turing Machine utilizes a set of rules to manipulate symbols on a strip of tape, to be more precise it is a mathematical model of computation at the core of its function. It is also called an abstract machine which is a theoretical model of a computer. It was created by Alan Turing, the father of Computer Science. The machine is simple but it can simulate any computer algorithm logic.

The turing machine is is the general example of the modern day CPU(Central Processing Unit) which controls all data manipulation by the computer. It is basically capable of enumerating any arbitrary subset of any valid string of an alphabet, also these strings are part of a recursively enumerable set. Any turing machine that can simulate another turing machine is known as a UTM or a universal Turing machine. Through these abstract properties, many insights can be yielded into Computer Science and complexity theory.

The turing machine consists of a tape, which has divided cells, with each one next to the other. The second is head which can read and write symbols on the tape and also move the tape right and left one. The third is the state register, which basically stores the state of the turing machine. The fourth is a finite table of instructions which with given information can assign a sequence of things to do.

Alan Turing created the equivalent of the modern day computer, with brilliant accuracy. There have been many machines that have tried to copy the turing machine, most are within its capabilities but they utilized steps and hardware that was first used by turing himself which makes him the first to do it. Turing created computer science and therefore started a wave of one of the most important industries that exist today.
References:
https://en.wikipedia.org/wiki/Turing_machine
https://en.wikipedia.org/wiki/Abstract_machine
http://www.aturingmachine.com/turingFull560.jpg
http://oldblog.computationalcomplexity.org/media/turing-machine.jpg

Friday, September 16, 2016

Robotic Software

Robots have been around for many years and continue to amaze us with the capabilities and operations they can perform. We never really realize how much work it takes to make a stationary object begin to move and perform tasks.

This is where robot software comes along. It is probably one of the most important pieces to creating a fully functional robot. The software uses a set of coded commands or instructional material that tells a robot what to do and when to do it. Due to the unlimited possibilities of coding, there are software systems and frameworks that make programming robots even easier. Some robotic software even aims at creating devices that are intelligent. Some of the tasks these devices can perform are feedback loops, control pathfinding, data filtering, and locating.

Software utilized to control the robots consists of a set of instructions and data objects, known as program flow. For example, Go to Jig1 is an instruction for the robot to a positional data named Jig1.
Below is an example of a plain english coded set of instructions describing what each task means.
Example code: Move to P1 (a general safe position)
                         Move to P2 (an approach to P3)
                         Move to P3 (a position to pick the object)
                         Close gripper
                         Move to P4 (an approach to P5)
                         Move to P5 (a position to place the object)
                         Open gripper
                         Move to P1 and finish
Most of these instructions have a start and a finish. The instructions coded by the programmer have to be very specific because a robot is just like a computer, it does not understand implicit commands. Implicit commands can lead to errors, and in the case of robots in factories which are large in size size and move fast, it can even cause severe injuries. So all strings of code are pre-checked before they are finalized and programmed to the robot. 
While this is just a small piece of information on this topic, it gives you a good idea about how robots work and the process it takes to program them correctly. This occupation is one of the hardest still to 
work in because most workers have to be well versed in Electrical Engineering, Mechanical Engineering, and Software Engineering to be able to work in this industry of robotics.
References:
https://en.wikipedia.org/wiki/Robot_software
http://images.mentalfloss.com/sites/default/files/styles/article_640x430/public/113252131-565x376_6.jpg
http://www.ciros-engineering.com/fileadmin/Templates/CIROS/IMG/articles/Roboterprogrammiersprache_RAPID.jpg

Friday, September 9, 2016

Java vs Javascript: Similarities and Differences

What is the exact difference between Java and Javascript? Well they are both very similar, but it depends on what you are using them for and what your preference is when it comes to programming.

First, java is an Object Oriented Programming or (OOP) created by James Gosling of Sun Microsystems. Javascript is a scripting language created by Netscape and used to be called Livescript. Both languages are distant cousins of each other, and both are OOP languages. Javascript is just less complex and contains simpler commands. It is overall easier for the average programmer to understand.

So what does OOP mean? It is actually relatively new term and means the sum of the parts of a program that make up the whole. An example would be like a car. First you have the engine and many other parts. Each part plays a vital role in creating the whole car. You need the engine, the seats, doors, etc. Without every part, the car will not work. Both java and javascript are like this, they have several parts that make the language and the program that is made, using either java or javascript. The most important part is that each part is in its own class, meaning you can't just mix stuff. Just like you can't have the steering wheel on the engine of the car, the same goes for java and javascript. There are a certain class of parts that go together to make the whole product. So the main point here is that when using these languages, you must use several classes of commands to create the whole program or operation that you're trying to accomplish.

Now for how they differ. The main difference is that java can stand on its own when programming. Where as javascript must be placed inside an HTML document to function. Java can create standalone applications, and is very powerful for applications. Javascript has to be fed into a text browser to function. Java is also used in mobile devices and does not require HTML to function. So it is really about opinion and preference. Java has slightly harder operations, and javascript just has extra steps to do some functions that java can do on its own. 

Javascript's main benefit is that it can be understood by the average human. It is generally more forgiving than java. Java requires every action to be denoted and spelled out correctly down to the smallest details. Javascript is geared to making web pages, while java is used mostly where it is really required for something to run. In conclusion, both languages are great for making a computer do some very cool actions. Both will create awesome web pages, both can also offer the user the opportunity to interact with a webpage. But java and javascript were by no means created equally. Just like all the other languages for programming, each language was made with a certain special skill that another language can't do as well. So it all comes down to preference and what language suits you best. 
References:
http://www.javatpoint.com/images/javascript/javascript_logo.png
http://www.htmlgoodies.com/beyond/javascript/article.php/3470971
http://blog.newrelic.com/wp-content/uploads/javalogo.png

Friday, September 2, 2016

The Development of Apple's iOS

iOS, originally called iPhone OS, is the operating system on Apple's handheld devices like the iPhone, iPad, etc. The first version of the operating system was released in January 9, 2007.

iOS was programmed using C, C++, Objective-C, and Swift, all programming languages. C is a general purpose programming language and is used for supporting the Unix System, which is similar to the system used in iOS, called Unix-like. Unix-like behaves like the Unix System except it is not within the confines of the unix system standard or specific specifications required to be classified as a unix system.

C++ is also a general purpose language and was made with a bias toward system programming and embedded, both used to control machines. C++ is known for its performance, efficiency, and flexibility of use. Which makes sense that iOS would use these two languages to keep its simplicity, a reason why iOS is smooth and barely lags as apposed to the Android operating system which can suffer from lag from time to time. Android utilizes Java. Java can be a bit more complicated when it comes to operating systems.


Since iOS uses the specific language listed earlier, it means that only certain developers can create apps and submit them to the app store. These developers are required to use these languages because iOS is only compatible with these specific languages. The operating system also requires apps being developed to be compatible with the hardware of Apple devices so that performance is not  compromised. Some third-party attempts have been made to try and utilize Java, but due to apple's strict restrictions, these attempts of creating apps have not been successful to make it to the app store. Overall iOS is a simple operating system that is complex on the inside, we dot usually realize that there are very complex operations that take place in order for us to use our Apple devices. 

References: 
http://images.slideplayer.com/25/7954067/slides/slide_4.jpg
https://en.wikipedia.org/wiki/IOS
https://en.wikipedia.org/wiki/C%2B%2B
https://en.wikipedia.org/wiki/Unix-like

Thursday, September 1, 2016

Programming In the Gaming Industry


Video Game Programming, a subset of game development, is the development of gaming software. This profession requires some substancial skill and knowledge in simulation, computer graphicsartificial intelligencephysicsaudio programming, and input.

When creating games, programmers take into account drafting a prototype and then testing several versions before actually agreeing on an idea and beginning to program the game. The tools required for programming games is where computer science plays a major role in the creation of every game.

First, like any software, programs for game development are usually generated from what is called a source code. These programs are generated from the source code to the actual program, the actual program is called the executable, and this process is accomplished through a compiler. While source code can be created with any text editor, some game programmers use an integrated development environment, known for short as an IDE, the IDE used is based on what platform is desired.

In order for this process to go smoothly, most companies spend thousands of dollars on powerful hardware, even utilizing multiple development systems and multiple monitors to ensure the programmer is able to accomplish several tasks with comfort.


The languages used in programming a game once the layout has been finalized are based on language familiarity, target platforms, speed requirements, and the language the game engines, libraries or APIs being utilized.

Lastly, APIs and libraries are extremely resourceful when it comes to programming a game. In todays world, there are APIs and libraries that can handle graphics rendering, sound processing, input, and sometimes even handling Artificial Intelligence tasks such as pathfinding. The libraries used are solely based on the target platform and what they are looking for in the operations of the game. So a library available for a Playstation console may not be the same for Microsoft Windows, and this works vice versa also.

So overall, programming in the gaming industry can be fun, but it is also very hard and requires time and dedication. Most games take up to three years to fully develop and release. So these individuals are highly intelligent and super patient. Without programming, we would not have games. So we can thank computer science for creating such a vast amount of methods for people to entertain themselves and others.





References:
https://en.wikipedia.org/wiki/Game_programming
http://yetanothergameprogrammingblog.blogspot.com