Featured Post

What is this blog about?

ABOUT : "BSCSUS" in [ bscsus dot com ] name stands for "BS in CS in US", which stands for Bachelor of Science in Compute...

Right click image below & "open link in new tab"

Right click image below & "open link in new tab"
Right click image above, then "open link in new tab"

Search This Blog

Showing posts with label Information from Internet. Show all posts
Showing posts with label Information from Internet. Show all posts

Thursday, September 30, 2021

Eat, Sleep, Code, Repeat !

Image credit: R. Sandos. From the link:



  • This is my life right now!
  • Eat, Sleep, Code, Repeat !
  • My ambition is to start a Tech. company with time.

Cheers,
Jerry

Monday, September 27, 2021

What is a Programming Language? History, Basics, Intro etc. from a few sources...

INTRODUCTION

Check out this awesome video from Study.com at this link:

From the link of Codecademy:

“Put simply, programming is giving a set of instructions to a computer to execute. If you’ve ever cooked using a recipe before, you can think of yourself as the computer and the recipe’s author as a programmer. The recipe author provides you with a set of instructions which you read and then follow. The more complex the instructions, the more complex the result!”

Programming languages are the tools we use to write instructions for computers to follow. 

Computers “think” in binary — strings of 1s and 0s. Programming languages allow us to translate the 1s and 0s into something that humans can understand and write. A programming language is made up of a series of symbols that serves as a bridge that allow humans to translate our thoughts into instructions computers can understand.

Low-Level vs. High-Level Programming Languages

Programming languages fall into two different classifications - Low-level and High-level.

Low-level programming languages are closer to machine code, or binary. Therefore, they’re more difficult for humans to read (although they’re still easier to understand than 1s and 0s). The benefit of low-level languages is that they’re fast and offer precise control over how the computer will function.

High-level programming languages are closer to how humans communicate. High-level languages use words (like object, order, run, class, request, etc.) that are closer to the words we use in our everyday lives. This means they’re easier to program in than low-level programming languages, although they do take more time to translate into machine code for the computer.

As computers have become more powerful, the difference in runtime between low-level and high-level programming languages is often only milliseconds. As a result, high-level languages do the trick in most scenarios.

Most popular programming languages

There are tons of programming languages out there that allow you to do all sorts of things, from building virtual reality experiences to creating video games and more. There’s even a programming language that consists entirely of emojis!

In this section, we’ll break down some of the most popular programming languages — and what they’re used for. GitHub’s PYPL Index ranks programming languages according to how often tutorials are searched on Google. 

The most popular programming languages include the following:

Python: Python is a versatile, general-purpose programming language. It can be used in a variety of fields from data science and machine learning to web development and is a great first language to learn.

Java: Another language that’s great when you’re starting out, Java can be used for many things, including mobile applications, software development, and large systems development. AP Computer Science is currently taught in Java.

JavaScript: JavaScript is a front-end and back-end friendly language that enables web applications, game development, and mobile applications.

C#: C#, Microsoft’s popular programming language, can be used for a wide variety of applications, including game development, enterprise software, video games, mobile apps, and more.

C++: C++ is one of the most powerful programming languages and is used in a wide range of industries, including VR, software and game development, robotics, and scientific computing.

PHP: PHP is a widely-used server-side language. It’s a great choice if you’re interested in building dynamic web applications and works well with databases and HTML.

R: R is a statistical programming language that’s popular among data scientists. It’s used for answering questions with data analysis and creating data visualizations..

Swift: Swift is Apple’s programming language and is a must if you plan to develop applications for iOS and MacOS.

Kotlin: Kotlin is an open-source programming language developed by JetBrains. It’s popular for web development, Android development, and more.

From the link:

A programming language is a formal language comprising a set of strings that produce various kinds of machine code output. Programming languages are one kind of computer language, and are used in computer programming to implement algorithms.

Most programming languages consist of instructions for computers. There are programmable machines that use a set of specific instructions, rather than general programming languages. 

Thousands of different programming languages have been created, and more are being created every year. 

Many programming languages are written in an imperative form (i.e., as a sequence of operations to perform) while other languages use the declarative form (i.e. the desired result is specified, not how to achieve it).

The description of a programming language is usually split into the two components of syntax (form) and semantics (meaning). 

Some languages are defined by a specification document (for example, the C programming language is specified by an ISO Standard) while other languages (such as Perl) have a dominant implementation that is treated as a reference. Some languages have both, with the basic language defined by a standard and extensions taken from the dominant implementation being common.

Programming language theory is a subfield of computer science that deals with the design, implementation, analysis, characterization, and classification of programming languages.

HISTORY:

From the link:

Ever since the invention of Charles Babbage’s difference engine in 1822, computers have required a means of instructing them to perform a specific task. 

This means of instructing computers is known as a programming language. 

Computer languages were first composed of a series of steps to wire a particular program; these morphed into a series of steps keyed into the computer and then executed; later these languages acquired advanced features such as logical branching and object orientation. 

The computer languages of the last fifty years have come in two stages:
  • The first major languages and 
  • The second major languages, which are in use today.
In the beginning, Charles Babbage’s difference engine could only be made to execute tasks by changing the gears which executed the calculations. Thus, the earliest form of a computer language was physical motion. Eventually, physical motion was replaced by electrical signals when the US Government built the ENIAC in 1942. It followed many of the same principles of Babbage’s engine and hence, could only be “programmed” by presetting switches and rewiring the entire system for each new “program” or calculation. This process proved to be very tedious.

In 1945, John Von Neumann was working at the Institute for Advanced Study. He developed two important concepts that directly affected the path of computer programming languages. 

(1) The first was known as “shared-program technique” (www.softlord.com). This technique stated that the actual computer hardware should be simple and not need to be hand-wired for each program. Instead, complex instructions should be used to control the simple hardware, allowing it to be reprogrammed much faster.

(2) The second concept was also extremely important to the development of programming languages. Von Neumann called it “conditional control transfer” (www.softlord.com). This idea gave rise to the notion of subroutines, or small blocks of code that could be jumped to in any order, instead of a single set of chronologically ordered steps for the computer to take. The second part of the idea stated that computer code should be able to branch based on logical statements such as IF (expression) THEN, and looped such as with a FOR statement. “Conditional control transfer” gave rise to the idea of “libraries,” which are blocks of code that can be reused over and over. 

Around this time, Konrad Zuse, a German, was inventing his own computing systems independently and developed many of the same concepts, both in his machines and in the Plankalkul programming language. Alas, his work did not become widely known until much later. For more information, see this website: http://www.epemag.com/zuse/, or the entries on Wikipedia: Konrad Zuse and Plankalkul.

In 1949, a few years after Von Neumann’s work, the language Short Code appeared (www.byte.com). It was the first computer language for electronic devices and it required the programmer to change its statements into 0’s and 1’s by hand. Still, it was the first step towards the complex languages of today. 

