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 cablesMetropolitan 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 mediumWide 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 implementationPeer 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 differenttypes 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 SecurityQuestions
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 concernsof 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 serversand 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 InformationweekProgramming 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 languagesMath 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 reliableMathematical 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 ComputerSystems. 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 MathematicsQuestions
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