Week 1, Lesson 1 - Introduction To Computing and Programming
Week 1, Lesson 1 - Introduction To Computing and Programming
1
Introduction to Computing and Programming
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.
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.
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.
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.
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
Computer Programming 1
5
Introduction to Computing and Programming
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.
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.
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.
You may learn more about hardware and software in any course about
Computer Fundamentals.
Computer Programming 1
7
Introduction to Computing and Programming
Development
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.
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
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.
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
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.
Mobile Development
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.
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
Computer Programming 1
11
Introduction to Computing and Programming
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
Course Module
used in this subdomain varies depending on the target interface – Graphical
User Interface (GUI) and Command-line User Interface (CLI).
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.
API Development
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 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.
Course Module
Infamous Programming and Scripting Languages
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
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 which
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
Course Module
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”.
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
Ruby
But even though this small shortcoming, Ruby has a lot of implementations
including Ruby on Rails framework made for Web Development.
PHP
Course Module
Figure 7. Lerdorf, R. Rasmus Lerdorf [Twitter Profile].
Retrieved from https://twitter.com/rasmus
C++
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.
Computer Programming 1
19
Introduction to Computing and Programming
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# 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
Course Module
Figure 10. Robert Griesemer [Research at Google Profile].
Retrieved from https://research.google.com/pubs/author96.html
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).
Objective-C
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.
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.
Course Module