In 1951, Grace Hopper wrote the first compiler, A-0 (www.byte.com). 

A compiler is a program that turns the language’s statements into 0’s and 1’s for the computer to understand. This lead to faster programming, as the programmer no longer had to do the work by hand.

In 1957, the first of the major languages appeared in the form of FORTRAN. Its name stands for FORmula TRANslating system. The language was designed at IBM for scientific computing. The components were very simple, and provided the programmer with low-level access to the computers innards. Today, this language would be considered restrictive as it only included IF, DO, and GOTO statements, but at the time, these commands were a big step forward. The basic types of data in use today got their start in FORTRAN, these included logical variables (TRUE or FALSE), and integer, real, and double-precision numbers.

Though FORTAN was good at handling numbers, it was not so good at handling input and output, which mattered most to business computing. 

Business computing started to take off in 1959, and because of this, COBOL was developed. It was designed from the ground up as the language for businessmen. 

Its only data types were numbers and strings of text. It also allowed for these to be grouped into arrays and records, so that data could be tracked and organized better. It is interesting to note that a COBOL program is built in a way similar to an essay, with four or five major sections that build into an elegant whole. COBOL statements also have a very English-like grammar, making it quite easy to learn. All of these features were designed to make it easier for the average business to learn and adopt it.

In 1958, John McCarthy of MIT created the LISt Processing (or LISP) language. It was designed for Artificial Intelligence (AI) research. Because it was designed for a specialized field, the original release of LISP had a unique syntax: essentially none. Programmers wrote code in parse trees, which are usually a compiler-generated intermediary between higher syntax (such as in C or Java) and lower-level code. Another obvious difference between this language (in original form) and other languages is that the basic and only type of data is the list; in the mid-1960’s, LISP acquired other data types. A LISP list is denoted by a sequence of items enclosed by parentheses. 

LISP programs themselves are written as a set of lists, so that LISP has the unique ability to modify itself, and hence grow on its own. The LISP syntax was known as “Cambridge Polish,” as it was very different from standard Boolean logic (Wexelblat, 177):

x V y - Cambridge Polish, what was used to describe the LISP program
OR(x,y) - parenthesized prefix notation, what was used in the LISP program
x OR y - standard Boolean logic

LISP remains in use today because its highly specialized and abstract nature.

The Algol language was created by a committee for scientific use in 1958. It’s major contribution is being the root of the tree that has led to such languages as Pascal, C, C++, and Java. It was also the first language with a formal grammar, known as Backus-Naar Form or BNF (McGraw-Hill Encyclopedia of Science and Technology, 454). Though Algol implemented some novel concepts, such as recursive calling of functions, the next version of the language, Algol 68, became bloated and difficult to use (www.byte.com). This lead to the adoption of smaller and more compact languages, such as Pascal.

Pascal was begun in 1968 by Niklaus Wirth. Its development was mainly out of necessity for a good teaching tool. In the beginning, the language designers had no hopes for it to enjoy widespread adoption. Instead, they concentrated on developing good tools for teaching such as a debugger and editing system and support for common early microprocessor machines which were in use in teaching institutions.

Pascal was designed in a very orderly approach, it combined many of the best features of the languages in use at the time, COBOL, FORTRAN, and ALGOL. 

While doing so, many of the irregularities and oddball statements of these languages were cleaned up, which helped it gain users (Bergin, 100-101). The combination of features, input/output and solid mathematical features, made it a highly successful language. Pascal also improved the “pointer” data type, a very powerful feature of any language that implements it. It also added a CASE statement, that allowed instructions to to branch like a tree in such a manner:

CASE expression OF
   possible-expression-value-1:
       statements to execute...
   possible-expression-value-2:
       statements to execute...
END

Pascal also helped the development of dynamic variables, which could be created while a program was being run, through the NEW and DISPOSE commands. However, Pascal did not implement dynamic arrays, or groups of variables, which proved to be needed and led to its downfall (Bergin, 101-102). Wirth later created a successor to Pascal, Modula-2, but by the time it appeared, C was gaining popularity and users at a rapid pace.

C Language was developed in 1972 by Dennis Ritchie while working at Bell Labs in New Jersey.

The transition in usage from the first major languages to the major languages of today occurred with the transition between Pascal and C. 

Its direct ancestors are B and BCPL, but its similarities to Pascal are quite obvious. All of the features of Pascal, including the new ones such as the CASE statement are available in C. C uses pointers extensively and was built to be fast and powerful at the expense of being hard to read. But because it fixed most of the mistakes Pascal had, it won over former-Pascal users quite rapidly.

Ritchie developed C for the new Unix system being created at the same time. Because of this, C and Unix go hand in hand. 

Unix gives C such advanced features as dynamic variables, multitasking, interrupt handling, forking, and strong, low-level, input-output. Because of this, C is very commonly used to program operating systems such as Unix, Windows, the MacOS, and Linux.

In the late 1970’s and early 1980’s, a new programing method was being developed. It was known as Object Oriented Programming, or OOP. 

Objects are pieces of data that can be packaged and manipulated by the programmer. 

Bjarne Stroustroup liked this method and developed extensions to C known as “C With Classes.” This set of extensions developed into the full-featured language C++, which was released in 1983.

C++ was designed to organize the raw power of C using OOP, but maintain the speed of C and be able to run on many different types of computers. 

C++ is most often used in simulations, such as games. C++ provides an elegant way to track and manipulate hundreds of instances of people in elevators, or armies filled with different types of soldiers. It is the language of choice in today’s AP Computer Science courses.

In the early 1990’s, interactive TV was the technology of the future. 

Sun Microsystems decided that interactive TV needed a special, portable (can run on many types of machines), language. This language eventually became Java. 

In 1994, the Java project team changed their focus to the web, which was becoming “the cool thing” after interactive TV failed. 

The next year, Netscape licensed Java for use in their internet browser, Navigator. 

At this point, Java became the language of the future and several companies announced applications which would be written in Java, none of which came into use.

Though Java has very lofty goals and is a text-book example of a good language, it may be the “language that wasn’t.” 

Java has serious optimization problems, meaning that programs written in it run very slowly. And Sun has hurt Java’s acceptance by engaging in political battles over it with Microsoft. But Java may wind up as the instructional language of tomorrow as it is truly object-oriented and implements advanced techniques such as true portability of code and garbage collection.

Visual Basic is often taught as a first programming language today as it is based on the BASIC language developed in 1964 by John Kemeny and Thomas Kurtz. 

BASIC is a very limited language and was designed for non-computer science people. Statements are chiefly run sequentially, but program control can change based on IF..THEN, and GOSUB statements which execute a certain block of code and then return to the original point in the program’s flow.

Microsoft has extended BASIC in its Visual Basic (VB) product. 

The heart of VB is the form, or blank window on which you drag and drop components such as menus, pictures, and slider bars. These items are known as “widgets.” Widgets have properties (such as its color) and events (such as clicks and double-clicks) and are central to building any user interface today in any language. VB is most often used today to create quick and simple interfaces to other Microsoft products such as Excel and Access without needing a lot of code, though it is possible to create full applications with it.

