Computer Networks

Computer Networks refers to networks of Autonomous Computers, that can share data
using a set of pre defined rules called protocols
(The most commons of which is
TCP/IP). Networks can be classiffied into many categories bases on different sets of
comparisons.

Classification based on Scale:

Networks can be classified into Wide Area Network, Metropolitan Area Network, Local Area Network.

Local Area Network

Local Area Network extends of a physical distance of not more than a few meters.
Example of a Lan is a cluster of Inter- Conneceted Computers in a room. The meduim of connetion could be co-axial cables

Metropolitan Area Network

This network extends over a distance of few Kilometers. Example of a Metropolitan
Network is a computers distrubuted over a city and connected throgh a wireless medium

Wide Area Network

This netwroks physically extends over a few hundred Kilometers.
The medium of Communication is almost always through sattelite technology
or some other wireless medium. (For example Electro Magnetic waves of large wavelengths)

Classification based on Topology

Networks can also be classified according to the type of implementation

Peer to Peer Networking

In this netwroking model each computer has its own resources,
and for another computer in the P2p to acess this resource,
the computer with the resource must be "powered on"
In commercial implementation like Bittorrent, trackers keep track of the
mutliple copies of the files throughout the network(which are then divided into
small parts)and the distribution is done in a way as to ensure minimal time wastage.

client/Server Netwroking

In this form of networking, the resource of a network are centralized by
putting them on a server.Each computer then depends upon only the server
for acessing resources in the network. This topology is in general more closed
and secure than P2P networks, because to acess the server, user needs to authenticate.

Some uses of Networking

Computer networks sustain sharing of both information as well as resources.
They also facilitate communication between the users.
Another use of computer networks in distributed computing
wehere ther computing resources are connected and synchronised through
some network protocols, to achieve some common purpose.

Questions

1. How does a network "intelligently" route traffic? 2. What are the main areas of research in networking? 3. What are the possible implementations of Artifical Intelligence in Networking?

Links

Comupter Networks- Elsevier
Social Engineering-Symantec Function-X
Introduction To networking
Computer Netwroking- STBS 2201
Introduction to Computer Networks by Prof. Jean-Yves Le Boudec et al

Computer Security

Computer security is minaly deals with securing information and resources ,
, by different methods that usually makes acess to the documents/resources
difficult. The main objective of computer security to make
sure only authenticated persons have acess to data and resources.

Malware

Malware is any software, that causes intended discrepencies in the usage of of computers.
They can also violate the integrity of data, obtain unauthorized acess to resources.
It is a very generic term that includes any piece of code, that have the above charecterisitics. Anti-Virus softwares, Spywares,adwares and sometimes even cookies are all classified under Malware.

Social Engineering

Here the users are "tricked" into revealing information, or providing acess to system resources.
Almost all of Social engineering in done over the Internet, implying that there is no direct
contact between those the fradsters and the user.Examples of
Social Engineering include Phishing(mainly though forged emails) pretexting and Diversion Theft. Prevention of breach of security can be done in many ways:
Note: Vulnerability here refers to the defects in programing,
that a hacker/cracker can exploit to inject his own code, and hence
violate the integrity of the data or obtain acess to resources.

Unsecure Coding

Historically it has been known that, exploitation of errors of different
types such as int overflows are one of the main reasons of breaches of security.
Overtime the specificty of knowledge about
these particular errors have increased.These particular defects in coding can then be avoided
through spreading of awareness about them.Thus Secure Coding is a
way of ensuring computer security.

Secure by design

Here by making the design of a porgramme available to all,
while designing using a grass roots approach to avoid security flaws. The idea behind
making the design available, is to make sure there are more people to
find the vulnerabilities, rather than exploit it.

Security focused Operating Systems

The difference between this design and the other types of operating system is, one of the main
objectives of the operating system is to provide a secure environment, even if means
sacrifices in functionalitiy. The os is constantly patched to fix vulnerabilities and
extensive effort is put for the same.

Links

Computer Security-Wikipedia
Social Engineering-Symantec
IEEE- Computer Security
Computer Security
ISTL-Computer Security

Questions

1. What is the difference between a exploit and malware?
2. Why is it difficult to control malware?
3. What is the single most impoerant innovation in computer security?

Favourite things from Mr. Pausch's lecture on time management

Sometime back i heard that "advice of enlightenment" is a sort of common sense which just resonates in a better way in ourselves. Here are some of my favourites moments from the speech:

1. "Do it because you said you would, sometimes its simple as that"-On the importance of keeping promises
2. "It doesnt matter how well you polish the underside of the banister"
3. "Break it into simple taskes and start with the ugliest one first"
4. "Dont try to to things right, do the right things"
5. "Maintain a time journal to get real data on where your time is going"
6. "When you appoach something like you got all the time in the world, time becomes imprecious"
7. "Sometimes all you have to do is ask"
8. "Never delete your mail"(They are the closest to a journal we have.)
9. "Delegate people by giving them authority as well as responsibility"
10. "Time is all you have and one day you may find you have less than you thought"

