Jump to content

Newby Q: Where to start with computer sicence and the internet?


MonDie

Recommended Posts

I was looking at a book called The Filter Bubble: What the Internet is Hiding From You, but it seems more opinion oriented rather than factual. The author said, "an engineer told me there are 57 signals that the site uses to figure out who you are." That's great, but I want to know more about how they do it. Let me talk to the engineer.

I want something that will build up my knowledge from the basics. If you took classes, please recommend the textbooks used in your computer classes. I like buying the slightly outdated or international editions of textbooks for cheap. I'll just read the introductory chapters and anything that pertains to my interest. I can print out long internet sources, since I like to leave the house to get a lot of reading done.

 

However, I'm very new to all this. Maybe you can also give me an introduction to the different areas of computer science and related topics.

 

I was recently reading something about the different features a website can recognize you by, and some people got into an argument about whether or not a website could recognize someone's MAC address. I had to Wiki that because I didn't know the difference between MAC and Mac. I'm sure I would have been more interested in the discussion if I knew what all the terms meant.

 

Here are some questions I generated after looking at this thread. Some vague answers might give me an idea of what goes on with computers and the Internet.

http://www.sciencefo...where-to-begin/

 

The first responder to this thread makes a distinction between cryptography and computer science. I just read that cryptography is all about data encoding. What societal issues is cryptography related to? What is computer science exactly, and what categories of computer science are related to cryptography?

 

What does the "system" Tor (The Onion Router) do? I know what a Router is, and I had to hook one up one time.

 

What are "ports and protocols," and how are they related to hacking? I tried Wikipedia and Dictionary.com, but I couldn't understand their descriptions.

Edited by Mondays Assignment: Die
Link to comment
Share on other sites

What you are describing as your interests are more so Information Systems, Computer Science is the science of computing. Computing itself is the ability to process information using algorithms, where information systems deal more with the transmission and storage of information in database servers.

 

For computer science you would start with Discrete Mathematics, Programming, Algorithms, Computer Design and Architecture, and Operating Systems. I don't have much of a book list for these, and although I have a good deal of knowledge in Information Systems I would be best to let someone else make notes for you.

 

"Discrete and Combinatorial Mathematics." - Grimaldi

 

"Data Structures and Other Objects Using C++." - Main

 

"Software Engineering" - Sommerville

Link to comment
Share on other sites

Ahh yes, the 'fun' part of computer technology. You really end up knowing those kind of stuff through work and snooping around under the hood of stuff. Those information are not entirely available in the crash course. For example, learning programming, even low level programming, doesn't give you as much insight as you want when it comes to breaking stuff(malware, security). On the other hand, skipping programming will make those stuff not make sense at all I think. At least, in my opinion.

 

Tor is basically an Internet mask, just as the home page tells. You become anonymous on the web. How they do this is beyond me though.

 