Perl has often been described as the “duct tape of the Internet,” because it is most often used as the engine for a web interface or in scripts that modify configuration files. It has very strong text matching functions which make it ideal for these tasks. Perl was developed by Larry Wall in 1987 because the Unix sed and awk tools (used for text manipulation) were no longer strong enough to support his needs. Depending on whom you ask, Perl stands for Practical Extraction and Reporting Language or Pathologically Eclectic Rubbish Lister.

Programming languages have been under development for years and will remain so for many years to come. 
  • They got their start with a list of steps to wire a computer to perform a task. 
  • These steps eventually found their way into software and began to acquire newer and better features. 
  • The first major languages were characterized by the simple fact that they were intended for one purpose and one purpose only, 
  • However, the languages of today are differentiated by the way they are programmed in, as they can be used for almost any purpose. 
And perhaps the languages of tomorrow will be more natural with the invention of quantum and biological computers.

More at the Wikipedia link for the History of Programming Languages

BASICS

From the link:

A computer is a device that can accept human instruction, processes it, and responds to it or a computer is a computational device that is used to process the data under the control of a computer program. Program is a sequence of instruction along with data.

The basic components of a computer are:
  • Input unit
  • Central Processing Unit(CPU)
  • Output unit
The CPU is further divided into three parts:
  • Memory unit
  • Control unit
  • Arithmetic Logic unit
CPU is called the brain of our computer because it accepts data, provides temporary memory space to it until it is stored(saved) on the hard disk, performs logical operations on it and hence processes (here also means converts) data into information. 

A computer consists of hardware and software. 
  • Software is a set of programs that performs multiple tasks together. 
  • An operating system is also software (system software) that helps humans to interact with the computer system
A program is a set of instructions given to a computer to perform a specific operation. or computer is a computational device that is used to process the data under the control of a computer program. While executing the program, raw data is processed into the desired output format. 

These computer programs are written in a programming language which are high-level languages. 

High level languages are nearly human languages that are more complex than the computer understandable language which are called machine language, or low level language. So after knowing the basics, we are ready to create a very simple and basic program. 

Just like we humans have different languages to communicate with each other, likewise, we have different languages like C, C++, C#, Java, python, etc to communicate with the computers. 

The computer only understands binary language (the language of 0’s and 1’s) also called machine-understandable language or low-level language but the programs we are going to write are in a high-level language which is almost similar to human language.

The piece of code given below performs a basic task of printing “hello world! I am learning programming” on the console screen. We must know that keyboard, scanner, mouse, microphone, etc are various examples of input devices, and monitor(console screen), printer, speaker, etc are examples of output devices.
 