Here is a link to the speech Time managment


Introduction to Cloud Computing - A analysis

Cloud computing is an umbrella concept which allows computing to be delivered as a service over networks.
Here the importance is not gived to the actual location of resources, but it is rather
based sharing of resources from a server
available on centralized servers. This centralization of resources reduces overhead
costs, leads to increased efficiency
while at the same time, raises concerns
of security.

According to wikipedia, There are different ways in which cloud
computing is deployed
1. Public cloud :It is the most mainstream of the models where users
can acess resources via websites or web apps
2. Community cloud: In this model, the resources are shared by several
organisations based on mutual coercion, provided they share common goals.
3. Private Cloud : Clouds operated on by a single organization.
The advantages of cloud computing over more traditional methods is minimal in this model.
4. Hybrid Model : It consists of two or more clouds of different models bound together.

Advantages of cloud computing:
Cloud computing offers many advantages over the traditional method of computing ,
mainly due to the centralization of the resources.
Advanced tasks can be carried out on the web, even without expensive
hardware as the major part of the computing is done by the servers.
It enables mobility of resources, as the user can remotely acess their resources over the web.
Improved efficiency as the computers do not have to be engineered for "peaks".

Disadvantages of Cloud computing are mainly related to the
security concerns it raises and the slow rate of adaptability.
End users do not usually know where their resources are located
and since the servers hold the data of many users,
the danger of a massive data "leak" is also imminent.
But despite these setbacks, it is an upcoming technology which will unevitably take over the "desktop computing" at some point.(Ask google!)

Increasing Relevance to End user

With the increasing adaption of smartphones, the need for centralised softwares has increased manyfolds.
As the smartphones do not yet have the for powerfull processing powers,
processing done at a server level becomes more viable.
For instance the opera web browser for the iOS, processes web content on its servers
and optimizes it keeping in mind the limited hardware of the end user
, thus making the hardware less relevant in the web experience Even if the most powerfull and efficent of processors are developed and incorporated in the smart phone model
it is viable to "outsource" the processing, to save the limited battery.
This is one of the reasons for the increasing popularity of web apps.

Questions regarding Cloud computing

1. It is still unclear to me, how cloud computing actually works?
2. What is the scope of artificial intelligence in cloud computing?
3. Should future versions of the popular operating systems embrace cloud computing? (Like say a synchronized desktop)
4. Is the desktop era of computing ending soon?
5. How can better secutry systems for cloud computing be developed.
Links: Howstuffworks
Wikipedia
PC Mag
Infoworld
Informationweek


Programming Languages and Verification

Programming languages are means of interaction between users and computers.
Its using programming languages that the instructions are actually given to the computers.
The syntax, also known as the grammer of a programming language can the seen
as the primary means of differentiation between programming languages.
According to Wikipedia, in addition to syntax, these language are defined by defnition documents.
There might also be some differences within the programming
language due to some differences in the software used to implement them. Programming verification on the other hand can be seen as a tool used for implementing bug free Programming Languages.

There are many kinds of programming languages:
1. Machine CODE-Its the most Fundamental(lowest level) of all programming languages.
It is very hardware specific, and additionaly its requires the
most extrenous efforts to accomplish even simple tasks. It was also very complicated
to understand. Infact, wikipedia says "It has been said that machine code is so unreadable
that the Copyright Office cannot even identify whether a particular encoded program is an
original work of authorship"
2. Assembly Language- Its a low level language that converts the input into machine
code and vice versa. It it Hardware Specific and therefore not portable
Examples of Assembly Languages are FASM,GCK,ASM
3. High level Language- It is the most refiend of the programming languages and thus requires us to do the least intensive coding.It is also
not hardware specific, meaning that its portable.
There are mainly two types of Hll excution models: Intrepeter: It skips the compilation stagte. Error checking is done, line by line. A good example of such a programme is Eclipse.
Compiler: In this model, we are required to type in the entire code, and there is a compilation stage during which the entire program is
checked for errors.Example of a compiler is Turbo C++, Borland C++

Programming Verification

Programming verifcation is the a part of implementation of programming languages.
It is use for debugging. Although traditonally
syntax errors are detected easily, Programming Verification tries to implement Mathamatical
Modelling as well as logic to completely debug the programme of any logical
logical errors, and errors rooted in special circumstances. This is a particular area in Computer Science that has a lot of scope for current research.
A part of the reason can be attributed to the mathematical aspect of
programming verification. The tools for programming verification are themselves free of bugs, as they are self-serving.

Questions regarding Programming Languages and Verification

1. How do computer actually translate and intrepete logic?
2. What is the scope of future research in ?
3. what can we expect in the future from programming Languages? (Like say what feautures can be added)
Links: What is programming
Wikipedia
Programming Markup
Infoworld
Formal verification of programming languages

