# Computer-Science Prerequisites



## JakkFrosted (Oct 6, 2013)

I never went to college; no one in my family has. I have a fascination with computing (at least I think I do), but the more I learn the more I feel like there are missing pieces of information. I think a formal education would help me to know what I don't know I don't know. Here's the thing: I have no clue where to start. I know there are prerequisites for computer science, but do I take it upon myself to take those courses, or do I go ahead and apply to a college and the college will have me take those courses?

Note that I intend to earn this degree online, and have not yet chosen a school; I hold a GED, not a high-school diploma; my math is only as far as pre-algebra; I'm about to turn 31; and, earning this degree really isn't about getting into a new career (that would be a +), it's more about being able to bring some ideas I have into fruition and being more self sufficient. I'm not concerned about debt.

So, I would really like some advice on how I should proceed. I would also very much appreciate any personal opinions regarding any of the above details. I'm open to constructive criticism, so don't hold back thinking that I will take offense.


----------



## ShelLuser (Oct 6, 2013)

JakkFrosted said:
			
		

> I have a fascination with computing (at least I think I do), but the more I learn the more I feel like there are missing pieces of information.


The more you learn, the more do you understand how little you actually know. This is not a sneer, that's what I've come to realize and I think most of us have.

Just for context; I started out fascinated by computers, my Commodore 64 to begin with, and was determined to pursue this as my line of work. When I started studying all this to get some papers I was facing the issue that what I wanted to learn simply wasn't available yet. That is... I have always been software minded, but especially in those days the best way to program a computer (ASM or 'low level' languages) you were basically accessing your hardware more or less directly. But I wasn't really interested in hardware, but software.

However, my options at that time were either hardware (a small dose of programming using Pascal or Assembler) or software which more or less focussed on diving "deeper" into the at that time commonly used software such as WordPerfect, Lotus 1-2-3 and dBase (topped by using Clipper to produce somewhat individual dBase-like programs). I was lucky that I managed to cheat the system and get a good dose of both 

Just for context, but most of the experience I have now is obtained through self study and by participating in communities such as this one.

Either way; what you're describing here really isn't that uncommon. I've experienced this while studying Windows environments (say what you want about Microsoft, but in my opinion some of their stuff is impressive, like for example their mmc (ManageMent Console) structure, or what to think about PowerShell) as well as Solaris, Linux and FreeBSD as of late. Same applied to me. The more you learn...



			
				JakkFrosted said:
			
		

> I think a formal education would help me to know what I don't know I don't know. Here's the thing: I have no clue where to start.


I wouldn't count on that to be honest.

Which gets us to the heart of the issue: what exactly do you feel to be missing out on?

The reason I ask]
[*]Don't try to take it on all at once; when you begin try focussing on a specific subject and widen your field from there on. For example: "How do I install extra software on FreeBSD?" "Using Ports". That brings you into contact with commands like `# make install`. "So how do I keep this 'ports' up to date?" "Using portsnap or svn". And all of a sudden you have 2 new (but related) things to study. "How do I control this portsnap thing?" "Using /etc/portsnap.conf". "How do I edit this?" "Using an editor like vi or edit." And all of a sudden you went from installing software to learning how to edit files on FreeBSD.
[*]It's often better to pursue or confirm answers yourself instead of blindly relying on other people. In general a _lot_ of people merely copy the answer(s) which they discovered to work without understanding as to why it works. I'm not saying this is a bad thing, but if you really want to learn about a specific topic you'll want to know the 'why' part too. So worded differently: don't pursue the solution to a problem, try to understand why that solution actually works.
[*]Don't take stuff for granted; try them out yourself! When I started with this cool FreeBSD thing every piece of documentation told me that maintaining ports was horrid but portmaster was the answer. I started out ignoring that altogether to experience the horror for myself. Which even introduced me to another horror: installing an outdated port (ports-mgmg/portmanager), which even managed to do quite some damage on my system. Time consuming for sure, but the stuff which that experience tought me was priceless! (for example; look into /usr/ports/MOVED and /usr/ports/CHANGES as well as /usr/ports/UPDATING).
[*]Don't be afraid to make mistakes, but if you do also don't be afraid to admit you made one. Of course you shouldn't go with the "let's try everything, oops it broke; sorry!" kind of routine. But if you really dive into something you'll know if you're making an educated guess or simply doing that which you know will work (and also why).
[*]Try solving problems yourself without turning to pre-made solutions. You may reinvent the wheel, but you'll sure know more about the way it works.
[/LIST]
Last but most certainly not least; try to have some fun doing all this. If you can have fun while pursuing this stuff then I think you'll have that one thing which allows you to go that extra mile.