All communication requires some sort of protocol. HTTP, for example, is the protocol used to access web pages. Although much of the work done is kept from the user, a lot of stuff happens when you click something on the web/computer that dictate how things should go. The idea in security hacking is finding/exploiting loopholes or creating one. In theory(because I don't know how), you can find someone, anyone, on the Internet given any packet(which is an organized piece of network data) that came from this person you are trying to find since they contain that information. How else do they find their way back? Learning the TCP/IP protocol would be great help because this dictates how the data is transformed and represented on the network.

 

A port can be though of a as a door. From MSDN:

TCP/IP used port numbers to differentiate between applications by assigning a unique 16-bit port number to each application protocol. For example, HTTP traffic today is standardized to use TCP port 80, SMTP uses TCP port 25, and FTP uses TCP ports 20 and 21.
It is one way to know to which this piece of data belongs to. If all data came in from a single door, there would be a scramble as to whom that piece of data belongs to. When I make some network application, I use some unused port and so I am sure any data that came in from that port is mine. For example, you know which port Windows Update listens to and accept security data or some sort of important stuff on a different application, you can 'listen' to this port and acquire, or even intercept, the data or 'reroute' data while it is on the network cable that is destined to this port in question.
Link to comment
Share on other sites

A lot of that was beyond me, but it definitely sounds like I'll need to know about programming so that I can understand how data goes from one place to another. I see that there are different languages. What are the different languages, and how do the different languages relate to each other and types of computer systems?

 

Why do you guys publish the fact of your knowledge on the internet? They will know that you know how to know what they know, and you know they don't want you to know any of that. I apologize, there's something in my eye.

Edited by Mondays Assignment: Die
Link to comment
Share on other sites

There are a handful of mainstream languages right now that I know of and they generally differ at how easy it is to work with them and what they can do, trading off some to acquire some of the other.

 

The newer kids on the block, I think, are C# and Java which are generally used on a more 'top' level, if that makes sense, because most of the work done is completely abstracted or hidden to the user. For one, you can't address memory locations in Java and is only a feature in C# which limits their capabilities. They also have an automated 'cleaning up' facility and is only interpreted. The code generated when you compile them isn't something meant for the CPU but is meant for the middleman.

 

C and C++ offer almost boundless capabilities as far as manipulating the computer goes without fiddling with manually moving around memory to do a simple console printing, as is the case with Assembly. The code generated is something the CPU can understand and therefore the overhead of a middleman is gone. The speed is absolutely faster than that of C# and Java. Because of this, Operating Systems are generally written in C and C++, mostly C. They are that capable at low-levels that something as critical as an operating system can be trusted to them. Then there's Assembly. In C, you would simply need to include the libraries that contain the stuff you want then invoke these packaged instructions called functions(same idea as mathematical functions in that they simply do something, of course after the 'what to do' has been defined). In Assembly, you need to push this to that and allocate this to there all to print something on the screen.

 

Programming Languages is a way to tell the computer to do something. You create an OS using C/C++/Assembly. The code is written on another computer which has a compiler/assembler written in some language also which is used to convert the human-readable code to something a computer can understand and is then ported to this otherwise empty piece of junk. You then create applications on this new system. I want video games: I'll write a graphics library whose functions I'll use to create video games. Next minute you think, hey I have a system working now and writing other applications in C would be overkill. And so you write this 'middleman' and also a compiler for this other language, maybe C#, which you use to write other applications only a lot simpler and quicker too in the long run. Newer hardware spawns, you thought of a new and awesome OS and you start writing again on this now-older system for a newer one.

 

The Internet started off, quite literally, only containing the 'elites'. The real hackers. There weren't any grannies then browsing for cute kitties. It was all based on information sharing: If you had something, give it away as resource for another. Like in the real world, knowledge is built from another man's shoulders. We wouldn't be able to go to the moon if classical mechanics weren't even understood. That being said, the Internet contained people that likes what they do. Some people wouldn't bother learning how to install an OS let alone programming. And so there is this implicit community within that was built from this idea of sharing. Even the greatest started off as mere lurkers; they were nobodies. Denying information and saying 'you shouldn't know that' is like rejecting your roots. Of course there is always the government that thinks they're all that when they're not. But those are just kids who think they own the playground when the teachers clearly rule. The Internet is a community. I don't see why sharing would be wrong, regardless of the nature of the information.

Link to comment
Share on other sites

I do thank everyone for all the excellent posts so far.

 

 

I looked at a library's book on C++, since I might prefer a lower level language.

 

I use Linux, which is written in C and Assembly. I think I just read that C++ doesn't build on top of C, although it can be converted to C by compilers. I was wondering what this would mean for me if I decide to use C++ to make a program which I want to run on Linux.

 

Concerning my interest in how information is transferred through the Internet, I don't want to focus on my own operating system because I want to understand how this whole systems involves average people and our society in general.

 

 

 

help.ubuntu.com

"Compiling C and C++ programs requires some packages that are not installed by default.

Install the build-essential package (see Add Applications).

There are many tools available for C and C++ developers. Those wishing to develop graphical applications will find that choosing a graphical toolkit/platform will make development more convenient. The two most popular development platforms for Ubuntu are "GTK/GNOME" and "Qt/KDE", each of which has its own set of tools and documentation."

https://help.ubuntu....-essential.html

 

I hope that is the correct way to give the URI. I wanted to give the URN too, but I couldn't find a serial number, and I wasn't sure if ubuntu.com would be considered an electronic periodical publication (which would have an ISSN).

http://creativecommo...a/3.0/legalcode

Edited by Mondays Assignment: Die
Link to comment
Share on other sites

When code is converted into something a computer can understand, language is already irrelevant. Because Linux is written mostly in C doesn't imply you can't run C++ in it. C++ is just a set of text which has a set of rules that tells which is 'valid' C++. When you compile it, the OS wouldn't care if it was written in any other language as long as the output is its own. Being written in some language doesn't mean it can't understand any other; computers only know to speak of machine instructions/binary. Language XYZ -> (compiled) -> machine language -> A-OKAY.

 

How information goes around the Internet is more or less irrespective of what it is you are running on as long as it supports/complies with these protocols. You could be running on a Gameboy and still read on Science Forums assuming you could implement the necessary protocols and stuff, which is ridiculous but illustrates my point.

 

`build-essential` is simply the set of barebone tools you would need to start your C/C++ development. I think this illustrates how programs really just work on top of and along with other programs. Code is just a set of text. You need these development suites to make that into a working program. GTK/Qt is the development libraries used by Ubuntu and Kubuntu for their GUI, respectively. That doesn't also mean that you can't use Qt on Ubuntu, since Qt is just a library that works with Linux in general, and also Windows.

Link to comment
Share on other sites

"I was recently reading something about the different features a website can recognize you by, and some people got into an argument about whether or not a website could recognize someone's MAC address. I had to Wiki that because I didn't know the difference between MAC and Mac. I'm sure I would have been more interested in the discussion if I knew what all the terms meant."

 

Lol, I wanted to address the mac address question. The simple answer is no, there is no way a website can determine your mac address by just browsing to it. In the same sense your computer cannot determine the mac address of the web server you are accessing, unless of course it's on the same subnet as you on your network. ARP is a very interesting , read up on it if your are curious.

 

 

"What does the "system" Tor (The Onion Router) do? I know what a Router is, and I had to hook one up one time."

 

I've used Tor before but never for illegal reasons, just to try it out. From what I remember it seemed like a group of servers that the tor client would direct your traffic through, resulting in the ability to browse anonymouslywithout worryingabout someone tracking your steps back. I'm sure there is a "How Tor works" somewhere that could explain this much better.

 

 

"What are "ports and protocols," and how are they related to hacking? I tried Wikipedia and Dictionary.com, but I couldn't understand their descriptions."

 

Right as you were typing this message you were using several ports (port 80 for certain) and protocols (ARP,TCP,IP,HTTP,etc). I'm not for sure how to explain this unless you asked something specific. A very simple example would be if you did a "port-scan" on your local network and found a server that had port 22(protocol: ssh) open.You could then attempt to guess username/password, find an exploit, social engineer, etc to gain access to that server .

Link to comment
Share on other sites

The first responder to this thread makes a distinction between cryptography and computer science.

Neither is software engineering. Then why be this discussion we have here, with heavy emphasis on learning a programming language? "You must choose one now!" No.

 

Computer Science is the science of computing.

What is computing? Address that first. Apparently most certificated 'computer scientists' have never seriously thought about computation. Ironic.

 

Where to start with computer science?

The answer: Think about computation.

Edited by Ben Bowen
Link to comment
Share on other sites

Computation is a 'process performed' whereby quantities of logic are compounded into other logical statement(s)!

 

Computing is the informal term used to denote the use of electronic devices to fulfill organizational tasks. The tasks fulfilled can include computation, but is not limited therein.

Link to comment
Share on other sites

Of the books I looked at, this seemed to be the only cheap book on general computing with good reviews, but reviewers say it's "intermediate" level, and someone said a person should at least know one of a few specific languages before trying it.

The Elements of Computing Systems: Building a Modern Computer From First Principles by Nisan and Schocken

 

 

 

Even the books released in editions have the used copies of their previous editions selling for a lot.

 

Well, except for some books generally called Computing Essentials (year), (Complete vs Introductory Edition) by O'Leary

However, one edition got a horrendous review.

Indeed, there is a new edition every year, and that reviewer claims that they constantly release new editions without updating the information, which he claims isn't even good information.

However, I found a brief but positive review.

The other reviews are just seller feedback misplaced in the book reviews section.

Edited by Mondays Assignment: Die
Link to comment
Share on other sites

Computing is the noun from the verb Compute is a process that is more complex than calculate

 

Computation is a work done by a Computer, a Processor, a Virtual Machine, or a Theoretical Machine .. given an Input, upon its Halt, It returns an Output

 

Computability for a Program (not an algorithm) is relative to a given Machine

 

Computation can be classified by at least three orthogonal criteria:

- digital vs analog,

- sequential vs parallel vs concurrent,

- batch vs interactive.

 

For more info: Wikipedia:Computation

Link to comment
Share on other sites

Computation is a 'process performed' whereby quantities of logic are compounded into other logical statement(s)!

 

Computing is the informal term used to denote the use of electronic devices to fulfill organizational tasks. The tasks fulfilled can include computation, but is not limited therein.

 

Computing is the noun from the verb Compute is a process that is more complex than calculate

 

Computation is a work done by a Computer, a Processor, a Virtual Machine, or a Theoretical Machine .. given an Input, upon its Halt, It returns an Output

Aren't these contradicting each other? On Wikipiedia, I read that computing includes systems which were in use before the invention of the computer. For example, the cover of that computing book displays a child with a beads toy used for counting.

 

 

 

 

What about theoretical computation? Do the words "practical" and "theoretical" imply the difference between having the computer do it for you and making theoretical conjectures based on an understanding of what the computer is doing?

Edited by Mondays Assignment: Die
Link to comment
Share on other sites

Could this be related to computing?

The other day, I came to understand some probability by using drawings similar to that bead toy. I realized why you are more likely to get a balanced ratio of heads to tails if you flip a coin more times, despite the independence of each flip. I developed a system for drawing out every possibility resulting in a particular ratio such as 4:4 (balanced) or 7:1 (imbalanced), and based on that system, I reasoned that there will be more possibilities which result in balanced ratios especially if you have a high number of coin flips.

Edited by Mondays Assignment: Die
Link to comment
Share on other sites

I would say that is an example of computation, not computing. A calender could be a computing device, that could be used for computation of dates and events.

 

** mainly because you are describing how a system was derived

Link to comment
Share on other sites

Dictionary.com makes the terms seem synonymous.

 

Maybe I need to see a textbook definition. I began tutoring, and I realized not only that I am supposed to have them refer to their textbook, indeed the textbooks usually explain things better than I would have anyway.

 

Computation is a 'process performed' whereby quantities of logic are compounded into other logical statement(s)!

 

Computing is the informal term used to denote the use of electronic devices to fulfill organizational tasks. The tasks fulfilled can include computation, but is not limited therein.

I understand the first definition given, but what is meant by "fulfill organizational tasks?"

Is inputing numbers into a set of functions an example of computing, and is the sum of the processes performed by all the functions an example of a computation? That seems wrong because we would refer to computers as "computators" instead.

Edited by Mondays Assignment: Die
Link to comment
Share on other sites

I don't but here are the words as used in their respective contexts:

 

Parallel computations on pedigree data through mapping to configurable computing devices

 

Performance Evaluation of Finite-Difference Time-Domain (FDTD) Computation Accelerated by FPGA-based Custom Computing Machine

 

Reverse Engineering with Shape Optimization using Workflow-Based Computation and Distributed Computing

 

Computation acceleration on SGI RASC: FPGA based reconfigurable computing hardware

 

DNA computation based approach for enhanced computing power

 

 

I've looked through both "Theory of Computation" and "Introduction to Automata Theory, Languages, and Computation", neither of these give formal definitions. The fine distinguishing point in all cases tends to be that one is the 'software' or the 'soft act of thinking' the other is the 'hardware' or the 'hard processing of information', more generally speaking--take this as you will I am not a dictionary, nor writer there of. OK some might say that I write my own dictionary. :lol:

 

I must point out again the negation did not come from me, I point this out because some have expressed concern over my use of the system!

Link to comment
Share on other sites

What about theoretical computation? Do the words "practical" and "theoretical" imply the difference between having the computer do it for you and making theoretical conjectures based on an understanding of what the computer is doing?

 

1. there is no contradiction with what I posted, which was taken literally from references

 

2. You're right, computation can be done by any System that has a Language & Grammar, which bound Input towards Execution, which result in Output

 

you see, as I mentioned earlier, computation is the work done executing a program on a given system .. this system can even be your brain

Edited by khaled
Link to comment
Share on other sites

Oh wait it did come from me, I don't know how that happened? :/

 

If a mod could fix that, I had no intention of negating his rep and I have no idea how that happened, because I swear my mouse never went near there, I did accidentally mash at some point and tabbed to another tab . . .

 

I understand the first definition given, but what is meant by "fulfill organizational tasks?"

Is inputing numbers into a set of functions an example of computing, and is the sum of the processes performed by all the functions an example of a computation? That seems wrong because we would refer to computers as "computators" instead.

 

It means that a computing device can also simply store information, it doesn't necessarily have to complete a computation. Computing is an informally defined word, computation tends to be more aggressively pursued in its definition because it has implications in intelligence and logic.

Link to comment
Share on other sites

Oh wait it did come from me, I don't know how that happened? :/

:D I almost assumed that Khaled gave the negation and was identifying my questions as rhetorical questions intended to critically point out a non-existent contradiction in his posts, but I realized I was assuming the negation was given by him and not some random, mischievous user.

 

I will reply in a moment.

Link to comment
Share on other sites

I think there is something wrong with your definition Xittenn, "Computation is a 'process performed' whereby

quantities of logic are compounded into other logical statement(s)!"

 

Saying that ".. whereby quantities of logic are compounded into other logical statement(s)", which is confusing,

is it related to Input and Output of the computation, or are you speaking about Grammar & Language

 

Let's say you probably mean a Grammar when saying "quantities of Logic", which forms a Language "compound into other logical statements",

but that's not computation.

Edited by khaled
Link to comment
Share on other sites

I've looked through both "Theory of Computation" and "Introduction to Automata Theory, Languages, and Computation", neither of these give formal definitions. The fine distinguishing point in all cases tends to be that one is the 'software' or the 'soft act of thinking' the other is the 'hardware' or the 'hard processing of information', more generally speaking--take this as you will I am not a dictionary, nor writer there of. OK some might say that I write my own dictionary. :lol:

So the "soft act of thinking" is computing because thinking goes step by step, and the hardware remembers all the data from the individual steps,

or the "hard processing of information" is the computing because a calendar stores information, and we do computations with that information by thinking about the information?

 

Computing is the noun from the verb Compute is a process that is more complex than calculate

 

Computation is a work done by a Computer, a Processor, a Virtual Machine, or a Theoretical Machine .. given an Input, upon its Halt, It returns an Output

2. You're right, computation can be done by any System that has a Language & Grammar, which bound Input towards Execution, which result in Output

 

you see, as I mentioned earlier, computation is the work done executing a program on a given system .. this system can even be your brain

So is computing a following of rules which guide the computation, whereas computation is the physical act ("work") done by computer hardware or brain cells?

Edited by Mondays Assignment: Die
Link to comment
Share on other sites

I'm sorry khaled I'm not sure what you are saying. From a logic perspective I have statements that take statements as arguments and then map them onto other statements.

 

So the "soft act of thinking" is computing because thinking goes step by step, and the hardware remembers all the data from the individual steps,

or the "hard processing of information" is the computing because a calendar stores information, and we do computations with that information by thinking about the information?

 

 

So is computing the rules which guide the computation, whereas computation is the physical act done by computer hardware or brain cells?

 

 

 

Computation is the set of rules, computing is the act of executing the rules and storing the information by means of any device. A device is a computer, a brain, a calendar . . . .

 

You can't technically have one without the other . . . the rules must be performed somewhere to have any meaning. They are not synonymous but they are codependent.

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.