Math and Computer Science

From the time, even before the first desktop computers were "evolved",
Math and Computer Science have been inseperable.Infact, before the age of the digital computers, computers were mainly used for Mathematical Calculations.
Even today, the benchmark of the abilites of the processing power of a computer are
based on the amount of Calculations they can do in Unit time. The progress of the capability of computers are also measured in
in a similiar way.This is indicative of the close relation between the two fields
In fact in one of the three paradigmes of Computer Science, the rational Paradignm, looks at Computer Science as a branch
of mathematics. But such statements are not axioms, as the vice versa can also be argued.
. Let us look at some of the Ways in which
mathematics is implemented in Computer Science.

Formal Methods

Its the use of mathematical techniques for the "implementation as well as verification of softwares." In program verification,
is done to find out the possible errors and bugs in the program.
It implements mathematical models to analyze the logic of the program and root out the logical inconsistencies. According to Wikipedia
the idea behind implementing Mathematical analysis, is because of the general consensus that Mathematics offers "truth". But formal methods are identified as very expensive and can be used only when it is very important that the programmes are reliable

Mathematical Logic

Mathematical Logic is an intricate combination of computing as well as mathematics. Since all algorithms run by computers
are based on Boolean Logic, one can argue that Math is the most important utility for Computer
Systems. On a seperate nore, keeping
in mind that the other important component of computer systems is the microprocessor
which excutes arthematic operations, the close ties between
the fields can be established. Back to Mathematical Logic, it enables the applications of the different Logical Models
in other Fields.

Cryptanalysis

Cryptanalysis is the science of decoding "crypted" information. The ability of
computers to generate possible mathematical sequences
to find out relevant methods to be used in the application of Cryptanalysis cant be stressed enough.
On the other hand Computers also make it possible to encode
information to high degree of enrcyption.
It is generally believed that Cryptanalysis is one of the main reasons,
why goverments are funding cloud computing. Threre are several other fields of intrests which are at the intersections of the two disciplines. Since Computer Science related
research is more accesible than research of Mathematics, the relations between the
have helped Mathematics in leaps in leaps and bounds. Some of the most intresting objects of research such as programming Verification is at the intersection of the two fields.
This is one of the reasons, some of the best CS college programmes are augmented with Mathematics

Questions

1. Can you tell us more about the CS-Mathematics interdisciplinary research?
2. To what extent has CS accelerated the progress in Mathematics?
3. Can you give us your opinion of the belief that CS is a branch of mathematics?
4. Do you believe CS is the math of the Future?
Links: Computer Science-Wikipedia
Maths and CS-The Symbiotic Relationship
Cryptanalysis
Mathematical Logic
Quantum Computing

Data Mining

Data Mining is a upcoming field in the realms of computer science, that
makes ananlysis of databases possible through artificial intelligence.
What I understand from the various sources below, is that instead of using pre-existing
patterns to define the relatioships between the data, data mining is makes implementation
of actually finding new patterns, and defining the relationships between
this data from these various angles possible.Another important aspect
about data mining is that, it helps in finding trends that were previously unseen by expert analysis alone. Thus Data Mining is relevant in the present both in relation to the future as well as the past.

A slice about Relevancy

As more and more data is available online to various service providers such as Google,
Facebook, Four Square etc. and as these providers make their buisness models sustainable
by Targeted Advertisements, the relevancy of finding patters from data becomes very important
Since the scalability of the above projects are huge, it can be inferred that,a lot of research will
be done in this field. Additionaly, In a dynamic world,Data Mining ensures that the people
concerned have acess to not only pre-existing trends but emerging trends as well

Data WareHouses

According to Jason Frand, faculty at the UCLA, data mining makes centralization of data
more purposefull,as then its possible to analyse a large amount of data by a large amount of people
Intutively, We can agree on that, because, the more the Data there is to analyse, there more the
relationships that can be found, and more complete the picture would be.

Working Of Data Mining

Almost every source I read about Data Mining, had almost the same thing to say about how Data Mining Works
It uses a technique called modelling, where pre existing knowledge is applied to databases, and then the
relevant patterns are learned. Then these relevant patterns are then used to find new patterns or pre-existing unknown
patterns.

Privacy Concerns

If data bases are centralised, and used to analyse general patters of a society, I wouldnt be seen as much of a
threat. On the other had, with increase in digitilization of data, especially in cities, a lot of very specific
information about very specific components of society can be analysed.
This ananlysis might easily reveal more than what induviduals feel,
others need to know about themselves.
Thus data mining is a reason for concern about privacy.

Questions

1. Does this mean that it is actually possible for Data Mining Systems to come with solutions to problems, which we didnt know was solvable? 2. How can increasingly available location information , be used for data mining? 3. What are artificial neural networks?

Links:

Oracle Data Mining
The Arling-Data Mining
Data Mining
University of texas-Data Mining
Webopedia