top of page

Computer Security is still a new term, but the process itself, of preventing damage to the hardware, software and/or information, has been around for some time. It is said that it is far easier to build a secure system than a correct system. Incorrect systems contain ‘bugs’, which may affect the performance or execution of some aspects of a system, but they can usually be circumvented and are rarely fatal. However, a single ‘hole’ in the security system of the computer can prove fatal. Basically, the battle for computer security is analogous to a tug of war between the perpetrators and the producers. The perpetrator tries to find these ‘holes’, whereas the producer tries to make it harder and harder for the holes to be found. The point underlying this is that holes have not been fully eradicated so far, therefore work is put into hiding them from prying eyes, and making a perpetrator’s attack costly enough for him so he reconsiders doing it. However, security nowadays is largely neglected, because it usually swamps upon performance and convenience. This is a perception based on the fact that most security companies do not work to separate security from convenience. Therefore, most customers do not ask for high levels of security. As a result, the security companies have nothing solid to invest in, so they do not find it financially feasible to include heavy security in every system. The only few who do subscribe to vast security networks are universities, banks or governments. Some of these programs include CGA Software, Products Group’s TOP SECRET, Uccel Corporation’s ACF2, and IBM’s RACF, all for IBM’s MVS operating system. Over the years, many frauds have emerged in the namesake of computer security. A few of them are call-back modems and data encryption. While the latter is perfectly fine protecting communication data, or files, it is not a general security solution. It is prone to bugs and malfunctioning, that can prove fatal. However, this fad was razed soon after. Call-back modems involve “secure” access to computer via telephone, and your telephone only. However, in systems involving many users, the potential for an internal rifling of the system is practically glaring. Passwords are another popular way of supposedly securing computer systems. They are one of the convenient ways to do the job. However, when many users are using the same system, password sharing and hence, leakage, is inevitable. A point to be noted is that a majority of all security breaches are procedural, not technical. Technicalities of computers are not yet popular, but when they do become ubiquitous, it will mean a dark day for all, because there are no security systems designed for technical breaches. Work needs to be done in this regard if we are to breathe somewhat freely in the computer-oriented future. As is said, “I don’t care if it works, as long as it is secure.”

 

 

5 questions that might come to your mind:

 

- How safe is the safest system?

- What is the biggest threat to systems nowadays?

- Who is winning this "war" so far?

 

 

 

For more on computer security, feel free to visit these links:

 

 

Wikipedia page

 

HowStuffWorks

 

Webopedia page

 

 

Computer Security

Natural Language Processing

Natural language processing is the process by which a computer/machine interprets human language and extracts meaningful information in the correct order, grammar and syntax. Commonly, natural language processing is also described as the phenomena when a human transmits information to a machine and the machine in return, responds in a human-like manner, which does not reveal its true nature. Natural Language processing is a technological advancement we encounter almost every day. Apple’s voice-companion “Siri” and “Jarvis” in the Iron Man movie series are the easiest examples that come to mind, given their high technological roots and functionalities, which surely fit a name as complex as “Natural Language Processing”. However, even for-granted tasks like searching for material online, using google translate, using word processing programs, etc., are all examples of this technology. We must remember that language is not only spoken, but also written. Consider it this way. All the alphabets I am typing right now, are absolutely nonsensical writing, in the computer’s viewpoint. Because, it is only programmed to understand code, and follow commands; it cannot understand human languages. If I commit a mistake in the next word, this word processor will first detect, and then auto-correct it, solely because it can employ natural language processing. How it knows whether a word is wrongly spelled, and which word to replace it with, however, is also due in part to the same technology. Data mining, a statistical technique in programming, helps in collecting data, and then the computer uses this data to analyse whether certain characters grouped together are “correctly spelled” or “incorrectly spelled”, for example. There is a lot of research being undertaken in this field. The goal is to achieve perfect understanding between the user and his/her computer, to the extent that computer programs may be used to replace human companions when needed. Also, in general, the user friendliness, as well as potential processing of computers would be greatly aided by advancing technology in natural language processing.

 

Some questions that might arise:

 

- Exactly how deep is the relation between NLP and Data mining?

-Where have we reached in the perfection of NLP?

-What further branches of computer science does NLP lead to?

 

 

 

For more details on Natural Language Processing, you can visit these links:

 

- Wikipedia page

 

- IBM's Natural Language Processing prodigy (YouTube video)

 

- Apple's "Siri"

 

Computer Networks

