Download as pdf or txt
Download as pdf or txt
You are on page 1of 130

A Freshman’s Beacon to Computer

Science Millennials

Prof NB Venkateswarlu
GVPCEW, Visakhapatnam, India

Copyright:
This book is scribbled with the aim to serve fifteen day induction program on Computer
Science for 1st year Engineering students of Indian Colleges which is inline with the recent
order of AICTE(India). I, hereby welcome the people/Institutions/colleges/organizations to
print, copy, share the content of the book the way they like.
My Gratitude:

I profusely thank ​Prof S. Srinivasa Kumar, Hon'ble Vice Chancellor of JNTU Anantapur
for instigating me to write this useful book. I also thank our college management, Prof Soma
Raju, Principal Prof. Rao, Director Prof EV Prasad, Vice Principal, Dr Sudheer for their
support in various aspects while writing this book. I shall also thank my better half, Dr
Garimella V Saradamba, for sharing her views on the content of this book and proofreading
the same.
Dedicated to All faculty Members of Private Engineering
Colleges and Deemed Universities.
Preface
This book “A freshman’s beacon for Computer Science Millennials” is aimed at
guiding/illuminating fresh CSE/IT/CSIT/CSSE students in India on how to plan their four
years of Bachelor’s Degree in a systematic manner and emerge as a successful world grade
talented Computer Scientist. This book exclusively addresses the most common problems,
dilemmas, paradoxes, which are faced by Indian students while studying their bachelors
course. Being a senior faculty in Computer Science I did observe X generation students
and Millennium generations. The themes what I have selected to address in this book is
based on those my experiences that spread from BITS, Pilani to a private Engineering
college, GVPCE (GVPCEW) in AP.

Chapter 1 introduces why Computer Science is important and how it helps to human kind.
Second chapter elightens about chronological development of Computers. Also, it tries to
relate to the industrial revolutions, what the world has already seen and what it is going to
invade the world in the coming years.

Chapter 3 recommends various means how to plan for your four years of Computer Science
course. It ends with a list of Turing Award winners to inspire the students.

Chapter 4 illuminates the most important subjects(areas) in Computer Science and how to
prepare for them. Also, it suggests the most standard books for some of the important
subjects.

Chapter 5 discusses about what are the areas in which most of the IT/Computer Science jobs
are available along with some hints on taming a student for them.

Chapter 6 is exclusively designed to enlighten the student, the need for preparing
“Programming Competitions”. Various resources and advises are included to grow as a good
competitive programmer.

Chapter 7 discusses about various SW tools including mobile tools that are needed while
studying the four year course. It also includes many resources related to computer science.

Disk Operating System is introduced in Chapter 8, followed by Linux operating system in


chapter 9 and Windows operating system in chapter 10. Most essential commands are
explained in all the chapters.

Chapter 11 introduces to how to start Microsoft Word to prepare simple document; while
chapter 13 explains about document preparation in Linux or Windows using LaTeX.

Chapter 12 introduces to the most important skills related to Internet.

Chapter 14 explains about how to buy a desktop or laptop computer with technical reasons.
Chapter 1 Why Computer Science? 10
1.1 Top Ten reasons for studying Computer Science 10
1.2 Computer Science and Benefits to the Society 11
1.2.1. Directly meeting needs 11
1.2.2. Empowering people who are often overlooked 12
1.2.3. Paving the way for a more equitable world 12
1.2.4. Accelerating healthcare progress 12
1.2.5. Furthering education 12
1.2.6. Expanding communication 12
1.2.7. Predicting and avoiding catastrophes 12
1.2.8. Positively impacting every area of Society 13
1.3 List of Indian origin CEO’s and top Technocrats in IT Industry 13

Chapter 2 Glimpses of evolution of Computing Machines 16


2.1 Evolution 16
2.1.1. First Generation (1945-1956) 18
2.1.2. Second Generation Computers (1956-1963) 20
2.1.3 Third Generation Computers (1964-1971) 21
2.1.4. Fourth Generation (1971-1990s) 22
2.1.5. Fifth Generation (Present and Beyond) 29
2.2. Computers and Industrial Revolutions 30
2.3. List of Turing Award Winners 31

Chapter 3 Planning Four Years of study fruitfully 32


3.1. Top Tips for Computer Science Students 32
3.2. Untangling from endless web distractions 34
3.3. Ways to Prepare Yourself for Computer Science at a University 36
3.3.1. Determine What Computer Science Means to You 36
3.3.2. Hone Your Craft and Build a Skillset - but majority of seniors may say “take
light, you can see in final year” 36
3.3.3. Know Your Resources 37
3.3.4. If You Want to Go Fast, Go Alone; If You Want to Go Far, Go Together 37
3.3.5. Train Your Mental Discipline 37
3.3.6. Learn to Use GitHub 38
3.3.7. Keep a Progress Log Portfolio 38
3.3.8. Try Hackathons 38
3.3.9. Experiment With Different Preparation Ideas 38
3.3.10. It’s Not a Race -- It’s a Lifestyle 39
3.3.11. Computer Science classes focus on practical skills 39
3.3.12. Studying the night before a deadline will NOT work 39
3.3.13. Your course will not teach you everything 39
3.3.14. Don’t be a lone wolf 40

Chapter 4 Overview of Computer Science Degree Programs 41


4.1. Program outcomes of Engineering Courses in CSE/IT/CSSE 41
4.2. Computer Science and its illustrious disciplines 41
4.2. Glimpses of Computer Science disciplines and how to Equip yourself with them 42
4.2.1. The Unix/Linux philosophy 42
4.2.2.Discrete Mathematics (or Mathematical Foundations of Computer Science) 43
4.2.3. Data Structures and Algorithms 43
4.2.4. Operating Systems 44
4.2.5. Computer Architecture 45
4.2.6. Parallel Computing (or High Performance Computing or Multi-core
programming) 46
4.2.7. Artificial Intelligence 46
4.2.8. Machine Learning 46
4.2.9. Networking (or Computer Networks or Design of Computer Networks) 47
4.2.10. Cryptography 48
4.2.11. Software Engineering 48
4.2.12. Software Testing 49
4.2.13. Security 49
4.2.14. Computer Graphics (or Mathematical elements of computer graphics) 49
4.2.15. Visualization 50
4.2.16. Robotics 50
4.2.17. Databases (or Database management systems or Design of Databases) 50
4.3. Some Books for which I am a die heart fan 51
4.3.1. The C Programming Language by Brian Kernighan and Dennis Ritchie 51
4.3.2. Programming With C, Schaum’s series, Byron Gotterfred, McGraw Hill 51
4.3.3. The Unix Programming Environment, Kernighan and Rob Pike 52
4.3.4. Data Structures, Schaum’s outline Series, Lipschutz Seymour, Mcgraw-Hill 52
4.3.5. Introduction to Algorithms by Thomas H. Cormen 53
4.3.6. Data Structures and algorithm analysis in C++, Mark Allen Weiss, Pearson. 53
4.3.7. Computer Graphics, Schaum’s Outline Series, Mcgraw-Hill 54
4.3.8. Computational Geometry an Introduction, Franco P Preparata, Michael Ian
Shamos, Springer. 54
4.3.10. Data Mining concepts and techniques, Han and Kimber 55

Chapter 5 Job Prospectus to Computer Science and allied branches 56


5.1. Top Skills that are in Demand in 2019 56
5.1.1. Machine Learning 56
5.1.2. Data Science & Analytics 56
5.1.3. Artificial Intelligence 56
5.1.4. Data Visualization 56
5.1.5. Data Engineering 56
5.1.6. Mobile Development 57
5.1.7. UI/UX Design 57
5.1.8. Extended Reality ( Virtual Reality (VR) and Augmented reality(AR)) 57
5.1.9. Blockchain 57
5.1.10. IoT 58
5.1.11. Cloud Computing/AWS 58
5.1.12. Network and Information Security (Cybersecurity) 58
5.1.13. SEO/SEM Marketing 59
5.1.14. Quantum Computing 59
5.2. Portfolio versus resume 59
5.3. Work experience/Internships 59
5.4. Most Common Job names or types 59
5.5. Typical employers 60

Chapter 6 Tame yourself to Competitive programming to succeed in Placements 61


6.1. Background 61
6.2. List of Topics for which you need to fine tune for programming Competitions 63
6.3. What are Five Why’s? 76

Chapter 7 Tools that will groom you for your graduation 78


