Professional Documents
Culture Documents
AfresgmansBeaconforComputerScienceMillennials PDF
AfresgmansBeaconforComputerScienceMillennials PDF
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.
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 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 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
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."
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.”
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.
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.
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).
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.
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.
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.
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
Solar powered computers are also developed in the meantime. For example the following
figure 35 shows a 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.
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.
The following (Figure 41) computer screen can be bend like a sheet.
Figure 41: Foldable screen computer.
The following figure 43 we may find a processor on a fingernail which shows the beauty of
miniaturization of the processors.
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;
3
https://en.wikipedia.org/wiki/Turing_Award
Chapter 3 Planning Four Years of study fruitfully
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/
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
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.
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.
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.
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).
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.
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.
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.
You could also make a little websites or programs just for yourself, to test your
abilities and push yourself further.
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:
4.2. Glimpses of Computer Science disciplines and how to Equip yourself with them
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 )
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.
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.
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 )
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.
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.
Recommended reading
● Linux Kernel Development by Love.
● Operating Systems, Gary Nutt
https://www.amazon.com/Gary-Nutt-Operating-Systems-3rd/dp/B00N4E7EDK
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.
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.
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 )
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.
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 )
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.
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
)
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.
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 )
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 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.
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
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.
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.
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
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.
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.
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
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.
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
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
Skill sets needed: Raspberry Pi, Arduino, GPIO, USB, I2C, LEDs, FPGA, ASICs, SoC,
Bluetooth, LoRaWAN, Micro-controllers, ARM Cortex
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,
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.
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
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.
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
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.
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.
6.2. List of Topics for which you need to fine tune for programming Competitions17
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
f. Heaps
■ Problems
1. https://www.spoj.pl/problems/PRO/
2. https://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
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 whys, 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
whys 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
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/
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
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
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
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.
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
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 ).
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.
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.
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.
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.
● 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/
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
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.
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.
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
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.
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.
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.
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.
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.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.
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.
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.
The following figure further illustrates the parts of taskbar. As this is not a full fledge book
on Windows OS, we stop explaining further.
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.
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
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:
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
Some of the important keyboard shortcuts that can be used with Word are:
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.
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 hyperlinks.
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
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?
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.
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.
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.
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.
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.
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.
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.
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.