A network is a system of communication and exchanges of data between computers. The computers on a network are known as nodes, and they transmit these data or communications via telecommunication links. These links can be either cable or wireless. The most popular example of a computer network is the internet. There are many nodes in a communication link. They originate from the computer running the main server, and digress out to hosts, routers or personal computers as well. There are many different networks of many different sizes or types in the world. One of the types is Local Area Network (LAN). A network is defined as a LAN when it is managed by just one entity, from within. A LAN can only transfer data among its nodes, and not out to other LANs. Many LANs grouped together, however, produce a WAN (Wide Area Network). It is WANs and LANs like these that enable data transfers and communication between machines possible today. The internet is an excellent example of a massive network. It connects computers from all over the world, whether they be servers, hosts or clients. Every webpage we see on the internet is actually data sent from the original machine, to EVERY computer on the internet, hence every computer is able to access webpages. Webpages are not suspended in some other dimension of physicality. They are packets of data that were transmitted via the nodes along the internet, throughout the world. Many webpages make up a website, and many websites make up the World Wide Web (www). The internet, however, is not the same as the World Wide Web. The internet facilitates the transfers of the World Wide Web, through its network. Internet to the final consumer is delivered in the form of internet routers, knows as Access Points. These can either be cable routers or wireless routers. Both copper in the cables and the electromagnetic space available to the wireless routers, are examples of media of transmission of the data packets. The study of computer networks is the study of how to improve these networks. Naturally, there are a lot of issues regarding privacy, bugs, data crashes, data losses and loss of networking. Computer Networks’ research hopes to iron out these bugs, and create the perfect network, one day.

 

 

Some links you can visit:

 

- Wikipedia page

 

- Introduction to Computer Networks (YouTube video)

 

- Building your own network (YouTube video)

 

 

Programming Languages and Verification

Computational Theory

As human languages are made for ease of communications between humans, programming languages are made to improve communication and flow of commands between the user and his/her computer. If computers were to develop any further, they needed to be more fluent and advanced in deciphering new types of human commands. Hence, the programming languages were developed over time to include more possible commands. This development is analogous to the development of human languages, both in purpose and method. The more advanced our programming languages become, the more we can get out of machines; through more creative software. Every time a new computer is released to the public, its new software capabilities are only made possible through new developments in its compatible programming language. A lot of programming languages exist today, for e.g., C++, C, Visual Basic and Python, to name a few.
In the 1940s and 1950s, computer programs were entered into by flicking external switches. It was to overcome these kinds of inefficiencies that languages like Fortran, Cobol or Basic were produced. However, since those, techniques like Object-based programming, which involves creation of different “classes” of programs to be stored in the RAM. After that, further specific instances of programs are created, which are stored in these “classes”. Other techniques like Generics deal with generally defining objects to classes, so time and memory is not wasted in specifics. One class may run a variety of like-functioned programs. Another technique, “Multi-threading”, is probably the most effective of the above. One of the multi-threading techniques involves making a computer able to execute multiple programs at the same time, either by breaking the program into bits which run after some time, or consecutively, as needed. In multi-threading, programs do not run for long time periods. To provide for a wider range of possible programs running per second, the computer shifts between programs at a very high rate, allowing them to run almost simultaneously. These techniques, altogether, made fast processors and CPUs faster. A normal computer today can do approximately a billion operations per second. However, in this myriad of achievements and wonders, there lies a very important concept for the success programming languages have had. And that is, “Verification”. Thousands of programming languages have been invented today. Not one of them is free of bugs and/or flaws. To filter the quality out of this deluge of languages, verification programs are used. They “verify” the validity of the language, on a tri-aspect basis; on basis of syntax, semantics and pragmatics.
Syntax basically means programming grammatical rules. Unless a language obeys the syntax understood by the specific computer it is being written for, it will create problems. By running a large amounts of different commands, the verification programs test the syntax integrity of the language. If it passes this test, the program advances to the semantics part of the verification. Semantics of a language refer to the meaning of the command being run, and whether the command itself is valid or not, in terms of purpose and effect. Pragmatics of a language mean the most efficient way to have executed a command.
To test these aspects, there are two types of verifiers. Dynamic, and static verifiers. Dynamic verifiers check the language by actually running the software and running commands. Static verification software check the code for errors, and do not execute commands in the language. The dynamic verifiers are again split into three rough branches. There are those dynamic verifiers that check for specific commands in the language. Another type of dynamic verifiers would be those that check a whole group of functions or classes, for their validity. The third type of dynamic verification programs is acceptance tests, which grade the language based on the acceptance criteria, mostly by running function tests. Static verification programs are also divided into three types; model checking, data flow analysis and abstract interpretations. Model checking refers to the check upon models of commands and programs in the language. Data flow analysis means analysing data patterns and their efficiency, Abstract interpretations check a language for abstract commands and how it interprets them.
Today, we owe a lot to the programming language. They are taken easily for granted because we cannot see them in action while doing a simple task of unlocking a phone, or answering a call, but the truth is, there is a labyrinth of languages and programs running everything from the most basic to the most advanced programs in the world. And for every good program, there is a verification program, for incompletely verified languages are usually incompetent.

 

 