pff, turned out into quite the story. I hope you can make something of this but more so that you can put this to some use.


----------



## JakkFrosted (Oct 6, 2013)

I feel that I need to play "catch-up". And I think I do. I appreciate your input, but I think your focus is more OS based than it is fundamentally about computers. I don't care to know that a transmission is responsible for making a car go 50 MPH at 2,000 RPM, I want to know why it does (I do). I don't want my computer remain be a magic box. And that's what it is for most of us, by far. To an extent, it is magic. I can't bring myself to pick up any piece of literature because I know it's only a piece of something greater. I feel that there's a more basic knowledge to know. Or am I lost?


----------



## tzoi516 (Oct 6, 2013)

I think working through the Handbook gives a good basic understanding of computers and how software and hardware work together logically. Secondly, have a system devoted to beating up which helps with testing software tweaks, backups, and security. Lastly, lose the anxiety; a certification means nothing except to an employer - people are too specialized today, not many people have a good solid big picture grasp and the ones who do are usually the more valuable.


----------



## TiberiusDuval (Oct 6, 2013)

On what level you want to know why and how computers work? Software or hardware? If you say hardware, what kind of knowledge you then want? General principles about binary circuits and binary logic, or something deeper?

If you want study these thoroughly then you are going very fast towards the realm of physics, and even some quite arcane physics, for example if you are trying to understand how and why semiconductors work like they work. 

And software itself is not trivial area either, especially if you try to really understand how modern operating systems work, how to make them and so on.

Wanting to expand one's knowledge is a fine thing to do, but it is generally an unending task, there will always be some deeper level.


----------



## fonz (Oct 6, 2013)

JakkFrosted said:
			
		

> I know there are prerequisites for computer science, but do I take it upon myself to take those courses, or do I go ahead and apply to a college and the college will have me take those courses?
> [snip]
> I hold a GED, not a high-school diploma; my math is only as far as pre-algebra


Judging from the above, I suspect you are American or Canadian. Now, I'm not overly familiar with the education system(s) on your side of the pond, but I do know that studying computer science at an academic level requires significantly more knowledge of mathematics than just pre-algebra.


----------



## xibo (Oct 6, 2013)

There are three things that are often messed up: (1) computer science, (2) software development, (3) computer development.

Computer science is about researching the limits of what can be (partially) computed - or in other words, what can done by computers. It's the most "interesting" to me and some others but most people in our money-oriented world have no interest in it at all. If we could prove our (in)famous NP=P question to be true, it would be to computing (in practice) like the invention of a teleporter would be to logistics.

Computer science (CS) is a former part of mathematics that has more distinctions to the core mathematics than most of the other disciplines of math, and more importantly: more distinctive applications. That said, it relies a lot on the foundations of combinatorics, graph theory/discrete mathematics and linear algebra. Combinatorics is quite "easy" and its foundations (set theory, logic, reasoning) could probably be taught in elementary school. Graph theory is more complex but has some obvious uses (networks, or rather flows of any kind). Linear algebra is probably the "hard"-est of the three.

There is also cryptography, which is considered to be computing science AFAIK, but against common believe is quite easy to understand. From the mathematical point of view it could be ordered right after combinatorics, but since we want to talk about cryptography algorithms we'll take a look at algorithms first.