main()
 {
 clrscr();
 printf(“hello world! I am learning to program");
 getch();
 } 

The main() is a standard function that you will always include in any program that you are going to create from now onwards. 

Note that the execution of the program starts from the main() function. The clrscr() function is used to see only the current output on the screen while the printf() function helps us to print the desired output on the screen. Also, getch() is a function that accepts any character input from the keyboard. In simple words, we need to press any key to continue(some people may say that getch() helps in holding the screen to see the output).

Between high-level language and machine language, there are assembly languages also called symbolic machine code. 

Assembly languages are particularly computer architecture specific. 

Utility program (Assembler) is used to convert assembly code into executable machine code. High Level Programming Language is portable but requires Interpretation or compiling to convert it into a machine language that is computer understood.

Characteristics of a programming Language:
  1. A programming language must be simple, easy to learn and use, have good readability, and be human recognizable
  2. Abstraction is a must-have Characteristics for a programming language in which the ability to define the complex structure and then its degree of usability comes
  3. A portable programming language is always preferred
  4. Programming language’s efficiency must be high so that it can be easily converted into a machine code and executed consumes little space in memory
  5. A programming language should be well structured and documented so that it is suitable for application development
  6. Necessary tools for the development, debugging, testing, maintenance of a program must be provided by a programming language
  7. A programming language should provide a single environment known as Integrated Development Environment(IDE)
  8. A programming language must be consistent in terms of syntax and semantics
Most Popular Programming Languages:
  • C
  • Python
  • C++
  • Java
  • SCALA
  • C#
  • R
  • Ruby
  • Go
  • Swift
  • JavaScript
There have been many programming languages. Some of them are listed below:
  • C 
  • Python 
  • C++
  • C# 
  • R 
  • Ruby
  • COBOL 
  • ADA 
  • Java
  • Fortran 
  • BASIC 
  • Altair BASIC
  • True BASIC 
  • Visual BASIC
  • GW BASIC
  • QBASIC 
  • PureBASIC 
  • PASCAL
  • Turbo Pascal 
  • GO 
  • ALGOL
  • LISP 
  • SCALA 
  • Swift
  • Rust 
  • Prolog 
  • Reia
  • Racket 
  • Scheme 
  • Shimula
  • Perl 
  • PHP 
  • Java Script
  • CoffeeScript 
  • VisualFoxPro 
  • Babel
  • Logo
  • Lua
  • Smalltalk
  • Matlab F F#
  • Dart 
  • Datalog 
  • dbase
  • Haskell 
  • dylan 
  • Julia
  • ksh 
  • metro 
  • Mumps
  • Nim 
  • OCaml 
  • pick
  • TCL 
  • D 
  • CPL
  • Curry 
  • ActionScript 
  • Erlang
  • Clojure 
  • DarkBASCIC 
  • Assembly
Hierarchy of Computer language:
  • HIGH-LEVEL LANGUAGE --> 
  • ASSEMBLEY LANGUAGE --> 
  • MACHINE LANGUAGE --> 
  • COMPUTER HARDWARE

Friday, September 24, 2021

C++ About, Resources, Pros & Cons











Link to the C++ Foundation Website: www.ISOCPP.org

Information below is from this link and this link:

  • C++ (pronounced "see plus plus") is a computer programming language based on C. It was created for writing programs for many different purposes. In the 1990s, C++ became one of the most used programming languages in the world
  • The C++ programming language was developed by Bjarne Stroustrup at Bell Labs in the 1980s, and was originally named "C with classes". The language was planned as an improvement on the C programming language, adding features based on object-oriented programming. Step by step, a lot of advanced features were added to the language, like operator overloading, exception handling and templates
  • C++ runs on a variety of platforms, such as Windows, Mac OS, and the various versions of UNIX
  • C++ is a general-purpose programing language which means that it can be used to create different variety of applications
  • C++ is used for variety of application domains
C++ is a general-purpose programming language created by Bjarne Stroustrup as an extension of the C programming language, or "C with Classes". The language has expanded significantly over time, and modern C++ now has object-oriented, generic, and functional features in addition to facilities for low-level memory manipulation. It is almost always implemented as a compiled language, and many vendors provide C++ compilers, including the Free Software Foundation, LLVM, Microsoft, Intel, Oracle, and IBM, so it is available on many platforms.

C++ was designed with an orientation toward system programming and embedded, resource-constrained software and large systems, with performance, efficiency, and flexibility of use as its design highlights.

C++ has also been found useful in many other contexts, with key strengths being software infrastructure and resource-constrained applications, including desktop applications, video games, servers (e.g. e-commerce, web search, or databases), and performance-critical applications (e.g. telephone switches or space probes).

From the link:

C++ is arguably the most versatile language in common use. C++ allows for both high-performance code as well as expressive abstractions and design constructs. The language is not perfect but it does represent an excellent compromise between these potentially conflicting language capabilities. C++ combines "low-level" programming tailored to specific machine architectures with "high-level" programming, which can allow code to be completely abstracted from any particulars of the machine executing the program. Both approaches have pros and cons that we'll cover in this tutorial. If interested, Wikibooks also has material on this subject.


Why should you learn C++?

The C++ language originally derives from the imperative language C. The defining feature which distinguishes C++ from C is support for Object-Oriented Programming (OOP). This makes C++ a multi-paradigm programming language. An example that can help to demonstrate what OOP means:

If you were writing a program to track the statistics of a racing cyclist, you might make different parts of the program for their age, years of racing, wins, falls, what teams they've raced with and so on. In real life, though, that's not how we think. Instead, we would think of the cyclist as a whole, and the different statistics as being part of him. We could also apply that general "model" of a cyclist, maybe with a few modifications, to any cyclist, and have a complete representation of them. This is the essence of object-oriented programming, and as you understand it more fully, it will allow you to create powerful, yet easily-understood programs. Instead of relying on data that is scattered throughout a program, you can create a block of code that defines everything you need, and then reuse that throughout the program.

EXAMPLE: Think of a motor car. You unlock it with the key and get in. Then, you turn the ignition, put the car in reverse, release the brake, and press the accelerator. As you drive, you use the steering wheel, the brake, and the accelerator (and maybe the clutch). You don't know or need to know all the specifics of the car to make it work. You just use what you need, and it's simple, too. Object-oriented programming is like that. You can make powerful code, but it's all hidden, and you can interact and reuse that code using simple controls.

Other languages, such as Java, Python, Smalltalk and C#, allow the programmer to write code in this object-orientated way. The key difference between C++ and these languages is that C++ is designed to be compiled into efficient low-level code which can run directly on the processor of a computer. This ability means that C++ differs in many ways from these other languages, and lacks many of the advanced facilities you might be familiar with if you already know one of them.
Pros and Cons of C++

PROS:

  • Is extremely popular, and therefore lots of support is available
  • Has a large base of freely available code for download, while also supporting direct integration with ASM and C
  • Is very powerful, and can be used to create just about any program, including low-level system programs
  • There is a compiler for C++ on every major operating system. C++ programs that are purposely written for portability will work on many major operating systems with little change in code
  • C++ is a language which is compiled (transformed from human readable code to low-level machine code), so it can often run faster than languages such as Java, Python, and C#, as it does not depend on an interpreter or a "run-time environment" which must be loaded beforehand
  • Has a long-established usage base that likely guarantees support for the language will continue for quite some time
  • Many languages are based off of C/C++, such as Java, so knowledge in C++ will make it easier to understand these languages
  • Has a relatively small associated C++ Standard Library as compared to languages such as Java's Standard Platform SDK or C#'s .NET Framework, permitting greater versatility and reducing the system footprint of resulting compilations
  • Has been standardized by the International Standards Association as ISO/IEC 14882 with significant versions of the standard released in 1998, 2003 and 2011
  • Has a significant number of open source libraries available, including the Boost which are freely and widely available

CONS:

  • It is not very safe by itself, as it lacks automatic boundary checks, invalid pointer checks, etc., allows for invisible side-effects (causing non-deterministic behavior) and allows implicit type casting. Many security issues and memory leaks are a direct result of this, unless an extra effort is made to prevent them
  • By default, there is no built-in memory management, even if smart pointers introduced from C++11 allow automatic resource managment
  • Its OOP system is rather archaic, requiring explicit virtualization of methods among other things usually reserved for older languages
  • Lacks the ability to define completely custom operators. (Not to be confused with the ability to define custom implementations for a hard-wired set of operators, which C++ has.)
  • Does not offer full algebraic data types
  • Functions are not first-class types. (Although pointers allow for workarounds.)
  • Has a somewhat more difficult learning curve than some other languages. For instance, C++'s most powerful features, such as templates, have a very complex syntax
  • Is very picky how code is formatted (but not quite as picky as FORTRAN, RPG or Haskell). For example, if you forget to add a semicolon, the program won't compile.
  • GUI, Networking aren't standardized, requiring the use of non-standard, third-party libraries (though many such libraries, both free and commercial, are available, as is the possibility to use C libraries), Boost being one of the preferred. The lack of a standard, however, may hamper learnability and interoperability or at least require some extended investigation

MOOC = Massive Open Online Course(s)

Read more about MOOC at this link: 



Thursday, September 23, 2021

Software Development: About, Process, Activities

From the link:

"ABOUT:

  • Software development is the process of creating a computer software
  • It includes the software release life cycle of preparing a design, coding the program, and fixing the bugs. The final goal is software release of a product that serves the wishes of users
  • Software product is usually a result of research, new development, prototyping, modification, reuse, re-engineering, maintenance, or any other activities
PROCESS: 

A software development process (model, methodology) is a system that is used to structure, plan, and control the process of developing information systems. Each model is defferent, more or less structured and is considered to be suitable to only some kinds of projects.[3]
There are several stages of software development:
Analyzing the problem
  • Market research
  • Gathering requirements for the proposed software
  • Devising a plan or design for the software
  • Implementation (coding) of the software
  • Testing the software
  • Deployment
  • Maintenance and bug fixing
ACTIVITIES:
  • Understanding the need: There are different sources of ideas for software products like market research. The next step is market evaluation. It includes a check of cost and time assumptions, economic feasibility, fit with existing channels distribution, effects on existing product lines, required features, fit with the company's marketing objectives. This process is also connected with non-technical activities like human resources, risk management, intellectual property, budgeting, crisis management, etc.
  • Planning: An important task in creating a software program is understanding the requirements. The software engineers must accept the client's idea and adapt it to the working process.
  • Designing: After establishing the requirements, the engineers start creating a software design document. Design of the software means the high-level design of the main modules with a full picture of how the parts fit together. The language, operating system, and hardware components should be clear at this stage.
  • Implementation, testing and documenting. There are 3 next processes which are combined: (1) Implementation - programming the code for the project (2) Testing - looking for defects (3) Documenting - making documents of the inner design of software, API can be also included
  • Deployment and maintenance: The deployment includes installation, customization, testing, and possibly a longer period of evaluation. Software training and support are important because software is only effective if it is used rightly. Maintaining and improving software is the stage to cope with new faults or requirements, it usually takes a lot of time and effort"

Software Engineering: About, Steps, Tools

From the link:

"ABOUT:

Software engineering is a field of engineering, for designing and writing programs for computers or other electronic devices. A software engineer, or programmer, writes software and compiles the software to make instructions that the computer can follow.

Good quality software is easier to fix and add new features. Good documentation and good design are parts of good software. 

Software release life cycle includes: 
  • Getting the requirements
  • Planning
  • Writing
  • Documenting
  • Testing the software
  • Release
When it is released, it is given to other people to use, who are called the "end users". Good software should be user friendly, which means it is easy to use.

STEPS in creating software: Software engineering can broadly be split into the following steps:
  • Requirements say what the software should do.
  • Software design is usually done on paper. It says what the different parts of the software are, and how they talk to each other.
  • After the design phase is done, each component (part) of the software is coded. Code is what tells the computer exactly what to do at each step.
  • Testing is done to see if the components meet the requirements and that the system as a whole meet the requirements.
  • Part or all of this process can be repeated if software bugs are found or new requirements are needed
TOOLS used in creating software: Software engineers use many tools and practices in making software. Some of the most common are:
  • Flowcharts
  • UML diagram
  • Debugging tools
  • Compiler
  • Text editor, usually part of an IDE - Integrated Development Environment
  • Database"

Computer Science

From the link:

"Computer science deals with the theoretical foundations of information, algorithms and the architectures of its computation as well as practical techniques for their application.

  • Computer Science is the study of algorithmic processes, computational machines and computation itself. As a discipline, computer science spans a range of topics from theoretical studies of algorithms, computation and information to the practical issues of implementing computational systems in hardware and software.
  • Its fields can be divided into: (1) Theoretical and (2) Practical disciplines. 
  • The theory of computation concerns abstract models of computation and general classes of problems that can be solved using them
  • Computer Graphics or Computational Geometry emphasize more specific applications
  • Algorithms and data structures have been called the heart of computer science
  • Programming language theory considers approaches to the description of computational processes, while computer programming involves the use of them to create complex systems
  • Computer architecture describes construction of computer components and computer-operated equipment
  • Artificial intelligence aims to synthesize goal-orientated processes such as problem-solving, decision-making, environmental adaptation, planning and learning found in humans and animals"

Programmer / Coder / Software Developer

From the link:

"A computer programmer is a person who makes computer programs using a programming language. Programmers are also called software developers, coders, or hackers. A programmer's main jobs are writing program source code, testing if it works, and debugging (fixing) the program if there are problems. Programmers often use software tools such as text editors and IDEs (Integrated Development Environments) to help them work. Computer programming is a profession that can be done from a computer anywhere in the world. This is called telecommuting - doing work on the Internet instead of in an office. Some programmers are famous because their software is used by many people. One example is Linus Torvalds, who created an important part of the Linux operating system. Programming can be done in many different languages and can look very different but do the same thing. An example of this is the Hello world program"

Computer Programming - Some terms

From the link:

"Programming: Computer programming is the process of telling a computer to do certain things by giving it instructions. These instructions are called programs. A person who writes instructions is a computer programmer. The instructions come in different languages; they are called programming languages. There are many programming languages. Sometimes, programmers use special software, such as integrated development environments (IDEs), which have many special parts, including a text editor, to help them to type and edit programs. 

Computers understand instructions directly if those instructions are written in machine code, special characters that can be processed by the computer but are difficult for humans to read. Writing these instructions directly in machine code takes a long time and is difficult, so instructions are written in a language easier for people to use, which the computer converts into "computer form" instructions (in other words, machine code) so the computer can follow them. The simplest of these is assembly language. Programs written in a language more like English are converted by a compiler. Some languages, called interpreted languages, use interpreters instead of assemblers or compilers.

Once a program has been compiled the instructions in it are written into a file that contains a series of numbers that the computer can understand. These machine-instructions will be loaded into the memory computer's so that the can run them when the executable is opened.

Variables: A variable is a piece of the program that can be changed. Variables can include information added by the user, or answers that are found as a result of a calculation.

Conditionals: Conditionals are parts of the program that work if something the program can check to see whether it is true. If that part is not true, then the program won't make it happen. A conditional is often done with an "If Statement". Some words used are: "if", "else", "else if", 

Comments: In the program, a comment is information that is meant to be read by people who are reading the program. Comments have a special symbol in front of them that tells the computer that they are comments and should not be read as code. Comments are used to explain how a certain part of a program works. This is helpful when multiple people are working on the same program, and if they need to work on a section where someone else was working on. If the programmer that was working on it first left behind comments for any other programmer that works on it later, it will help them know faster what is going on in the program.

Debugging: Computer programmers make mistakes when writing codes. The mistakes are called bugs and cause the program to follow the wrong instructions. Debugging is the process of finding and fixing the mistakes. To debug code is to find such mistakes. There are many debugging methods. Software such as text editors and IDEs have tools that can detect specific mistakes in the codes before the program is executed. Programmers can also use programs called debuggers. A debugger can run a program step by step and track how values of specific variables change when the program is running. Programmers can use a debugger to find where the mistake happened in the code

IDE (Integrated Development Environment): It is a computer program that makes it easier to write other computer programs. They are used by computer programmers to edit source code, and can be easier to use than other text editors for new programmers. They can have compilers so programmers don't have to open other programs to compile the source code. They also often have syntax highlighting. A feature of an IDE is to check the syntax, and libraries can be added to increase functionality. It also may have predictive coding that can finish lines with syntax such as brackets or semicolons and can suggest variables to be used. It also may have debuggers that can step through lines, take breaks and inspect variables. An IDE often comes with an interpreter and a compiler. Certain IDEs can allow multi-language which means that functions can be written in different languages"

Compiler

 From the link:

"A compiler is a computer program that translates computer code written in one programming language into another programming language. 

  • The first language is called the source language, and the code is called SOURCE CODE. 
  • The second language is called the target and can usually be understood by computers. In that case, the instructions become MACHINE CODE.

A compiler usually has 3 STEPS:

  1. It reads the text and makes notes about how the instructions go together. If the instructions don't make sense, it will try to tell the programmer
  2. Then it will use what it knows about the target language to make the instructions fit better
  3. It then writes down the instructions in the target language. If the source instructions are on different pages, it may have to compile several before it can write everything down"

About Programming Language (source: Wiki)

From the link:

"A programming language is a type of written language that tells computers what to do. 

Examples: Python, Ruby, Java, JavaScript, C, C++, and C#. 

HTML is a markup language, in a technical sense not a programming language, since a program can't be made with it, while it still does tell the computer, i.e. web browser, what information to display. Neither is CSS, these languages are used to make web pages, they can be used to make static web pages, while often one or more programming languages are used additionally to make a dynamic web page. Neither are notebook environments programming languages (while often used by programmers), such one of the more popular ones, Jupyter, that is made for many programming languages, such as Julia, Python, and R (most often users choose to use only one programming language with it, one of those three officially supported and the project named after, or some other language). 

Programming languages are used to write all computer programs and computer software. A programming language is like a set of instructions that the computer follows to do something.

A programmer writes text in the source code of a programming language to make programs. Usually, the programming language uses real words for some of the commands (e.g. "if... then... else...", "and", "or"), so that the language is easier for a human to understand. Like any normal language, many programming languages use punctuation. Many programs are then compiled, which means that the computer changes, or translates, the source code into another language (such as assembly language or machine language) that a computer can read, but which is much harder for a person to read"

Types of Programming Language:
  • High-level vs. Low-level
  • Declarative vs. Imperative programming
  • Functional vs. Procedural
  • Stack based
  • Object-Oriented
  • Flow-Oriented
  • Scientific-Computing
  • Document Creation

Saturday, September 18, 2021

What is Mechatronics? More than simply "Mechanics" + "Electronics"...

From the link:











"Many people treat mechatronics as a modern buzzword synonymous with Automation, Robotics and Electromechanical Engineering.

Mechatronics, also called Mechatronics Engineering, is an interdisciplinary branch of engineering that focuses on the integration of Mechanical, Electronic and Electrical Engineering systems. Also includes a combination of Robotics, Electronics, Computer Science, Telecommunications, Systems, Control, and Product Engineering.

French standard gives the following definition: Approach aiming at the synergistic integration of Mechanics, Electronics, Control theory, and Computer Science within Product Design and Manufacturing, in order to improve and/or optimize its functionality.

As technology advances over time, various subfields of engineering have succeeded in both adapting and multiplying. The intention of mechatronics is to produce a design solution that unifies each of these various subfields. Originally, the field of mechatronics was intended to be nothing more than a combination of mechanics and electronics, hence the name being a portmanteau of mechanics and electronics; however, as the complexity of technical systems continued to evolve, the definition had been broadened to include more technical areas."

From the link:

"Mechatronics is a multidisciplinary field that refers to the skill sets needed in the contemporary, advanced automated manufacturing industry. At the intersection of Mechanics, Electronics, and Computing, Mechatronics specialists create simpler, smarter systems. Mechatronics is an essential foundation for the expected growth in automation and manufacturing.

Mechatronics deals with Robotics, Control Systems, and Electro-Mechanical systems. If you like Mechanics, Robotics, or Production equipment, have a knack for creative problem solving, enjoy technical and engineering activities, Mechatronics could be for you.

Mechatronics specialists can perform across multiple disciplines and have a solid base from which to grow. Mechatronics specialists know both mechanical and electrical engineering fundamentals - they speak both languages - so a mechatronics specialist can work with both mechanical and engineering teams.

Mechatronics specialists work with massive industrial robots, smaller robots in pick-and-place operations, control systems for bottling or packaging of food and drink products, drones, designing control systems for rides in amusement parks, prototype development.

Some mechatronics specialists are employed in firms where it is necessary to design and maintain automatic equipment. This includes industries such as manufacturing, mining, aviation, robotics, defense, and transport. Other mechatronic specialists are employed by large manufacturing companies involved in high-volume production. Many new career opportunities are on the horizon due to technological advances". 

From the link:

"Mechatronics involves a combination of Mechanical and Electronic skills. It is becoming widely adopted in advanced manufacturing operations because it covers a wide array of specialties. Companies are very interested in hiring people who have the knowledge to keep their lines running at full capacity, with as little down-time as possible.

Mechatronics professionals work with Hydraulics, Pneumatics, Robotics, Automated Controls, Programmable Controllers, Process Control and Mechanical applications. They can also design, implement, manufacture, service and repair a wide array of equipment for their employers.

What does that mean in simple English, in layman's terms?

In manufacturing, time lost is money lost. If a part breaks down, the production stops and the company loses money. Every moment that a piece of equipment is down can mean big losses. It can be really expensive to replace a piece of machinery just because a few parts stop working.

Companies look to hire technicians who can identify and solve problems before they cause outages. In the worst case scenario, they need people who can quickly repair machinery if it goes down.

Companies prefer to hire technicians who have the skills to repair the whole system, ideally speaking - including robotics, electrical and mechanical systems.

Mechatronics technicians have the skills and the know-how to repair any of those systems.

Since they are knowledgeable in so many areas, the Mechatronics technician is in high demand in a large variety of industries - Aerospace, Robotics, Automotive Production, Manufacturing and even Business. As manufacturing continues to become even more advanced, the future of Mechatronics looks very bright"

Sunday, September 12, 2021

Good Online Learning Websites for Computer Science in Sep. 2021

From the link and online search. 

Also check out this useful article "The 15 best free or affordable online computer science courses, including options from Harvard, MIT, and Stanford" at this link. 

The following are 11 good websites to learn about Computer Science and other topics:

  1. GitHub.com at link
  2. Udemy.com 
  3. KhanAcademy.org
  4. Coursera.org
  5. SkillShare.com
  6. Brilliant.Org
  7. Udacity.com
  8. Lynda.com
  9. MasterClass.com
  10. PluralSight.com
  11. Codecademy.com
  12. edX.org
  13. Alison.com
  14. LinkedIn Learning
  15. TeachYourselfCS.com
  16. ComputerScience.org
  17. OpenCulture.com
  18. ClassCentral.com
  19. FreeCodeCamp.org
  20. Harvard.edu - Online Computer Science Courses
  21. HackReactor.com
  22. FlatIronSchool.com
  23. CodingDojo.com
  24. AppAcademy.io
  25. My GreatLearning.com
  26. TeamTreeHouse.com
  27. Thinkful.com
  28. Practicum.Yandex.com
  29. FullStackAcademy.com
  30. DevCodeCamp.com
  31. GeneralAssemb.ly (Bit Maker)
  32. BrainStation.io
  33. TheDataIncubator.com
  34. Galvanize.com
  35. HolbertonSchool.com and Holberton.us
  36. SpringBoard.com
  37. North Western Bootcamps
  38. MIT xPro
  39. LambdaSchool.com
  40. DevMountain.com
  41. CS50 channel on YouTube at link
  42. MIT OpenCourseWare channel on YouTube at link
  43. TheNewBoston channel on YouTube at link and so on...
Oh, wow ! 

There are SO MANY courses available online ! Some are completely free. Some have a so called "free" trial period of 1 week or more, but you have to enter your credit card information! Some are just websites with courses, some have videos, and some are online boot camps. You can pay for some in installments, but can pay for some after you have been hired. Some have great reviews, and some don't. Yes, so many choices can cause confusion, but they can also be good because the competition will lead them to improve and offer more value !

American Unicorn StartUp Companies in 2021

List of American companies that are worth over a billion dollars, as of Sep. 2021, in no particular order, from the link. 

Remember, this a list of companies, not just Apps. Also remember that only some companies, and only American companies are listed here! 

  1. SpaceX - Aerospace
  2. Instacart - Retail 
  3. Epic Games - Video games
  4. Databricks - Software US
  5. Rivian - Automotive
  6. Chime - Financial services
  7. Fanatics - E-commerce
  8. GoPuff - E-commerce
  9. Plaid - Financial Technology
  10. Biosplice Therapeutics - Health
  11. Aurora - Self-driving cars 
  12. Figma - Software
  13. Gusto - Software
  14. Reddit - Internet media
  15. Ripple - Computer software
  16. ServiceTitan - Software
  17. Tanium - Technology
  18. Tempus - Health
  19. Toast - Point of sale
  20. Netskope - Computer security
  21. Brex - Finance
  22. Carta - Software
  23. Scale AI - Artificial intelligence
  24. Argo AI - Artificial intelligence
  25. Gong - Artificial intelligence
  26. Discord - Software
  27. WeWork - Commercial real estate
  28. Automation Anywhere - Robotic process automation
  29. DataRobot - Artificial intelligence
  30. Better.com - Financial services
  31. GitLab - Software
  32. Thrasio -
  33. Airtable - Collaborative software
  34. Vice Media - Mass media
  35. Samsara - Technology
  36. CloudKitchens - Ghost kitchen
  37. JUUL Labs - Electronic Cigarettes
  38. Anduril Industries - 
  39. Confluent -
  40. Magic Leap - Augmented Reality
  41. Zenefits - Human resource management
  42. Chainalysis - Blockchain
  43. Relativity Space - Aerospace
  44. Ginkgo Bioworks - Biotechnology
  45. Next Insurance - Insurance
  46. TripActions - Corporate Travel Management
  47. Niantic - Video games
  48. VAST Data - 
  49. Rubrik - Computer storage
  50. SentinelOne - 
  51. Automattic - Internet
  52. Lucid Software - Software
  53. Warby Parker - Retail
  54. Workrise - Workforce management
  55. Bird - Transportation
  56. Convoy - Trucking
  57. AmWINS Group -
  58. Mozido - E-commerce
  59. Houzz - Interior design
  60. KeepTruckin - Logistics
  61. Acorns - Financial technology
  62. Eightfold.ai - Artificial intelligence
  63. Nextdoor - Social network
  64. Udemy - 
  65. Avant - Consumer Finance
  66. Intarcia Therapeutics - Pharmaceutical
  67. ThoughtSpot - Analytics
  68. Prosper Marketplace - Financial Technology
  69. NantOmics - Biotechnology
  70. Quora - Social Network
  71. Zocdoc - Healthcare
  72. dutchie - Cannabis
  73. PAX Labs - Cannabis
  74. Thumbtack 
  75. Workato - Technology
  76. Afiniti - Software development
  77. Seismic Software
  78. HeartFlow - 
  79. Duolingo - Education
  80. ID.me - Identity verification service
  81. Podium - Software
  82. M1 Finance - Financial technology
  83. Away - Retail
  84. NetDocuments - Software
  85. QOMPLX, Inc. - Computer Security
  86. Stash - Financial technology
  87. Symphony - Software
  88. G2 - Technology
  89. Knotel - 
  90. Applied Intuition - Software
  91. ezCater
  92. Rec Room Inc - Video games
  93. Alation - Software
  94. Fair - 
  95. FloQast - Software
  96. Glossier - 
  97. Intercom - Software
  98. Starburst Data - Technology
  99. Sysdig - Cybersecurity
  100. Outreach - Sales
  101. TuSimple - 
  102. Virta Health - Healthcare
  103. Wheels Up - Private aviation
  104. Instabase - Software
  105. Age of Learning, Inc. - Education
  106. AppDirect - 
  107. Arctic Wolf - Cybersecurity
  108. Bluecore - E-commerce
  109. Branch Metrics
  110. Calabrio - Software
  111. Frontline Education
  112. Grammarly - Software
  113. Grove Collaborative
  114. InVision - 
  115. Locus Robotics - Robotics
  116. Lookout Security
  117. Pantheon - WebOps
  118. Prometheus Group - 
  119. REEF Technology - Info. Tech. & Services
  120. Rent the Runway - E-commerce
  121. Rubicon Global - Waste management 
  122. Shape Security - 
  123. Sift - Digital Trust & Safety
  124. Sonder - 
  125. Splashtop - Software
  126. StockX - E-commerce
  127. Tekion - Software as a Service (SaaS)
  128. TransparentBusiness - Technology
  129. Tresata - 
  130. Turo - Car sharing
  131. Udacity - Education
  132. Vox Media - 
  133. VTS - 
  134. Stripe - Financial services
  135. Tipalti - Financial Technology
  136. BigID - Technology
  137. HoneyBook - Financial services

Billion Dollar Mobile Apps in 2021 + Potential / Promising Apps

  • Some mobile Apps are worth a billion dollars on their own! 
  • This list is not up-to-date or comprehensive, and making no claims of accuracy
  • As of Sep. 2021, when this post was published, there may be been changes
  • Even if an App has been acquired by a larger parent company (for example, WhatsApp and Instagram acquired by Facebook), the Apps on their own are still worth more than a billion dollars

List (in no particular oder) from the link:

  • Instagram - Photo sharing, Social networking (owned by Facebook now)
  • Waze - GPS navigation (owned by Google now)
  • Uber - Ride sharing
  • WhatsApp - Messaging (owned by Facebook now)
  • Candy Crush - Game (owned by Activision Blizzard now)
  • SnapChat - Social media for youth
  • Angry Birds - Game (owned by Rovio)
  • Viber - Messaging (owned by Rakuten now)
  • Tango - Chat 
  • Clash of Clans - Mobile gaming (owned by Tencent now)
  • Flipboard - Aggregation of news
  • KakaoTalk - Messaging, in Korea (owned by Tencent now)
  • WeChat - Chat, banking, money transfer, payments (owned by Tencent)
  • Shazam - Music identification (Acquired by Apple on deep discount)
  • Square - Mobile payment service
Next Billion Dollar Apps (promising Apps), random ones, and in no particular order, as per the links from Forbes, here (2019), here (2020) and here (2021 - link to be updated soon):
  • DoorDash - Food delivery
  • OpenDoor - Home seller
  • Away - luggage
  • Duolingo - Language learning
  • Chainalysis - Crypto Crime fighter
  • Autho - Login tools for companies
  • Sonder - Hospitality
  • InVision - Design software
  • Coursera - Online learning
  • Lemonade - Insurance
  • KeepTruckin - Truck transport
  • Outreach - Sales
  • Instacart - Delivery
  • Will type in more soon...

Saturday, September 11, 2021

TSP: Traveling Salesman Problem and VRP: Vehicle Routing Problem

Students of Computer Science have to be familiar with the "Traveling Salesman Problem".

Link for image below:










  • As per Wikipedia link, TSP (Traveling Salesman Problem) askes the question: "Given a list of cities and the distances between each pair of cities, what is the shortest possible route that visits each city exactly once and returns to the origin city?"
  • As per Wikipedia link: VRP (Vehicle Routing Problem) is a combinatorial optimization and integer programming problem which asks "What is the optimal set of routes for a fleet of vehicles to traverse in order to deliver to a given set of customers?". It generalises the well-known travelling salesman problem (TSP)
  • Interesting article at the link: "Scientists Solve Most Complex Traveling Salesman Problem Ever". Details: A new AI processor has extended the traveling salesman solution from 16 nodes to 22. The traveling salesman is an age-old exercise in optimization, studied in school and relevant to real life. Rearranging how data feeds through the processor allows more than one thread to compute at a time.

Thursday, September 9, 2021

30 Dream Companies for jobs for Computer Science students in Sep. 2021

This article is from Business Insider at this link

List (from Universum's Annual Ranking):

  1. Google - Tech
  2. Apple - Electronics and Tech
  3. Microsoft - Tech
  4. Tesla - Electric Automobiles
  5. Amazon - Tech and Retail
  6. SpaceX - Aerospace and Space Flight
  7. Nintendo - Video Games 
  8. Facebook - Social Network
  9. Spotify - Music Streaming
  10. Netflix - Video Streaming
  11. NASA - Space
  12. CIA (Central Intelligence Agency) - Foreign Intelligence
  13. IBM - Cloud computing and Tech
  14. Nvidia - Chipmaker 
  15. Riot Games - Video Games
  16. The Walt Disney Company - Media and Entertainment
  17. FBI (Federal Bureau of Investigation) - Law enforcement
  18. Intel - Tech
  19. NSA (National Security Agency) - Intelligence
  20. Samsung - Electronics and Tech
  21. Sony - Entertainment
  22. Twitter - Social Network
  23. Activision Blizzard - Video Games 
  24. AMD - Semiconductors
  25. DOD - Department of Defense
  26. Nike - Footwear and Apparel
  27. Lockheed Martin - Aerospace and Defense 
  28. Electronic Arts - Video Games
  29. Ubisoft - Video Games
  30. J.P. Morgan - Banking


Saturday, August 28, 2021

Top IT (Information Technology / Computer Science related) skills, languages, positons, tech hubs, certifications and courses to get jobs in Silicon Valley or Tech companies in 2021

All the information below has been compiled from various sources on the internet. They are not my own. 

As per current hiring trends, there is not a strict need for formal college education or degree to get hired into tech companies (so called "new collar jobs" as opposed to traditional "white collar" jobs). Many companies are willing to train the right candidates as well. 

SKILLS in languages / operating systems in high demand right now (and the list is not comprehensive or complete):

  1. SQL
  2. Python
  3. Java
  4. HTML
  5. Javascript
  6. Typescript
  7. Swift
  8. Kotlin
  9. C++
  10. C#
  11. Go
  12. Linux
  13. Data analysis
  14. Robotics
  15. Chip Design

POSITIONS that are in high demand right now as per Monster:

  1. Information Security Analyst
  2. Software Developer
  3. Computer and Information Research Scientist
  4. Web Developer
  5. Database Administrator
  6. Computer Support Specialist

TECH HUBS for jobs in the US:

  1. Washington DC
  2. New York City, NY
  3. Dallas, TX
  4. San Jose, CA
  5. Atlanta, GA
  6. Seattle, WA

CERTIFICATIONS in the field of information technology (and that includes computer science programming languages, networking, hardware, cybersecurity and so on) in 2021 as per this webpage:

  1. AWS Certified Solutions Architect – Professional 
  2. Certified Cloud Security Professional (CCSP) 
  3. Certified Data Privacy Solutions Engineer (CDPSE) 
  4. Certified Data Professional (CDP)
  5.  Certified Ethical Hacker (CEH) 
  6. Certified Information Security manager (CISM) 
  7. Certified Information Systems Security Professional (CISSP) 
  8. Cisco Certified Internetwork Expert (CCIE) 
  9. Cisco Certified Network Associate (CCNA) 
  10. Cisco Certified Professional Network Professional (CCNP) 
  11. Microsoft Certified Azure Solutions Architect 
  12. Microsoft Certified Solutions Associate (MCSA) 
  13. Oracle Certified MySQL Database Administrator (CMDBA) 
  14. Project Management Professional (PMP) 
  15. Salesforce Certified Development Lifecycle and Deployment Designer
  16. Other mentions: Almost all engineers: Electrical, Electronic, Mechanical and so on
ACADEMIES and COURSES that may help you land good jobs by doing well in interviews::
  1. Google Career Certificates: link
  2. AWS re/Start: link 
  3. DeepLearning.ai: link
  4. Coursera: link
  5. FourthBrain.ai: link
  6. Lambda School: link
  7. Brilliant.Org
  8. SkillShare
  9. AlgoExpert
Here are two useful articles related to the subject:
  1. Article from Dice.com: 10 Tech Certifications That Pay Out Mega-Bucks: link
  2. Article from ComputerScience.Org: Landing Jobs in Top Tech Hubs: link

Saturday, August 14, 2021

Which are the Trillion Dollar American Companies in the year 2021?

Which are the American companies that have a minimum of 1 Trillion dollar market capitalization in 2021? 

As per Vocabulary.com's webpage link, a trillion is 1,000,000,000,000, also known as 10 to the 12th power, or one million million

A trillion dollars is a million-million dollars ! That is some serious dough ! 

Here is a list of US trillion dollar companies in 2021 (as of 29 June, 2021, as per Barrons.com's webpage link):

  1. Apple (ticker: AAPL) is the world's most valued company, at $2.249 trillion
  2. Microsoft (MSFT) is second at $2.024 trillion
  3. Amazon (AMZN) is third in market cap at $1.74 trillion
  4. Google-parent Alphabet (GOOGL) is fourth at $1.67 trillion and 
  5. Facebook (FB) is fifth with a worth $1.008 trillion

When were some of the popular technology companies founded? Here is a list of some IT companies

Please don’t think that there are already so many Tech companies already in existance, and there is nothing to be done now! Most companies we know in 2021 are less than 20 years old !!! 

This is a short list below: 

Between 40 and 50 years old: 
1975: Microsoft 
1976: Apple 

Between 20 and 30 years old: 
1994: Yahoo 
1994: Amazon 
1997: Netflix 
1998: Google 
1999: Alibaba 
2000: eHarmony 

Between 10 and 20 years old: 
2002: LinkedIn 
2004: Facebook 
2005: YouTube 
2005: Reddit 
2006: Twitter 
2006: Shopify 
2009: WhatsApp 
2010: Pinterest 

Less than 10 years old: 
2011: SnapChat 
2012: Tinder 
2017: TikTok 

So you see, there is still hope! 

There is still a lot to be done, yet. Roll up your sleeves. Get into the Technology field and game. Do good for the world and yourself. 

Cheers! 
Jerry