Some questions that I had:

 

- What goals do we see with further developments in these languages?

 

- How much would a "perfectly verified" language benefit us?

 

- Which languages are currently the least "bugged"?

 

- How far can advances in hardware alone take us, without any subsequent improvement in language development?

 

- How are bugs in verification programs traced and dealt with?

 

 

 

 

For more information about the topic, please visit:

 

Wikipedia

 

Carnegie Mellon University's page on the topic

 

Introduction to Progamming language verification by Krzysztif R. Apt and Ernst-Rudiger Olderog (.pdf file)


The theory of computation deals with solving problems with algorithms, on computational models. It is not only concerned with solutions, but rather, with the best possible solutions. In this field, we see three main branches: automata theory, computability theory and computational complexity theory. Automata theory is the object-oriented study of mathematical objects called automata, meaning “abstract machines”, and solving problems using them. Mathematical objects are taken as inputs, and the processing part involves making transitions from object to object, solving the problem. The current object (state) and its parameters are taken is new inputs as it transitions. The symbols so far entered into the automaton form a finite sequence of symbols, called words. When the word has been read completely, the automaton stops and gives its final state (the state at which it stopped) in the form of whether the input word was rejected or accepted. Computability theory is a branch of mathematical logic, computer science and the theory of computation. It is also known as recursion theory. It is used to address questions about non-computable functions and their arrangements into hierarchical sequences in orders on non-computability. Computational complexity theory focuses on arranging computational problems in order of complexity, and finding relations between these classes of difficult problems. This helps determine the practical limits of what computers can and cannot do. All these fields of computational theory aim to solve problems in computation. This theory uses computational models which take data in the form of mathematical symbols as input and give outputs. As mechanical methods of problem solving are either too taxing on resources of time, we use computers, as they have much more simultaneous processing power than humans do. The future of computational theory depends a lot on the processing and computational power available to mankind.

 

 

 

Questions that came to mind:

 

- Explanations of different methods of computation

 

- Potential of computational problem-solving

 

- Computational solution regarding the limit of processing power

 

- Types of problems that cannot be solved by this theory

 

 

 

 

Links to more information on the topic:

 

Wikipedia page

 

Introduction to Theory of Computation (YouTube channel)

Mobile computing is a particularly intriguing area of study, especially when one keeps in mind the current trends, advancements and move towards mobility of networking as well as of computing.

In today’s fast age, a user cannot always afford to keep just one desktop computer for all of one’s computing. While on the go, one has to check e-mail, open web pages, take pictures, as well as the routine tasks of contacting other people. Thus, the need for a “mobile” phone was felt, and its daughter, “invention”, soon followed in the form of the first mobile phones. However, as technology progressed, a need was felt to improve and update not only our fixed computers, but also our mobile computers and phones. It was seen that a mobile phone had the capability of being a small-scale version of a desktop computer, and it was to this end that researchers in this field toiled.

Today’s mobile phones provide us with a confusing relief. We are able to fulfil basic computing needs while on the move, but, we are torn between the wide ranges of mobile devices we can use to that end. We have mobile phones, iPads, laptop computers, phablets, and desktop computers. Mobile phones are trying to become laptops, and laptops are trying to match the performance of desktop computers. However, desktop computers have not spiked much researchable interest in recent years, signalling clearly the move towards mobile computing.

Apart from computing, networking has also outsourced to mobile devices today. As the analogy of the stationary desktop computer, we have the DSL cable, the dial-up modem, and other stationary networking systems that are not in much use nowadays. Wireless networks, including Wi-Fi, 2G, 3G, 4G and LTE are examples of wireless networks available today.
However, there are still some limitations as regards accessibility to wireless networks, cost, and speed. These are some of the issues research in this field is currently focused on. Users require a combination of speed, accessibility, economy in one wireless networking package.

 

 

 

Some questions on the topic:

 

  1. The thin line between stationary and mobile computing in the future

  2. How wireless networks work

  3. Wi-Fi vs. Cellular networks

 

 

 

 

Some links you can visit:

 

 

Mobile Computing (wikipedia)

 

Cellular Networks  (wikipedia)

 

Mobile Networks (.pdf)

Mobile Networking and Computing

bottom of page