So within "real" CS, I'd start with algorithmics which "depends on" linear algebra, and theoretic computer science (TCS), which doesn't "depend" on linear algebra but "depends on" the other two more excessively. Knowledge about algorithmics is priceless when it comes to programming/software development and all contents have obvious uses, whereas TCS has no directly visible usage at all (thus the "Theoretic" in the name) and is - as I wrote earlier - about the limits of what computers can do, as well as about modelling language processors. Every program can be abstracted to be a processor of its input (language), producing a YES/NO answer and eventually a side effect, though in practice we are more interested in the side effect than in the answer itself (e.g. the output of grep is often more interesting than whether there was output). Knowing the limits of computation and the consequences of it, cryptography can again be reviewed, with the goal of designing new cryptosystems that are so expensive to attack that an average success takes more time than this universe is scheduled to exist.

Basically we're done here for now, and will follow (2) for excercising reasons, while it would be possible to go straightforwardly to artificial intelligence (needs algorithmics) and/or compiler design (needs algorithmics and TCS) at this point.
Software Development is as the name suggests about writing computer software. Programming is the most essential skill here. In the UNIX/BSD world Sh, Perl and C came to become omnipresent, which all three are easy to get started with but - especially the latter two - hard to master (a thing in common with any other "high level" languages).

The flow would go on to software engineering (which is about object oriented programming (OOP)) and networking basics/network programming. Software engineering has a poor reputation in some circles who make it responsible for "bloating up" software that used to work perfectly before "just to fit some patterns".