7.1.1. Tools to improve your typing skills 78
7.1.2. Note Making tools 78
7.1.3. Word Processing 78
7.2. Mobile Tools to improve you as a student 79
7.2.1. DroidEdit Pro: Notepad++ style editor on Android phones. 79
7.2.2. Evernote (https://play.google.com/store/apps/details?id=com.evernote) 79
7.2.3. Hacker’s Keyboard: 79
7.2.4. AIDE 80
7.2.5. Studious 80
7.2.6. Tasker 80
7.2.7. Lecture Capture Apps 81
7.2.7.1. SoundNote 82
7.2.8. Revision apps 82
7.2.9. Exam prep apps 82
7.2.10. Student planner apps 83
7.2.11. Bibliography helper apps 83
7.3. GeoGebra 84
7.4. Google Drive 85
7.5. Other helpful student apps 85
7.6. Communication and Collaboration 86
7.7. Learning Resources 86

Chapter 8 Let Us Enjoy the DOS, the First Child of Bill Gates 88
8.1. How to Enter into DOS Mode From Windows 88
8.1.1. The cd command 88
8.1.2. The dir command 89
8.1.3. The mkdir command 90
8.1.4. The type command 90
8.1.5. The more command 90
8.1.6. The copy command 91
8.1.7. The del command 91
8.1.8. Some More DOS Commands with Explanation 92
8.1.9. Batch Programs 92

Chapter 9 Have a Nap in Linux 94


9.1. What Makes Linux So Popular? 94
9.1.1. Popular Linux Distributions 94
9.1.2. First time When We login What One Should do? 94
9.1.3. The cat command 94
9.1.4. The cd command 95
9.1.5. The mkdir command 95
9.1.6. The cp command 95
9.1.7.The more command 95
9.1.8. The ls command 96
9.1.9. The rm command 96
9.2. vi Editor 96

Chapter 10 Windows 10 Basics 100


10.1. Notepad and Wordpad 100
10.2. File Explorer 101
10.3. Most common keyboard shortcuts of Windows 10 103

Chapter 11 - Simple MS Word freshener 106

Chapter 12 Do I need to teach Internet for Millennials? 111


12.1. What is Internet? 111
12.3. Some more terms related to Internet 111
12.4. How To Test Internet Connectivity? 112
12.5. Knowing Our Machines IP Address and Domain Name 113
12.6. Electronic Mail (E-Mail) 114
12.6.1. Using Yahoo Email 114
12.6.2. Creating an account in Gmail 116
12.7. Things to Be Cautious About While we are in the Internet 118
12.8. More about Safety and Security on the Internet 118

Chapter 13 Let us join me to create first LaTeX document 120


13.1. Working LaTeX under Windows 120
13.2. Document Basics 120
13.3. Math Mode Basics 123
13.4. LaTex under Unix/Linux 124

Chapter 14 Hints for buying a Computer 125


Chapter 1 Why Computer Science?

1.1 Top Ten reasons for studying Computer Science1


The Association of Computing Machinery(ACM2), an international organization for computer
scientists, has developed the following list of top ten reasons to study Computer Science.

1. Computing is part of everything we do!​. According to the Association of


Computing Machinery: “Computing and computer technology became integral
part of our daily life starting from the cars we drive, to the movies we watch, to
the hospital for medical checkup, to the ways businesses and governments deal
with us. Thus, understanding different dimensions of computing is part of the
necessary skill set for an educated person in the 21st century. Whether you want
to be a scientist, develop the latest killer application, or just know what it really
means when someone says '​the computer made a mistake​', studying
computing will provide you with valuable knowledge."
2. Expertise in computing enables you to solve complex, challenging problems​.
According to the Association of Computing Machinery: "Computing is a
discipline that offers rewarding and challenging possibilities for a wide range of
people regardless of their range of interests. Computing requires and develops
capabilities in solving deep, multidimensional problems requiring imagination
and sensitivity to a variety of concerns."
3. Computing enables you to make a positive difference in the world​.
According to the Association of Computing Machinery: "Computing drives
innovation in the sciences (human genome project, AIDS vaccine research,
environmental monitoring and protection just to mention a few), and also in
engineering, business, entertainment and education. If you want to make a
positive difference in the world, study computing."
4. Computing offers many types of lucrative careers​. According to the
Association of Computing Machinery: "Computing jobs are among the highest
paid and have the highest job satisfaction. Computing is very often associated
with innovation, and developments in computing tend to drive it. This, in turn, is
the key to national competitiveness. The possibilities for future developments
are expected to be even greater than they have been in the past."
5. Computing jobs are here to stay, regardless of where you are located​.
According to the Association of Computing Machinery: "There actually are
more computing jobs than qualified people to fill them in the United States. U.S.
IT employment was 17% higher in 2004 than in 1999. The Bureau of Labor
Statistics says computing has the greatest potential for new jobs through 2014.
Yes, some IT jobs have gone overseas. If you consider the expected growth in
computing, it's easy to see that companies simply need more talent. Don't miss
out on pursuing the large number of open positions available right now, here in
the United States."
6. Expertise in computing helps even if your primary career is something else.
According to the Association of Computing Machinery: "Computing is a
discipline that offers rewarding and challenging possibilities for a wide range of
people regardless of their range of interests. Computing requires and develops

1
Source: ​https://www.acm.org/binaries/content/assets/education/top-10-reasons-to-major-in-computing.pdf
2
​www.acm.org
capabilities in solving deep, multidimensional problems requiring imagination
and sensitivity to a variety of concerns."
7. Computing offers great opportunities for true creativity and innovativeness.
According to the Association of Computing Machinery: "Creating high-quality
computing solutions is a highly creative activity, and computing supports
creative work in many other fields. The best solutions in computing exhibit high
levels of elegance and beauty."
8. Computing has space for both collaborative work and individual effort​.
According to the Association of Computing Machinery: "Computing drives
innovation in the sciences (human genome project, AIDS vaccine research,
environmental monitoring and protection just to mention a few), and also in
engineering, business, entertainment and education. If you want to make a
positive difference in the world, study computing."
9. Computing is an essential part of well-rounded academic
preparation.​According to the Association of Computing Machinery: ​"An
increasing number of universities and employers see successful completion of a
computer science course as a sign of academic well-roundedness."
10. Future opportunities in computing are without boundaries​. According to the
Association of Computing Machinery: "Computing is one of those fields where
it is almost impossible to predict what will happen next. This is why we cannot
even begin to imagine all the ways that you can make a contribution to it and it
can make your life's work exciting and real."

1.2 Computer Science and Benefits to the Society

“Why the Computer Science is so much important?”


It might look like a very simple question, but there’s a lot that goes into answering it. May be
one can say that ​C​omputer Science-related jobs are appealing in their versatility, earning
their potential and demand. However, the altruistic side of computer science is how the
world is being made as a better place. Computer science is an incredible career choice for
someone who wants to change the world. “Societies will die if they don't continue to
innovate,” says Werner Krebs, CEO of ​Acculation (​https://www.acculation.com/ ).
Technologies are neither good nor evil on their own, but, in the right hands, they can become
powerful benefits to society. We need bright and ethical people to understand our best needs
and the most powerful technologies, and to ensure that the powerful technologies are used
for good.

1.2.1. Directly meeting needs


The computer scientists can easily get into direct applications that address societal issues like
poverty, unemployment, climate change and more. For example, ​France is utilizing startups
(https://beta.gouv.fr/startup/perspectives.html) and assigns teams to create solutions when a
public agent identifies a problem. Then the solutions go live nationally. Thus, this approach
allows computer scientists and other technology professionals to jump in and meet needs as
they arise in their communities.
Sites like ​DataKind​, ​Taproot and ​Code Alliance can be excellent resources for computer
scientists who want to put their skills to work for global issues. These platforms allow a wide
array of tech professionals to create, support and execute projects that change lives. There are
also indirect benefits from the tools that the computer scientists build. For instance with the
tools developed, charities that are now able to streamline their donations, or crowdfunded
campaigns that can gather a following and financial backing.

1.2.2. Empowering people who are often overlooked


An amazing benefit of open-source software is that it can be freely distributed to everyone,
which truly empowers people. When tools to build revenue and solve business problems are
available to everyone; it can lead to bull run in the playing field. For example, finding clients
can be an expensive endeavor in any field. Some apps are helping in this direction. Thus,
business is increasing at phenomenal pace.

1.2.3. Paving the way for a more equitable world


Though technology as an industry has an ​under representation of women and racial
minorities, we can see computer science as a tool for societal rebalance when it comes to
gender identity, background, ethnicity and beyond. Code is code and if you’ve created
something genuinely useful, your background isn’t going to hold you back.

1.2.4. Accelerating healthcare progress


Healthcare tends to be a pretty high priority when one consider how to improve people’s
lives.

One of the most exciting facets of Computer Science is its power to improve and accelerate
every other field. “Data science and artificial intelligence (AI) as subsets of computer science
allow people and organizations to accelerate and ‘pre-package thought.’ In this way,
computer science and artificial intelligence can make any other discipline many, many times
better.”

Genomics and personalized medicine are an excellent example of how Computer


Science-driven technologies are accelerating healthcare progress. The genome sequencing
process that powers this frontier of medicine used to cost tens of millions of dollars to
complete, but machine-learning techniques and improved computing power have dropped
costs substantially.

1.2.5. Furthering education


E-learning platforms and applications gave students new tools to problem-solving and study.
The ability to take classes online is also a huge benefit for the world—as it ​creates access to
education​ for students whose locations, abilities or finances were a barrier.

1.2.6. Expanding communication


Computer Science has made the whole world a very small place, available at your fingertips
now. Social media, video calling and chatting apps, even the applications that allow us to
share documents and photos with someone else long-distance, etc., capacities have
completely revolutionized the workforce.

1.2.7. Predicting and avoiding catastrophes


With computers, we are predicting human behavior; we are predicting climates, seasons,
ocean currents, an incoming tsunami, the outbreak pattern of a pathogen, dangerous comets
near our planet. Once your predictions are standardized, we can employ means of mitigating
the loss or damage due to the predicted ones.

1.2.8. Positively impacting every area of Society


At present, from family-owned businesses needing digital protection to homeless shelters
needing a way to streamline their volunteer base, relies very much on the innovations spurred
by computer science professionals. Computer Science has emerged as a profession without
which today’s world would come to a complete halt!.

1.3 List of Indian origin CEO’s and top Technocrats in IT Industry


The following figures contain details of the top CEO’s of the world who are Indian origin
along with top technocrats related to IT field.
Chapter 2 Glimpses of evolution of Computing Machines
2.1 Evolution

The earliest computing hardware was probably some form of ​tally stick with marks or
notches that represent some number (Figure 1).

Figure 1: ​A Tally Stick Used in UK and a wolf bone older than 30000 years with marks on it

The ​Quipu​ (Figure 2) is a system of knotted cords used by the Incas​ ​and its predecessor
societies in the Andean region to store massive amounts of information important.

Devices to aid computation have changed from


simple recording and counting devices to the
abacus​, the ​slide rule​, ​analog computers​, and
more recent electronic ​computers​.

Figure 2​: Quipu used in practice. ​Figure 3​. A Chinese abacus (source ​www.wikipedia.org​)

The abacus (Figure 3), which emerged about 5,000 years ago in Asia Minor and is still in use
today, may be considered as the first computer.

In 1642, Blaise Pascal (1623-1662), invented what he called a numerical wheel calculator
(Figure 4), used eight movable dials to add sums up to eight figures long.

Figure 4​: Pascaline developed by Pascal

In 1694, a German mathematician and


philosopher, Gottfried Wilhem von Leibniz (1646
- 1716), improved the Pascaline by creating a
machine that could also multiply (Figure 5).
Figure 5​: ​Stepped Reckoner

It wasn't until 1820, however, that mechanical calculators gained widespread use. Charles
Xavier Thomas de Colmar, a Frenchman, invented a machine that could perform the four
basic arithmetic functions (Figure 6).

Figure 6:​ Arithmometer

The real beginnings of computers as we know


them today, however, lay with an English
mathematics professor, Charles Babbage
(1791-1871) who proposed a machine to perform
differential equations, called a Difference Engine
(Figure 7) powered by steam.

Figure 7:​ Difference Engine


After working on the Difference Engine for 10 years, Babbage was suddenly inspired to
begin work on the first general-purpose computer, which he called the Analytical Engine.
(Figure 8). ( ​I am glad to touch this machine in London museum!​)

Figure 8​: Analytical Engine


Figure 9:​ Hollerith punch card

Hollerith's method used cards (Figure 9) to store data information, which he fed into a
machine that compiled the results mechanically. Hollerith's machine (Figure 10) in addition
to its speed, the punch cards served as a storage method for data and they helped to reduce
computational errors.

Figure 10:​ Early IBM Tabulating Machine

2.1.1. First Generation (1945-1956)


With the onset of the Second World War, funding for computer projects increased. In 1941
German engineer Konrad Zuse had developed a computer, the Z3 (Figure 11), to design
airplanes and missiles.

Figure 11:​ Zuse Z3

The Allied forces too, however, made greater


strides in developing powerful computers. In
1943, the British completed a secret
code-breaking computer called Colossus
(Figure 12) to exclusively decode German
messages and it is not a general-purpose
computer.
Figure 12:​ Colossus Machine

A Turing machine is a theoretical device that manipulates symbols contained on a strip of


tape. Despite its simplicity, a Turing machine can be adapted to simulate the logic of
any ​computer​ algorithm, and is particularly useful in explaining the functions of a ​CPU​ inside
of a computer. The "Turing" machine was described by ​Alan Turing​ in 1937,​[1]​ who called it
an "​a​utomatic machine". They help computer scientists to understand the limits of
mechanical computation.

American efforts produced a broader achievement. Howard H. Aiken (1900-1973), a Harvard


engineer working with IBM, succeeded in producing an all-electronic calculator by 1944. The
purpose of the computer was to create ballistic charts for the U.S. Navy. It was about half as
long as a football field and contained about 500 miles of wiring. The Harvard-IBM
Automatic Sequence Controlled Calculator, or Mark I (Figure 13) for short, was a electronic
relay computer. It used electromagnetic signals to move mechanical parts. The machine was
slow (taking 3-5 seconds per calculation) and inflexible (in that sequences of calculations
could not change); but it could perform basic arithmetic as well as more complex equations.

Figure 13:​ Mark I

Another computer development spurred by the war was the


Electronic Numerical Integrator and Computer (ENIAC, see
Figure 14), consisting of 18,000 vacuum tubes, 70,000
resistors and 5 million soldered joints. The computer was such
a massive piece of machinery that it consumed 160 kilowatts
of electrical power, enough energy to dim the lights in an
entire section of Philadelphia.

Figure 14​: ENIAC


In the mid-1940's John von Neumann (1903-1957) joined the University of Pennsylvania
team, initiating concepts in computer design that remained central to computer engineering
for the next 40 years. Von Neumann designed the Electronic Discrete Variable Automatic
Computer (EDVAC) in 1945 with a memory to hold both a stored program as well as data.
This "stored memory" technique as well as the "conditional control transfer," that allowed the
computer to be stopped at any point and then resumed, allowed for greater versatility in
computer programming. The key element to the von
Neumann architecture was the central processing
unit, which allowed all computer functions to be
coordinated through a single source. In 1951, the
UNIVAC I (Universal Automatic Computer, see
Figure 15), built by Remington Rand, became one
of the first commercially available computers to
take advantage of these advances. Both the U.S.
Census Bureau and General Electric owned
UNIVAC’s. One of UNIVAC's impressive early
achievements was predicting the winner of the 1952
presidential election, Dwight D. Eisenhower.
Figure 15​: UNIVAC

2.1.2. Second Generation Computers (1956-1963)


By 1948, the invention of the transistor greatly changed the computer's development.

Figure 16:​ IBM 701 (1953)

Figure 17:​ IBM 650(1954)


These second generation computers were also of solid state design, and contained transistors
in place of vacuum tubes. They also contained all the components we associate with the
modern day computer: printers, tape storage, disk storage,
memory, operating systems, and stored programs. One
important example was the IBM 1401, which was
universally accepted throughout industry, and is considered by
many to be the Model T of the computer industry. By 1965,
most large business routinely processed financial
information using second-generation computers (Figure 18 &
19).

Figure 18: ​PDP computer (1960)

Figure 19:​ IBM 1400 (1961)

2.1.3 Third Generation Computers (1964-1971)


Jack Kilby, an engineer with Texas Instruments, developed the integrated circuit (​IC​) in 1958
that is the basis for this generation computers. As a result, computers became ever smaller as
more components were squeezed onto the chip. Another third-generation development
included the use of an ​operating system that allowed machines to run many different
programs at once with a central program that monitored and coordinated the computer's
memory.

Figure 20:​ CDC 6600 (1964)


The CDC 6600 (Figure 20) was a ​mainframe computer​ from ​Control Data Corporation​, first
delivered in ​1964​. The IBM System/360 (S/360) (Figure 21) was a ​mainframe
computer​ system family first announced by ​IBM​ on April 7, 1964, and sold between 1964
and 1978.

Figure 21:​ IBM 360(1964)

2.1.4. Fourth Generation (1971-1990s)


By the 1980's, very large scale integration (VLSI)
squeezed hundreds of thousands of components
onto a chip. Ultra-large scale integration (ULSI)
increased that number into the millions.

The ​Intel 8008​ (Figure 22) was an early


byte-oriented ​microprocessor​ designed and
manufactured by ​Intel​ and introduced in April
1972. It was an 8-bit CPU with an external 14-bit
address bus that could address 16KB of memory.

Figure 22​: Intel 8008 Chip (1972)

The ​Cray-1​ was a ​supercomputer​ designed,


manufactured, and marketed by ​Cray Research​. The
first Cray-1 system was installed at ​Los Alamos
National Laboratory​ in 1976, and it went on to
become one of the best known and most successful
supercomputers in history.
Figure 23​: CRAY-1 (1976)

Motorola has released its microprocessor 68000 (Figure 24).

Figure 24​: Motorola 68000

In 1981, IBM introduced its personal computer (PC) for use in the home, office and schools.
The 1980's saw an expansion in computer use in all three arenas as clones of the IBM PC
(Figure 25) made the personal computer even more affordable.

Figure 25:​ IBM PC Model 5150 (1981)

Danny Hillis​ and ​Sheryl Handler​ founded ​Thinking Machines​ in ​Waltham,


Massachusetts​ in 1983 and assembled a team to develop the CM-1
Connection Machine (Figure 26). This was a "massively
parallel" ​hyper-cubic​ arrangement of thousands of ​microprocessors​.
Figure 26:​ Connection Machine 1(1986)

Another dimension is been added to processor technology which is known as multi-core


processors, where one processor is made to have more than one CPU. An example Intel’s
Core Duo and Dual Core processors.

A ​personal digital assistant (PDA)​, also known as a ​palmtop computer​, is a ​mobile


device​ which functions as a ​personal information manager​ and has the ability to connect to
the ​internet​ (Figure 27).

Figure 27​: Newton PDA from Apple (1996)

The ​iPad​ (Figure 28) is a ​tablet computer​ designed and marketed


by ​Apple​ for Internet browsing, media consumption, gaming, and
light content creation. Released in April 2010, it established a
new class of devices between Smartphones and ​laptops​.

Figure 28:​ iPad from Apple (2010)

Amazon Kindle​ (Figure 29)is a software and hardware platform developed by ​Amazon.com​
for the rendering and displaying of ​e-books​ and other ​digital media​.
Figure 29​: kindle book reader

A ​computer​ that utilizes an electronic pen (called a ​stylus​) rather than a ​keyboard​ for ​input​.
Pen ​computers​ (Figure 30a) generally require special ​operating
systems​ that ​support​ ​handwriting recognition​ so that ​users​ can write on the ​screen​ or on a
tablet instead of typing on a keyboard. Most pen computers are hand-held ​devices​, which are
too small for a full-size keyboard. The following is an editable e-paper from SONY.

Figure 30a​: Pen Computer

The following(Figure 30b) pen based computer contains


built-in LCD screen which we can project on to any plain
surface.

Figure 30 b​: A Pen Computer with Built-in LCD screen

This "pen sort of instrument" (Figure 31) produces both the monitor as well as the keyboard
on any flat surfaces from where you can carry out functions you would normally do on your
desktop computer. These device uses Bluetooth technology.
Figure 31​: A Pen Computer with Built-in monitor and screen

Figure 32​: A Pen Computer with Built-in monitor and screen

Figure 33​: A Pen Computer with Built-in monitor and screen


Some companies such as SEIKO has released Watch computers as shown in Figure. These
watches will be having wireless interface circuitry with which it establishes connection to our
home computer.

Figure 34:​ Seiko RC4000

Solar powered computers are also developed in the meantime. For example the following
figure 35 shows a solar powered laptop.

Figure 35:​ Solar powered laptop

In response to the trend towards increased integration and lower power consumption in the
global computer market, MSI released an all-new "Wind NetOn" product line and officially
announced its intention to focus its efforts on the All-in-One computer market in 2009(Figure
36). The new Wind NetOn lineup emphasizes on an integrated one-piece design,
environmentally friendly energy-saving features and a stylish exterior that deliver satisfactory
performance at reasonable prices without taking up extra space.

Figure 36:​ All in one computer


Jaguar ​(Figure 37) is a ​peta scale​ ​supercomputer​ built by ​Cray​ at ​Oak Ridge National
Laboratory​ in ​Oak Ridge, Tennessee​. Following this is Roadrunner.

Figure 37:​ Jaguar world’s fastest computer

Figure 38:​ Roadrunner 2008

Roadrunner (​Figure 38​)​ is a ​supercomputer​ built by ​IBM​ at the ​Los Alamos National
Laboratory​ in ​New Mexico​, USA. Currently the world's second fastest computer, the
US$133-million Roadrunner is designed for a peak performance of 1.7 ​peta flops

Some unbelievable computers are available. For example, the following computer (Figure 39)
contains three screens.

Figure 39​: Computer with three screens.

The following (Figure 40) product of Apple contains curved screen.

Figure 40​: Curved screen computer.

The following (Figure 41) computer screen can be bend like a sheet.
Figure 41​: Foldable screen computer.

The following(Figure 42) is mobile cum computer with expandable screen.

Figure 42​: Computer with expandable screen.

The following figure 43 we may find a processor on a fingernail which shows the beauty of
miniaturization of the processors.

Figure 43​. Very small computer

2.1.5. Fifth Generation (Present and Beyond)


Fifth generation computing devices, based on ​artificial intelligence​, are still in development,
though there are some applications, such as ​voice recognition​, that are being used today.
Figure 44:​ A Hypothetical 5​th​ Generation Computer

Defining the fifth generation of computers is somewhat difficult because the field is in its
infancy. The most famous example of a fifth generation computer is the fictional HAL9000
from Arthur C. Clarke's novel, 2001: A Space Odyssey​. H ​ AL performed all of the functions
currently envisioned for real-life fifth generation computers. With artificial intelligence, HAL
could reason well enough to hold conversations with its human operators, use visual input,
and learn from its own experiences. (Unfortunately, HAL was a little too human and had a
psychotic breakdown, commandeering a spaceship and killing most humans on board.)

Digital Pen PE103 is a truly portable handwriting capture device. Capture and store your
handwriting notes on regular paper anywhere and upload, file, email your handwriting notes
once connect to PC;

Figure 45: ​Note Taker - Digital Pen PE103

2.2. Computers and Industrial Revolutions


The ​First Industrial Revolution began in the 18th century took place through the use of
steam power and mechanisation of production that demonstrated eight times the volume in
the same time compared to the previous production mechanisms. Though steam power was
already known, but the use of it for industrial purposes was the greatest breakthrough for
increasing human productivity during this time. Instead of weaving looms powered by
muscle, steam-engines could be used for power. Developments such as the steamship or
(some 100 years later) the steam-powered locomotive brought about further massive changes
because humans and goods could move great distances in fewer hours.
The ​Second Industrial Revolution began in the 19th century is identified with the
discovery of electricity and assembly line production. Assembly line production of
automobiles, where the vehicles were produced in partial steps on the conveyor belt which is
significantly faster and cheaper.
The ​Third Industrial Revolution began in the ’70s in the 20th century through partial
automation using memory-programmable controls and computers. Since the introduction of
these technologies, we are now able to automate an entire production process—without
human assistance but through the robots that perform programmed sequences without human
intervention.
We are currently implementing ​the Fourth Industrial Revolution which is uniquely
characterised by the application of information and communication technologies (ICT) to
industry and is popularly known as “​Industry 4.0​”. Evidently, it is built on the developments
of the Third Industrial Revolution. Production systems that already have computer
technology are expanded by a network connection that lead to “cyber-physical production
systems” and therefore smart factories, in which production systems, components and people
communicate via a network and production is nearly autonomous.

2.3. List of Turing Award Winners


In Computer Science Turing award is the highest accolade and it is considered as Nobel Prize
in Computers3. Of course, do remember that Nobel Prize is not awarded to Computer
Science. The following are the list of turing award winners. Prof Raj Reddy is of Indian
origin in this list.

3
​https://en.wikipedia.org/wiki/Turing_Award
Chapter 3 Planning Four Years of study fruitfully

3.1. Top Tips for Computer Science Students4


1. Math is More Important Than You Think. So, build craving for the same.
It is not a joke if one says that every field is full of Mathematics, biology to astrology
and Computer Science is not an exception. In fact, Mathematics is all over Computer
Science in many different ways. Software Engineers will use discrete math when
working out algorithm complexity and efficiency, in graph theory, and recursion.
Hardware people will use discrete math in designing logical circuits and use automata
theory for making finite state machines. In research aspects, one will be using
probability and statistics for performance measurements and comparisons. Even game
programmers use a lot of math when creating 3D environments. Somehow, I have
observed in the Millennials around me that they hate Mathematics.

2. You'll Need To Write More Than Just Code


Some time in your CS career, you may need to write a research paper, that may get
peer reviewed; or you may need to write a white paper or you may need to create a blog
on your product. While doing so, good writing skills will help you. So, pay attention in
taming your technical writing skills now.

3. Don't Procrastinate things - if you do so it becomes as your habit or culture


Procrastination, i.e., postponement of something is the most prevailing mistakes in
student community which is very much visible in all x, y, z and Millennium
generations. As a teacher, I have observed that this is the worst possible thing in
programming courses. At least 80% of students whom I come across during the last 20
years will be waiting someone to solve the problem and copy it and submit(Plagiarism).
That is, procrastination is mother of plagiarism!. When you get an assignment, look it
over and start on it right away. In the likely chance that you can't work through an error
or figure out the logic, you'll have time to contact your instructor or use other available
resources to solve the problem. The following five pronged approach may save you
from addiction of procrastination.
● Figure out why you're procrastinating
● Decide what has to get done first
● Break the work into manageable pieces
● Don't get paralyzed by the need to be perfect
● Make a deal with yourself: Five minutes and out

4. Don't Overcomplicate Things


The smaller a block of code is, without being redundant of other code, the better. When
you break down algorithms which have nothing in common, often there is a loop or
operation which is not unique, other than the parameters involved. You try to increase
the reusability of code which in turn may make your source as little compact. This skill
will come through practice, so practice from the first level programming course itself.

5. Impress Your Instructors, But Not Too Much


4
​https://www.dreamincode.net/forums/topic/31451-top-10-tips-for-computer-science-students/
Certainly your instructor/faculty can be your best friend, but don't forget your etiquette
in the classroom. Ask questions and show your instructor you're interested in the
subject but don't annoy the rest of the class with constant questions and meaningless
comments. Of course, If you can get to know your instructor/faculty about your faculty,
it may help you to get internships and recommendations.

6. Planning Early and Often


Don't start your project directly in the IDE on computer, instead sit down with a piece
of paper and plan out your program. Any senior programmer will certainly advise you,
planning is the most important part of any project. Planning a project out before you
start, even if it's just good pseudocode, can save you hours of frustration.

7. Make Sure This is What You Want to Do


There are a lot of positions in Computer Game Design that do not require you to be a
programmer, so if you are not interested in the coding aspect talk to someone who
might direct you to a better path. Areas such as Technical writing, Dramatic Writing,
graphic arts, business management, and many more might be better places to go. Use
your minor/electives to take computer oriented classes and get to know the CS majors.
During the recent years, Ivy league US Universities such as Stanford, Harward, etc., are
offering Computer Science program with minor in arts. Do explore keenly what are
your interests and accordingly take the courses during your study.

8. Use All Your Resources


Never hit a roadblock and then go berserk. Do explore your peers and seniors who can
help you to come out from any deadlock. There are thousands of online resources such
as tutorials, forums (like ​http://www.dreamincode.net)​, live help, you should be able to
find the help you need. Just remember it can take more than a few minutes for someone
to help or solve your problem so don't wait till the last minute. Google is definitely your
friend and however you need to learn how to use it effectively for your problem. You
can search in Google using voice, image search, data set search etc. For example, if you
are in need of data sets, you visit UCI machine learning repository,
https://archive.ics.uci.edu/ml/index.php​, Kaggle datasets,
https://www.kaggle.com/datasets​, etc. Also, do check the Open Science movement and
related SW and data sets at places like ​http://openscience.org/software/​. Don't expect
people to do the work for you though, you'll still have to put forth some effort.

9. Become a Well Rounded Programmer


Programming is more than just C++ or Java or Python. Make sure you have sound
understanding in systems analysis, databases, security, and documentation. IT industry
is so dynamic, its directions are changing very frequently. You need to develop the
habit of changing from one program language to another programming language, one
platform to another with minimal time and prove yourself to your bosses.

10. ​Do not waste your time in learning multiple programming languages, rather
concentrate on building your skill set and knowledge base on logic, algorithms, modern
data centric algorithms, etc.
11. Your First Year, first programming language course skills drives you in your
whole life. If you are new to computers, do find someone in helping you to go through
the following in sequence:
● SCRATCH language use from ​http://scratch.mit.edu
● FLOWGARITHM tool from ​http://www.flowgorithm.org/
● Program Visualization tool ​http://pythontutor.com/​ and
http://pythontutor.com/c.html#mode=edit
● Computational thinking from
https://edu.google.com/resources/programs/exploring-computational-thinking/

3.2. Untangling from endless web distractions

Over the past decade, schools/Institutes raced to connect students to the Internet — in
dorms, classrooms, even under the old oak tree. But now, after seeing its repercussions,
they are virtually pulling the same. “I have been a bit skeptical about the value of making
an entire campus wireless,’’ said Lawrence Bacow, president of Tufts University and
former chancellor of MIT. “​It seems like everyone is always plugged in and
always distracted​.’’

It was supposed to be a quick diversion, Katie Inman told herself last week as she flipped
open her laptop. She had two tests to study for, three problem sets due, a paper to revise.
But within minutes, the MIT sophomore was drawn into the depths of the Internet, her
work shunted aside.
In class, professors complain about students trading stocks online, shopping for Hermès
scarves, showing one another video clips on YouTube — leading some faculty to call for
the unwiring of all lecture halls. “Students are totally shameless about how they use their
computers in class,’’ said David Jones, an MIT professor. “​I fantasize about having a
Wifi jammer in my lecture halls to block access to distractions.​’’

This freedom from constant connection is what Sherry Turkle, a professor in MIT’s
program in science, technology, and society, is promoting — along with her new book,
“Alone Together’’ — as she travels the country encouraging colleges to pull back on
Internet access.

Some students said he would oppose a blanket university policy that blocks Web access
from classrooms. “If you break off the Internet, so what? They’ve got 3G on their phones
and iPads,’’ he said. “Instead, come up with a rule and express it. And the students
violate that rule at their peril.’’

Of course, there are some students who says “If we don’t have our laptops to retreat to,
we feel more encouraged to talk to each other,’’ she said. “It’s frustrating when you put a
lot of work into a class presentation, and you know your classmates are looking at their
emails.’’

Indeed, a 2009 Stanford University a study showed that students who were chronic
media multitaskers were more easily distracted are really not good at switching tasks or
ignoring irrelevant information and also don’t write as well and use simpler sentences,
said Nass, author of “The Man Who Lied to His Laptop’’ and who has examined the
writing samples of Stanford freshmen. Such behaviors have very real consequences for
the wiring of the young brain. Preliminary evidence shows that college students who
multitask are less emotionally attuned to others, he said.

In order to de-tangle from Internet, some Apps can be used. Of course, it is you who has
to use in principle!!. Some of the Apps which I know are:

Freedom: ​Disables all Internet access on a Mac for up to three hours, freeing users
from the Web’s myriad distractions.
LeechBlock: ​Blocks certain sites, perpetually or during specific periods. Designed for
Firefox Web browser.
Brain.fm​: (Android, iOS, Web) for focus-boosting soundtracks
Cold Turkey Blocker​: (macOS, Windows) for locking yourself out your computer
Focus@Will:​ (Android, iOS, Web) for lyric-free audio and tracking your productivity
Hocus Focus:​ for viewing one window at a time on a Mac.
Mindful Browsing (Chrome) for gentle nudges away from time-wasting sites
RescueTime: (Android, iOS, Linux, macOS, Web, Windows) for tracking productivity
and blocking distracting sites
Self Control:​ (macOS) for free focus app for Mac
StayFocusd:​ (Chrome) for blocking sites in Chrome

To study with concentration, the followings steps can be followed:


1. Remove Distractions: Students must find themselves a congenial place which is free from
distractions such as noise and must be serene enough.
2. You need to utilize the time of the day which suits you the best, in which you feel fresh
and can easily grasp whatever you study. Researchers have proved that 60 minutes study at
morning is equivalent to 90 minutes study at night.
3. You need to focus on the ongoing task and it must be given the utmost priority. We should
try and keep ourselves away from the distractions. For instance, you must study for the time
you had previously decided without peeping into your notifications on your Facebook
account.
4. Set Goals: You must decide before we sit to study that for how long you have to study and
what all is it that we have to study.
5. Positive attitude: Tell yourself that whatever you do will be your absolute best. Don’t say
‘I can’t do it’ or ‘it must be perfect’.
6. Rest/Stretch time: Take short breaks, and get up and walk around. When we move, blood is
pumped around the body and more oxygen is sent to the brain.
7. Changing the subject: It’s better not to concentrate on the same subject for too long. You
will absorb more information if you change subject or topic every one to two hours.
8. Reward yourself: Give yourself an incentive. By having something to look forward to
when you finish your work, you are more likely to get stuck in.

3.3. Ways to Prepare Yourself for Computer Science at a University5

3.3.1. Determine What Computer Science Means to You


Hardly, not even 0.001% of students are joining an Engineering branch based on their
own craving for that branch. Rather they are joining either to full fill their parents
dreams or their neighbor or relatives have done it. Whatever happened is happened, we
cannot revert it. Once you are Computer Science, first explore yourself about your
interests in Computer Science. Ask yourself the following questions also: Are you after
good money? Do you want to realize your childhood dream of designing your very own
computer game? Do you plan to develop artificial intelligence based robot with some
specific qualities?

Find out what is your craving area in computer science is, whether that is algorithms,
computer security, or software engineering, high performance computing, gaming, and
fully immerse yourself in it also do not forget that computer science is a diverse field
and you need to establish the links of your area with other areas to prove your sound
foundation.

Invest in physical books related to your interest and culminate the habit of reading
scientific papers in your area of interest. Visit your professors for possible answers.
Disturb your seniors around you and pose your doubts at quora.com,
stackoverflow.com, yahoo answers, etc.

3.3.​2. Hone Your Craft and Build a Skillset - but majority of seniors may say
“take light, you can see in final year”

5
​https://simpleprogrammer.com/prepare-computer-science-university/
Technical skills and knowledge base are what gives a computer scientist his/her
substance. The pace of lessons at the university level is fast (or teacher may be fast
assuming something about the students), and some students may have difficulty in
catching up, which makes it difficult for you to become a high performer. At this
junction massive open online courses (MOOCs) will come to rescue you. You can
listen to them any time, any where, any order, any number of times. Some students
catch the essence with one time whereas others need multiple times. A human teacher
in the class may repeat a concept two times or three times, if you ask him to teach again
he may shout at you, “get out, you little fellow”. However, these MOOC courses allow
the students to see them any number of times. Of course, they are not to replace human
teachers. Obviously, impressions made by a human teacher may create long term
impact compared to these MOOCs and other E-resources.

Explore the courses available at edX, Khan Academy, Stanford Online, NPTEL,
Udemy.

3.3.​3. Know Your Resources


If you're looking for even more supplemental resources before you enter an actual
university, check out the cheaper ebook version of textbooks that are popular at various
universities.

3.3.​4. If You Want to Go Fast, Go Alone; If You Want to Go Far, Go Together


Network with with University schoolmates (both peers, seniors and juniors) and
alumni, relatives, and friends. Your seniors and alumni could also provide valuable
insight into certain company cultures. They may love to refer your candidature to their
companies and it is widely employed during the last decade. Do maintain the network
not only physically but also in Linkedin.

Get rid off your shy to approach a university alumnus/senior for advice. Look for them
on your university’s Facebook/Twitter page, where they may occasionally showcase
their achievements and awards. Do not hesitate to ask friends and relatives whether
they know anyone studying computer science in your university too; they may love to
help you!.

Help others, too​! Friends in university, studying other courses, such as materials
engineering, often have courses where they need to learn basic programming. Try to be
there when they need help, and you’ll benefit from learning other subjects too. In fact,
in majority of residential Institutes success stories lies here, that is senior and junior
fabric. When I had joined at IIT-Kanpur, a doctoral student of Chemistry (now Prof
Naidu Subba Rao of JNU, Delhi) helped me first type and execute my first program on
DEC 10 machine.

3.3.​5. Train Your Mental Discipline


You may find discussions in Internet on how many hours a typical Computer Science
students have to spend to have an attractive offer? We find many threads debating on
whether 10000 coding hours for a computer science student is needed or not. In a
nutshell, one can certainly say that a Computer Science student who wants to enter into
SW development has to spend many many hours on regular basis. Thus, find your own
programming habits and what gets you into The Flow. Whether that’s listening to
music on headphones, having a hot cup of coffee at your side, or studying or working at
a place where everyone studies together (like the library), do what feels best for you.

In addition, to alleviate the effects of long hours of staring at a screen, practice good
sitting posture and get a good chair, adjust the light setting optimal for your eyes, and
have a laptop stand to level the screen to your eye level.

3.3.​6. Learn to Use GitHub


GitHub is a development platform for hosting open-source projects. It’s how
developers work together online on the same project. It’s a compulsory skill for
developers to work on the same code. Some universities even use GitHub to conduct
their lessons, and it’s important to at least learn to maneuver around the site.

Here are some guides you can use to get you started on GitHub: ​GitHub Guides
(https://guides.github.com/), ​Open Source Guides (https://opensource.guide/), and
GitHub Tutorial by LearnCode.academy
(https://www.youtube.com/watch?v=0fKg7e37bQE&t=37s).

3.3.​7. Keep a Progress Log Portfolio


WordPress​, ​GitHub​, and ​StackOverflow Developer Story are some of the platforms
where you can record your progress in programming, noting mistakes you’ve made and
learning points from them. You can even attach your projects and use it as your
portfolio to showcase to interviewers for internships and jobs.

The point of keeping a progress log is for you to look back every couple of months and
analyze if you’re making progress towards your own goals. If you’re not, you can
adjust your future plans accordingly. While your end goal is to enter a university, it's
really all about the journey, and it helps to have a log to reminisce about how you
improved throughout the years , even after the University.

3.3.​8. Try Hackathons


Your University grades depend on your individual knowledge and skills but
infrequently on that of your teammates. Involving in hackathons lets you experience
first-hand the communication, leadership, and programming challenges of collaborating
as a team and learning something from it. Here is a compilation of the hackathons in the
USA that one can try: ​HackEvents (https://hackevents.co/hackathon/usa).

3.3.​9. Experiment With Different Preparation Ideas


Step out of your comfort zone. Discover what works for you and what doesn’t.
Experiment with novel and niche ways of preparation, be it by creating YouTube
videos to explain concepts or volunteering for non-profit organizations to design their
websites.

As you venture out of your comfort zone, you discover opportunities that will bring you
to greater heights. You will gain confidence so that when you meet new challenges in
University (any particular programming error, for example), you ​know that it will
require some time for you to overcome them and remain motivated.

If you have sufficient time to spare, you could consider teaching coding to teens.
Teaching is the best way to learn. Teens can have very different analytical perspectives
from your own. Their questions can prompt you to rethink what you already know and
how that knowledge can be applied in completely novel ways, broadening your
perspectives.

3.3.​10. It’s Not a Race -- It’s a Lifestyle


Relax a little; the point isn’t to outcompete all the others in University to secure your
first class honors. The process of learning and attaining your Degree is what makes
computer science meaningful to you, and the achievements are a bonus.

It’s about the friendships you forge, the challenges you overcome, and how you grow.
That’s what makes Computer Science a meaningful career to you.

3.3.​11. Computer Science classes focus on practical skills


Unlike Sociology or Economics, most IT courses are practical oriented even though
some Computer Science and Information Technology courses are theoretical, their
approach is far more practical. Right after a theoretical class, you will have to apply
that knowledge through practical exercises in a computer laboratory. Unless you take
this seriously, you will not gain the expected practical skill. At least 99% of the
students under JNTU claims only they have those few examples given in JNTU
syllabus only which is though pathetic. How come programming skills get developed ,
unless they do solve variety of problems? After all, the things given in syllabuses etc
are guidelines only. Unfortunately, affiliated colleges and faculty there in are of the
opinion that if the complete the examples given in syllabus, their duty ends. This is an
awesome mistake that is taking place since many decades and students are getting
affected. So, please do concentrate on building your practical skill sets while in the
college itself.

3.3.​12. Studying the night before a deadline will NOT work


Do complete all of your assignments very well in advance of deadlines; otherwise,
you’ll get tired and bored if they are accumulated and start malfunction at the end, and
ultimately you’ll fail in the assignments. Computer Science and IT is one of those areas
where it is absolutely necessary to keep working throughout the semester. Be cautious
about this aspect. You need to be continuous knowledge acquirer, assignment solver,
reader, writer.

3.3.​13. Your course will not teach you everything


Not all courses and programs that are developed or designed by Universities or
Colleges with 100% Industry requirements including Computing Science programs and
courses. All Computer Science and IT courses rock. However, they won’t cover all the
skills you might need in a job. So schedule your time properly and after completing
your core assignments visit Google, and find out what type of computing skills that
tech companies are looking for. Particularly, look into further details on the exact
requirements at those specific companies you dream of working for. Try to build that
base while you are in the University/College itself. Do read white papers, participate in
hackathons, related to that your interest and company.

You could also make a little websites or programs just for yourself, to test your
abilities and push yourself further​.

3.3.​14. Don’t be a lone wolf


Certain, being able to work on your own and independently motivate yourself is great,
and you certainly need that. However in this IT era and IT industry, don’t forget that
you’re not going to be alone in the workplace; you’re likely to be in a team. Thus, you
need to have skills and attitude to move along with your team. These attitudes that are
necessary for SW industry can be culminated while you are in the University or college
itself by involving in team projects. Once you’ll find a good study group, you’ll surely
enjoy to meet with your peers, share ideas and work on interesting projects. After all,
that’s just the classical way innovation starts; with a few genius minds that come
together and work on a new invention until it becomes a trademark.
Chapter 4 Overview of Computer Science Degree Programs

4.1. Program outcomes of Engineering Courses in CSE/IT/CSSE


The Computer Science Undergraduate Program enables students to achieve the following
outcomes by the time of his/her graduation:
1. An ability to analyze a problem, and to identify and define the computing requirements
appropriate to its solution.
2. An ability to design, implement and evaluate a computer-based solution to meet a given set
of computing requirements in the context of the discipline.
3. An ability to communicate effectively with a range of audiences about technical
information.
4. An ability to make informed judgments in computing practice based on legal and ethical
principles.
5. An ability to function effectively on teams to establish goals, plan tasks, meet deadlines,
manage risk, and produce deliverables.
6. An ability to apply theory in the design and implementation of computer-based solutions.
7. An ability to reason about and explain computer-based solutions at multiple levels of
abstraction.
8. An ability to debug the Computer- based solutions.

4.2. Computer Science and its illustrious disciplines

We are having various four years degree programs in India such as: Computer
Engineering(CSE),Computer Science (CS), Information Technology(IT), Computer Science
and Systems Engineering(CSSE), Computer Science and Information Technology(CSIT), etc.

Generally speaking, Computer Science is the study of Computer Technology, both hardware
and software. However, Computer Science is a diverse field; the required skills are both
applicable and in-demand across practically in every industry in today's
technology-dependent world. The field of Computer Science spans several core areas:
computer theory, hardware systems, software systems, and scientific computing.

Computer Science is the third most popular major amongst international students coming to
the United States because of its exceptional job security, uncommonly high starting salaries,
and diverse job opportunities across industries.
The disciplines encompassed by a Computer Science Degree are incredibly vast, and some of
them include:

● Applied Mathematics ● Computer Graphics


● Digital Image/ Sound Processing ● Multimedia technologies
● Artificial Intelligence ● Virtual environments
● Biologically Inspired Computing ● Simulation And Modeling
● Microprogramming ● Computer Programming
● Bioinformatics ● Software Development
● Genomics ● Software Systems
● Networks And Administration ● Data Management
● Computer Architecture & ● Web Development
Networks ● Design Databases
● Cryptography ● Parallel Programming
● Computer Engineering ● iOS Development
● Operating Systems ● Mobile Development
● Computer Game Development ● Memory Systems
● Robotics ● Computational Physics
● Robot vision & Machine vision

4.2. Glimpses of Computer Science disciplines and how to Equip yourself with them

4.2.1. The Unix/Linux philosophy

I consider Unix/Linux is the bread and butter of Computer Scientists. Computer scientists
should be comfortable with and practiced in the Unix philosophy of computing. The Unix
philosophy is the one that emphasizes linguistic abstraction and composition in order to
effect computation. In practice, this means becoming comfortable with the notion of
command-line computing, text-file configuration and IDE-less software development. Many
milestones in the history of Computer Science took place in Unix/Linux only. For example,
socket, an abstraction that is the basis for Internet, is conceived in Unix only.

Given the prevalence of Unix systems, computer scientists today should be fluent in basic
Unix, including the ability to:
● navigate and manipulate the filesystem;
● compose processes with pipes;
● comfortably edit a file with emacs ​and​ vim;
● Security in Unix
● create, modify and execute a Makefile for a software project;
● write simple shell scripts.
● How to create libraries and manage them, both dynamic and static libraries
● Glimpses of regular expression parsing. This will help a lot while studying Discrete
mathematics, compiler construction
● Awk - a marvelous text processing tool which is popular even today and is used along
with server side programming languages such as CGI, perl, PHP, Python
Recommended reading
● The Unix Programming Environment by Kernighan and Pike.
(​http://www.amazon.com/gp/product/013937681X/ref=as_li_ss_tl?ie=UTF8&tag=uc
mbread-20&linkCode=as2&camp=217145&creative=399369&creativeASIN=013937
681X​ )

4.2.2.Discrete Mathematics (or Mathematical Foundations of Computer Science)


Computer scientists must have a solid grasp of formal logic and theorem proving. Proof by
algebraic manipulation and by natural deduction engages the reasoning common to routine
programming tasks. Proof by induction engages the reasoning used in the construction of
recursive functions.

Computer scientists must be fluent in formal mathematical notation, and in reasoning


rigorously about the basic discrete structures: sets, tuples, sequences, functions and power
sets.

Students will learn enough Number Theory to study and implement common cryptographic
protocols. Regular expressions are used in text processing such as awk programming. Also,
this course knowledge is basis for Formal languages and Automata Theory course and in
addition to Artificial Intelligence course.

The following are the skill sets which student gain from this course.
● Regular expressions
● Language grammars
● First order logic
● Graph theory
● Trees in practice
● Number theoretic concepts

Recommended reading
● How To Solve It by Polya.
(​http://www.amazon.com/gp/product/4871878309/ref=as_li_ss_tl?ie=UTF8&tag=uc
mbread-20&linkCode=as2&camp=217145&creative=399369&creativeASIN=487187
8309​ )
● Discrete Mathematics, Schaum’s outline series.

4.2.3. Data Structures and Algorithms

Students should certainly see the common data structures and algorithms such as arrays
during their first level programming course in their first year of study. However, more
important than knowing a specific algorithm or data structure, computer scientists must
understand how to design algorithms (e.g., greedy, dynamic strategies) and how to span the
gap between an algorithm in the ideal and the nitty-gritty of its implementation.

In our Indian Universities, these things are introduced through courses such as: 1. Data
Structures, 2. Advanced Algorithms or Design and Analysis of Algorithms.
Design aspects of various algorithms such as queues, stacks, trees, graphs, hashing, etc., are
covered in these courses along with concepts such as algorithm analysis and NP
completeness.

At a minimum, computer scientists seeking stable long-run employment should know all of
the following:
● hash tables;
● linked lists;
● trees;
● binary search trees; and
● directed and undirected graphs.

Computer scientists should be ready to implement or extend an algorithm that operates on


these data structures, including the ability to search for an element, to add an element and to
remove an element.

For completeness, computer scientists should know both the imperative and functional
versions of each algorithm.

These courses are designed to enrich students with the above concepts with enough practical
implementation skills. These skills are very very essential while facing Competitive
programming , that is currently employed during the placements extensively.

Recommended reading
● Art of Computer Programming series by Knuth.
(​http://www.amazon.com/gp/product/0321751043/ref=as_li_ss_tl?ie=UTF8&tag=uc
mbread-20&linkCode=as2&camp=217145&creative=399373&creativeASIN=032175
1043​ )

4.2.4. Operating Systems

This subject is the most vital course in Computer Science and allied programs. Usually,
compared to other SW systems, operating system is usually the largest one. For example,
3.13 Linux is about 12 million lines of code6.

● 7 million LOC in drivers/


● 2 million LOC in arch/
● only 139 thousand LOC in kernel/.

Windows code base is approximately 3.5M files and, when checked in to a Git repository,
results in a repo of about 300GB7.

In the course, computer scientists are made aware of how kernels handle system calls, paging,
scheduling, context-switching, filesystems and internal resource management.

6
​https://unix.stackexchange.com/questions/223746/why-is-the-linux-kernel-15-million-lines-of-code?rq=1
7
​https://blogs.msdn.microsoft.com/bharry/2017/05/24/the-largest-git-repo-on-the-planet/
A good understanding of operating systems is secondary only to an understanding of
compilers and architecture for achieving performance.

Understanding operating systems becomes especially important when programming an


embedded systems.

To get a better understanding of the kernel, students could:


● print "hello world" during the boot process;
● design their own scheduler;
● modify the page-handling policy; and
● create their own filesystem.
● Testing their own garbage collector
● Writing simple character and block device drivers
● Really expose to racing conditions in inter process communication based applications
● Virtualization

Recommended reading
● Linux Kernel Development by Love.
● Operating Systems, Gary Nutt
https://www.amazon.com/Gary-Nutt-Operating-Systems-3rd/dp/B00N4E7EDK

4.2.5. Computer Architecture

Computer scientists should understand a computer from the transistors up. The understanding
of architecture should encompass the standard levels of abstraction: transistors, gates, adders,
muxes, flip flops, ALUs, control units, caches and RAM. An understanding of the GPU
model of high-performance computing will be important for the foreseeable future.

A good understanding of caches, buses and hardware memory management is essential to


achieving good performance on modern systems. To get a good grasp of machine
architecture, students should design and simulate a small CPU.

Some of the skill sets which students are going acquire by completing this course are:
● Analysis of small scale control problems in real life and proposing digital solutions
using gates and ICs
● Design aspects of CPU, CU, Memory,
● Exposure to parallel computer architectures, multi-core architectures

Recommended reading
● nand2tetris​, which constructs a computer from the ground up. (http://nand2tetris.org/)
● Computer Organization and Design by Patterson and Hennessy.
(​http://www.amazon.com/gp/product/0123744938/ref=as_li_ss_tl?ie=UTF8&tag=uc
mbread-20&linkCode=as2&camp=217145&creative=399369&creativeASIN=012374
4938​ )
4.2.6. Parallel Computing (or High Performance Computing or Multi-core
programming)

HPC (High Performance Computing) represents a strategic, game changing technology with
tremendous economic competitiveness, science leadership, and national security implications
as HPC stands at the forefront of scientific discovery and commercial innovation.

With the availability of variety of architectures, it gives scope for multitude of research areas.
The unfortunate truth is that harnessing parallelism requires deep knowledge of architecture:
multicore, caches, buses, GPUs, etc. Lots of practical coding on real hardware platforms.

In this course, students are exposed to parallelism at various levels such as instruction level
(pipelining), architecture level, etc.

The following are the skill sets students are supposed get in this course.

● Students will learn the art of CUDA and OpenCL programming.


● Threads are a flimsy abstraction for parallelism, particularly when caches and cache
coherency are involved. But, threads are popular and tricky, so worth learning.
Pthreads is a reasonably portable threads library to learn. Students are indulged in
projects around these concepts.
● Students are made to use large-scale parallelism using MPI.
● Students are made to expose to map-reduce, etc., cluster skills.

4.2.7. Artificial Intelligence

If for no other reason than its outsized impact on the early history of computing, computer
scientists should study artificial intelligence. While the original dream of intelligent machines
seems far off, artificial intelligence spurred a number of practical fields, such as machine
learning, data mining, theorem proving, A* algorithm, back tracking, state space approach,
and natural language processing.

Recommended reading
● Artificial Intelligence by Russell and Norvig. (
http://www.amazon.com/gp/product/0136042597/ref=as_li_ss_tl?ie=UTF8&tag=ucm
bread-20&linkCode=as2&camp=217145&creative=399369&creativeASIN=0136042
597​ )

4.2.8. Machine Learning


Aside from its outstanding technical merits, the sheer number of job openings for "relevance
engineer," indicates that every computer scientist should grasp the fundamentals of machine
learning.

Machine learning doubly emphasizes the need for an understanding of probability and
statistics.

At the undergraduate level, core concepts should include Bayesian networks, clustering and
decision-tree learning.

Student is supposed to developed the following skill sets:


● Use of numpy with Python
● Use of keras with Python
● Use of H2O with Python
● Backpropagation neural network algorithm for classification problems.

Recommended reading
● Machine Learning by Mitchell. (
http://www.amazon.com/gp/product/0070428077/ref=as_li_ss_tl?ie=UTF8&tag=ucm
bread-20&linkCode=as2&camp=217145&creative=399369&creativeASIN=0070428
077​ )

4.2.9. Networking (or Computer Networks or Design of Computer Networks)

Given the ubiquity of networks, computer scientists should have a firm understanding of the
network stack and routing protocols within a network. Theoretical aspects of this is the
essence of this course.

Another important point to be explored in this course is how to building an efficient, reliable
transmission protocol (like TCP) on top of an unreliable transmission protocol (like IP)
should not be magic to a computer scientist.

Computer scientists must understand the trade-offs involved in protocol design--for example,
when to choose TCP and when to choose UDP. (Programmers need to understand the larger
social implications for congestion should they use UDP at large scales as well.)

Specific recommendations
Students will be having their knowledge and skill set developed in:
● 802.3 and 802.11;
● IPv4 and IPv6; and
● DNS, SMTP and HTTP.
● Computer scientists should understand exponential back off in packet collision
resolution and the additive-increase multiplicative-decrease mechanism involved in
congestion control.
● Building an HTTP client and daemon;
● Building a DNS resolver and server; and
● Building a command-line SMTP mailer.
Recommended reading
● Unix Network Programming by Stevens, Fenner and Rudoff.
● Data Communications:A practical Oriented approach, Larry Hughes, Narosa Publ.

4.2.10. Cryptography

Cryptography is what makes much of our digital lives possible in secure manner. Computer
scientists should understand and be able to implement the following concepts, as well as the
common pitfalls in doing so:

● symmetric-key cryptosystems;
● public-key cryptosystems;
● secure hash functions;
● challenge-response authentication;
● digital signature algorithms; and
● threshold cryptosystems.

Also, every computer scientist should have the pleasure of breaking ciphertext using
pre-modern cryptosystems with hand-rolled statistical tools.

Every student should be made to create their own digital certificate and set up https in
apache. Also, Student should also write a console web client that connects over SSL.

Students will be made to know how to use GPG; how to use public-key authentication for
ssh; and how to encrypt a directory or a hard disk, etc.

Recommended reading
● Cryptography Engineering by Ferguson, Schneier and Kohno.

4.2.11. Software Engineering

During the late 1980’s, the principles in software engineering changed and established IT
industry. Learning how to attack and maneuver through a large existing codebase is a skill to
most programmers will have to master, and it's one best learned in school instead of on the
job.

All students need to understand centralized version control systems like svn and distributed
version control systems like git.

A working knowledge of debugging tools like gdb and valgrind goes a long way when they
finally become necessary.

Recommendations:
● Software Engineering, Pressman
4.2.12. Software Testing

In principle, Software testing must be distributed throughout the entire curriculum. However,
University will organise this as a course. Students are taught and graded on the test cases they
turn in.

4.2.13. Security

Security is declared as one of the 21st century challenge. The sad truth of security is that the
majority of security vulnerabilities come from sloppy programming, which further can be
attributed to the nature of distributed style of SW development.

Students are taught defensive programming--a mind for thinking about how their own code
might be attacked.

Problems such as stack overflow problems, how viruses are injected, etc are explained. This
course needs through understanding of operating systems and computer networks.

A few readers have pointed out that computer scientists also need to be aware of basic IT
security measures, such as how to choose legitimately good passwords and how to properly
configure a firewall with iptables.

Students need to get the following knowledge and skill set by doing this course:
● social engineering;
● buffer overflows;
● integer overflow;
● code injection vulnerabilities;
● race conditions; and
● privilege confusion.

Recommended reading
● Metasploit: The Penetration Tester's Guide by Kennedy, O'Gorman, Kearns and
Aharoni. (
http://www.amazon.com/gp/product/159327288X/ref=as_li_ss_tl?ie=UTF8&tag=ucm
bread-20&linkCode=as2&camp=217145&creative=399373&creativeASIN=1593272
88X​ )
● Security Engineering by Anderson. (
http://www.amazon.com/gp/product/0470068523/ref=as_li_ss_tl?ie=UTF8&camp=17
89&creative=390957&creativeASIN=0470068523&linkCode=as2&tag=ucmbread-20
)

4.2.14. Computer Graphics (or Mathematical elements of computer graphics)


This course introduces the basic concepts of video systems, resolutions of graphic systems. It
introduces the various algorithms of line drawing, circle drawing, ellipse drawing, curve
fitting, hidden surface removal, shading algorithms, projections, transformations. Some of
these concepts are very much needed in other courses such as robotics, image processing, etc.

Some of the skill sets students are supposed to attain after this course are:
● Simple ray tracer coding.
● It's good mental hygiene to work out the transformations necessary to perform a
perspective 3D projection in a wireframe 3D engine.
● Data structures like BSP trees and algorithms like z-buffer rendering are great
examples of clever design.

Recommended reading
● Mathematics for 3D Game Programming and Computer Graphics by Lengyel. (
http://www.amazon.com/gp/product/1435458869/ref=as_li_ss_tl?ie=UTF8&tag=ucm
bread-20&linkCode=as2&camp=217145&creative=399373&creativeASIN=1435458
869​ )
● Computer Graphics, Schaum’s outline series.

4.2.15. Visualization

Good visualization is about rendering data in such a fashion that humans perceive it as
information. This is not an easy thing to do. The modern world is a ocean of data, and
exploiting the local maxima of human perception is key to make sense of it. Data Scientists
start their analysis work with visualization their data.

Recommended reading
● The Visual Display of Quantitative Information by Tufte. (
http://www.amazon.com/gp/product/0961392142/ref=as_li_ss_tl?ie=UTF8&tag=ucm
bread-20&linkCode=as2&camp=217145&creative=399369&creativeASIN=0961392
142​ )

4.2.16. Robotics

Robotics may be one of the most engaging ways to teach introductory programming.
Moreover, as the cost of robotics continues to fall, thresholds are being passed which will
enable a personal robotics revolution. This course will introduce concepts such as
transformations, robot kinematics, robot dynamics, different sensory data use such as tactile,
camera, and programming the robot. With the availability of variety of sensors and cheap
single board computers such as Raspberry Pi, Arduino, this is gaining momentum.

4.2.17. Databases (or Database management systems or Design of Databases)

Databases are too common and too useful to ignore. This course deals with physical
organization of data in secondary memories using B-Trees, B+Trees, Relational algebra,
relational calculus, query optimization along with the introduction of SQL language. How
unlike UML modeling, ER modeling seems to be a reasonable mechanism for visualizing
encoding the design of and constraints upon a software artifact will be explained.
A computer scientist that can set up and operate a LAMP (Linux, Apache, MySQL, PHP or
Perl) stack is one good outcome of this course.

Recommended reading
● SQL and Relational Theory by Date. (
http://www.amazon.com/gp/product/0596523068/ref=as_li_ss_tl?ie=UTF8&tag=ucm
bread-20&linkCode=as2&camp=217145&creative=399369&creativeASIN=0596523
068​ )

4.3. Some Books for which I am a die heart fan

4.3.1. The C Programming Language by Brian Kernighan and Dennis Ritchie


This book, sometimes just referred to by the initials of its authors K&R (Kernighan and
Ritchie), is a classic. It includes a bit of computer science history. It gives an insight into how
the world thought about programming back in the late 1970s, and gives a great perspective of
how similar the concept of software engineering is today from those heady days when C and
Unix weren't yet household names.

The following is the online of this book. ​https://tinyurl.com/yy2fwf7y

The following is the link having pdf file of old editions.


http://www.ccapitalia.net/descarga/docs/1978-ritchie-the-c-programming-language.pdf

4.3.2. Programming With C, Schaum’s series, Byron Gotterfred, McGraw Hill

The following is the link to the above book.


https://tinyurl.com/y3hraqbb
This is another book which I still hold in rack since 35 years. This is my first book to prepare
for C language. In fact, I found Kernighan and Ritchie book little hard to follow when I was a
beginner. Of course, I love its flavor also. This Schaum’s book which I hold, i did not allow
even my daughter to use, rather I have purchased a new copy for her. Also, I have given this
book as a memento to many winners in our college.

4.3.3. The Unix Programming Environment, Kernighan and Rob Pike

The following link contains the above book.


https://scis.uohyd.ac.in/~apcs/itw/UNIXProgrammingEnvironment.pdf

4.3.4. Data Structures, Schaum’s outline Series, Lipschutz Seymour, Mcgraw-Hill

This is the next book I have purchased after Gotterfred book on C language from Schaum’s
outline series. As usual, marvelous examples are the unique feature of this book. Book
includes nice illustrations to understand the concepts. Also, it included horrendous number of
examples to solve. I love this book also a lot.

This book is available at ​https://tinyurl.com/y5xqo4qk


4.3.5. Introduction to Algorithms by Thomas H. Cormen

This is a hefty to carry around. That being said, it's a classic, it's comprehensive, detailed,
and required reading by almost every major Computer Science program in the country.

It helps the reader to elevate from just being a coder to thinking like a true Computer
Scientist. It delves into sorting algorithms, searching algorithms, and everything in between.
However, often bulky nature of the book makes people to run away from it.The following is
book link. ​https://tinyurl.com/yyuseq6x

The following link contains its pdf file for download but of second edition.
http://web.karabuk.edu.tr/hakankutucu/CME222/MIT[1].Press.Introduction.to.Algorit
hms.2nd.Edition.eBook-TLFeBOOK.pdf

4.3.6. Data Structures and algorithm analysis in C++, Mark Allen Weiss, Pearson.

The following link contains pdf of this book.


http://iips.icci.edu.iq/images/exam/DataStructuresAndAlgorithmAnalysisInCpp_2014.pdf

When I started taming myself for competitive programming about 15 years back, I have
undergone to this book. I found algorithm analysis in this book is relatively lucid compared to
Cormen. Also, it includes C++ abstractions of data structures.
4.3.7. Computer Graphics, Schaum’s Outline Series, Mcgraw-Hill

The following link contains the above book. ​https://tinyurl.com/y5bsmedc

I still have a copy of this books that is purchased during my studies in 1980’s. I love the
mathematical treatment in the book that is understandable to any one. Also, I love this book
for its marvelous solved examples.

Digital logic and computer design, Morris Mano

This is another book which made me to feel that I know about computer science. This is the
first book which I read from 1st page to last page when I was migrating to Computer Science.
We will get over all view of computer system hardware.

The following link contains the above book. ​https://tinyurl.com/y5bavgma

4.3.8. Computational Geometry an Introduction, Franco P Preparata, Michael Ian


Shamos, Springer.

To be frank enough I did not finish reading this book since 28 years. This is a book in
Springer’s monograph series. What a detailed dealing of the subject by the marvelous
authors! It made me to refer to the meaning of the word “monograph”. While reading this
book, I used to feel “Wow this concept can be given as a PhD topic” etc. I feel this book
might have inspired many hundreds of Computer Science people to successfully complete
their Ph.D.

The following link contains the pdf file of the above. ​https://tinyurl.com/yxtf2yrv

4.3.10. Data Mining concepts and techniques, Han and Kimber

The following link contains the pdf of this book.


https://tinyurl.com/y93st33w
Chapter 5 Job Prospectus to Computer Science and allied branches

5.1. Top Skills that are in Demand in 2019

5.1.1. Machine Learning

Machine learning is one of the most innovative and exciting fields moving into the future,
making it one of the most profitable skills you can learn. From Siri and Alexa to chatbots to
predictive analysis to self-driving cars, there are a ton of uses for this futuristic tech. Machine
learning can be applied to every industry, including healthcare, education, finance, etc.

Skill Sets Needed​: Statistics, Mathematics, Optimization,R/Python.

5.1.2. Data Science & Analytics

Revenue from Big Data applications and analytics is projected to grow ​from $5.3B in 2018 to
$19.4B in 2026​. 84% of enterprises have launched ​advanced analytics and Big Data
initiatives to accelerate their decision-making and bring greater accuracy. ​Data analysis is the
more entry-level skill​, whereas Data Science gets more advanced, but the careers are still
cousins.

Skill Sets Needed​: Mathematics, AWS, Hadoop, SPARK, Java/Python.

5.1.3. Artificial Intelligence

AI is another rapidly changing domain, making it an exciting time for programmers looking
for something new, involved, and challenging. Evidently, there is crossover with machine
learning here, but the key difference is that AI is a broader concept pertaining to machines
designed to act intelligently like humans, whereas machine learning relies on devices making
sense of a specific set of data. In 2018, 31% of businesses said implementing AI was on their
agenda for the next 12 months.

Skill Sets Needed​: Statistics, Mathematics, Optimization, theorem proving, NLP, Python,
Tensorflow, Keras

5.1.4. Data Visualization

Data visualization is a way to help researchers/analysts to understand the significance of data


by placing it in a visual context (turn spreadsheets or reports into charts and graphs that can
be easily understood). One can say it is the first level in the analysis. One can think of this
career as a bridge between technical and non-technical roles. Here, you will be taking the
data collected by analysts and transforming it into a form anyone can understand and infer.

Skill Sets Needed​: Statistics, Mathematics, Tableau, R, Python.

5.1.5. Data Engineering


Data Engineering is separate from Data Science, but the former is what enables the latter to
exist. Data engineers build the infrastructure and tools that data scientists rely on to conduct
their own work.

Skill Sets Needed​: ORACLE, SQL/PLSQL, LAMP, OLAP, Agile development

5.1.6. Mobile Development

In 2018, it's estimated that there will be over 2.5 billion smartphone users in the world. It is
not joke if one says that number of smart users are exorbitantly more than number of
websites. Situations have changed that the companies who want to stay relevant don't just
need websites, instead they need apps. One interesting direction that mobile apps are headed
during the recent days is mating with augmented reality. Apps like Pokémon Go and the
upcoming Harry Potter: Wizards Unite game engage with the real world, blending technology
and reality.

Skill Sets Needed​: Java, IOS, Spark

5.1.7. UI/UX Design

UI (user interface) specialists design interfaces for websites and apps to be visually
appealing, flow well, and be easy for users to navigate. UX (user experience) specialists do a
lot of research and testing to consider every element of how the user will interact with the
company and website, coordinating with developers and UI designers. UI specialists focus on
the visuals, layout, and general look and feel of a page or a product. UX specialists will be
carrying lot of analysis and testing to help a business seamlessly meet their employer’s
needs.

Skill sets needed​: CSS, ​JavaScript​, Python, Processing, ​Photoshop​, Wireframing, Sketch,
Illustrator

5.1.8. Extended Reality ( Virtual Reality (VR) and Augmented reality(AR))

Virtual reality and augmented reality, the collective term is extended reality, or XR—are
trending to be useful for more than just entertainment in the coming future. Marketing,
advertising, health care, and manufacturing are some industries that have already begun
adopting XR technology. I am sure people of India to recall, 20 years back a cinema of
Aiswarya Rai Bachchan (Genes), where a virtual Aiswarya Rai will be dancing along with
the real one. By 2022, reports predict that the VR industry ​will be worth more than $25
billion​, while AR will be worth a stunning $133 billion.

Skill sets needed​: Java, C#, 3DMAX, Adobe suite, Graphic design, Audio design,
Animation, Psychology, Storytelling,

5.1.9. Blockchain

Originally devised for the digital currency Bitcoin, blockchain has evolved. However, the
tech community is now finding other potential uses for this technology, such as peer-to-peer
payments, crowdfunding, file storage, identity management, digital voting, etc. “With
platforms like Ethereum taking the lead, more and more companies need developers who
understand the blockchain, smart contracts, and can build decentralized applications,” writes
Anna Belaya.
(https://medium.com/@annabelaya_10645/7-top-tech-skills-in-high-demand-for-2019-cf0c17
61afd3 )

Skill sets needed​: networking, cryptography, computing, database design, Java, JavaScript,
and C++ to Go, Solidity, and Python.

5.1.10. IoT

IoT, Internet of Things, encompasses everything connected to the internet, but it is


increasingly being used to define objects that “talk” to each other. Designing IOT systems for
a particular problem involves using variety of sensors that have communication abilities.
Also, another important thing is, security of these devices.

Skill sets needed​: Raspberry Pi, Arduino, GPIO, USB, I2C, LEDs, FPGA, ASICs, SoC,
Bluetooth, LoRaWAN, Micro-controllers, ARM Cortex

5.1.11. Cloud Computing/AWS

Cloud computing jobs are on the rise because more and more companies are switching from
the classical server infrastructure to cloud solutions. ​According to Gartner
(​https://www.gartner.com/en/newsroom/press-releases/2018-09-12-gartner-forecasts-worldwi
de-public-cloud-revenue-to-grow-17-percent-in-2019 ), the market for public cloud services
is projected to grow by 17.3 3% in 2019.

Amazon Web Services is one of these cloud platforms, featuring content delivery, database
storage, networking, and more–over 50 services in total. AWS specialists are usually
engineers, cloud architects, or system administrators. IT professionals who are AWS-certified
earn more than their non-certified counterparts. Even Google has entered into cloud market
via Google cloud.

Skill sets needed​: Python, PHP, Perl, Ruby, MongoDB, AWS, Azure, Agile, Puppet, Docker,
Chef,

5.1.12. Network and Information Security (Cybersecurity)

When customer data breaches takes place, it is costly for the companies to recover from.
Companies famously hacked in the past include Sony, LinkedIn, Chipotle, and others. Thus,
cyber security became the most important and declared as 21st century challenges in lines
with power and air pollution. Right now there is a huge shortage of people trained in network
security.

Skill sets needed​: Networks, Network administration, penetration testing, C/C++/assembly,


Elliptical Curve Cryptography, AES, RSA, SSL, TLS, DTLS and VPN
5.1.13. SEO/SEM Marketing

Digital marketing skills are needed to improve the company’s web presence and visibility.
This is one of the tech skills in demand for obvious reasons: more site visits mean more
conversions, customers, and revenue. SEO/SEM role involves constant testing, measuring,
and experimenting to see what works and make changes based on observations/metrics/KPIs.

Skill sets needed​: Technical writing, coding, Web Analytics, Social Analytics, a sense of
humor

5.1.14. Quantum Computing

Big IT giants such as Google, IBM, Microsoft, are pumping lot of funds in this area with the
guaranteed returns of having most powerful computers than current day semiconductor based
computers. This research is very much influenced by Einstein’s relativity theorem.

Skill sets needed: Coding, Physics, Digital Design

5.2. Portfolio versus resume

A ​resume​ ​says nothing of a programmer's ability.


A ​portfolio could be as simple as a personal blog, with a post for each project or
accomplishment. A better portfolio would include per-project pages, and publicly browsable
code (hosted perhaps on github or Google code). Every computer science major should build
a ​portfolio​. Contributions to open source should be linked and documented. A code portfolio
allows employers to directly judge ability.

5.3. Work experience/Internships


Computer Science course also demands industry experience to get placed. So, plan for doing
internships during your summer vacation in second and third years. This working can
continue to develop key skills in you and build up a network of contacts. It can also give you
commercial skills and show how your Degree can be applied in practice.
Joining a university club or society that gives you the opportunity to develop your computing,
web design or multimedia skills also helps when applying for graduate jobs.
5.4. Most Common Job names or types8
Jobs directly related to your Degree include:

8
​https://www.prospects.ac.uk/careers-advice/what-can-i-do-with-my-degree/computer-science
● Application analyst ● Systems analyst
● Applications developer ● UX designer
● CAD technician ● VFX artist
● Cyber security analyst ● Web designer
● Data analyst ● Web developer
● Database administrator ● Digital copywriter
● Forensic computer analyst ● IT sales professional
● Game designer ● IT trainer
● Games developer ● Nanotechnologist
● Information systems manager ● Network engineer
● IT consultant ● PPC specialist
● Machine learning engineer ● Social media manager
● Multimedia programmer ● Supply chain manager
● Penetration tester ● Technical author
● SEO specialist ● Web content manager
● Software engineer

5.5​.​ Typical employers

Common employers are IT consultancies and IT service providers. However, as most


businesses rely on computers to function effectively, there are also opportunities within the
IT departments of major organisations in sectors such as:
● aerospace and defence
● agricultural
● financial services
● healthcare
● manufacturing
● public and third sectors
● retail
● Telecommunications.
● Government - real time governance
Chapter 6 Tame yourself to Competitive programming to succeed in
Placements

6.1. Background

Majority of students and faculty are little aware of Informatics Olympiad. They know
Mathematics Olympiad, Science Olympiad, and some other Olympiad but not Informatics
Olympiad a.k.a. International Olympiad in Informatics (IOI), which is an annual competitive
programming competition for secondary school students. This is second largest after
Mathematics Olympiad. However, in India things are not lucrative. The Wikipedia pages9 of
IOI confirms that India did not host a single IOI event and win a single year. IOI finals for the
year 2020 is going to be held at Singapore. The Indian Computing Olympiad is an annual
computer programming competition that selects four participants to represent India at the
International Olympiad in Informatics. The Chennai Mathematical Institute10 is instrumental
in initiating this activity since few years.

Also, since 1970’s, Association of Computing Machinery (ACM) an international voluntary


body which defines standards in Electronics and Computers, and IBM have initiated an
international programming competition under the name hood of “​International Collegiate
Programming Contest(ICPC)11”. ICPC annual competition will be attended by students
from all over the world12.

Many American and European universities consider sending their team to ICPC as their
dream, goal and proud. Rather, they are of the opinion that sending a team to ICPC is a
prestige to the University/Institute. In fact, many American universities are offering regular
credit courses to prepare students to this prestigious competition. ABET is giving due credit
to this type of courses while grading Universities/Institutes.

This exam is organized in various stages to name local, national, regional (continent level)
and international. Also, Infosys, Wipro are sponsoring national level contests in India. In
India, very few Institutions are participating which includes, IIT-Kanpur, IIT-Bombay,
IIT-Kharagpur, IIIT-Hyderabad, Amrita-Coimbatore.

It is a de-facto practice to offer high perks by Google, Yahoo, IBM, Microsoft etc., to
successful ICPC participants both at national, region, and international level13. Of course,
nothing to talk about final international round winners; obviously they are very in demand by
world renowned MNC’s such as above14. I believe participation in this test is going to rise

9
​https://en.wikipedia.org/wiki/International_Olympiad_in_Informatics​ (Dates 3rd June 2019)
10
​https://www.cmi.ac.in/
11
​https://en.wikipedia.org/wiki/International_Collegiate_Programming_Contest
12
I am unaware whether any Indian team has reached finals or not. Wikipedia pages did not confirm me.
13

https://www.quora.com/What-is-more-important-to-companies-like-Google-competitive-programming-skills-or-
work-experience-in-programming/answer/Bill-Poucher
14

https://www.quora.com/Is-it-confirmed-that-anyone-who-is-a-winner-of-the-ICPC-can-get-a-job-in-Google-Fac
ebook-and-Microsoft-with-a-good-salary/answer/Bill-Poucher
very soon in world wide. Also, students if they have prepared for ICPC, they can also
participate in other world level contests such as Challenge2415, Microsoft Imagine Cup16, etc.

In addition, student can take part in some Indian contests organized by Infosys, Wipro, etc for
placements. During the last 2 to 3 years, campus placements style has changed unlike
previous years where placement people used to test only simple programming skills like
syntax finding skills, etc. However, during the last 2 to 3 years, they are asking students to
solve some programming puzzles within some stipulated amount of time in online. Once they
have tuned for ICPC test, their chances for campus placements increases by many fold.
Moreover, by having ICPC training, students may also easily succeed in tests that are
organized by Microsoft, Google etc., for ​internships​. In addition, they can answer
programming, algorithmic questions that appears in GATE and advanced or subject GRE
very easily with ICPC training.

Thus, it is high time for this Computer Science Millennials to shape them from their 1st year
itself for Programming Competitions, without fail; otherwise they would have rare chances
of getting job either from campus or off-campus.

Some of the useful Judging sites where you can start solving problems.
● Hackerrank ​https://hackerrank.com
● Hackerearth ​https://www.hackerearth.com/
● Project Euler. ​https://projecteuler.net/
● USACO Training Gateway ​https://train.usaco.org/usacogate
● Timus online Judge: ​http://acm.timus.ru/problemset.aspx
● Sphere Online Judge: ​http://www.spoj.com
● Code Chef: ​https://codechef.com
● Kattis Judge: ​https://open.kattis.com
● DMOJ Judge: ​https://dmoj.ca/
● FLOP Judge: ​http://problem-g.estad.ucm.es/FLOP/index.jsp
● Codeforces Judge: ​https://codeforces.com
● Leetcode: ​https://leetcode.com
● CS Academy: ​https://csacademy.com/
● Atcoder: ​https://atcoder.jp/
● UVA Online Judge: ​https://uva.onlinejudge.org/
● ICPC Live Archive: ​https://icpcarchive.ecs.baylor.edu/
● A2 Online Judge: ​https://a2oj.com/
● Topcoder: ​https://www.topcoder.com/challenges/?pageIndex=1
● Codebytes: ​https://www.coderbyte.com/
● CodeEval: ​https://www.codeeval.com/
● Codewars: ​https://www.codewars.com/
● CodinGame: ​https://www.codingame.com/
● Codeforces: ​https://codeforces.com/
● URI Online Judge: ​https://www.urionlinejudge.com.br/
● ChallengeRocket: ​http://bit.ly/ChallengeRocketCom
● CodeFights: ​https://codefights.com/
● Geeksforgeeks: ​https://www.geeksforgeeks.org/

15
​http://ch24.org/
16
​https://imaginecup.microsoft.com/
● Caribbean Online Judge: ​https://coj.uci.cu/general/links.xhtml
● Stanford Pro co: ​https://cs.stanford.edu/group/acm/SLPC/training.php

If you are a fresher, you start doing problems at Hackerrank since the beginning of your first
programming course. Continue this while you are doing courses Data Structures, Algorithms
also. Then, you try to solve problems of Project Euler. Then, start reading tutorials from
Codechef and solve problems there. Then, you can solve examples from SPOJ, TopCoder,
etc.

Useful books for facing Programming Competitions


● The Algorithm Design Manual by Steven S. Skiena, ​http://bit.ly/download-skiena
● Competitive Programming 3, Steven S Skiena,
https://www.pdfdrive.com/competitive-programming-3-e32649251.html
● Algorithm Notes for Professionals : The Algorithms Notes for Professionals book is
compiled from Stack Overflow Documentation, the content is written by the beautiful
people at Stack Overflow,
https://goalkicker.com/AlgorithmsBook/AlgorithmsNotesForProfessionals.pdf
● Competitive programmers handbook by antti laaksonen,​https://cses.fi/book.pdf
● Introduction to algorithms, Cormen,
https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844
● 101 Programming puzzle problems solved: High School Junior to Seniors Join us to
win Informatics Olympiad, N.B.Venkateswarlu, Feb, 2015. (Kindle edition:
http://www.amazon.com/dp/B00T1OK42K​ )
● 2​8 String based programming puzzles solved, N.B.Venkateswarlu,, Jan, 2016 (Kindle
edition:
http://www.amazon.in/gp/product/B01AWA0AGQ?%2AVersion%2A=1&%2Aentrie
s%2A=0​ )
● High School Programming Puzzles Solved using Python, N.B. Venkateswarlu, Nov,
2016, ​https://www.amazon.in/dp/B01N8P2FCZ
● Matrix and pattern based programming puzzles explored fathomlessly, Amazon
Kindle Edition,
https://www.amazon.co.uk/School-Programming-Puzzles-solved-Python-ebook/dp/B
01N8P2FCZ/ref=sr_1_1/261-6208710-5530138?s=digital-text&ie=UTF8&qid=15054
87894&sr=1-1
● A lucid facilitator to explore high school level geometry based programming puzzles,
N.B. Venkateswarlu, Apr, 2019, Amazon Kindle Pub,
https://www.amazon.com/gp/product/B07R63996Z/ref=dbs_a_def_rwt_bibl_vppi_i6

6.2. List of Topics for which you need to fine tune for programming Competitions17

1. ​Basic Geometry/Euclidean Geometry/Coordinate Geometry/ [3-D variants of


everything].
2. ​Computational Geometry.

17
Source:
https://www.academia.edu/4715745/List_of_Topics_for_programming_Competitions_-_1._Basic_Geometry_E
uclidean_Geometry_Coordfinate_Geometry_3-D_variants_of_everything
a. Graham Scan algorithm for Convex Hull O(n * log(n)).
b. Online construction of 3-D convex hull in O(n^2).
c. Bentley Ottmann algorithm to list all intersection points of n line segments in O((n + I) *
logn).
■ Suggested Reading -
1. ​ ​http://softsurfer.com/Archive/algorithm_0108/algorithm_0108.htm
d. Rotating Calipers Technique.
■ Suggested Reading -​ ​http://cgm.cs.mcgill.ca/~orm/rotcal.html
■ Problems - Refer the article for a list of problems which can be solved using Rotating
Calipers technique.
e. Line Sweep/Plane Sweep algorithms -
■ Area/Perimeter of Union of Rectangles.
■ Closest pair of points.
■ Suggested Reading -
1. ​ ​http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=lineSweep
■ Problems - Follow the tutorial for list of problems.
f. Area of Union of Circles.
g. Delaunay Triangulation of n points in O(n * logn).
h. Voronoi Diagrams of n points in O(n * logn) using Fortunes algorithm.
i. Point in a polygon problem -
■ O(n) solution without preprocessing.
■ O(logn) algorithm with O(n * logn) preprocessing for convex polygons.
j. Problems on computational geometry -
■ BSHEEP​,​ ​BULK​,​ ​SEGVIS​,​ ​CONDUIT​,​ ​RUNAWAY​,​ ​DIRVS​,​ ​RAIN1​,​ ​SHAMAN​,
TCUTTER​,​ ​LITEPIPE​,​ ​RHOMBS​,​ ​FSHEEP​,​ ​FLBRKLIN​,​ ​CERC07P​,​ ​BAC​,​ ​ALTARS​,
CERC07C​,​ ​NECKLACE​,​ ​CH3D​,​ ​RECTANGL​,​ ​POLYSSQ​,​ ​FOREST2​,​ ​KPPOLY​,​ ​RAIN2​,
SEGMENTS​,​ ​ARCHPLG​,​ ​BALLOON​,​ ​CIRCLES​,​ ​COMPASS​,​ ​EOWAMRT​,​ ​ICERINK​ on
SPOJ.
■ CultureGrowth​,​ ​PolygonCover​ on Topcoder.
k. Suggested Reading -
■ Computational Geometry: Algorithms and applications. Mark De Burg.
3. ​String Algorithm​.
a. Knuth Morris Pratt algorithm.
■ Problems - NHAY, PERIOD on SPOJ.
■ Suggested Reading -
1. Cormen chapter on Strings.
2. ​ ​http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=stringSearching
b. Aho Corasick algorithm.
■ Problems - WPUZZLES on SPOJ.
c. Suffix Arrays
■ O(n^2 * logn) Naive method of suffix array construction
■ O(n * logn^2) method of suffix array construction
■ O(n * logn) method of suffix array construction.
■ O(n) method of suffix array construction
■ O(n) LCA preprocess on Suffix Arrays to solve a variety of string problems.
d. Suffix Trees
■ O(n) construction of Suffix trees using Ukkenon’s algorithm.
■ O(n) construction of Suffix Trees if provided with Suffix Arrays using Farach’s
algorithm.
e. Suffix Automata
■ O(n) Suffix Automaton construction.
f. Dictionary Of Basic Factors
■ O(n * logn) method of DBF construction using Radix Sort.
g. Manachar’s algorithm to find Length of palindromic substring of a string centered at a
position for each position in the string. Runtime -> O(n).
h. Searching and preprocessing Regular Expressions consisting of ‘?’, ‘*’.
i. Multi-dimensional pattern matching.
j. Problems on Strings [can be solved with a variety of techniques] -
■ DISUBSTR​,​ ​PLD​,​ ​MSTRING​,​ ​REPEATS​,​ ​JEWELS​,​ ​ARCHIVER​,​ ​PROPKEY​,
LITELANG​,​ ​EMOTICON​,​ ​WORDS​,​ ​AMCODES​,​ ​UCODES​,​ ​PT07H​,​ ​MINSEQ​,​ ​TOPALIN​,
BWHEELER​,​ ​BEADS​,​ ​SARRAY​,​ ​LCS​,​ ​LCS2​,​ ​SUBST1​,​ ​PHRASES​,​ ​PRETILE​ on SPOJ
■ http://www.algorithmist.com/index.php/Category:String_algorithms
4. ​Basic Graphs [beginner]​.
a. Representation of graphs as adjacency list, adjacency matrix, incidence matrix and edge
list and uses of different representations in different scenarios.
b. Breadth First Search.
■ problems -
1. ​ ​PPATH​,​ ​ONEZERO​,​ ​WATER​ on SPOJ
c. Depth First Search.
d. Strongly Connected Components.
■ problems -
1. ​ ​TOUR​ and​ ​BOTTOM​ on SPOJ.
e. Biconnected Components, Finding articulation points and bridges].
■ problems -
1. ​ ​RELINETS​,​ ​PT07A​ on SPOJ.
f. Dijkstra algorithm -
■ problems -
1. ​ ​SHPATH​ on SPOJ.
g. Floyd Warshall algorithm -
■ problems -
1. ​ ​COURIER​ on SPOJ.
h. Minimum Spanning Tree
■ problems -
1. ​ ​BLINNET​ on SPOJ.
i. Flood-fill algorithm
j. Topological sort
k. Bellman-Ford algorithm.
l. Euler Tour/Path.
■ problems -​ ​WORDS1​ on SPOJ.
m. Suggested reading for most of the topics in Graph algorithms -
■ http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=graphsDataStrucs1​.
■ Also refer to the tutorial for problems concerning these techniques.
■ Cormen chapter 22 to 24.
5. ​Flow networks/ matching etc etc. [Intermediate/Advanced].
a. Maximum flow using Ford Fulkerson Method.
■ Suggested Reading -
1. ​ ​http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=maxFlow
■ problems -​ ​TAXI​,​ ​POTHOLE​,​ ​IM​,​ ​QUEST4​,​ ​MUDDY​,​ ​EN​,​ ​CABLETV​,​ ​STEAD​,
NETADMIN​,​ ​COCONUTS​,​ ​OPTM​ on SPOJ.
b. Maximum flow using Dinics Algorithm.
■ Problems -​ ​PROFIT​ on spoj.
c. Minimum Cost Maximum Flow.
■ Successive Shortest path algorithm.
■ Cycle Cancelling algorithm.
■ Suggested Reading -
1. ​ ​http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=minimumCostFlow1
d. Maximum weighted Bipartite Matching (Kuhn Munkras algorithm/Hungarian Method)
■ problems -​ ​GREED​,​ ​SCITIES​,​ ​TOURS​ on SPOJ |
http://www.topcoder.com/stat?c=problem_statement&pm=8143
e. Stoer Wagner min-cut algorithm.
f. Hopcroft Karp bipartite matching algorithm.
■ problems -​ ​ANGELS​ on SPOJ.
g. Maximum matching in general graph (blossom shrinking)
h. Gomory-Hu Trees.
■ i) Problems -​ ​MCQUERY​ on Spoj.
i. Chinese Postman Problem.
■ problems -​ ​http://acm.uva.es/archive/nuevoportal/data/problem.php?p=4039
■ Suggested Reading -​ ​http://eie507.eie.polyu.edu.hk/ss-submission/B7a/
j. Suggested Reading for the full category ->
■ Network flow - Algorithms and Applications by Ahuja
■ Cormen book chapter 25.
6. ​Dynamic Programming.
a. Suggested Reading - Dynamic Programming(DP) as a tabulation method
■ Cormen chapter on DP
b. Standard problems (you should really feel comfortable with these types)

http://www.topcoder.com/stat?c=problem_statement&pm=8570&rd=12012&rm=269199&cr
=7581406
■ http://www.topcoder.com/stat?c=problem_statement&pm=10765&rd=14183
c. State space reduction
■ http://www.topcoder.com/stat?c=problem_statement&pm=10902
■ http://www.topcoder.com/stat?c=problem_statement&pm=3001

http://www.topcoder.com/stat?c=problem_statement&pm=8605&rd=12012&rm=269199&cr
=7581406
d. Solving in the reverse - easier characterizations looking from the end
■ http://www.spoj.pl/problems/MUSKET/
■ http://www.topcoder.com/stat?c=problem_statement&pm=5908
e. Counting/optimizing arrangements satisfying some specified properties
■ http://www.topcoder.com/stat?c=problem_statement&pm=8306
■ http://www.topcoder.com/stat?c=problem_statement&pm=7849
f. Strategies and expected values
■ http://www.topcoder.com/stat?c=problem_statement&pm=10765&rd=14183
■ http://www.topcoder.com/stat?c=problem_statement&pm=10806
■ http://www.topcoder.com/stat?c=problem_statement&pm=7828
■ http://www.topcoder.com/stat?c=problem_statement&pm=7316
g. DP on probability spaces
■ http://www.topcoder.com/stat?c=problem_statement&pm=7422
■ http://www.topcoder.com/stat?c=problem_statement&pm=2959
■ http://www.topcoder.com/stat?c=problem_statement&pm=10335
h. DP on trees
■ http://www.topcoder.com/stat?c=problem_statement&pm=10800
■ http://www.topcoder.com/stat?c=problem_statement&pm=10737

http://www.topcoder.com/stat?c=problem_solution&rm=266678&rd=10958&pm=8266&cr=
7581406
i. DP with data structures
■ http://www.spoj.pl/problems/INCSEQ/
■ http://www.spoj.pl/problems/INCDSEQ/
■ http://www.spoj.pl/problems/LIS2/
■ http://www.topcoder.com/stat?c=problem_statement&pm=1986
j. Symmetric characterization of DP state
■ http://www.topcoder.com/stat?c=problem_statement&pm=8610
k. A good collection of problems
■ http://codeforces.com/blog/entry/325
■ http://problemclassifier.appspot.com/index.jsp?search=dp&usr=
7. ​Greedy.
a. Suggested Reading -
■ Chapter on Greedy algorithms in Cormen.
■ http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=greedyAlg
b. problems - refer to the topcoder tutorial.
8. ​Number Theory.
a. Modulus arithmetic - basic postulates [Including modular linear equations , Continued
fraction and Pell's equation]
■ Suggested Reading -
1. Chapter 1 from Number Theory for Computing by SY Yan [ Recommended ]
2. 31.1, 31.3 and 31.4 from Cormen
3. ​ ​www.topcoder.com/tc?module=Static&d1=tutorials&d2=primeNumbers
■ Problems
1. ​ ​http://projecteuler.net/index.php?section=problems&id=64
2. ​ ​http://projecteuler.net/index.php?section=problems&id=65
3. ​ ​http://projecteuler.net/index.php?section=problems&id=66
4. ​ ​http://www.topcoder.com/stat?c=problem_statement&pm=6408&rd=9826
5. ​ ​http://www.topcoder.com/stat?c=problem_statement&pm=2342
b. Fermat's theorem, Euler Totient theorem ( totient function, order , primitive roots )
■ Suggested Reading
1. 1.6, 2.2 from Number Theory by SY Yan
2. 31.6 , 31.7 from Cormen
■ Problems
1. ​ ​http://projecteuler.net/index.php?section=problems&id=70
2. ​ ​http://www.spoj.pl/problems/NDIVPHI/
c. Chinese remainder theorem
■ Suggested Reading
1. 31.5 from Cormen
2. 1.6 from Number Theory by SY Yan
■ Problems
1. Project Euler 271
2. ​ ​http://www.topcoder.com/stat?c=problem_statement&pm=10551&rd=13903
d. Primality tests -
■ Deterministic O(sqrt(n) ) approach
■ Probabilistic primality tests - Fermat primality test, Miller-Rabin Primality test
1. Suggested Reading -
a. ​ ​http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=primalityTesting
b. Cormen 31.8
c. 2.2 from Number Theory by SY Yan
2. Problems -
a. PON, PRIC, SOLSTRAS on SPOJ
b. ​ ​http://www.topcoder.com/stat?c=problem_statement&pm=4515
e. Prime generation techniques - Sieve of Eratosthenes
■ Suggested Problems - PRIME1 on SPOJ
f. GCD using euclidean method
■ Suggested Reading
1. 31.2 Cormen
■ Problems -
1. GCD on SPOJ
2. ​ ​http://uva.onlinejudge.org/external/114/11424.html
g. Logarithmic Exponentiation
■ Suggested Reading -
1. ​ ​http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=primalityTesting
h. Integer Factorization
■ Naive O(sqrt(n)) method
■ Pollard Rho factorization
■ Suggested Reading
1. 2.3 from Number Theory SY Yan
2. 31.9 Cormen
■ Problems -
1. ​ ​http://www.topcoder.com/stat?c=problem_statement&pm=2986&rd=5862
2. ​ ​http://www.spoj.pl/problems/DIVSUM2/
3. ​ ​http://www.topcoder.com/stat?c=problem_statement&pm=4481&rd=6538
i. Stirling numbers
j. Wilson theorem
■ nCr % p in O(p) preprocess and O(log n ) query
k. Lucas Theorem
l. Suggested Reading for Number Theory -
■ Number theory for computing by Song Y Yan [ Simple book describing concepts in
details ]
■ Concepts are also superficially covered in Chapter 31 of Introduction to Algorithms
by Cormen
■ http://www.codechef.com/wiki/tutorial-number-theory
■ http://www.algorithmist.com/index.php/Category:Number_Theory
m. Problems on Number Theory -
■ http://www.algorithmist.com/index.php/Category:Number_Theory
■ http://problemclassifier.appspot.com/index.jsp?search=number&usr=
9. ​Math (Probability, Counting, Game Theory, Group Theory, Generating functions,
Permutation Cycles, Linear Algebra)
a. ​Probability.
Syllabus
■ Basic probability and Conditional probability
1. Suggested problems
a. ​ ​http://www.spoj.pl/problems/CT16E/
b. ​ ​http://www.spoj.pl/problems/CHICAGO/
■ Random variables, probability generating functions
■ Mathematical expectation + Linearity of expectation
1. Suggested problems
a. ​ ​http://www.spoj.pl/problems/FAVDICE/
b. ​ ​http://www.topcoder.com/stat?c=problem_statement&pm=10744
■ Special discrete and continuous probability distributions
1. Bernoulli, Binomial, Poisson, normal distribution
2. Suggested Problem
a. ​ ​http://acm.sgu.ru/problem.php?contest=0&problem=498
■ Suggested Readings
1. Cormen appendix C (very basic)
2. Topcoder probabilty tutorial
http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=probabilities
3. ​ ​http://en.wikipedia.org/wiki/Random_variable
4. ​ ​http://en.wikipedia.org/wiki/Expected_value
5. William Feller, An introduction to probability theory and its applications
b. ​Counting
Syllabus
■ Basic principles - Pigeon hole principle, addition, multiplication rules
1. Suggested problems
a. ​http://acm.timus.ru/problem.aspx?space=1&num=1690
b. ​http://www.topcoder.com/stat?c=problem_statement&pm=10805
3. Suggested readings
a. http://en.wikipedia.org/wiki/Combinatorial_principles
b. http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=combinatorics
c. http://www.maa.org/editorial/knot/pigeonhole.html
■ Inclusion-exclusion
1. Suggested readings
a. http://en.wikipedia.org/wiki/Inclusion–exclusion_principle
2. Suggested problems
a. http://www.topcoder.com/stat?c=problem_statement&pm=4463&rd=6536
b. http://www.topcoder.com/stat?c=problem_statement&pm=10238
■ Special numbers
1. Suggested reading - Stirling, eulerian, harmonic, bernoulli, fibonacci numbers
a. http://en.wikipedia.org/wiki/Stirling_number
b. http://en.wikipedia.org/wiki/Eulerian_numbers
c. http://en.wikipedia.org/wiki/Harmonic_series_(mathematics)
d. http://en.wikipedia.org/wiki/Bernoulli_number
e. http://en.wikipedia.org/wiki/Fibonnaci_numbers
f. Concrete mathematics by Knuth
2. Suggested problems
a. http://www.topcoder.com/stat?c=problem_statement&pm=1643
b. http://www.topcoder.com/stat?c=problem_statement&pm=8202&rd=11125
c. http://www.topcoder.com/stat?c=problem_statement&pm=8725
d. http://www.topcoder.com/stat?c=problem_statement&pm=2292&rd=10709
■ Advanced counting techniques - Polya counting, Burnsides lemma
1. Suggested reading
a. http://en.wikipedia.org/wiki/Burnside's_lemma
b. http://petr-mitrichev.blogspot.com/2008/11/burnsides-lemma.html
2. Suggested Problems
a. http://www.topcoder.com/stat?c=problem_statement&pm=9975
b. http://www.spoj.pl/problems/TRANSP/
c. Game theory
Syllabus
■ Basic principles and Nim game
1. Sprague grundy theorem, grundy numbers
2. Suggested readings
a. http://en.wikipedia.org/wiki/Sprague%E2%80%93Grundy_theorem
b. http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=algorithmGames
c. http://www.ams.org/samplings/feature-column/fcarc-games1
d. http://www.codechef.com/wiki/tutorial-game-theory
3. Suggested problems
a. http://www.topcoder.com/stat?c=problem_statement&pm=3491&rd=6517
b. http://www.topcoder.com/stat?c=problem_statement&pm=3491&rd=6517
■ Hackenbush
1. Suggested readings
a. http://en.wikipedia.org/wiki/Hackenbush
b. http://www.ams.org/samplings/feature-column/fcarc-partizan1
2. Suggested problems
a. http://www.cs.caltech.edu/ipsc/problems/g.html
b. http://www.spoj.pl/problems/PT07A/
d. Linear Algebra
Syllabus
■ Matrix Operations
1. Addition and subtraction of matrices
a. Suggested Reading
i. Cormen 28.1
2. Multiplication ( Strassen's algorithm ), logarithmic exponentiation
a. Suggested reading
i. Cormen 28.2
ii. Linear Algebra by Kenneth Hoffman Section 1.6
b. Problems
i. http://uva.onlinejudge.org/external/111/11149.html
3. Matrix transformations [ Transpose, Rotation of Matrix, Representing Linear
transformations using matrix ]
a. Suggested Reading
i. Linear Algebra By Kenneth Hoffman Section 3.1,3.2,3.4,3.7
b. Problems
i. http://www.topcoder.com/stat?c=problem_statement&pm=6877
ii. JPIX on Spoj
4. Determinant , Rank and Inverse of Matrix [ Gaussian Elimination , Gauss Jordan
Elimination]
a. Suggested Reading
i. 28.4 Cormen
ii. Linear Algebra by Kenneth Chapter 1
b. Problems
i. http://www.topcoder.com/stat?c=problem_statement&pm=8174
ii. http://www.topcoder.com/stat?c=problem_statement&pm=6407&rd=9986
iii. http://www.topcoder.com/stat?c=problem_statement&pm=8587
iv. HIGH on Spoj
5. Solving system of linear equations
a. Suggested Reading
i. 28.3 Cormen
ii. Linear Algebra by Kenneth Chapter 1
b. Problems -
i. http://www.topcoder.com/stat?c=problem_statement&pm=3942&rd=6520
6. Using matrix exponentiation to solve recurrences
a. Suggested Reading
i. ​ ​http://www.topcoder.com/tc?module=Static&d1=features&d2=010408
b. Problems
i. REC, RABBIT1 , PLHOP on spoj
ii. http://www.topcoder.com/stat?c=problem_statement&pm=6386 ,
http://www.topcoder.com/stat?c=problem_statement&pm=7262,
http://www.topcoder.com/stat?c=problem_statement&pm=6877
7. Eigenvalues and Eigenvectors
a. Problems
i. http://www.topcoder.com/stat?c=problem_statement&pm=2423&rd=4780
■ Polynomials
1. Roots of a polynomial [ Prime factorization of a polynomial, Integer roots of a
polynomial, All real roots of a polynomial ]
a. Problems
i. http://www.topcoder.com/stat?c=problem_statement&pm=8273&rd=10798
ii. POLYEQ , ROOTCIPH on Spoj
2. Lagrange Interpolation
a. Problems
i. http://www.topcoder.com/stat?c=problem_statement&pm=10239
ii. http://www.topcoder.com/stat?c=problem_statement&pm=8725
e. Permutation cycles
■ Suggested Reading
1. Art of Computer Programming by Knuth Vol. 3
■ Problems
1. ShuffleMethod, Permutation and WordGame on topcoder.
f. Group Theory
■ Bernside Lemma, Polias theorem
1. Suggested Reading
a. Herstein's topics in algebra
b. ​ ​http://petr-mitrichev.blogspot.com/2008/11/burnsides-lemma.html
2. Problems
a. TRANSP on spoj
b. http://www.topcoder.com/stat?c=problem_statement&pm=9975
b. Generating functions
■ Suggested Reading
1. Herbert Wilf's generating functionology
2. Robert Sedgewick and Flajoulet's Combinatorial analysis

10. ​Data Structures.


i.​ ​Basic
a.​ Arrays/Stacks/Queues :
■ Problems
1.​ ​ ​https://www.spoj.pl/problems/STPAR/
2.​ ​ ​https://www.spoj.pl/problems/SHOP/
3.​ ​ ​https://www.spoj.pl/problems/WATER/
■ Reading:
1.​ CLRS: section 10.1
2.​ ​ ​http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=dataStructures

b. Singly/Doubly Linked List :


■ Problems
1.​ h​ttps://www.spoj.pl/problems/POSTERS/
■ Reading: CLRS: section 10.2, Mark Allen Weiss Chapter 3
c. Hash Tables :
■ Problems
1.​ ​ ​https://www.spoj.pl/problems/HASHIT/
2.​ ​ ​https://www.spoj.pl/problems/CUCKOO/
■ Reading: CLRS: Chapter 11, Mark Allen Weiss Chapter 5
d. Circular linked list / queue
■ Problems
1.​ ​ ​https://www.spoj.pl/problems/CTRICK/
e. Binary/nary Trees
■ Reading
1.​ CLRS: section 10.4
2.​ CLRS: Chapter 12
3.​ Mark Allen Weiss Chapter 4
4.​ h​ttp://www.topcoder.com/tc?module=Static&d1=tutorials&d2=binarySearchRedBlack

f. Heaps
■ Problems
1.​ ​ ​https://www.spoj.pl/problems/PRO/
2.​ h​ttps://www.spoj.pl/problems/EXPEDI/
■ Reading : Mark Allen Weiss Chapter 6
ii. Advanced
a.​ Trie (Keyword tree)
■ Problems
1.​ ​ ​https://www.spoj.pl/problems/MORSE/
2.​ ​ ​https://www.spoj.pl/problems/EMOTICON/
■ Reading
b.​ Interval trees / Segment Trees
■ Problems
1.​ ​ ​https://www.spoj.pl/problems/ORDERS/
2.​ ​ ​https://www.spoj.pl/problems/FREQUENT/
■ Reading
c.​ Fenwick(Binary Indexed) trees
■ Problems
1.​ ​ ​https://www.spoj.pl/problems/MATSUM/
■ Reading:
http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=binaryIndexedTrees
d.​ Disjoint data structures
■ Problems
1.​ ​ ​https://www.spoj.pl/problems/BLINNET/
2.​ ​ ​https://www.spoj.pl/problems/CHAIN/
■ Reading:
1.​ ​http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=disjointDataStructure
2.​ Mark Allen Weiss Chapter 8
e.​ Range minimum Query(RMQ)
■ Problems
1.​ ​ ​https://www.spoj.pl/problems/GSS1/
■ Reading
http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=lowestCommonAncestor
f.​ Customized interval/segment trees (Augmented DS)
■ Problems
1.​ ​ ​https://www.spoj.pl/problems/GSS3/
2.​ ​ ​https://www.spoj.pl/problems/RRSCHED/
■ Reading: CLRS: Chapter 14 (augmented DS)
g. AVL Trees
■ Problems
1.​ ​https://www.spoj.pl/problems/ORDERS/
■ Reading

iii. Miscellaneous (Not to be covered)


a.​ Splay Trees
b.​ B/B+ Trees
c.​ k-d Trees
d.​ Red-black Trees
e.​ Skip List
f.​ Binomial/ Fibonacci heaps
iv. Exercices
1.​ ​ ​https://www.spoj.pl/problems/LAZYPROG​/ (Hint: Heaps)t
2.​ ​ ​https://www.spoj.pl/problems/HELPR2D2/​ (Hint: Interval Trees)
3.​ ​ ​https://www.spoj.pl/problems/SAM/​ (Hint: Heaps)
4.​ ​ ​https://www.spoj.pl/problems/PRHYME/​ (Hint: Trie)
5.​ ​ ​https://www.spoj.pl/problems/HEAPULM/​ (Hint: Interval Trees)
6.​ ​ ​https://www.spoj.pl/problems/CORNET/​ (Hint: Disjoint )
7.​ ​ ​https://www.spoj.pl/problems/EXPAND/
8.​ ​ ​https://www.spoj.pl/problems/WPUZZLES/
9.​ ​ ​https://www.spoj.pl/problems/LIS2/

11. ​Search Techniques/Bruteforce writing techniques/Randomized algorithms.


a. Backtracking - [Beginner].
■ problems ->
1. N queens problems
2. Knight's Tour
3. Sudoku Problem
4. Tiling Problem.
5. 15 puzzle.
b. Dancing Links and Algorithm X given by Knuth - [Advanced]
■ problems - PRLGAME, SUDOKU, NQUEEN on SPOJ
■ Suggested reading -
1. ​ ​http://www-cs-faculty.stanford.edu/~uno/papers/dancing-color.ps.gz
c. Binary Search - [Beginner].
■ problems - AGGRCOW on SPOJ. Refer the tutorial for more problems.
■ finding all real roots of a polynomial using binary search. [intermediate].
■ Suggested Reading -
1. ​ ​http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=binarySearch
d. Ternary Search - [Intermediate].
■ problems -
1. ​ ​http://www.spoj.pl/problems/KPPOLY/
2. ​ ​http://www.codechef.com/DEC09/problems/K1/
3. ​ ​http://www.topcoder.com/stat?c=problem_statement&pm=4705&rd=7993
4. ​ ​http://www.topcoder.com/stat?c=problem_statement&pm=7741&rd=10671
5. ​ ​http://www.topcoder.com/stat?c=problem_statement&pm=6464&rd=9994
6. ​ ​http://www.topcoder.com/stat?c=problem_statement&pm=3501&rd=6529
7. ​ ​http://www.topcoder.com/stat?c=problem_statement&pm=4567&rd=6539
e. Meet in the middle [Intermediate].
■ problems -
1. ​ ​http://www.spoj.pl/problems/MAXISET/
2. ​ ​http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2868
f. Hill Climbing [Advanced].
g. Regular Iteration to reach a fixed point [Advanced].
■ Newton-Raphson method to find root of a mathematical function.
■ Iterations to solve linear non-homogeneous system of equations.
h. Randomized Algorithms [Intermediate]-
■ Quick-Sort.
12. ​General programming issues in contests​ ->
a. Arithmetic Precision - [Beginner].
■ Suggested Reading -
1. ​ ​http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=integersReals
b. Representing sets with bitmasks and manipulating bitmasks - [Beginner].
■ Suggested Reading -
1. ​ ​http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=bitManipulation
■ problems - refer to the tutorial link in Suggested reading section.

6.3. What are Five Why’s?

You have submitted a solution to a judge and got a Wrong Answer verdict​. To identify
the reason, we ​are recommended to use the ​5 Whys process, ​you ask and answer
“Why?” five times. The first ​why a​ sks for the immediate cause of the problem. Each
subsequent ​why asks for the cause of the previous ​why​, until you get to the root cause.
Here’s one possible sequence of ​whys​ :
1. Why did I get the wrong answer? Because there was a bug in my code.
2. Why was there a bug in my code? Because I didn’t understand the
requirements.
3. Why didn’t I understand the requirements? Because I misread the
problem statement.
4. Why did I misread the problem statement? Because I have trouble
understanding what competitive programming problem statements are
asking.
5. Why do I find it difficult to understand what problem statements are
asking? Because I need more practice at reading problem statements.

As a result of this particular sequence of ​why​s, you could decide to practice reading
problem statements in isolation, without going through the process of solving the
problem and submitting a solution. Since you could get through many problems this
way, you could use it as a targeted approach to improve your problem statement
comprehension skills.

Since problems may have multiple root causes, you could use a different sequence of
why​s to find other ways to solve this problem.
If you can’t find any mistakes to analyze, because you solve every problem accurately in a
few minutes, then this process tells you that you need to practice with harder problems.
When one submits his solution to judging system, it is then assigned a judgment of one of:
•​ Compile-time error​: The run did not compile.
•​ Contest rule violation:​ The run required libraries forbidden by the rules (such as sockets).
• ​Run-time error: ​The run crashed.
• ​Time-limit exceeded​: The run exceeded the time limit for the problem (probably an infinite
loop, hang on reading input, or a naïve algorithm that did not complete in time).
• ​Wrong answer​: The run produced the wrong answer.
• ​Presentation error​: The run produced the right answer, but in the wrong format.
• ​Accepted​: The run is a correct problem solution.
Chapter 7 Tools that will groom you for your graduation

7.1.1. Tools to improve your typing skills

The following site contains details of many typing tutors out of which some shareware.
Please do explore them and find one to practice.
https://typingsoft.com/all_typing_tutors.htm

The following is an online typing speed improvement software. I advise people to practice
this for a month on regular basis, every day 15-30 minutes practice.
https://www.speedtypingonline.com/

7.1.2. Note Making tools

We have many note taking tools that are free. However, every operating system also comes
along with some tools of this nature. The following are Windows tools. If one wants to create
a plain, simple text file, these tools can be used. In the following pages, we shall introduce
how to use the following tools of Windows.
● Notepad
● Wordpad

7.1.3. Word Processing

Very commonly, you need to submit your assignments, term papers, mid-term reports,etc.,
which may contain pictures, videos, etc. If it is so, you need to use a Word Processing
system, not the editors that are discussed above. Moreover, a word processing system will
have ability to check spelling, grammar and also we can use revision control methods.

There are many tools for this. Out of all, Windows Word is famous in Windows family while
LaTeX is famous in Unix/Linux family. We have introduced separate sections in the
following pages. However, if you want you can use ​https://openoffice.org , Libre Office
https://www.libreoffice.org/​ also.
7.2. Mobile Tools to improve you as a student

7.2.1. DroidEdit Pro: Notepad++ style editor on Android phones.

7.2.2. ​Evernote (https://play.google.com/store/apps/details?id=com.evernote)

Rated as one of the ​Top 10 Must-Have Apps in New York Times​, Evernote is a free app that
helps you remember everything across all your devices. Stay organized and be productive,
Evernote lets you take notes, capture photos, create to-do lists, and even record voice
reminders. As of last month, Evernote released a new feature for its Android app:
Handwriting. Finally, you can pick up your smartphone or tablet and

quickly jot down notes


with your finger or stylus.

7.2.3. Hacker’s Keyboard:

Hacker’s Keyboard is designed in a way to help all coders. Programmers have support of
more than 20 languages in Android phones.
7.2.4. AIDE
AIDE is a very stable and useful IDE for developing real Android apps on your Android
device. It has a feature-rich editor and comes with all the essential features like automatic
code completion, real-time error checking, refactoring, smart code navigation, Java debugger,
etc.

7.2.5. Studious
(Source:
http://onthehub.com/wp-content/uploads/2015/09/top-android-apps-blog-benchprep.jpg
)
With ​Studious​, forgetting assignments will be a thing of the past. This simple Android app
reminds you when tests are coming up and when assignments are due. One of the most
unique features of Studious is its ability to automatically silence your phone in class , right as
you walk through the door. To set this up, all you need to do is import your class locations.

7.2.6. ​Tasker
From settings to messaging, Tasker offers total automation on your smartphone. Essentially a
programming tool, this Android app lets you set your own triggers based on your
environment. Tasker can detect when you’re at the library, for instance, and enable or disable
certain settings on your phone so it adapts to where you are. It can launch apps automatically
and perform actions with those apps.

7.2.7. Lecture Capture Apps

There’s (almost) an app for everything nowadays, and this can make student life easier,
cheaper, safer and more fun. Whether you want help with taking notes, revising, waking up
on time or keeping fit, read on for our pick of the ​apps for students​…

Just a few years ago, students attending lectures would have to spend the entire time
scribbling wildly on notepads, in order to, not to miss any vital bit of information. Then along
came technology, and now, ​lecture capture ​apps are a reality. Although the recording of
lectures has been common practice within universities for a while, lecture capture apps allow
you to record and listen back to classes without having to spend extra money on expensive
recording equipment.

7.2.7.1.​ SoundNote

​(iOS Source: ​https://itunes.apple.com/gb/app/soundnote/id364789577?mt=8​ )

SoundNote is a popular lecture capture app for iPad users, acting as a notepad and audio
recorder, so you can store an entire lecture in both visual and audio form. If it's a whiteboard
you want to capture, however, ​Office Lens (
https://play.google.com/store/apps/details?id=com.microsoft.office.officelens ) allows users
to photograph a whiteboard, convert it to a PDF, Word or PowerPoint file and store all the
data via OneNote or OneDrive for catch-up and revision purposes.

Other than SoundNote, other good quality lecture capture apps include ​Notes Plus (iOS,
http://notesplusapp.com/ ) and ​Audio Memos Free – The Voice Recorder (iOS,
https://itunes.apple.com/gb/app/audio-memos-free-voice-recorder/id304075033?mt=8​ ).

7.2.8. Revision apps

A useful revision app is ​GoConqr (https://www.goconqr.com/), which offers resources to


create revision charts, mind maps, flash cards, notes and quizzes, as well as the ability to
connect and collaborate with friends, classmates or students from around the world. Another
choice is ​Exam Countdown (iOS,
https://itunes.apple.com/gb/app/exam-countdown-lite/id873279955?mt=8 ), which keeps
track of the days until each of your exams.

7.2.9. Exam prep apps

There are also student apps now available for exams such as the MCAT, GMAT, LSAT and
GRE tests, which are used by many graduate schools as part of the admissions process.
BenchPrep (​https://benchprep.com/ )uses social networking-style functionality which allows
users to connect with other test-takers and peruse revision materials with quizzes, notes and
more. You can also use the app to track your learning progress.

TCY Exam Prep (Android,


https://play.google.com/store/apps/details?id=com.TCYonline.android.examprep&hl=en ) is
another exam prep app, aimed at business students in India and the US. It features study
resources for MBA/CAT tests, GRE, GATE and bank exams.

7.2.10. Student planner apps

Organization is key for success and wellbeing at university, and ​student planner apps are
becoming increasingly popular. As well as saving on paper, many student planner apps also
send reminders and alerts straight to your phone or device.

Popular student planner apps include ​Timetable (Android,


https://play.google.com/store/apps/details?id=com.gabrielittner.timetable&hl=en_GB ), an
app featuring a sharp and clean interface which you can map your timetable onto with ease.
For more familiar-looking planner apps for students, consider those with a more traditional
spreadsheet-style layout, such as ​My Class Schedule (Android,
http://www.my-class-schedule.com/ ) or ​Class Timetable (iOS,
https://itunes.apple.com/gb/app/class-timetable/id425121147?mt=8​ ).

7.2.11. Bibliography helper apps


If you’ve ever spent hours writing up a hefty bibliography, you’ll know just how much work
goes into making sure you’ve included all the information in the right places in the right
format. ​EasyBib is an extremely useful app for students, which creates an academic reference
for any book simply from a scan of the book’s barcode. As bibliography styles vary
depending on where you study, EasyBib offers referencing in MLA, APA and Chicago styles.
Simply take a picture of the barcode or type the title of the book into your device, et voila,
professional referencing done!

7.3. GeoGebra

IDGGeoGebra lets you do algebra, geometry, graphing, and more on your PC.

Math applications have come a long way in the last few years, and can be a tremendous help
in both entry-level and more advanced courses. ​GeoGebra ​(​https://www.geogebra.org/
)assists in graphing, geometry, algebra, spreadsheets, and other types of math work.

The ​Windows app


(https://educationstore.microsoft.com/en-us/store/details/product/9wzdncrfj48n) gives you a
dedicated workspace, while the GeoGebra site can be used for sharing your work and
viewing others’ creations. There are also mobile versions dedicated to graphing, geometry,
and 3D calculation, so you can get the work done on whichever device you have at hand.

7.4. Google Drive

IDGGoogle Drive can keep all of your work in one place.

While Microsoft, Dropbox, and others have built collaborative features into their products,
Google Drive remains the master of keeping all your work in one place and making it easy to
work with others.

There’s a decent change, if your school will assign you a Drive account which will enhance
your ability to collaborate on shared projects over Docs, Sheets, and Slides. Also take a look
at Google Photos, which can save and organize all your images from an iPhone or Android
device.

7.5. Other helpful student apps


● Oxford English Dictionary
(​https://www.oxforddictionaries.com/oxford-dictionaries-apps )– to look up words on
the go (free with adverts, or paid with no ads).
● Dictionary.com Dictionary & Thesaurus
(​https://itunes.apple.com/gb/app/dictionary.com-dictionary/id308750436?mt=8 )–
dictionary and word-finder for those on a budget; also works offline.
● Dropbox for mobile (​https://www.dropbox.com/mobile )– access and edit documents,
upload photos and play your own videos anywhere.
● Penultimate (​https://evernote.com/penultimate/ )– a handwriting app made by
EverNote, allowing users to write with a digital pen and upload the work to any
device.
● Skout (​http://www.skout.com/ )– a friend-finder app helping students meet new
people in their locality.
● Socrative (​https://itunes.apple.com/gb/app/socrative-student/id477618130?mt=8 )–
student app for quizzing and assessment.
● ​EasyBib (​http://www.easybib.com/ ) Forget spending hours citing your research
references; EasyBib does it for you. The app includes multiple citation styles,
including APA, Chicago, and MLA.
● G Suite (formerly Google Apps) (​https://gsuite.google.com/ ) Keep all of your Google
accounts right at your fingertips. You can access Sheets, Slides, Drive, Calendar,
Gmail, and all of the other Google apps from any of your devices. It makes keeping
organized, staying connected, and completing projects and assignments incredibly
simple.
● MEGA (​https://mega.nz/mobile )Get 50 GB of free cloud storage so that you can
manage and share your files from any device. This app eliminates the need to stress
about how you're going to store all of your files.
● Sololearn app - In this app one can learn different languages , data structure , web
designing developments,algorithms etc.
● Geeksforgeeks app - Most of the algorithms and data structure topics have been
explained in very simple language such that even a newbie can completely
understand.
● EDx and Coursera- Plentiful of courses are available covering almost all the topics
related to engineering .One can complete the course for free or sign-up(paid version)
for verified certificate from the University that is offering the course. Subject-wise
Coursera is better than EDx, but certain courses aren't available on Coursera for free.
● NPTEL- This is from IIT Bombay. Video lectures are available also 100s of courses
are offered .

7.6. Communication and Collaboration

● Google Hangouts​: ​Free group conversations and live voice and video, from a
browser or mobile app. h​ ttp://www.google.com/hangouts/
● Strike​: ​Create Web-based task lists and share with classmates, colleagues and
other collaborators. h​ ttp://www.strikeapp.com/

7.7. Learning Resources

● Khan Academy(​http://www.khanacademy.com​) Lots of lectures on Computer


Science and allied areas
● Wolfram.com (http://www.wolfram.com ) is a marvelous repository of lectures,
questions and answers that are related to many areas including Mathematics,
Computers, etc.
● IT eBooks (​http://it-ebooks.info/ ): ​Don’t blow your book budget on expensive
computer books without checking them out in digital format first at IT eBooks.
● Apple iTunes University (​http://itunes.apple.com/ ): ​For when you want to check
out course lectures and assignment materials from Computer Science programs at
other colleges, including Stanford and others.
● MIT OpenCourseWare (http://ocw.mit.edu/): ​Probably the grandaddy of free
online college course materials, from MIT and other schools.
● Stack Overflow​(​http://stackoverflow.com/ ): ​For when you’re done racking your
brain trying to figure out why your code doesn’t work or how to do something
tricky, ask the community nicely at Stack Overflow.
● Skiena’s Algorithms Lectures (​http://www.cs.sunysb.edu/~algorith/video-lectures/
): ​A sizeable collection of lecture materials (video, audio, slides) on specific
algorithms from Professor Steven Skiena’s lectures at SUNY Stony Brook.
● What Comp Sci Students Should Know
(​http://matt.might.net/articles/what-cs-majors-should-know/ ): ​A helpful overview
of skills a computer science student should have, plus a selection of tool and
resource links.
● Algorithms in the Real World (​http://www.cs.cmu.edu/~guyb/realworld.html ):
Carnegie Mellon University offers up course material from several semesters of its
“Algorithms in the ‘Real World’.”
● Cheat Sheets (​http://www.cheat-sheets.org/ ): ​A large collection of cheat sheets of
interest to computer science students, good for quick reference use.
● Dictionary of Data Structures and Algorithms (​http://xlinux.nist.gov/dads/ ): ​A
handy alphabetically-indexed list of data structure and algorithm definitions and
overviews, with links to implementation examples.
● Open Online Courses​(​http://www.onlinecourses.com/computerscience/ ): ​An
indexed directory for finding free online lectures of various course material,
including computer science, from various universities.
● Github​(http://github.com/ ): ​One of the largest collections of code, for private and
open source use, with repository forking, commenting, Git versioning and other
features.
● Computational Thinking c​ ourse ware designed by google​.
https://edu.google.com/resources/programs/exploring-computational-thinking/
Chapter 8 Let Us Enjoy the DOS, the First Child of Bill Gates
Microsoft Disk operating system, in short MS-DOS, is a non-graphical ​command line
operating system​ created for IBM compatible computers in August ​1981​. It is still available
as a box in Windows 10 also and all its variants.

8.1. How to Enter into DOS Mode From Windows


In order to start DOS (now referred to command prompt or command window), we can check
for ​Command icon on our desktop and double click the same. Otherwise, we can click ​Start
-> Run -> cmd ​as shown below. You can even select Command Prompt app from the pop up
menu as shown below.

We get DOS window as shown below.

The C:\Users\venka> is called as DOS or command prompt. Here, C:\ signifies the C drive
(Hard disk partition) and Users\venka is a directory in it. You can run commands here. In
fact, old fellows like me might have spent 50% of time here only.

Below is a listing of the top 13 MS-DOS commands most commonly used and that we will
most likely use during a normal DOS session.
cd dir copy del edit move ren cls deltree format

We can enter “cls” command to clear the screen.

8.1.1. The cd command


This command is used to move from one directory to another directory. A simple cd\ will
take you to the root directory of the drive where you are working. By simply typing drive
symbol followed by : and enter will take us to that drive.

The above following screen contains our working with cd command. We already have sar
directory in C: drive and cbook directory in E: drive. We advise readers to verify the prompt.
Initially prompt is C:\> and when we have executed “cd sar” command, the prompt has
changed to C:\sar\>. Same can be observed with all the commands. One more aspect we have
to know. While referring to a file or to a directory, we can specify in ways known as: 1.
Absolute approach, and 2. Relative approach.
In the case of absolute approach, path is specified with respect to the root directory of the
drive such as C:\nbv. If we specify with respect to current working directory, it is called as
relative path. For example, we have used simply sar or nbvv, etc., which are implicitly refers
to relative paths. That is, sar directory of C:\ (current working directory). However, while
representing relative paths, ‘.’ Refers to current working directory while ‘ ..’ refers to parent
directory of current working directory.

In DOS system, with any command if we use /? Option, we get terse help of the same.

8.1.2. The dir command

This command is used to know the contents of a directory. It can take a directory name as
argument and displays contents of it. If we don’t give any argument, it displays the contents
of current working directory. The following screenshot contains dir command on my
machine. We may find that it is displaying the names of the files and directories along with
their details such as size, creation time, etc.,
8.1.3. The mkdir command

With the help of this command, we can create a new directory. Here, also we can use either
absolute or relative style of path while referring to directories. For example, the following
screenshot contains a simple session on working of mkdir command.

8.1.4. The type command

This command can be used to see the content of a file(text file). It can take more than one
filename also along the command line. The syntax of the command

type filename
type filename1 filename2

8.1.5. The more command

This command can be used to see the content of a file. If the file contains lot of lines, it
displays a screen full of text and stops. If we press any key, it displays next screen full of text.
Where as type command simply displays the content of a file(s) without any stopping, i.e., it
simply scrolls the file content. ​ Syntax of this command can be:

more filename
more < filename
more filename1 filename2
8.1.6. The copy command

With the help of this command, we can create duplicate copy of a file. Its syntax is:
copy sourcefilename destinationfilename

Copy xyz pqr Copies the contents of xyz file of current working directory to
the file pqr of current working directory.
Copy xyz c:\dos Copies the contents of xyz file of current working directory to
the file xyz of directory c:\dos.
Copy xyz c:\dos\pqr Copies the contents of xyz file of current working directory to
the file pqr of directory c:\dos.
Copy c:\dos\xyz pqr Copies the contents of xyz file of directory c:\dos to the file pqr
of current working directory.
Copy c:\dos\xyz . Copies the contents of xyz file of directory c:\dos to the file xyz
of current working directory.
Copy *.c c:\dos Copies all c language files of current working directory to
C:\dos
Copy hi+hello File hi contains the contents of both the files. We can join any
number of files with +
Copy hi+hello Hai The content of file hi and hello will be written into file Hai. We
can join any number of files content like this using +
Copy xyz pqr/v It copies content of the file xyz to pqr. After copying it verifies.
This option is very much needed if we are copying to a less
reliable medium.

Also, we can create files using copy command. Of course, it is not an editor!. The following
workout shows how to create a file. Here, ​con: indicates console. That is, console is the
source and hello is the destination file. That is, whatever we type on the console, we are
asking to send to file hello. In DOS/Windows CTRL + Z is end of file indicator.

8.1.7. The del command


This command can be used to remove a file. In fact, in real DOS, we can use commands such
as del, delete, and erase for removing files. However, now, we can use del and erase
commands only. The following snapshot explains the use of these commands.
8.1.8. Some More DOS Commands with Explanation
xcopy d1 d2 /s copy all files and subdirectories in directory "d1"
xcopy d1 d2 /p ask for confirmation of each file before copying
diskcopy a: b: duplicate a disk using two floppy drives
diskcopy a: a: duplicate a disk using the same floppy drive
format a: format a floppy disk in drive a:
format a: /s: format a bootable floppy disk (include system)
backup c:\d1\*.txt a: back up all files with the extension ".TXT" in
"c:\d1\" to the "a:" floppy drive
backup c:\ a: /s back up the entire C: drive to floppy drive a:
restore a: c:\d1\*.txt restore certain files to C: from A:
restore a: c:\ /s restore backed-up files and subdirectories
ver check the version of DOS
time check or correct the system time
date check or correct the system date
scandisk scans and checks disk C for errors
chkdsk check disk and memory usage of the current disk
chkdsk /f fix errors reported by chkdsk
chkdsk filename check a particular file
chkdsk a: check a particular disk (a floppy in the a: drive)
mem check memory usage

8.1.9. Batch Programs

We can run a set of commands one after another with the help of batch programs. Whatever
we run at the DOS prompt, can be entered in a file which we call as batch program. That file
name should have an extension of bat. The commands written in that file can be executed by
simply typing that file name at the DOS prompt or typing its primary name only at the DOS
prompt. In fact, we can use programming constructs such as if, while, for etc., in this
programs. However, their discussion is beyond the scope of this book. The following screen
shot contains a simple batch program which goes to a directory and prints content of it and
comes out of it.
Chapter 9 Have a Nap in Linux
Linus Torvalds [Matt Welsh]​, a student at the University of Helsinki, created the first version
of “Linux” in August 1991. Released as an open-source software under the Free Software
Foundation's GNU General Public License (GPL). Some vendors are supplying their
machines pre-loaded with Linux. This is having compliance with Unix.

9.1. What Makes Linux So Popular?


Here, we find a few of the important reasons
It's Free It’s got lots of Extras
It's Open Source It is Stable
It's Modular It’s got Networking
It’s got More Choices It co-exists with other OS’ s on a PC
It’s Portable

9.1.1. Popular Linux Distributions


Here are some of the more popular distributions of Linux.
* Mandrake * Caldera * TurboLinux
* Red Hat * Corel
* Open SuSE * Debian
* Slackware

9.1.2. First time When We login What One Should do?

In order to login to UNIX/Linux machines, we have to first get username and password from
our system administrator. Once we get them, power on the machine and we may find boot
loader options from which we can select Linux or Windows. It is not true on all the Unix
installation. Wait for a while and if possible go through the system messages appearing on the
screen. After loading all the necessary drivers we may find ‘login’ prompt either in character
mode or in graphical mode. Now enter your username and password.

We recommend you to change your password as soon as you login first time. We have to
use passwd command at the command prompt. It may ask for new password and then asks to
re-enter new password.

9.1.3. The cat command


First, one may be interested to create a file or view a file. The simplest command available in
UNIX system to create and view files is ‘cat’. To create files, one can follow the following
exercise at the command or dollar prompt.
cat > ABC
This is a test file.
I wish you find happy to create first file.
^d
The following command displays the contents of ABC.
cat ABC
The following command displays the contents of the file ABC, XYZ and PQR.
cat ABC XYZ PQR

9.1.4. The cd command

With the help of this command we can move from one directory to another directory. The
syntax of this command is:

cd directoryname
cd /bin (It takes you to /bin directory)
cd /usr/local (It takes you to /usr/local directory)
cd ~ (In C shell it takes you to your home directory)
cd ~/rao (In C shell, it takes you to rao directory of your home directory).
cd (This command takes you to your home directory in bash shell)

We can specify the either absolute or relative path while specifying the directory name with
this command.

9.1.5. The mkdir command

The following command creates a new directory rao.


mkdir rao
mkdir /tmp/rao

9.1.6. The cp command

The cp command is used to duplicate a file(s). ​Syntax​ of the command is given as :


cp sourcefile destinationfile

9.1.7.The more command

This command is used to see the content of the files page by page or screen by screen
fashion. This is very useful if the file contains more number of lines. Example usage is:

more filenames(s)
more file1 file2
The above command displays content of the files file1 and file2 one after another in screen
by screen fashion.
9.1.8. The ls command

This command displays names of the files and directories of current directory. For example,
we have got the following output.
a1 a2 a3 a4 a5
The following command displays names of files and directories of current directory in long
fashion. That is, file permissions, owner name, group, links, time stamps, size and names.
ls -l
total 4
-rw-r--r-- 1 root root 0 Feb 13 23:55 a1
-rw-r--r-- 1 root root 0 Feb 13 23:55 a2
-rw-r--r-- 1 root root 0 Feb 13 23:56 a3
-rw-r--r-- 1 root root 0 Feb 13 23:55 a4
-rw-r--r-- 1 root root 290 Feb 13 23:59 a5

9.1.9. The rm command

This command can be used to remove file(s). Example usage is:


rm xyz
The above command removes file xyz (If it is not write protected). Only legal owner of the
file can remove file (Exception for super user).
rm f1 f2 f3 .... fn
The above command removes all files f1, f2, ... fn.

9.2. vi Editor
The vi editor is a popular screen editor under UNIX editor since 1970’s which is based on an
earlier editor known as ​elvis ​[Richard L Peterson]. The editor has three modes known as:
Input Mode, Command Mode, and Colon Mode. In the ​Input Mode, whatever user enters
will be written into the document. ​Command Mode allows the user to enter commands. We
can go to this mode from the Input mode by pressing the ESC key and hence it is also
referred to as ESC mode. If the ESC key is pressed while in the command mode, one will get
a beep sound. In the third mode, called the ​colon mode​, ​users can run commands and also do
some document editing. Thus it is not considered a separate mode.

In a nutshell, the following is the summary of useful commands to immediately work under
UNIX:
1. vi filename ​ -- opens the vi editor to work with the given filename.
2. Initially, a screen will be opened with the command mode.
3. To enter text, press ​i​. The input mode will be displayed at bottom right part of the
screen.
4. On pressing ​Esc​ key, the command mode reemerges. One could press
:w​ to save the matter and resume editing.
:wq​ to save the matter and quit the vi editor.
:q! to ​quit the editor without saving.
5. The three modes present in vi editor are: i) Command mode ii) input mode iii) Colon
mode
6. In command mode, commands can be entered.
press ​i​ to insert text before the current cursor position.
press ​I​ to insert text at the beginning of the line.
press ​a​ to insert text after the cursor position.
press ​A​ to insert text at the end of the current line.
press ​o​ to open a new line below the current line.
press ​O​ to open a new line above the current line.
press ​r​ to replace the present character with a character.
press ​R​ to replace a group of characters from current cursor position.
press ​x​ to delete present character.
press ​J​ to join the next line to the end of the current line.
press ​dd​ to delete the current line.
press ​4dd ​to delete 4 lines from the current line.
press ​dw ​to delete the current word.
press ​7dw​ to delete 7 words from the current word onwards.
press ​30i*Esc​ (invisible command) to insert 30 *'s at the cursor position.
press ​u​ to undo the effect of the previous command on the document.
press ​.​ to repeat the previous command.
press ​yy​ to copy the entire line in to the buffer.
press ​yw​ to copy the entire word in to buffer.
press ​p​ to place the copied or deleted information below the cursor.
press ​P​ to place the copied or deleted information above the cursor.
7. Colon mode commands
Search and substitute commands
:/raja searches for the string "raja" in the forward direction. Press ​n to repeat the
search.
:?raja search for the string in the backward direction. Press ​n to repeat the above
search.
:s/raja/rama​ replaces the first occurrence of "raja" with "rama".
:s/raja/rama/g ​replaces all “raja”’s with rama in the present line.
:g/raja/s/raja/rama/g ​replaces all "raja"’s by "rama" in the entire file.
Block delete commands
:1d​ delete the line 1.
:1,5d ​deletes the lines from 1 to 5.
$ Means last line of the file.
. Means present line (i.e.) present line.
:10,$d​ deletes lines from 10th line to the last line of the file.
:1,$d ​deletes lines from 1 to last line of the file.
:.,$d​ deletes lines from present line to the last line.
:.-3,.d​ deletes the lines from present line and above 2 lines
(deletes 3 lines including the cursor line).
:.,.+4d ​deletes the lines from the present cursor line followed 3 lines(total 4 lines).
​:-1,. +3d​ deletes the lines one above the cursor line followed by it 3 lines.
​:18​ cursor goes to 18​ th​ line of the file.

​ lock copy commands


B
:1,5 co 10​ copies the lines from 1 to 5 after 10​th​ line
:1,$ co $ ​copies the lines from 1 to last line after last line
:.,.+5 co 8​ copies lines from present line to 5 lines after 8th line
:-3,. co 10​ copies the lines from present cursor line and above 3 lines after 10​ th​ line.

Block moving commands


:1,5 mo 9​ moves lines from 1 to 5 after 9th line.
:1,$ mo $​ moves lines from 1 to $ after last line.
:.,.+5 mo 10​ moves lines from present line and next 5 lines after 10​ th​ line onwards.
:.-3,. mo 10​ moves present line and above 3 lines after 10​ th​ line.

​Importing​ & ​Exporting the files


:1,5 w filename​ writes lines 1 to 5 in the specified filename.
:1,5 w​!​ filename​ overwrites lines 1 to 5 in the specified filename.
:r filename​ Adds the content of filename after the current line.

For example, ​vi data command gives vi screen as shown in Figure 1. Those lines which starts
with ~ indicates that they are lines yet to be opened.

Figure 1​: First screen of vi editor.

Once, we are in the vi editor we can press keys such as i,I,a,A etc., to go to input mode (see
Figure 2) in which whatever we type will be saved in the document.
Figure 2​: Insert mode of vi editor

If the file is already existing, then it displays its status as shown in Figure 3.

Figure 3​. vi screen after opening an existing file.


Chapter 10 Windows 10 Basics
The following is the Windows 10 desktop when we login to the same. We have some
important parts of the desktop such as START, Notification area, Taskbar, etc.

The following figure further illustrates the parts of taskbar. As this is not a full fledge book
on Windows OS, we stop explaining further.

10.1. Notepad and Wordpad


The Start->run->notepad or by simply clicking on the notepad icon, we get notepad window
with which we can create simple text files or text documents or program files. We have
options such as Save, Save As, Print, Open, etc in File menu. Also, we can use usual things
such as CTRL+C or CTRL+V etc for copying and pasting; else we can use options in the Edit
menu. We can change font size with Format option.
In the same fashion, we can start wordpad also to create simple documents. We have freedom
to have fonts with various colors, etc. Recent windows 10 releases are having ability to do
paragraph formatting such as left adjustment, right adjustment, etc along with changing the
space also.

10.2. File Explorer

In old Windows systems it is used to get referred to Windows explorer. Now, it is called as
File Explorer. As usual we can begin using this from Run or by clicking icon. The following
figure is a typical file explorer window.
1. Left pane​ – It is used to get to all kinds of locations and drives.
2. Back, forward and up buttons – These are used to navigate through locations or
files.
3. Ribbon – The Ribbon can be used for copying, moving, creating new folders,
e-mailings, zipping items, changing views etc.
4. Address bar​ – It is used for entering or selecting a location.
5. File list​ – This is where the contents of the current folders are displayed.
6. Column headings – It is used to view the files according to our desired need like
‘Date Modified’ option sorts the files according to dates on which they are created.
7. Search Box – It is used to enter a word or a phrase to look for an item in the current
folder.
8. Status Bar – It can be used to view the total number of items in a location, or the
number of selected items and their total size.
9. Details/preview pane – It is used to view some common properties associated with
the selected file such as author, date etc.

View menu can show various panes available in Explorer:


i) Preview Pane
ii) Details Pane
iii) Navigation Pane

With the help of file explorer, we can search files, we can copy or move files from one
directory to another directory, delete a group of files.
10.3. Most common keyboard shortcuts of Windows 10

The following tables are having most common keyboard shortcuts while living with
Windows 10.
Function Command
Power menu press Windows key + X or right-click Start
Windows + Tab Launch Windows 10 ​Task View
Windows + Q Search the web and Windows with Cortana (speech)
Windows + S Search the web and Windows with Cortana (keyboard input)
Windows + I Open Windows 10 settings
Windows + A Open Windows 10 notifications
Windows + L Lock your Windows 10 device
Windows + Ctrl + D Create new virtual desktop
Windows + Ctrl + F4 Close current virtual desktop
Windows + Ctrl +
Switch between virtual desktops
[Left][Right]
Position windows on your screen. E.g. ​Windows + [Left] moves the
current window to the left half of your screen. If you use ​Windows +
[Up] afterward, the current window will be placed in the upper left
Windows +
quarter of your screen.And, what’s very handy in my opinion: If you
[Left][Right][Up][Down]
release the ​Windows key after positioning a window, Task View shows
up on the opposite side of the positioned window to select and position
another app.
Windows + H Share content (if supported by current app)
Windows + K Connect to wireless displays and audio devices
Windows + X Open ​Start​ button context menu
Windows key + G Starts App recording

Windows + D Show Windows desktop


Windows + E Open ​File Explorer
Windows + Space Switch keyboard input language (if you have added at least a second one)
Windows + Shift + Move current Window from one monitor to another (when using a
[Left][Right] multiple monitor setup)
Open programs that are pinned to taskbar.g. if first pinned program on
Windows + [1][2][3][…] your taskbar is Windows Explorer (from left to right); the shortcut
Windows + 1​ opens W
​ indows Explorer For​ you
Windows + R Run a command
Windows + P Project a screen
Alt + Tab Switch to previous window
Restore, move, size, minimize, maximize or close current window. Also
Alt + Space
works like a charm for Windows 10 modern apps.
a) Close current window. b) If you’re on your Windows 10 desktop, open
Alt + F4 Power dialogue to shutdown or restart Windows, put your device in sleep
mode, or sign out or switch the current user.
CTRL + SHIFT + ESC Open Task Manager
Open menu or program. Example, to open the Edit menu in WordPad,
Alt + ​underlined menu press Alt then press E on your keyboard. Repeat the same step for the
menu you want to open.
General Windows keyboard shortcuts
Function Command
Access help system in an application F1
Activate menu bar F10
Close a program Alt + F4
Close current window in Multiple Document
CTRL + F4
interface based programs
Access right click menu in application Shift + F10
Launch Start menu Ctrl + ESC or Windows key
Cut CTRL + X
Copy CTRL + C
Paste CTRL + V
Delete DEL
Undo CTRL + Z
System Properties Windows key + Pause/Break
Bypass auto-play when an external storage device Hold down SHIFT key while inserting storage
is connected device
Desktop, My Computer, and File Explorer
For selected items, you can use the following shortcuts:

Function Command
Search CTRL + F or F3
Rename an item F2
Delete a folder or files permanently SHIFT + DEL
Access properties of a file or folder ALT + ENTER or ALT + double-click
Copy a file CTRL key while dragging file
Create a shortcut CTRL + SHIFT while dragging file
Select All CTRL + A
Refresh contents of window F5
View the folder one level up Backspace key
Close the selected folder and its parent folders SHIFT key while clicking the close button
Switch between left and right panes F6
File Explorer commands

Function Command
Switch between left and right panes F6
NUMLOCK + ASTERISK when using a numeric
Expand all subfolders under the selected folder keyboard
NUMLOCK + PLUS sign when using a numeric
Expand the selected folder keyboard
NUMLOCK + MINUS sign when using a
Collapse the selected folder numeric keyboard
Expand current selection if it’s collapsed,
otherwise select first subfolder Right arrow
Collapse current selection if it’s expanded,
otherwise, select parent folder Left arrow
Chapter 11 - Simple MS Word freshener
In order to create project reports, term papers, assignments, we need a full fledged word
processing facility. MS Word is such a marvelous tool which solves all of your worries of
document preparation. However, it is proprietary thus we strongly recommend using LaTeX.

We can start Word by either clicking Word Icon or from Start popup menu. We get the
following window.

Important parts of the window are marked in the above image. File menu contains options to
create files, save documents, print documents etc. When we click File menu, we get the
following type of window.
To open an existing file, simply select Open option in File menu. We may get the following
type window in which we can browse through the directories and select the file of our interest
to open.

To save the current document, we select Save option in File menu. Of course, word also
saves automatically at regular intervals. We get the following windows when we opt for Save
or Save As.
We can save the document in various format such as PDF, Word 2003 format, RTF format,
etc.

We can opt the type of the document while creating a fresh file. Whatever we want to enter,
we can type in document area. We can insert images, footnotes, videos, etc in the word
document. Also, we can check the spelling and grammar in word.

If we want to print, we need select Print option in File menu. We get the following type
window, in which we can do any necessary adjustments before printing.

We can select the type of Orientation we need our document to be printed on. Two
orientations are available:
• Portrait
• Landscape
Full Screen :To view a document in full screen mode, we need to follow the given below
steps:

• Click on the View tab


• Click on the “Full screen reading” button
Web Layout ​:The Web Layout view is used to conceptualize how our document appears
when it is published to the web. This view provides only approximation and not an exact
match.
Go to – VIEW > Web Layout

Ruler :We can use the horizontal or the vertical rulers in Word to align text, graphics, and
other elements in our document.

The ruler appears only when it is turned on. To turn on this option follow the given below
steps

• Click on the File tab


• Click on Words Options ( for MS Word 2007)
• Click on Advanced
• Click on Display and then check the ‘Set Vertical ruler in Print Layout Page’

Some of the important keyboard shortcuts that can be used with Word are:

• Open a file – CTRL + O


• Create a new document – CTRL + N
• Close a document – CTRL + W
• Save a file – CTRL + S
• Display the ‘Save as’ dialog box – F12
• Copy – CTRL + C
• Paste –CTRL + V
• Cut – CTRL + X
• Undo – CTRL + Z
• Redo or repeat an action – CTRL + Y
• Cancel an action – ESC
Chapter 12 Do I need to teach Internet for Millennials?

12.1. What is Internet?

Do I need to teach about Internet to Millennials who were born in Internet era!​.The
Internet is a global interconnected network of computers with which one can look at
documents and images, view videos, listen to sound files from anywhere in the world.

12.2. What is WWW?

A technical definition of the World Wide Web is: All the resources and users on the Internet
that are using the Hypertext Transfer Protocol (​HTTP​). A broader definition is: " The World
Wide Web is the universe of network-accessible information, an embodiment of human
knowledge." Actually, ​World Wide Web is a distributed information system of ​Internet
servers that ​support specially ​formatted ​documents​. The documents are formatted in a
markup language called ​HTML (​HyperText Markup Language​) that supports links to other
documents, as well as ​graphics​, audio, and video ​files​. This means we can jump from one
document to another simply by ​clicking​ on ​h​yperlinks.

12.3. Some more terms related to Internet

URL (Uniform Resource Locator)​: The Internet address. The prefix of a URL indicates
which area of the Internet will be accessed. URLs look differently depending on the Internet
resource we are seeking. We will discuss more about this later.

Backbones​: At the core of the Internet are high speed/capacity network connections known
as backbones. The backbones are linked together in a highly interconnected manner allowing
networks attached to one backbone segment to communicate with networks in other
backbone segments.

IP Address​: To access nodes on the Internet a special code called an IP (Internet Protocol)
address must be used. Every computer/device on the Internet must have its own unique IP
address. IP addresses are actually 32 bit number but are also written as four numbers
separated by dots such as 175.83.125.71 . Note that each number in this dotted quad notation
lies in the range 0 – 255 (i.e. four 8 bit numbers which compose the 32 bit number). This is
valid in IPV4. However, now we do have IPV6 where addresses are 128 bits long.

Domain Name: ​To aid humans who have difficulty dealing with long numbers a system
called the Domain Name System (DNS) was developed. The DNS identifies each IP address
with an easier to read textual Internet address E.g. the text ​www.msn.com will be translated
by the DNS server to the actual IP address (32 bit number). DNS servers basically have a
lookup mechanism which converts from names to numbers and vice versa, making life easier
for Internet users.

Browsers: ​Web browsers are the software installed on your computer that allows us to surf,
or visit Web pages. Browsers know how to interpret text and HTML tags sent across the
Internet and displays them properly on the screen. Today, the three most commonly used
browsers are ​Mozilla, Chrome, ​and ​Microsoft Internet Explorer​.
Search Engine: ​Search engines are web servers that routinely use software spiders(bots or
crawlers) to explore the Web. They will crawl (traverse) the Internet and index the web
pages in their repositories. Whenever we enter some search string, they use this repository
and display most the web pages which matches (contains) to our search string. There are
numerous search engines available on the Web today. Some popular search engines are:
www.google.com www.ooway.com
www.bing.com
www.excite.com

12.4. How To Test Internet Connectivity?

We may often need to check whether our machine is connected to Internet or whether other
machines are accessible or not. The ping command is one of the most foundational
networking commands being used universally worldwide for this purpose. The ping
command requires a destination address whether a URL or an IP address or machine name.
Example usage of this command:
ping www.cisco.com
ping 192.168.100.5
The ping command will send four (4) packets to a remote source and will echo a return
packet with a message on the connectivity of the remote site.

The example above show a successful ping. Note the ping will also return with the correct IP
address for the URL along with the time each packet took to send and return. Notice that with
an unsuccessful ping the reply request timed out, which means that the destination location
was unreachable. The ping command can also be used to check the status of your computer’s
network interface card (NIC). Example:
ping 127.0.0.1

This ping address is called a loopback address which works only to test your NIC.

Notice the sample output show a success ping. This means that your NIC (network interface
card) is operating properly. This will work even if there is a network problem elsewhere in
the system.

● To use the ping command we must first be in the command line interface.
● In the run window located in the Start menu click on Run and type ​cmd (Windows
NT/2000/XP) or ​command​ (Windows 9x)
● Type ​ping 127.0.0.1
● Did you receive a successful ping return?
● Type ​ping www.cisco.com
● Now type ​ping 172.110.99.56

If one wants to see the path a network packet travels to its destination use the ​tracert
command. Not only does ​tracert show connectivity, but it also shows the route, the packets
used to get there. The ​tracert command is used the same way that the ping command was
used. Example:
Tracert www.cisco.com
Tracert 172.100.16.45
Note in the sample ​tracert run below that you are given the exact route the packet traveled
along with the amount of time in milliseconds the packet took between each router on the
Internet. If the trace route was unsuccessful you would receive a “Timeout” return message.

● To use the ​tracert​ command use the CLI command window(DOS window).
● At the C prompt type ​tracert www.cisco.edu
● How many hops did the packet take to get to the destination?
● Which router took the longest time to pass through it?
● What is the IP address of www.cisco.edu?
● Pick a website and use the ​tracert​ command to ping the location?
● How many hops did the packet take to get to the destination?
● Which route took the longest time to pass through it?
● What is the IP address of the website you picked?

12.5. Knowing Our Machines IP Address and Domain Name

Sometimes we may need to know our machines IP addresses. Windows has a simple means
of discovering this information. Enter the CLI command window by typing either cmd or
command while in the Run window.

● If you are running Windows 9x, type ​winipcfg​.


● You will have a GUI window with the networking information such as IP address, subnet
mask, default gateway, DNS server address, NIC MAC address, etc.
● If you are running Window NT/2000/XP type ​ipconfig /all​.
Sample run of the ipconfig command is given below.

12.6. Electronic Mail (E-Mail)


E-mail allows the millions of Internet users to send electronic messages to each other. In
addition to a text message an email will contain a “To” line and a “From” line, a “Subject”
line and in some cases some form of electronic signature at the bottom of the message. Files
of different types may also be “attached” to an email. When an email is sent it is directed like
other data on the Internet. The message is directed to mail servers by examining its “To” line
for the destination address. Most e-mail packages allow us to do the same things you do with
regular paper mail. Email has several advantages over regular mail:
1. It is fast (arrives in seconds or minutes)
2. It is cheaper costs virtually nothing.
Before you send an e-mail message, you must know the receiver’s email address. E.g. of
email address. ​venkat@yahoo.com

Spam​ refers to any unsolicited e-mail whether wanted or unwanted.

12.6.1. Using Yahoo Email


Yahoo! Mail is one of the older Web-based email providers. Accounts are free and easy to
use.

Creating an account in Yahoo


1. Click on our Internet Explorer browser or any other browser and enter
http://mail.yahoo.com​. In our case, we are using IE. Click on the button “Create New
Account” ( If we have already an account here in Yahoo, simply enter username and
password and press enter). See the following screenshot.
2. Once we click “Create New
Account” button, we get another screen where we have to enter our details such as first name,
last name, username wanted (email ID), password, etc.,. Do remember that system suggests
some available email ID’s. We can select one from them. Otherwise, enter the ID needed by
us and verify its availability. If available, we can use it. Also, make sure that we select good
string (which no one can guess or tamper) as password. Also, don’t forget to re-enter the
same (password) in the required field such as re-enter password.
System asks for alternative email ID. If we happened to have one, we can enter the same.
Otherwise, we can left this field empty. This alternative email ID and hint questions are very
useful if we forget our password. At the end, we will be given an image and its content will
be asked to enter in a text field. Once, we fill all the necessary things, and click the button
“Create My Account” as shown below, our account will be created.

3. Now, we get a welcome screen with details of our account and a “Continue” button. It is
high time to note down our account details at this time. That is, note down the hint questions
and the answers we have entered in a page such that in case of emergency this will come to
rescue us. Once, we click the “Continue” button, we will enter into our account. This screen
with “Continue” button will appear only for first time users. Next time onwards, we don’t get
all these things. In the login screen itself we enter username and password and press enter key
as explained in the above step 1.
4. After we sign in to Yahoo! Mail, the Mail tab opens by default and a Welcome screen
informs us of any new messages. On the left side of the screen is a box containing your
default email folders (Inbox, Draft, Sent, and Trash). To view new mail, click the Check Mail
button in the upper-left corner of the Mail tab or click the Inbox folder.

Unread messages appear in bold type. Yahoo! Mails lists the sender, subject, date, and size
for each message. By default, newer messages appear at the top of the list. We can resort our
messages by clicking the appropriate column header. To sort in reverse, just click the header
a second time. To view a message, click its subject line.

12.6.2. Creating an account in Gmail

In the browser, visit ​www.gmail.com​. We will get the following screen.


We will see Create account option. Simply click it and select New User. We will get the
following screen where you can fill your details and then create your account. Do remember
to fill the details to recover your account. It will ask your cell number also. Do enter and
provide the OTP received to complete the registration.

Sending and Replying Emails


To send a new message, click the Compose (New) button near the top of the Mail tab and
enter the email address for the intended recipient(s) into the ​To field​.

To reply to a received message, open the message and click the ​Reply button​. Type our
message and click Send.

We can add other emails in CC field and also through BCC field.

Attachments​: We can add files as attachments along with email messages.


12.7. Things to Be Cautious About While we are in the Internet

Accuracy: ​Be cautious not to believe everything on the Internet. Almost anyone can publish
information on the Internet, and some of it may be false. Check all information for accuracy
through additional reputable sources.

Security: ​When sending information over the Internet, be prepared to let the world have
access to it. There are ways to gain access to anything that you send to anyone over the
Internet, including email. Be extremely cautious when sending confidential information to
anyone.

Copyright: ​Always give credit to the author of any information (including graphics) found
on the Internet. Often permission can be granted from an author to use their material for
educational purposes.

Viruses/Worms: ​These usually destructive computer programs hide inside of innocent


looking programs, web pages and e-mail attachments. When triggered, often by the date or
time on the computer's internal clock or calendar, it executes a nuisance or damaging function
such as displaying a message on your screen, corrupting your files, or reformatting your hard
disk. Today, worms access your e-mail address book and send themselves automatically.
Make sure you've got virus protection software installed and that you update their "virus
definition" files at least monthly.

12.8. More about Safety and Security on the Internet

No doubt, the Internet is a wonderful resource and we all like to use it. However, just like
walking through the streets of a big city while taking precautions against thugs, vehicles,
dogs, we have to be careful and take measures for security against intruders. The bad guys
who create Internet threats to us are mean but not stupid. They can get very creative. And
since the software companies who create the updates to our protection can only react to new
threats ​after they appear, there is always a period of danger right after the threat appears
while the anti-virus companies react and create a defense for it. During that in-between
period between creation of a new threat and creation of a defense for it, we are vulnerable.
The threats come in many different forms: Viruses, Trojan Horses, and Spyware to name just
three. Since they act upon our computers differently, they must be dealt with differently.

12.8.1. Internet User's Protection Checklist


1. Firewall. This is like building a wall around our computer. It keeps the bad guys
from seeing us. Invisible PCs don’t get invaded easily. Firewalls come in either
hardware (usually installed with a network setup) or software.
2. Anti-virus software. These will help defend us against nasty programs that will erase
parts of our hard drive or spoil our OS. We can explore sufficiency of either AVG or
AntiVir that are free.
3. Anti-Spam software. ​This can help keep spam (junk mail) out of our Inbox.
Sometimes, our ISP will help with this by offering free anti-spam protection.
4. Anti-Spyware software. ​Spyware is what we get when the bad guys try to keep track
of where we go on the Internet and what we do. Use the free programs AdAware and
Spybot.
5. Windows Update Windows must be regularly updated, too. This is just as much a
security issue as updating our anti-virus. By default, Windows is set up to do this
automatically so most people just let it be.
6. Censoring Software​, to help us to control what the kids can see. This can be as
useful to grandparents as it is to parents.
Chapter 13 Let us join me to create first LaTeX document
13.1. Working LaTeX under Windows
First download MikTex from
http://www.comp.lancs.ac.uk/~fittond/win32latex/win32latex.html or (​http://miktex.org​) and
install the same. Once, MikTeX is installed, we can start developing our LaTeX based
documents by simply running Texworks from MikTeX menu. When we run Texworks, we
get the following screen. We have many many LaTex editors in the Internet. This seems to be
in much use, we are explaining about this. However, most import thing which we need to
learn is how to create a TeX document, rather than the editor!.

13.2. Document Basics

Our LaTeX source file should be saved as a file ending with ​.tex​. The first line of our .tex
file should be \documentclass{​document_class​}. One can use the document class as article,
book or report. We have to include the following line to indicate that document class as
report.

\documentclass{article}

After \documentclass, one may include a series of package inclusion commands, macro
definitions, document specifications, etc. This section of our document is called our
document’s “​preamble​”. After the preamble, we include the following instruction to indicate
the beginning of the document.

\begin{document}

At the end of every .tex file, we have to put the command ​\end{document} to indicate the
end of the document content.

Throughout our LaTeX file, we can add comments that will not be compiled by LaTeX by
putting a % symbol at the beginning of the comment lines. We can add sections, subsections,
etc., by using respective LaTeX directives in our .tex file. In the following example, we have
written a simple tex file with a single section and single line.
After entering the above instructions in a file with Texworks and run ​typeset option, the
document will be displayed as shown below.

There are two modes in LaTeX: text mode and math mode. By default, we will be in text
mode. We will talk about how to enter, code, and exit math mode in the next sections.

We can write integers in text mode. Most other mathematical symbols need to be written in
math mode. (Integers can of course also be written in math mode.). The following points to
be remembered while preparing latex document.

● If we press return twice in text mode, we get a new paragraph. LaTeX indents each
new paragraph. If we don’t want our paragraph to be indented, type ​\noindent​.
● We can skip vertical space by typing ​\bigskip​, ​\medskip​, or ​\smallskip​. We can
alternatively specify exactly the amount of vertical or horizontal space that we want to skip
using the commands​ \vspace​, ​\vspace*​, ​\hspace​, and ​\hspace​*.
● We can break a line by typing ​\\​. The command ​\linebreak ​will break a line like \\
does, but will force the text to fill the line completely. We can break a page by typing
\pagebreak​.
● We can center text by typing ​\begin{center} ​text ​\end{center}​; underline it by typing
\underline{​text​}​; make it boldface [italic] by typing ​{\bf ​text​} [{\it ​text}​ ]​; or make it different
sizes by typing ​{\Huge ​text}​ ​, ​{\huge ​text​}​, ​{\LARGE ​text​}​, ​{\Large ​text​}, {\large ​text}​ ​,
{\normalsize ​text}​ , {\small ​text}​ , {\footnotesize ​text​}, {\scriptsize ​text}​ ,​ or ​{\tiny ​text​}​.

When we process the above latex source file in TexWorks, we will get the following pdf
output.
We can make lists of items by using the following commands:

\begin{enumerate}
\item[ ​first_item_label​ ] ​first item
\item[ ​second_item_label​ ] ​second item
\end{enumerate}.

An item label can be a bullet ($\bullet$), a number, a letter, etc.,. For example:

When we process the above tex file in TexWorks, we get the following output.

● To create some special characters, like $, %, {}, & and #, We must precede them with
backslashes. (These characters are used to indicate commands within the LaTeX language, so
we need to tell LaTeX we are not giving it a command.)
● To create a backslash (that is, \), type \backslash in math mode (see next section for
details on math mode).
● To make left quotation marks, type \lq \lq.
● To underline text, type \underline{​your text​}.
● To insert an extra space between characters (for instance, when two consecutive
characters are too printed close together for our liking), type \, (that is, a backslash followed
by a comma) for a small extra space, and type \ for a larger one. This also works in math
mode. ​Note: ​if we type \ for a larger space, we will need to put a space between the \ and the
next symbol in our code.

13.3. Math Mode Basics


We have to use math mode whenever we want mathematical equations to be included in our
document. We put work in math mode by surrounding it by $s or $$s.
● $ puts our work in “inline” math mode, which, well, displays our work inline. We can
make inline work larger by typing $\displaystyle{​your math}​ $.
● $$ puts our work in “display” math mode, making it large and centering it on the page
on a new line.
● Making Greek letters in math mode is easy: for example, we type \Gamma for a
capital gamma, and \rho for a lowercase rho.
● We type x^y to raise x to the power of y, and x_y to get x with subscript y.
● We can use operators like \sum, \prod, \int, \cap, \cup, \vee, and \wedge, which create
symbols, and operators like \gcd and \cos which create words (in roman font, the font
used by default in text mode) .
● We get fractions by typing \frac{​num​}{​denom}​ , and get, say, the nth root of x by
typing \sqrt[n]x.

When we process the above tex file in TexWorks, we get the following output.

● To make delimiters (such as parentheses) the correct size for the expressions they're
containing, type, for instance, \left( ​expression \right). To suppress the appearance of
a delimiter, use a period: for instance, \left. ​expression \right] will create a right hand
bracket of the right size, but create no left hand delimiter.
● To un-italicize (make roman) an expression in math mode, type \mathrm{​expression}​ .
Alternatively, we could use the command \mbox{​expression}​ .

If we are using the document classes ​report ​or ​article​, we can create an abstract using the
abstract environment: \begin{abstract} ​your abstract \end{abstract}. In the ​report class,
the abstract appears on a separate unnumbered page; in the ​article class, it comes after the
title heading on the first page, unless we have used the ​titlepage command to create our title
page (in which case it appears at the top of the first page of your document’s text). We
cannot use the ​abstract​ environment when using the ​book​ document class.

The following is the resulting document.

13.4. LaTex under Unix/Linux


Once we create LaTex file with .tex extension (say abc.tex), the following command
creates device independent file(.dvi).
latex abc.tex
This creates abc.dvi file. To see its content, we need to use the following command.
dvips abc.dvi
We can also use the following command that directly creates pdf file for viewing and
printing.
pdflatex abc.tex
Chapter 14 Hints for buying a Computer
1. Is needed to have computer while joining Engineering course itself?
Answer​: Yes. Very much. It is like a notebook and pen, especially to a Computer
Science student. For example, a construction Mestry gets into his job along with his
tool “Tapi” or not? In the same manner, a Computer Science student is expected to
have his computer from his first year of Engineering.
2. Shall I buy a Laptop/Netbook or a Desktop?
Answer​: It all depends upon your financial status. If you can afford ten thousand
rupees more, you better but Laptop only.
3. Shall I buy a 32-bit computer or 64-bit computer?
Answer: It is very much recommended to have a 64-bit computer only. Very soon
32-bit computers are going become obsolete. Also, a 64-bit computer can access more
RAM, can process very big numbers and can give more accuracy that is very much
needed in Biology, Astrology, like fields.
4. Shall I buy Intel i5(quad core) or Intel i7 (quad core)?
5. Answer​: If you can afford ten thousand rupees more, go with i7 based computer only.
During the last few years, Computer Science problems such as Big Data problems,
Machine Learning problems, Gaming, has changed dramatically and demands more
computing power. Thus, we recommend a powerful computer.
6. Shall I buy a branded computer machines?
Answer​: Yes. Very much. If possible, pay fee for extended warranty for 3 years or
more.
7. DO you recommend more RAM?
Answer​: Now a days many Computer Science related research problems are
demanding more RAM; otherwise they will be taking days together to solve. As such,
go for machines with 16GB RAM.
8. Do you recommend SSD type Hard disk?
Answer​: SSD hard disk is 10-12 times faster than normal hard disks. Thus, your
system also becomes very fast. If you can afford four thousand rupees more, then you
can opt for SSD drive. Computer science problems such as Data mining, Neural
Networks, etc., demands huge memory and computational time. Thus, having SSD
drive will solve half of your problems while studying.
9. I cannot afford that much money to buy a computer for me. What do you advise?
Answer: An assembled machine cost about 5 to 10 thousands lesser than branded
machines. So, go for it. If not ,go for second hand (refurbished machines).
10. Do I required to buy a licensed SW?
Answer: Certainly. How long you want to live illegally?
11. How to decide which machine I need to buy?
Answer​: Please do read magazines related to computers such as PCQuest, DataQuest,
Linux For You, etc., which usually contains the benchmark results of various models
in the market. You need to buy a machine with more MIPS(Million Instructions Per
Second) rating, more FLOPS(floating point operations per second) rating, more Win
stones. See ​https://www.intel.in/content/www/in/en/benchmarks/benchmark.html
12. Do I need to buy a machine with GPU cards such as NVIDIA cards?
Answer​: If you are planning to do work in 3D Gaming, Virtual Reality, Multimedia,
etc., it it highly recommended to have this.
13. Does GHz of the computer is directly related to the computer speed?
Answer​: No. It is a rough unit only. Refer answer to point 11.
14. My machine is coming preloaded with Linux? Can I have it?
Answer​: Very much. I strongly recommend Computer Science students to have Linux
only as their operating system.
15. Someone advised me to have both Windows and Linux?
Answer​: Yes. Being a computer science student, you need to have Linux experience
with 100% guarantee.
16. Does dual boot is better or virtualization is better?
Answer​: Dual booting is better.
17. Do I need to buy a keyboard cover for my laptop?
Answer​: Yes. For durability reasons. Also, you buy Laptop cleaning pack and clean
for every 5 to 6 months.
18. How to manage my battery?
Answer​: While you are at home, once it is fully charged and remove the electrical
connection and run on battery. This increases the battery life.
19. Do I need to buy office pack?
Answer​: Any time when you want to buy, ask for student editions, which are little
cheap.
20. Do I advise you to have only open source SW on machine.
Answer​: Yes. Yes. I am supported of FREE Software movement.
21. Do you advise a Laptop with fingerprint reader?
Answer​: Yes. For the security reasons.
22. The model which I am debating is not having USB3.0. Shall I buy?
Answer:​ No. I discourage.
23. Can I get a bank loan for buying a computer?
Answer:​ Very much.
24. Anything, important do you want to advise?
Answer​: During the last 15 years, myself and my daughter have purchased about 5-6
Laptops for our personnel use. Out of them, 3 to 4 became useless because of
Hinge(folding) problem. Evidently, they are HP brand.
25. Can I buy a netbook instead of Laptop?
Answer: Usually netbooks are for presentation purpose and are equipped with slower
processor and less RAM. So, I recommend a Laptop.
Other ​Books from the Author
1. Advanced Unix Programming, BS Publishers, Hyderabad, 2005. Second Revision,
2014.
2. Unix and Windows NT, BS Publishers, Hyderabad, 2005.
3. Introduction to Linux: Installation and Programming, BS Publishers, Hyderabad,
March,2006.
4. Linux Programming Tools Unveiled, BS Publ, Hyderabad, Feb, 2007.
5. Unix/Linux F.A.Q: With Tips to face Interviews, BS Publishers, Hyderabad, Aug,
2007.
6. Lecture Notes for AICTE Sponsored Seminar on “Frontiers in Classification
Algorithms for Data Mining”, Dec 26-28, 2008 AITAM, Tekkali. Same is being
revised as a book.
7. Unix & Shell Programming, , Reem Publ, New Delhi. 2009
8. C and Data Structures, Aug, 2009, S Chand & Co, New Delhi.
9. Learn Object Oriented Programming Using Java, S Chand, 2010.
10. C# Unveiled for beginners, Reem Publ, New Delhi, (In Press).
11. Essential Computer and IT Fundamentals for Engineering and Science Students​, S
Chand, 2012.
12. Lecture notes on Advanced Unix Programming, School of Distance and Continuing
Education, JNTU, Hyderabad, 2011.
13. CSE & IT For GATE, McGraw Hill, New Delhi, Sep, 2013 (Went for Second reprint
in 2015).
14. A bridge book for C language with Telugu Explanations, N.B. Venkateswarlu, NBV
Publ, Visakhapatnam Jan 2014.
15. 101 Programming Problems Solved: Join us to win Informatics Olympiad,
N.B.Venkateswarlu, Dec 2014 (Kindle edition:
http://www.amazon.com/dp/B00RFDZT2E​ )
16. 101 Programming puzzle problems solved: High School Junior to Seniors Join us to
win Informatics Olympiad, N.B.Venkateswarlu, Feb, 2015. (Kindle edition:
http://www.amazon.com/dp/B00T1OK42K​ )
17. 2​8 String based programming puzzles solved, N.B.Venkateswarlu,, Jan, 2016 (Kindle
edition:
http://www.amazon.in/gp/product/B01AWA0AGQ?%2AVersion%2A=1&%2Aentrie
s%2A=0​ )
18. High School Programming Puzzles Solved using Python, N.B. Venkateswarlu, Nov,
2016, ​https://www.amazon.in/dp/B01N8P2FCZ
19. A first level book to expedite statistics through R: An inquisitive approach,
N.B.Venkateswarlu, Apr, 2018
https://www.amazon.in/First-Level-expedite-Statistics-through-ebook/dp/B07BZVG9
DN/ref=sr_1_7?s=books&ie=UTF8&qid=1532499939&sr=1-7&refinements=p_27%
3AN.+B.+Venkateswarlu
20. Python for Novices, N.B.Venkateswarlu, Jul, 2018,
https://www.amazon.in/Python-novices-N-B-Venkateswarlu-ebook/dp/B07CVB6W2
D/ref=sr_1_9?s=books&ie=UTF8&qid=1532499939&sr=1-9&refinements=p_27%3
AN.+B.+Venkateswarlu
21. Matrix and pattern based programming puzzles explored fathomlessly, Amazon
Kindle Edition,
https://www.amazon.co.uk/School-Programming-Puzzles-solved-Python-ebook/dp/B
01N8P2FCZ/ref=sr_1_1/261-6208710-5530138?s=digital-text&ie=UTF8&qid=15054
87894&sr=1-1
22. A lucid facilitator to explore high school level geometry based programming puzzles,
N.B. Venkateswarlu, Apr, 2019, Amazon Kindle Pub,
https://www.amazon.com/gp/product/B07R63996Z/ref=dbs_a_def_rwt_bibl_vppi_i6
23. A little book of advises to part-time PhD scholars of State Universities in India,
https://docs.google.com/document/d/1pHWx21ztfKZTojUR2fpOThB8I83-0tZbZB5q
Tuxw_4U/edit#heading=h.jx4em03i37q3
Authors Profile
Dr. N. B. Venkateswarlu got his Ph.d from BITS, Pilani in 1992 in
"Parallel Image Processing Algorithms". From 1993 Jan to mid of
1995, he had worked at University of Leeds, UK as a visiting fellow.

Dr. Venkateswarlu completed his M.Tech (IIT-Kanpur) in Dec 1988


and B.Tech from SV University College of Engineering, Tirupathi in
1986 with distinction and University 5th rank. Soon after M.Tech, he
has joined BITS, Pilani as a Lecturer and actively participated in
developing the Computer Science Department. He, along with Prof
Mandke, the then Deputy Director of BITS, Pilani has developed many
courses in Emerging Areas such as Artificial Intelligence, Neural Networks, Robotics, Pattern
Recognition, Image Processing, Expert Systems, in 1989 itself. He has, to his credit more
than 40 articles in International Journals. He is a referee to International Journals such as
Pattern Recognition, Computer Vision and Graphics, Pattern Recognition Letters, IEE
Electronics Letters.

He is reviewer to many standard journals including Pattern Recognition, Pattern Recognition


Letters, Computer Vision and Image Processing.

He has published many books such as: Unix and Windows NT, Linux Programming Tools
Unveiled, BS Publishers Hyderabad, India. Also, C and Data Structures, Learn Object
Oriented Programming Using Java, S Chand, Unix and Shell Programming, C# .NET, Reem
Publishers.

Also, he has published a book for preparing GATE Computer Science examination from
McGraw Hill in 2012.

He has written many books on programming puzzles, especially aimed at High School
students and International Olympiad participants.

At the end of 1995, he had started RITCH Center at Visakhapatnam to continue Research &
Development in Alternative Technologies, and to impart Training in Computers for the
masses around Visakhapatnam.

Presently, he is a senior professor of CSE, GVPCEW, Visakhapatnam, India. He also worked


as member of Board of Studies, JNTU, Kakinada. He worked as a member of National
Resource Center on Free Open Source Software (NRC-FOSS) of Ministry of Information
Technology, Govt of India.

You might also like