W1-Module- Introduction to Computing and.pdf
Document Details
Uploaded by TrustworthyGingko
Full Transcript
Module 001 Introduction to Computing and Programming “The future is always beginning now.” – Mark Strand. Have you ever wondered about the ever-growing world? Have you been fascinated...
Module 001 Introduction to Computing and Programming “The future is always beginning now.” – Mark Strand. Have you ever wondered about the ever-growing world? Have you been fascinated by the massive field of Technology? This introductory module will give you insights in the diversities in the field of Computing and Programming. We will explore the different paradigms in Software Development and engage you to concepts that will enable you to study, utilize and master any programming language you will like in the future. At the end of this module, you will be able to: 1. Identify the events that led to the development of computing and programming 2. Differentiate hardware, software and development 3. Identify the domains of computer development 4. Identify the features and developers of the infamous programming languages Researching beyond the coverage of this module is highly encouraged to supplement your understanding of the topics covered. Always, think and see beyond the box. So, what are we waiting for? Let us now explore the world of Computer Programming. Course Module Introduction Computers have a long history of progress from the creation of the Chinese- tool abacus at around 3,000 B.C. to the current generations of gaming and enterprise peripherals that powers massive data centers and cloud servers. Handheld devices are also now a necessity for modern life. Even Nano-scaled machineries and chips made its way to the market as computer devices shrink in size throughout the years. What we then call a storage device the size of a refrigerator is now just the size of a wallet. These amazing evolutions in technology leads the life of modern man. Each year, papers about advancements in Physics, Medical Sciences, Agriculture and other sciences make their way to publications and journals. These advancements are made possible because of technology. Stem-cell research, oncology, artificial intelligence and hydroponics are some of the studies that were made possible using technology. People cannot live without technology. Imagine a world without computers. Therefore, no televisions, mobile phones, radios or anything which relies on electricity and circuits. Can you live a life of ease? People have become dependent on technology. They cannot live with it. Now the question is what drives technology to prosper to have what we have now and will probably have soon? Is it our demand to automate basically everything around us? Is it our need to communicate with one another? Is it our need to entertain ourselves while being physically away from everything that can distract us including people? Is it our need to solve problems that time proven difficult to solve?Nowadays these questions are a chicken-and- egg situation. The questions are moot. It does not matter anymore what the answer is. We need technology, we all love it. Hardware, Software, Development?! When we talk about computers, we all deal with hardware, software, development and other jargons we probably do not know how to answer if asked. It is sometimes confusing when people ask us about these things and all we have for them are what we can observe in our environment. You have a mouse; that is a hardware. You have a copy of Microsoft Office;that is a software. All but that. It is imperative that we settle these things and have a strong grasp on classifying not only peripherals as hardware and application as software, but also which are peripherals, applications or utilities. This knowledge will be our entry point to Computing and Programming. In addition, equipping you with this knowledge will make you create critical decisions when you are about to develop an application. Will you need to support x64 version of Microsoft Windows? Will you need to setup a port of your application to support Macintosh? These and many more questions will be factored in once you know about your target platform. A platform is any device on which an application was specially designed to run. A platform can be a personal computer running Windows. It can also be a personal computer running Linux. Typically, when we speak of a platform, we usually refer to a specific device running a specific operating system. Figure 1. Components of Computer System Hardware Since you are taking this course in computing, you probably know already about the basic parts of computer. We categorize those parts of computer into input-process-output-storage(IPOS). You need to know about the categorization to better classify the parts of the computer which you will use in developing an application. You will use at least one input device, one process device, one output and one storage device when running your application. This will let the user be immersed in fully experiencing the capabilities of your application. Course Module Input devices are the parts of the computer which allows the user to provide signals and information to the processor. This includes the mouse, keyboard, scanners and sensors. The mouse is the part of the computer which allows the user to easily navigate within an application. The keyboard is the part of the computer which allows the user to enter textual values in applications. The scanner is the part of the computer which takes digital copies of any prints, usually texts and images printed on a bond paper. The sensors are specialized devices attached or embedded in a computer to take different information. We have fingerprint sensor to take fingerprint samples and optical sensor to take images of our iris, microphone to take audio samples, and camera to take images. Biometric sensors are sensors which takes biometric samples like our voices, fingerprints, iris scans and facial samples. Included in this category are the fingerprint sensors and optical sensors. These are typically used in information security to protect sensitive information or safeguard objects. Process devices, processors as we call them¸ are the parts of the computers which performs massive calculations on our entered data through the input devices. They maintain the central functions of the computer. We are all familiar with the main part of the computer under this category – the central processing unit or CPU as we call it. The CPU oversees to fully integrate all parts of the computers under all categories. It is also in charge of carrying out instructions sent by the running applications. Because of its massive capabilities and functions, this part is called the brain of the computer by which losing this will render the entire computer useless. Included also in this category is the part of the computer which processes the graphical outputs – the graphics processing unit or GPU. The GPU enhances the capabilities of the CPU by rendering graphical information to the output devices. There is a common misconception with the term central processing unit. What non-computer literate persons call the CPU is the casing that houses the motherboard and its peripherals including the actual CPU, or the casing including the peripherals within. However, the actual CPU is the small square chip found in the center of the motherboard housed by a cooling unit that maintains optimal thermal condition for the CPU. Output devices are the parts of the computer which presents intellectual displays to the user, both digital and in print. The monitor and printer belong in this category. The monitor displays the visual information processed by the CPU. The GPU is often utilized as well to present displays in the monitor. The monitor can be installed as part of the computer, like the case in laptops and netbooks, or an external unit, like the case in Personal Computers and Mac. The printer converts the digital information from the CPU and renders them on a physical object. The typical printer and 3D printers are some examples of printers. The main difference between the two is where the information is rendered; in a typical printer, the information is rendered on a bond paper, whereas in a 3D printer, the information is rendered as a 3D object. Cool, right? Storage devices are the parts of the computer which stores data and information for later use. These data and information can be stored permanent or temporary. Included in this category are the hard drives, flash drives (or pen drives) and the random-access memory (RAM). Hard drives and flash drives provide permanent storage. Hard drives contain a specialized disk which is utilized as a by-fragment storage where data and information are stored in a sector of the disk. By-fragment means that the data and information stored in a hard drive are distributed in separate sectors. A flash drive does not contain any disk component, but rather has a chip called flash memory. Since there is no physical disk where the data will be stored or retrieved, flash drives run faster than hard drives. The RAM is the component found in the motherboard that provides temporary storage for the CPU while the CPU processes instructions of different applications. Think of the RAM as coin purse where you place coins of different sizes for future yet immediate use. In this analogy, the coins are used within the day they are stored. Familiarizing yourself with the different categories of the parts of computers and which parts belong to which category will help you with determining in the future what libraries you will use. Libraries will be taught in these coming weeks. Software The computer is not only composed of the hardware parts. Though when we refer to the computer, we usually refer to its hardware parts, without its software counterpart, the computer is just a pile of electrical circuits. Software are the intangible components of the computer. They make the computer useful since the software is the reason why the computer does what it does. People usually misunderstands software and application since they are used interchangeably in daily conversation. However, you will find out that this is not the case regardless of how true the previous statement is. Course Module The software is just a classification of all the intangible programmed components of the computer. In this group, we have operating systems, firmwares, applications and utilities. The operating system is environment that have the capability to run firmwares, applications and utilities to run. These kinds of software have the direct access to the hardware components. Computers usually run only one operating system. Microsoft Windows, Macintosh and Linux belong to this category. It is possible for computers to run more than one operating systems through two methods. Dual Boot enables a computer to run two different operating system by configuring the master boot sector of the BIOS. Virtualization enables the user to run multiple operating systems within a parent operating system. Firmwares are small-sized software that enables the different hardware components of the computer communicate with each other. Think of these kind of software as translators. Each hardware has its own “language” that the operating system does not know how to interpret. Firmwares enable the operating system to recognize the hardware components and assign appropriate resources to fully utilize the capabilities of the hardware. Drivers can be classified under firmwares. When we talk about software, we usually mean an application. Applications are software that perform specific tasks for the user. The term application is still a diverse classification of different specialized software categorized by the general tasks they perform. Included in this classification are the word processing applications like Microsoft Word and OpenOffice Writer, spreadsheet applications like Microsoft Excel and OpenOffice Spreadsheet, multimedia applications, databases, and office productivity applications. Utilities are small-sized application usually kilobytes to some megabytes in file size. These perform small-time tasks for the user such as taking notes, setting an alarm, connecting to networks and retrieving specific information about the computer. These kinds of software are directly tied to the operating system and usually comes as part of the operating system. You may learn more about hardware and software in any course about Computer Fundamentals. Development You probably enrolled in this course without knowing the difference between development and programming. There is a subtle difference which people, even IT practitioners tend to disregard in their profession. Computer Programming is the act of writing codes that the computer can run using a specific programming languages. This may or may not include the compiling or interpreting process. Characteristically, programming is geared towards a specific task such as calculating the Gaussian difference of pixels. The end products of programming are source codes and executables. Source codes are files which contains the codes written in a programming language. They have the file extensions of their respective programming language. Source codes written in Python have the file extension of.py; all variants of C language use the file extension C. You may refer to the Table 1 for the complete listing of the common programming languages. Executables are the run able versions of the source codes. They are only available to all compiled programming languages. Windows executables have the file extension of.exe like cmd.exe, while Linux executables typically does not use any file extensions like update-grub. Programming Language File Extension Active Server Pages.asp ASP.NET.aspx C, Objective-C.c C++.cpp C#.cs Java.java PHP.php Python.py Ruby.rb Course Module Visual Basic, Visual Basic.NET.vb Table 1. File Extensions of Common Programming Language Source Codes Computer Development refers writing, building and deploying software under a domain. Domains under Computer Development includes, but is not limited to, Web Development, Desktop Application Development and Mobile Application Development. Computer Development is accompanied by Software Development Lifecycle, or commonly referred to as SDLC. SDLC is a set of systematic routine in planning to maintenance of software applications. Computer Development may utilize more than one programming language and a few frameworks. The main difference between programming and development is their coverage. Programming normally involves small-scale applications or modules, whereas development involves medium- to enterprise-scale applications. Computer Development internally includes programming on the process, hence the former covers the latter. Domains of Computer Development Since we have talked about Computer Development, you also need to know about the different domains in Computer Development. Knowledge about the different domains of Computer Development shall open the doors for you to have an initial idea of the paths you can take in your chosen academic program. Not only will you know the difference between each domain, but you will also have grasp on what encompasses them through their covered platforms. Web Development Let us start with the most used domain, Web Development. Web Development utilizes the internet, particularly the World Wide Web. The World Wide Web (WWW) is a subset in the internet where documents are relating to other documents using hypertext links. These documents can come in form of file documents, media files, markup language documents, script files and others. The most common of which is the Hypertext Markup Language, or HTML. HTML presents a simple information system where the user browses for specific topics. They are accompanied by some scripting languages including JavaScript and VBScripts. They are designed using Cascading Stylesheet, or CSS. However, HTML are static files which does nothing but present information in form of texts and media. To create dynamic versions of HTML, we have Front-end Web Development and Back-end Web Development. Front-end Web Development focuses on using client-side scripts to create interactive and dynamic user interface. The most common front-end web development scripting language is the JavaScript through several JavaScript frameworks like ReactJS and AngularJS. Back-end Web Development focuses on using server-side scripts which run on the hosting server. These scripts provide database integration and file system management capabilities that cannot run on the user’s computer without compromising security. Some programming languages under back- end development are ASP.NET, PHP, Ruby on Rails (RoR) and Java Server Pages (JSP). The advantage of Web Development over other domains is its flexibility. Since majority of the platform can access the internet, in turn, they can also access the by-product of Web Development. It is platform-independent hence the “code once, run all” ideal is applicable to this domain. There exists a hybrid between Front-end Web Development and Back-end Web Development called Full-Stack Development. This hybrid domain covers both the front-end “stack” and the back-end “stack” of Web Development mastering both the vast client-side script frameworks and diverse server-side scripts. Back-end Development Back-end Development deals with server configurations. A server is a specialized computer system that is oriented to serve a lot of services to different client computers. A client computer can be your personal computer. Those scripts are operating system-specific which instructs the server to perform a series of interconnected actions such as starting a specific service, or even remotely shutting down client computers. Microsoft Windows uses PowerShell scripts for Back-end Development. PowerShell is malleable enough to run even on a client computer. PowerShell considers the access level of the current user. It also takes advantage of Active Directory, or AD. AD is a service that provides server-controlled directory for Microsoft Windows domain networks. Course Module Linux uses bash scripts. A bash script is a small script that uses the built-in terminal commands. Linux is well-known for being programmer friendly since everything including the kernel is accessible to the user. A lot of configurations and customizations are available. This makes it flexible for bash scripts to utilize and even exploit. The advantage of Back-end Development over other domains is its direct access to the running operating system. Though platform-dependent, scripts written for this can-do tasks that is available to the operating system with the least restriction. Mobile Development Mobile Development is the blooming domain of Computer Development. This domain deals with the growing number of smart devices which includes mobile phones, smart televisions and wears.Per Statista, a company that conducts enterprise statistical study using open data and enterprise espionage, there will be about 2.32 billion smartphone users worldwide in 2017, and about 2.87 billion in 2020. Considering this number of smartphone users alone, the marketability of mobile application is totally open-entry. Mobile Development is normallyplatform-dependent meaning your developed mobile application will only run on a specific range of smart devices. For Android devices, we have Android Framework using Java as the base programming language. This includes smartphones, car smart devices, smart TVs running Android-base operating system, and Android wears. For iOS devices, we have xcode and Objective-C. This includes all variants of iOS devices including Apple wears. Though normally platform-dependent, due to the high demand of porting, there have been a multi-platform versions of development environment for mobile development. The big name for this is mono develop which is a framework that works on all well-known platforms like Microsoft’s, Apple’s and Linux’s desktop, mobile, and wearable devices. To easily integrate mono develop in writing codes, Xamarinis also big name to consider. Xamarin is an integrated development environment (IDE) which houses mono develop as its base framework. Data Science Going away from the typical development domains, Data Science deals on presenting data in a user-understandable manner. This includes charts, nodes and maps. This domain aims to present data in which the user can dynamically change the perspective like from local business perspective to worldwide coverage.This domain is typically not open source so looking for a place to start on your own without any enterprise support is virtually difficult. Under this domain we have Tableau and Salesforce Wave to name some environments. Figure 2. Cía, J. F. (2015). Tableau against the world: the battle of Business Intelligence heats up [Online Blog]. Retrieved from https://bbvaopen4u.com/en/actualidad/tableau-against-world-battle- business-intelligence-heats Application Development The bread to the crumbs of this entire course is Application Development. This domain deals with the creation of various applications fo r desktop and server computers. Though we are talking about applications for desktop and server computer, we are not limited to local connectivity between them. We are also talking about the involvement of the internet to provide various services to other users.Under this domain we have Desktop Application Development, Game Development and Cloud Application Development. Desktop Application Development deals with the creation of discrete applications for desktop computers. This subdomain has a lot of categorization based on their general use like word processing, spreadsheet and multimedia as mentioned in the previous topics. Programming languages used in this subdomain varies depending on the target interface – Graphical User Interface (GUI) and Command-line User Interface (CLI). Course Module GUI Desktop Applications present the users with easy to navigate and manipulate controls for convenience since they support keyboard and mouse interactions. Programming languages used under this subdomain include, but is not limited to C++, C# (read as C Sharp) and VB.NET. CLI Desktop Applications present the user with stream-line experience. Clear majority of CLI Desktop Applications only support keyboard interactions which gives the users all the flexibility he/she needs to control the actions of the application continually. Programming languages used under this subdomain include, but is not limited to, C, C++ (read as C plus plus), C#, VB.NET, Python and Ruby. Game Development deals with the creation of computer games as means of entertainment and sometimes education. This subdomain deals heavily with the integration of various scripts to manipulate objects called models and sprites. Given its extensive coverage, Game Development usually involves more than one person – the developer, the model artist, the sprites artist and the sound artist. Programming languages used in this subdomain include, but is not limited to, C++ and C#. Cloud Application Development deals the hybrid between Web Development and Desktop Application Development. This subdomain breaks the barrier between the interaction with the web application and the server and clients running instances of the web application. With a click of a button in the web application, the server can execute local tasks such as turning on a client computer connected to it, scheduling shutdown timeout for a running service, and automate various service calls. Programming languages used in this subdomain include, but is not limited to, JavaScript, PHP, ASP.NET and C#. The advantage of Application Development over the other domains is the utilization of a computer’s resources to perform process-heavy tasks and calculations. API Development Application Program Interface Development, or referred easily to as API Development, deals with the creation of libraries and modules to help developers create applications that can interact with a specific application created by other developers. This breaks the barrier of using the existing utilities of a well-known application to expand the capabilities of an application being developed. To make this clearer, APIs are used to reuse services from web applications like the social media giant Facebook and the search engine giant Google. API developers create a linkage for their applications for other to exploit like using Google API to login in your application using your Google account, or Facebook API to automatically post pictures to your Facebook timeline directly from your created camera application. This domain is developer-friendly and is geared towards developers. Think of this as a module or library created by developers for developers. Programming languages used in this domain vary on the base pro gramming language of the hosting application. However, heavy knowledge in JavaScript Object Notation (JSON, read as Jay-son) and Extensive Markup Language (XML, read as ex-em-el). The advantage of API Development over the other domains is its being developer-friendly and capability to exploit existing services of running applications. Embedded Systems Development The last domain under Computer Development is the Embedded Systems Development. Embedded Systems Development deals with programming instructions to readily-made hardware components, typically a microcontroller. Developing firmwares can be considered as part of this domain since firmwares are developed for hardware components. This domain is continually growing since a lot of major companies and startups are moving towards the Cloud and Internet of Things (IoT). The Internet of Things is a network of interconnected embedded systems through the internet. This includes basic analysis of data coming from different sensors to advanced tracking of various sentries to create viable predictions. This domain is probably the most interactive among the rest since not only are you dealing with the software side of the development, but you will also be engaging in the hardware aspects of the development. In addition, a lot of automation can be done through Embedded Systems Development. Familiar with Home Automation, Automotive Automation and Industrial Automation? They are all made possible thanks to Embedded Systems Development. The programming languages used primarily in this domain are C, C++, C# and Java. Infamous Programming and Scripting Languages Course Module Since you are now familiar with the different domains of Computer Development, let us now talk about the specific programming and scripting languages used across those domains. We are going to talk about the top and commonly used programming languages in the Open Source community. The data that will be presented from this point came from GitHub – the top open source repository in the IT industry as of 2017. JavaScript JavaScript is a scripting language used for Web Development. It was first introduced by Brendan Eich in 1995 as an attempt to add interactive user experience to static web pages in the Netscape Navigator browser. His attempt paved the way to modern web applications where modules within the application can directly interact with each other without requiring the page to reload for every action committed. Figure 3. Padilla, D. (2012). Brendan Eich [Online Image]. Retrieved from https://blog.mozilla.org/press/files/2012/04/Thumbnail-Full_Eich_04.jpg JavaScript is datatype independent, meaning you can insert any value of varying datatypes to its variables. There exists no restriction in the usage of its variables hence its flexibility. Though many would argue that such thing presents problematic consequences, this shortcoming was overcome by JavaScript because of its being lightweight having no resource checking for its variables. Some developers impose naming convention for JavaScript to exploit its variant datatype. Because of the cleverness that JavaScript displayed during its time, various demands for adaptation have risen. Ecma International Organization presented a standardization of Netscape JavaScript for other browsers wh ich was called the ECMAScript. Since 2000, JavaScript has been seen to have dominance over other languages present especially in Web Development. Until now, JavaScript holds the Top 1 place in language usedat GitHub for 2016. JavaScript the scripting language is not, in any way, related to Java the programming language. When JavaScript was created in 1995, Java is already the most used programming language for client-side applications. This famous scripting language was named JavaScript to capture the same success that Java has during those times. Java Java is a programming language developed by James Gosling, Patrick Naughton, Chris Warth, Ed Frank and Mike Sheridan at Sun Microsystems in 1991. During this time, the internet and the World Wide Web have made its way to conventional market where static web pages were used to present various information to their users. Java was the successful attempt to bring dynamic forms in web pages. Figure 4. Campbell, P. (2008). James Gosling [Online Image]. Retrieved from https://commons.wikimedia.org/w/index.php?curid=3672205 Java was originally designed with a simple idea in mind – to create a portable platform capable of running under different operating systems – which was promoted by their original slogan “Write once, run anywhere”. Course Module Suns Microsystem’s original slogan is “Write once, run anywhere”. However due to the different issues that surrounds Suns Java platform, which eventually refuted their claim of portability, Suns riposted “Write once, debug everywhere”. Now, Java has made its way to different platforms including the original World Wide Web, enterprise solutions, mobile devices and smart devices. Java ranked as Top 2 in the most used language in GitHub as of 2016. Python Python is the first interpreted programming language covered in this module. Python was designed by Guido van Rossum at Python Software F oundation in 1991. It was designed with the idea of readability focusing on whitespace indentation to definecode blocks, going against well-known programming languages like C and C++ that use curly brackets. Figure 5. Rossum, G. Guido van Rossum [Twitter Profile]. Retrieved from https://twitter.com/gvanrossum Because of the extensive library that Python has, it is generally used in machine learning algorithms and application development. Several extensions have been created for Python to extend its features including the ability to create graphical user interface.By far, Python ranks as the Top 3 most used language in GitHub as of 2016. Ruby Figure 6. RubyWorld Conference Executive Committee. (2011).Yukihiro Matsumoto [Online Article]. Retrieved from http://2011.rubyworld-conf.org/en/program/Key-1/ Ruby is another interpreted programming language alongside Python.Ruby was designed and developed by Yukihiro “Matz” Matsomoto in 1990 and was publicly released in 1995. Ruby is completely open source. Developers not only receive free use of Ruby in their development, but also they have the right to copy, modify and distribute any part of Ruby as they like provided they keep it free-of-charge. The idealization behind Ruby is “a scripting language that was more powerful than Perl, and more object-oriented than Python,” as said by Matsomoto in “An Interview with the Creator of Ruby” in the late 2001. Ruby sports its characteristic as a flexible language allowing the users to alter any of its part. Unfortunately, Ruby is known to feature a single inheritance so classes made cannot have more than one parent. But even though this small shortcoming, Ruby has a lot of implementations including Ruby on Rails framework made for Web Development. PHP PHP is a server-side programming language written for Web Development. It was designed by Rasmus Lerdorf and developed together with The PHP Development Team of Zend Technologies in 1994. The abbreviation PHP originally meant Personal Home Page, but was changed to PHP Hypertext Preprocessor. Course Module Figure 7. Lerdorf, R. Rasmus Lerdorf [Twitter Profile]. Retrieved from https://twitter.com/rasmus PHP is an easy-to-use programming language in Web Development. It easily creates dynamic pages ideal for time-constrained development. It also supports dynamically and programmatically generated images. In addition, PHP has vast number of functions that include file interactions, uploading files, sessions and cookies, and remote file handling. PHP remained Top 5 of the most used language in GitHub as of 2016. C++ C++ is a general-purpose high-level lightweight programming language mainly used for Application Development. C++ was designed by Bjarne Stroustrup in 1979. It can be called an extension of C programming language equipped with object-oriented development paradigm, which was originally called C with Classes. C++ became its name in 1983 when the original C with Classes programming language was added with derived classes, strict data typing, inlining and default parameters. The “++” in its name served as an indicator that C++ is the successor of the original C programming language. C++ will be further discussed in the succeeding modules of this course. Figure 8. Computer History Museum. (2015). Bjarne Stroustrup [Online Biography]. Retrieved from http://www.computerhistory.org/fellowawards/hall/bjarne-stroustrup/ C++ still uses pointers and references which are originally available to C. In addition, a lot of code optimization is present in C++ which kicks in during the compiling stage of the source code. Also, C++ supports both imperative paradigm and object-oriented paradigm. The person credited for naming C++ as such is Rick Mascitti. He intended to use “++”, an operator in the original C programming language that means “+1”, in the naming. His thoughts are that C++ is the newer version of C. C# C# is one of the programming languages that is both imperative and object- oriented. Released by Anders Hejlsberg’s team in 2000, C# is well-known programming language versatile for Application Development, Web Development and Game Development. It is also now conquering the domain of Mobile Development through Xamarin, to name one. Figure 9. Hejlsberg, A. Anders Hejlsberg [Twitter Profile]. Retrieved from https://twitter.com/ahejlsberg?lang=en C# made its first appearance in Microsoft’s Visual Studio.NET 2002. Its name was a wordplay like C++, wherein the “#” indicates further increment of the value of C++; “#” is four (4) plus “+” signs. Go Go, sometimes referred to as golang, is an open source programming language created at Google by Robert Griesemer, Ken Thompson and Rob Pike in 2007. Go is a compiled programming language having the same syntax as C. Go has been made a public open source project in 2009. Course Module Figure 10. Robert Griesemer [Research at Google Profile]. Retrieved from https://research.google.com/pubs/author96.html Go is ideal for Web Development and Application Development. Go sports its concurrency, ease-of-use, fast compilation, extensive security and efficiency features. Go also sports its HTTP/2 Server Push which is more secure and efficient that the previous versions HTTP/1. Go programming language is currently growing in number usage which currently stands at Top 10 most used languages in GitHub. GitHub is seeing a 93% growth in the number of pushes in their repositories. Shell Shell is a scripting language for Linux operating system which is run in the terminal of the system. Shell is a CLI language capable of extending the running services by committing timely executed commands in the terminal. There are a few versions of Shell including, but is not limited to, the Bourne Again Shell (or bash), the C Shell (or csh), the remote shell (or rsh), the Korn Shell (or ksh) and the secure shell for SSL telnet connections (or ssh). Shell is used primarily by Linux Administrators and Network Administrators to manage the instances of Linux distros over an enterprise architecture. Shell ranks Top 11 in GitHub’s most used languages as of 2016. Objective-C Objective-C is another variant of the original C programming language with a new twist, addition of Smalltalk-style message passing between processes. It was designed by Tom Love and Brad Cox in 1980. Objective-C is an object-oriented programming language like C++ however it sticks to adopting the ideologies of the original C language. Objective-C ranks Top 12 of the most used languages in GitHub for the year 2016. Objective-C is used by Apple as the main programming language that compiled to OS X and iOS operating systems, and Cocoa and Cocoa Touch APIs. Glossary Abacus: A simple non-electrical device used for calculating values using beads. Central Processing Unit (CPU): a processor that carries out the instructions of an application. Client-side [scripts]: scripts that run in the user’s web browser which provides interactive user experience. Concurrency [programming]: a feature in programming languages which allows to run several tasks simultaneously without any dependency in the number of processors. Development: act of writing, building and deploying applications which may involve more than one computer programming language. Extensive Markup Language (XML): a specially crafted message digest to deliver data between to different applications regardless of platform using Markup Language (using user-defined markup tags like those used by HTML). Flash drives: a storage device that utilizes the use of flash memory to store permanent data and information. Graphics Processing Unit (GPU): a processor that enhances the capabilities of the central processing unit through rendering graphical information. Hard drives: a storage device that utilizes the use of disks to store permanent data and information. Hardware: an electrical component of any computer built with circuits. Internet of Things (IoT): a network of internet-connected devices, vehicles, establishments and other embedded systems. Input [devices]: parts of a computer that takes data for the computer to process. Course Module JavaScript Object Notation (JSON): a specially crafted light-weight message digest to deliver data between to different applications regardless of platform using JavaScript notation (using curly brackets). Microcontroller: a small credit card-sized programmable computer using integrated circuits that has input and output pins for general-use. Output [devices]: parts of the computer that displays information to the users. Platform: any Personal Computer, Macintosh, Android Wear or other devices where an application can run. Port [of an application]: a specialized version of an application designed for a specific platform which originally not supported. Porting: act of rewriting existing working codes of a specific platform to support other platforms which is not supported by the current codes. Process [devices]: parts of the computer that performs calculations which then are presented to the users as intellectual information. Programming: act of writing codes using a specific computer programming language. Server-side [scripts]: scripts that run in the hosting server which provides database integration and heavy data crunching. Software: any intangible computer file or group of files that performs tasks and computations collectively. Storage [devices]: parts of the computer that stores temporary and/or permanent information. Variant [datatype]: a datatype that does not restrict the kind of values stored to the variables. References and Supplementary Materials Books and Journals Marjin Haverbeke; 2015; Eloquent JavaScript, 2 nd Edition; United States of America; William Pollock Herbert Schildt; 2014; Java: A Beginner’s Guide, Sixth Edition; United States of America; McGraw-Hill Education Sebastian Raschka; 2016; Python Machine Learning; United Kingdom; Packt Publishing Christopher Haupt; 2016; Ruby For Kids For Dummies; United States of America; Wiley/For Dummies Rob Aley; 2016. PHP Beyond the Web; United States of America; Apress Richard Halterman; 2017; Fundamentals of C++ Programming; United States of America; Southern Adventist University Syed Shanu; 2016; Beginning C# Object Oriented Programming; C# Corner Caleb Doxsey; 2016; Introducing Go; United States of America; O’Reilly Media Andrew Mallett; 2015; Mastering Linux Shell Scripting; United Kingdom; Packt Publishing Ltd. Stephen Kochan; 2013; Programming in Objective-C; United States of America; Pearson Education, Inc. Online Supplementary Reading Materials Number of smartphone users worldwide from 2014 to 2020 (in billions); https://www.statista.com/statistics/330695/number-of-smartphone-users- worldwide/; April 10, 2017 Tableau against the world: the battle of Business Intelligence heats up; https://bbvaopen4u.com/en/actualidad/tableau-against-world-battle- business-intelligence-heats/; April 10, 2017 15 most popular languages used on GitHub by opened Pull Request and percentage change from previous period; https://octoverse.github.com/; April 10, 2017 Course Module