Then I would branch the flow into graphical user interfaces and web programming (web applications usually have a graphical user interface - the browser - and I'd therefore group them) on one branch and "low level" system programming (operating systems, embedded programming, ...) on the other, as those are (mostly) independent. Operating system here not only means how to use some system calls but also understanding how the kernel works, which on the other hand results in (better) understanding of e.g. the output of sysctl(), procstat() or Windows OS's Task/Resource Manager, which then allows analysing for bottlenecks and tuning of service performance.

Of cause, operating systems' importance is overrated here by me and everyone else, this is the FreeBSD (!) forums after all. Likewise you will get Perl and C recommended as language to get started here a lot.

Web programming means CGI, AJAX, WebGL, and so on, to do dynamic web foobar (such as this forums).
Computer engineering is the one field I personally have the least interest in (so I can barely tell you more than its name). While theoretic computer science defines a basic model for nowadays' computers (called the register machine) the electronic computers (let's emphasize that for TCS it's irrelevant whether the computer is driven by electronic power, mechanics, hydraulics or whatever else) we use these days have vastly evolved from that model. Computer engineering takes the "electronic" part of "electronic data processor" into the focus and is mostly about hardware. It collides with system programming on topics like memory addressing and defines some problems to algorithmics (such as different tiers of storage being differently "expensive" for a given type of data access).

In order to get started with computer engineering, you should know the basics of electronic engineering.

In these times we have very sophisticated compilers so software development is normally done using "high level" languages like C++, Java, PHP or Python, because algorithms can easily be formalized with those languages. The normal flow at universities is to do (1) - knowledge, and (2) - craftsmanship, at the same time, where (2) will be used to practice/excercise (1) later on.

(3) - low level, is usually combined with a subset of (2) which is more into embedded programming using assembly, VHDL and C as primary languages and avoiding usage of any "high level" things like OOP features which do "magic".


----------



## drhowarddrfine (Oct 6, 2013)

@xibo has said what I would have. Computer science is the science of computers and a lot of people who want to be programmers think it's the same as computer programming while it is a math course if you really think about it. 

I think one advantage of going to school for this is it gives you a structure of learning everything while learning on your own can leave gaps that you aren't aware of until you come across a problem. School is more likely to go into depths you are less likely to go to on your own because you may feel it's not necessary.

However, schools also leave you without enough practice. It is in the practice that real knowledge is gained. That's why many can be successful programmers without going to school by programming due to interest or necessity. My background is electronic engineering yet here I am running a web development company.

I don't think that getting a CS degree from an online school will get you any brownie points unless it's a "real" college.


----------



## sossego (Oct 6, 2013)

drhowarddrfine said:
			
		

> I don't think that getting a CS degree from an online school will get you any brownie points unless it's a "real" college.


----------



## JakkFrosted (Oct 6, 2013)

TiberiusDuval said:
			
		

> On what level you want to know why and how computers work? Software or hardware? If you say hardware, what kind of knowledge you then want? General principles about binary circuits and binary logic, or something deeper?
> 
> If you want study these thoroughly then you are going very fast towards the realm of physics, and even some quite arcane physics, for example if you are trying to understand how and why semiconductors work like they work.
> 
> ...



I suppose I need to accept that, to some degree, I can't (and no one) knows it all.



			
				fonz said:
			
		

> Judging from the above, I suspect you are American or Canadian. Now, I'm not overly familiar with the education system(s) on your side of the pond, but I do know that studying computer science at an academic level requires significantly more knowledge of mathematics than just pre-algebra.



Yes, I know. Which is why used the word "_only_".



			
				xibo said:
			
		

> There are three things that are often messed up: (1) computer science, (2) software development, (3) computer development.
> 
> Computer science is about researching the limits of what can be (partially) computed - or in other words, what can done by computers. It's the most "interesting" to me and some others but most people in our money-oriented world have no interest in it at all. If we could prove our (in)famous NP=P question to be true, it would be to computing (in practice) like the invention of a teleporter would be to logistics.
> 
> ...



Thanks for taking the time to write all that. I feel like I have an atlas to everything. Something I can get only from someone with the knowledge.



			
				drhowarddrfine said:
			
		

> @xibo has said what I would have. Computer science is the science of computers and a lot of people who want to be programmers think it's the same as computer programming while it is a math course if you really think about it.
> 
> I think one advantage of going to school for this is it gives you a structure of learning everything while learning on your own can leave gaps that you aren't aware of until you come across a problem. School is more likely to go into depths you are less likely to go to on your own because you may feel it's not necessary.
> 
> ...



Well, Stanford offers an online education. I think they're a real college.   Not so much about the brownie points as it is getting to know what I don't know I don't know, like you indicated with "gaps". And I think there can be huge gaps. Sure, for a 15-year-old, after a decade or two of doing little things here and there, he might know more than someone with a bachelors in CS. But part of my dilemma is time. I had a computer at age 12 for only a year. It was stepdad's, and it went with him when he left. That was 1995. I used to delete all the porn-site cookies before going to bed, and played a lot of Doom. Pretty much all of what I now I learned since I was 23, when it took me days to figure out that I had to burn an ISO as an image, and not data. So, I know I can figure it all on my own with little projects, but I think a degree would offer a better round of "catch up" than that. I would like to become somewhat knowledgeable and useful while I still have "drive" inside me.


And thanks to the rest who posted in this thread. I'd quote you all but writing this is easier.

How I'm feeling now: I'm wondering if my core education is just too lacking to _become_ anything useful in this field. You know what I really want to do? I want to: have my own little artificial intelligence lab that has unique and meaningful results. I want to make apps for phones to pay my bills, instead of going to work in a factory. Aaaaaannnd, I am an entrepreneur of sorts, so, this knowledge would help in that area as well.


----------



## drhowarddrfine (Oct 7, 2013)

Yes. MIT also has online courses but, IIRC, they aren't in an organized fashion to assure you of gap filling so you're back where you started.


----------



## SirDice (Oct 7, 2013)

I can probably recommend starting with something like an Arduino. That will give you an opportunity to play with both soft- and hardware. You can get a nice Arduino for around $25 so it's not that expensive. You don't need much else, maybe a handful of electronics to build something meaningful. I got my hands on an Arduino kit that had the Arduino, some motors, electronics, etc. for a fair price. Enough to play with all sorts of things. 

Playing with it should give you an idea of the direction you want to go, hardware or software.


----------



## kpa (Oct 7, 2013)

There's something you should have a grasp of and that is the abstract view of what a CPU does when it executes a program made of machine instructions. You don't need to know how it's all done at the silicon level but on the level of opcodes and operands.


----------



## roddierod (Oct 7, 2013)

JakkFrosted said:
			
		

> Well, Stanford offers an online education. I think they're a real college.



Standford's CS class are heavy in math.  I attempted Introduction to AI Programming and it was all advanced calculus.


----------



## fonz (Oct 7, 2013)

roddierod said:
			
		

> I attempted Introduction to AI Programming and it was all advanced calculus.


Hmmm, that's interesting. I have done (and passed) an AI course or two and the mathematics involved was mostly discrete mathematics: logic, graph theory and combinatorics. Other than some complexity analysis (which may require calculating convergent series) I wonder what the advanced calculus is used for.


----------



## roddierod (Oct 7, 2013)

Well, let me put it this way: if it wasn't advanced calculus it sure looked like it to me  I have a degree in electrical engineering and this stuff was beyond anything I knew. And it could also have been the fact that I was not prepared for something like that in an INTRO class...


----------



## Crivens (Oct 7, 2013)

Well, sometimes they wave the big bat in the intro class, but usually only the first and second lecture. AI is a wide field, and it surely has a lot of heritage. So, depending on where you study, you may be faced with practical lessons in LISP, or maybe not. Describing the how-this-is-working-inside can be done with several approaches, combinatorics are one but there are more.

So if you really want to venture into something like that, which is an active research field, you may really need some more math than you have. Maybe you do not need to produce the math, but you need to understand what is written there. Math is one of the best ways to do this, it offers compact and unambiguous ways to write things down. So you may get along with passive skills there, but without being able to read calculus and know what it means, you are most likely not going to get very far.

@@roddierod I taught "computer science for engineers" some time ago - you would be amazed what some of those consider "advanced math". But on the other hand - 'theory of conductive materials', 'electromagnetic fields' and friends are also a beast of it's own kind. Each trade has its monsters


----------



## Whattteva (Oct 7, 2013)

Before I say anything, I'd like to state my background first. Everything I say in this post is related to what I have experienced both in school and in the companies I have worked for. I started college in Computer Engineering field, transferred out to Software Engineering my third year and finished my degree in it.

Basically, if you concentrate in Software Engineering/Computer Science, you get to learn how to make applications (from things like a simple command line to robust OS's like FreeBSD and Windows). You also learn things like formal methods, the theory of computation (Finite State Machine, Turing Machine), and how to solve problems (NP-complete, NP hard, etc.) using computers. Typical entry-level material include things like languages and their syntax/grammars, data structures, sorting and searching algorithm, and common architectural design patterns.

Hardware refers more to the Electrical Engineering side of it. You learn how circuits work (Capacitors, Inductors, Resistors, etc.), Ohm's Law, Kirchoffs' Voltage/Current Law, etc. You can also specialize even deeper and go into radio technology and learn what makes wireless and all other RF technologies work (spectrum analysis, carrier/modulated signals, etc.).

Computer Engineering is a relatively new field (compared to the other two) that sort of combines Software and Hardware together (more emphasis on the hardware). In this one, you learn how to put the two together to make it work with emphasis on digital systems (the basis of every computer systems today). In digital systems, you typically no longer deal with individual resistors, capacitors, etc. Rather, you deal with things like logic gates, multiplexers, decoders, etc. In this field, you typically work a lot with embedded systems, ASIC's, and FPGA's.

Regardless of which one you go into, you pretty much have to go through all sorts of Mathematics and Physics (at least for my university). Typically, you'd have to go through Calculus from derivatives all the way to integrals, series, multi-variable calculus, Differential Equations, Probabilities and Statistics (maybe), and Discrete Mathematics (proofs, boolean algebra, etc). I also had to go through Physics ranging from the elementary kinematics, Newton's Laws of Motion and the angular extensions of it (Forces, Torque, Angular Momentum, etc.), all the way to electrics, magnetism, flux, and the very basics of relativity (time dilation).

Of course, as I have already stated, that's just my school. Other schools may require less/more of what I have mentioned, but it should be very similar if the school is ABET accredited (fairly significant accreditation program).



			
				JakkFrosted said:
			
		

> Here's the thing: I have no clue where to start. I know there are prerequisites for computer science, but do I take it upon myself to take those courses, or do I go ahead and apply to a college and the college will have me take those courses?


For most schools, their undergraduate program will give you a pretty rigid outline of what core course material that you are required to take with a few electives that you are free to choose in a general category.
For Master's and PhD, in particular, you typically have a fairly large degree of freedom to choose whatever you want so long as it relates to your degree. At this level, you pretty much know exactly what you are doing (or at least they expect you to), so they no longer spoon-feed you every step of the way.


----------



## xibo (Oct 7, 2013)

AI doesn't use calculus. It uses combinatorics primarily and graph theory secondarily. It can contain references to calculus in some proofs though. I think correctness of neuronal systems learning uses it, since an neuronal network doesn't end up being all-knowing after some finite time, but converges against it instead (so it's actually only partially correct).

AI discussions might contain some elements Data Mining, which is the discipline of salvaging small pieces of valueable information out of a huge chunk of seamingly useless and unstructured data. I.e. it's what the NSA does with the data junkyard they collected.
Of cause, depending on the data available and the information required to be salvaged from it, calculus might be used, as might be about any other discipline of math or other sciences.
Data Miners however, to an AI are just sources of input. In an easier model you can have the user do the data inputting via the keyboard, and you would probably not ask how unicode transformations and verifications work at that point, which cascaded inside the problem of reading input from the terminal, too.


----------



## JakkFrosted (Oct 8, 2013)

Way more replies on this than I had anticipated. But that's a good thing. It's so in my face with the math math math. I was never that good that math, but ADD could have had a lot to do with that. I haven't tried to pick up any new math skills as an adult. I was pretty much F's in every subject, aside form science and civics. A's in science. I recall being told quite a few times that if I wanted to pursue a career in science that I'd have to do better in math. I'm definitely willing to "try" to learn the math, but I'm a realistic person, and, as such, I must remain open to the possibility that I just may not be capable of that kind of math. Perhaps it's time to visit a math forum? I'm wondering if going from algebra to calculus is a couple-of-months thing, or a couple-of-years thing.

And one last bit, which is that no one has answered one my primary questions: Do I take it upon myself to learn the required math, or do I get in contact with admissions with a college, give them my story, and then they will guide me from there? I'm thinking they'll recommend wood shop instead. Even if I did learn the math on my own, I guess I would still need to at least prove competency by completing a course? Or can I just take a test? Oh wait, is that what the SAT's are for? I know, I must sound like a farmer from the backwoods of Vietnam.

Anyway, I'm definitely about to get the ball rolling on this. Investing a few years on one subject used to seem like a daunting, insurmountable task. But at this age, time is moving by so fast that I just know it will all be over before I know it. All I have to do is actually do it. I know for a lot of you, NOT going to college was probably never an option/consideration/alternative, but for me, in my life, GOING was never an option/consideration/alternative. That is something to help give some perspective, and I often wonder if for those who never thought of not going to college ever actually realized that they may have taken that direction in life for granted. Whoops, tangent.

In the meantime, I'm off to the dream state. Sleep is priceless.


----------



## Whattteva (Oct 8, 2013)

JakkFrosted said:
			
		

> Perhaps it's time to visit a math forum? I'm wondering if going from algebra to calculus is a couple-of-months thing, or a couple-of-years thing.


Most schools, I believe dedicate 2 (maybe 3) semesters for the entire Calculus series. That doesn't include other things, which are also typically required, like Differential Equations and Discrete Mathematics. Of course, you can choose to take more than one math course per semester to speed things up.



			
				JakkFrosted said:
			
		

> And one last bit, which is that no one has answered one my primary questions: Do I take it upon myself to learn the required math, or do I get in contact with admissions with a college, give them my story, and then they will guide me from there? I'm thinking they'll recommend wood shop instead. Even if I did learn the math on my own, I guess I would still need to at least prove competency by completing a course? Or can I just take a test? Oh wait, is that what the SAT's are for?


I think I sort of answered part of this at the end of my earlier post (see post #18 of this thread). You typically will get in contact with admissions, which will direct you to the academic advisor of the college of your choosing (Computer Science I'm guessing). She/he will be able to tell you a lot more specifically of the course material that you will need to take. You can choose to learn the math on your own to prepare you better, but proper universities will require you to take those classes in order to receive credit and be allowed to take other classes which have the math courses as prerequisites. SAT's don't really give you any math credit since the math level on SAT's (at least when I took it 10 years ago) is really elementary. It probably doesn't even touch pre-Calculus. All it does, is give the college some idea of where you currently stand.



			
				JakkFrosted said:
			
		

> I know, I must sound like a farmer from the backwoods of Vietnam.


I can't tell you exactly how it is for Vietnam, but I think Asian countries, in general, put heavy emphasis on Math and Science fairly early on (at least where I came from). In elementary, I actually used to go to school six days a week (yes, we had school on Saturdays) though I heard that they no longer do that today. Academic competition is so fierce in China and South Korea, in fact, that it often puts too much mental stress on their students.



			
				JakkFrosted said:
			
		

> Anyway, I'm definitely about to get the ball rolling on this. Investing a few years on one subject used to seem like a daunting, insurmountable task. But at this age, time is moving by so fast that I just know it will all be over before I know it. All I have to do is actually do it. I know for a lot of you, NOT going to college was probably never an option/consideration/alternative, but for me, in my life, GOING was never an option/consideration/alternative. That is something to help give some perspective, and I often wonder if for those who never thought of not going to college ever actually realized that they may have taken that direction in life for granted. Whoops, tangent.


I never took my education for granted. I went through working at various McJobs at restaurants, etc. so I know exactly how it is. It was actually what gave me the motivation to complete my degree (after taking a 2-year hiatus).


----------



## Crivens (Oct 8, 2013)

JakkFrosted said:
			
		

> And one last bit, which is that no one has answered one my primary questions: Do I take it upon myself to learn the required math, or do I get in contact with admissions with a college, give them my story, and then they will guide me from there?
> ...
> Anyway, I'm definitely about to get the ball rolling on this. Investing a few years on one subject used to seem like a daunting, insurmountable task. But at this age, time is moving by so fast that I just know it will all be over before I know it. All I have to do is actually do it.



That is one important part of the background you added there. With ADD, you should go on your own. You take your own pace, your own speed. Maybe find some teacher, someone to ask questions once you get stuck. But be sure you find someone who accepts that you set the pace and someone who can, and knows when to, shut the &%$&% up.

I know several persons with ADD, and they all had trouble in school up to the point where they could set the pace. That, and people around to ask for information, that was their ticket. That is what you find in university here.

So you might find math forums the place to go, ask questions, get information. You may also try to find out what kind of literature is best for you. I had problems with math untill I found this book, which many other find horrible. Most universities can give you a library card, even when you are not registered there as a student. You may be able to access their books in their halls even without such a card, so you may want to spend one or two days going trough their books on computer science and math and find what calls out to you. Find what works for you, that is the most important part.


----------



## SirDice (Oct 8, 2013)

Crivens said:
			
		

> I know several persons with ADD, and they all had trouble in school up to the point where they could set the pace.


I pretty much failed every school I attended because of it. Lucky for me I like computers and everything about them, so I'm able to pick it up quite quickly. But only if it really interests me. Sometimes I do wish I had known it was due to ADD though, I may have ended up somewhere entirely different. I may even have ended up with some masters degree. 

But it's all water under the bridge now. I have 20+ years of professional experience in IT doing all sorts of things. That usually impresses a new employer a lot more than a couple of diplomas.


----------



## neilms (Oct 15, 2013)

I would prefer to attend a course perhaps part time, instead of paying for an online course. There is always the risk of loss of motivation when trying to study online and having colleagues around is always better. 

On another point, college courses will not normally teach you how to program, if that is your aim. That is something that everyone has to struggle with through their own experiences.


----------



## SirDice (Oct 16, 2013)

Well, if you have kids and want to learn programming and simple computers I can definitely recommend the new Lego Mindstorms EV3. I recently bought it and I don't even have kids :e

Programming the Mindstorms brick is done using "bricks" inside a visual editor. There's a motor brick for example where you can change how many times it should rotate or just rotate it a few degrees. It also has a few sensors to play with. It may sound very simplistic but it does teach you how to go about things. Conditionals, loops, etc. Very nicely done and simple to use (it's aimed at kids after all).


----------



## Hawk (Oct 16, 2013)

drhowarddrfine said:
			
		

> Yes. MIT also has online courses but, IIRC, they aren't in an organized fashion to assure you of gap filling so you're back where you started.



http://ocw.mit.edu/index.htm

I WAS taking their Introduction to Programming course until life threw me some curve-balls.


----------



## JakkFrosted (Oct 17, 2013)

Hawk said:
			
		

> http://ocw.mit.edu/index.htm
> 
> WAS taking their intro to programming course until life threw me some curve-balls.



My life is one big curve ball. I recently adopted a new philosophy on life: to change the way I perceive events and how I react to them. It's been going OK. I started working at a place I thought I'd dread, but with a little perspective-magic, I'm pretty happy there. Funny how when I started there I was starting to develop a poor attitude, but then I got this horoscope (don't really believe in that stuff, but hey, maybe we're in the Matrix or something)that said that I'm being given a good opportunity, but it greatly depends on my attitude (paraphrase). That reinforced my drive a little. Oh, and I just saw this yesterday:







Try to not dwell on the curve balls. Think of the tough times as rough yet necessary parts of the path to your ultimate goals. It will all pass. In fact, we'll all be dead some day, so don't stress too hard.


----------



## Hawk (Oct 18, 2013)

JakkFrosted said:
			
		

> Try to not dwell on the curve balls. Think of the tough times as rough yet necessary parts of the path to your ultimate goals. It will all pass. In fact, we'll all be dead some day, so don't stress too hard.



Trust me, I don't. That philosophy is a typical side effect of what my avatar represents.


----------



## ronaldlees (Nov 1, 2013)

JakkFrosted said:
			
		

> I never went to college; no one in my family has. I have a fascination with computing (at least I think I do), but the more I learn the more I feel like there are missing pieces of information. I think a formal education would help me to know what I don't know I don't know. Here's the thing: I have no clue where to start. I know there are prerequisites for computer science, but do I take it upon myself to take those courses, or do I go ahead and apply to a college and the college will have me take those courses?
> 
> Note that I intend to earn this degree online, and have not yet chosen a school; I hold a GED, not a high-school diploma; my math is only as far as pre-algebra; I'm about to turn 31; and, earning this degree really isn't about getting into a new career (that would be a +), it's more about being able to bring some ideas I have into fruition and being more self sufficient. I'm not concerned about debt.
> 
> So, I would really like some advice on how I should proceed. I would also very much appreciate any personal opinions regarding any of the above details. I'm open to constructive criticism, so don't hold back thinking that I will take offense.



Some schools will let you make up your own "pieces and parts" curriculum, but most won't.  One of the first programming courses I took was a COBOL course. I wasn't an official CIS student.   Well - they signed me up - took my money - and let me go more than half way through the course before the department head interrupted the class one day.   He pointed to me, had me follow him out of the room, and told me I couldn't be in there for lack of "pre-requisites".  I had aced (100%) all of the tests to that point.  So .... prerequisites?  Ahhhg ... didn't like COBOL anyway!


----------

