Jump to content

Diff between Computer Technology and Computer Science


weknowthewor

Recommended Posts

Actual, real, computer science involves nothing that cannot in theory) be done on a piece of paper. It is a branch of discrete mathematics that is concerned with the algorithms that can be performed by a Turing complete machine.

AFAIK, computer technology is just what it says on the tin.

Link to comment
Share on other sites

I always thought computer science was just programming. Which is why I thought it was odd we had a computer science forum -- it's not science! At our school computer science isn't counted as a science class (despite having the word "science" in the title), they teach like Java or some other shitty language.

Link to comment
Share on other sites

I always thought computer science was just programming. Which is why I thought it was odd we had a computer science forum -- it's not science! At our school computer science isn't counted as a science class (despite having the word "science" in the title), they teach like Java or some other shitty language.

 

A common misconception, look up some computer science university course syllabuses.

Link to comment
Share on other sites

Computer science refers to the mathematical theory behind computation, or to put it more precisely, a combination between theoretical mathematics and semiotics, the study of languages (or rather, symbols and sets of symbolic elements)

 

Generally a programmer will express a set of instructions to a computer in the form of a context-free formal language description, which must be scanned, parsed, and compiled into a recursively enumerable language utilized by the computer hardware. The problem of scanning, parsing, and compiling context-free (and in a few scant cases such as Tcl, context-sensitive) languages into recursively enumerable ones is a classic computer science problem, and has lead to the development of meta-languages (e.g. lex, yacc) for tasks like scanning and parsing.

 

Regular languages are used quite often by both programmers and non-programmers alike in the form of regular expressions. Regular expressions define a grammar for a potentially infinite-sized pattern matching language. This language can be expressed in the form of a deterministic finite automata (although much more typically in the form of a non-deterministic finite automata due to practical requirements of everyday pattern matching). Regular expressions remain the de-facto standard for expressing pattern matching state machines.

 

However, it's possible to express a state machine in a meta-language rather than using a meta-language to construct its grammar. This can be done using a state machine compiler (e.g. Ragel)

 

Many other computer science problems deal almost entirely in the domain of theoretical mathematics, such as algorithms and data structures (the former being an integral part of the latter). An example of such a problem is: How do I store one set of values such that they are keyed by another set of values (a process known as hashing)

 

There are many solutions to the above problem, depending on what the key is. When using strings for keys, the typical approach is to use a hash table. In a hash table, you apply a hashing function to the input string which translates to an index in an array. Since many strings will hash to the same array index, some method of collision avoidance is required. One approach is chaining: use a linked list to store all the values in a given "bucket", then iterate through the list to find what value is associated with a given key.

 

When dealing with integer keys there are much better approaches. One is a b-tree, which essentially aims to combine the beneficial properties of arrays and binary trees. Each node in a b-tree stores an array of values in order, and an array of branches which represent values which lie in between the values in the array. However, a much simpler, stochastic approach, a skip list, has actually been shown to be better than b-trees in most cases.

 

So, there's a small sampling of some computer science problems. To sum it all up, computer science problems are generally in the realm of creating and formally classifying various approaches to solving theoretical mathematics or semiotics problems in such a way that they can be assessed for a given case so the best approach can be chosen.

 

It's really the theory behind programming, and in most programming languages the most difficult computer science problems have already been solved for you, allowing you the programmer to pursue practical goals rather than having to worry about all the theory going into them.

 

Generally, when you write a program, someone has already written a scanner and parser to build a compile tree of it, then either a compiler to translate it to recursively enumerable machine language or an interpreter expressed in a recursively enumerable language to execute your program. Someone has likely also provided you with a library of data structures, and chosen implementations which work best in the majority of cases. Generally you'd hope they've also implemented searching algorithms for you.

Link to comment
Share on other sites

Uh well technology is just the implimentation of science right?

 

To a certain but very limited extent. Microprocessors implement a particular recursively enumerable language known as their Instruction Set Architecture (ISA). However programming in this language (machine language) directly is something which is done by a scant percentage of programmers.

 

Most computer science problems are practically approached at a much higher level, generally expressed in a context-free language.

 

Where computer science begins to play into computer technology is the design of the Instruction Set Architecture. One notable example of this is EPIC (Explicitly Parallel Instruction Computing), the ISA of Intel's Itanium processor. EPIC was designed from the standpoint of eliminating bottlenecks in code produced by compilers, so as to provide the most extensible platform for future compiler authors to continually optimize for.

 

While this is great from a theoretical perspective, EPIC is both a nightmare for compiler authors and Intel/HP's Itanium team. The language the CPU implements is so complex that it is very difficult to design efficient compilers and implementations for (note that humans don't design CPUs anymore. CPU designs are generally created from a meta-language like the Verilog Hardware Description Language)

 

For the time being, a simpler instruction set architecture with mass adoption generally seems to be the way to go. This is likely why AMD64, a set of 64-bit extensions to the seemingly archaic IA32, is quickly becoming the predominant platform used in computing today (in addition to Intel's variant, EM64T)

 

There's a lot of crossover between CPU design a computer science, but there are many computer science problems which are never addressed by CPU designers.

 

A common misconception, look up some computer science university course syllabuses.

 

Sadly, I think many universities teach programming in the guise of "computer science". Mine certainly did.

 

For a real computer science education, your best teachers will be books. I strongly recommend Don Knuth's Art of Computer Programming series as well as Noam Chomsky's Logical Structure of Linguistic Theory and Studies on Semantics in Generative Grammar.

Link to comment
Share on other sites

I always thought computer science was just programming. Which is why I thought it was odd we had a computer science forum -- it's not science! At our school computer science isn't counted as a science class (despite having the word "science" in the title), they teach like Java or some other shitty language.

 

Thats just ignorance.

 

Like saying a tomato isn't a fruit just because of someone else's general ignorance.

 

 

At Oxford Brookes University, If i want to gain a degree in computer science (mine is in computer systems) I can take modules in anything with the word computer in it.

 

Computer Science is a broad term and incorporates every aspect of computing, programming, hardware, mathematics etc etc

 

Computer technology is not something I've ever heard of before as a subject in its own right, sounds to me like it could be explained as a sub category of computer science.

 

It would seem to me the definitions change depending where you go to learn it. . . . which is why you need to choose your institution wisely.... but personally i like the way my uni deals with it, which is basically a umbrella term.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.