1) Create a Class file Have as members of class file: Integer (should implement as properties) Left Node (integer, as property) Right Node (integer, as property)
2) Declare an array of this class, the nodes are offsets, assume 0 is root
AFAIK, yahoo gives people the option to have information about them marked as "private", which is different from being truly Anonymous.
If you wish your identity to remain private, then your name will be unavailable except when deemed necessary by a court.
As was said in prior posts, freedom of speech guarantees you the right to say anything you want, but does not protect you from the consequences of your speech.
People who seek anonymous identities merely to get around accountability for their speech fall under the "worthless cowards" category.
You are an EE, did you take upper math? In some ways a CS degree could be considered an applied mathematics degree (I happen to have both)
Mathematics teaches rigorous and analytical thinking in ways that are difficult to pick up independently. The final year of a good CS program takes these concepts and applies them further to solving problems through software.
In your *own* example, you mention addressing a problem on an embedded system, and then making a disparaging remark about how CS students didn't know about port addresses or an ISR. Guess what? That is a TECHNICAL skill that is part of programming. On equal measure I could judge you by your ability to design a hierarchical query in SQL to traverse a self-referential table, but I won't, because that too is a necessary technical skill needed to solve a specific programming problem.
It often irks me when people with degrees in EE (and other engineering disciplines) claim to be at the apex of programming skill because they did work like you do. The methods you use for what you do are not easily scaled up to larger problems.
Software development is a discipline where you should start off with a good foundation in the theories of programming and then temper that with experience working under others.
A person who goes through a CS program and pays attention and learns (not just studies to pass the tests, a sore point I have with colleges today) the concepts and materials presented through coursework, upon graduation, is qualified to do almost nothing. All a really good CS program imparts is a good fundamental knowledge of how to program, _in_general_.
You do NOT go to college to learn to program in C, C++, Java, Pascal, Assembly, COBOL, ADA, Javascript, Perl, BASIC, AWK, Lisp, PC Scheme, or any other technical programming skill. Any such skill you possess upon completion of a CS program is a side effect of your education! The point of completing a CS program is to learn how to learn
Think about the name of the degree: Computer Science. The _SCIENCE_ of computing. Generally, programming, and a little broader, Computer Science can be defined as The process of managing complexity.
Throughout the history of computing, the task for programmers has been to evolve tools for handling larger and larger tasks. We have come from flipping switches on room sized hardware to a point where we have languages and tools that abstract high-level GUI application to a few mouse clicks and keystrokes.
Almost every programming language started as someone looking at current tools and saying to themselves, "This is too much work, I can generalize these concepts which take months of coding in this language and aggregate them into almost atomic concepts if I make a new language that is based on this level!" Computer science, the field we *all* work in is constantly advancing, not because we are bored and have nothing better to do, but because we are constantly presented with larger and larger problems to solve.
Many "self-taught" programmers who do not have the benefit of a good CS degree are limited in the scale of complexity that they are able to handle. I'm not saying they are less intelligent, but they tend to lock themselves into a fixed technology layer and solve the problems at that level. They haven't been exposed to the breadth of information that a CS degree should give.
As to those CS grads you mention as being worthless...they would be just as worthless without their degrees. A background in CS can make a good programmer a great programmer, but it can't help someone who just doesn't have the mindset for programming.
A CS degree just helps you _Scale_Up_.
I find that a CS degree, by itself, tells me nothing about the abilities of a person. But, more often than not, its lack points to a possible deficiency in the fundaments.
Yes, many CS programs are clogged with people who merely want "to work with computers".
Like you, I was programming for, as you said it, *years* before I took a CS class. I hate to date myself, but my first computer was a VIC-20 and I taught myself BASIC on it. From there I too had a steady progression of computers. I was very technically proficient in programming by the time I entered the CS program.
However, it was in that program that I found that programming is more than being able to fire out lines of code to do something. Concepts of software development, such as design patterns, algorithm analysis, software engineering processes, lifecycles, and team programming were ingrained in me.
Just because someone has a CS degree does not mean that they can program worth a damn, nor does an English degree mean a person is worth their weight in sand as a writer. As was said in another post, and I misquote... "A CS degree teaches you the History of programming, so you don't make the same mistakes" (apologies to author, was a good post!) In order for that CS degree to be of help to you, you need to PAY ATTENTION AND LEARN WHAT THEY ARE TEACHING YOU. Figure out what professors are the ones "in the know". Do more than is required in class.
There are a lot of programmers without a CS degree that can get down and dirty with a program, delve into the depths of code and accomplish major feats of programming, and come up successfully from those debugging sessions knowing that they accomplished something worthwhile. I have a lot of respect for these folks, for I too have been there and often need to dive in and hack. But it is these same people who, without the background given in a CS, tend to overcomplicate the design of large systems and end up with an unmanageable mess.
I'm not saying that without a CS degree you can't effectively design a large, complex system. But they have to get that self-discipline and knowledge ouside of a degree program designed to expose those concepts to students.
Generally, if you want to make the leap from being a brilliant hacker/hotdog program writer to a great software architect, you need to get that background imparted through a good CS program.
You don't get a degree in CS to learn a programming language, an Operating System, or a piece of software. The focus of a good CS program are emphasis on algorithms, design patterns and software development processes.
As far as your #1 vs #2, I have found the opposite. People who have not had the rigorous background in the above tend to be those who put in a lot of hours doing things the hard way, with no eye toward overall design. These are the folks who can rock the bits but miss the big picture.
I am not saying that a CS degree will ensure that a programmer will be good, nor am I saying that a degree replaces experience, but what a CS degree from a good program gives is a solid foundation in the fundaments of programming.
The marks of a good programmer are:
-Solid foundation in programming concepts -Knowledge of the processes of software development -Curiosity and exploration of new technologies -Passion for the work -Rigorous and analytical thinking
Note that I didn't mention stuff like "Mastery of ___ language" or "Proficient knowledge of ____ OS". Those are technical details that in and of themselves, are side effects of what I listed.
I often find that a CS degree makes the difference between a true software engineer and someone who is merely a skilled technician.
CS in college does not teach you how to program in C/C++/Java/Pascal/Whatever. You should consider yourself fortunate if the technical skills you picked up in college classes permits you to instantly take up a job. College teaches you the CONCEPTS of programming. You achieve a breadth of knowledge that prepares you to learn whatever skill is necessary.
You are taught programming languages in college to provide a platform for studying the deep concepts of software development; algorithms, lifecycles, teamwork, and design patterns (to name a few)
If you want to be hired out of college, then during college you should be teaching yourself current languages. The only mechanism that a college provides for gaining vocational knowledge is the coop/intern program.
I'll probably get flamed over this remark, but I haven't met a programmer who does not have any formal college CS background who is worth a damn when it comes to large application organization, the discipline is just not there.
Anybody can throw some lines of code together and accomplish a task...it takes a rigorous background in CS to start thinking in terms of design patterns.
The design/layout of PCs are a natural result of how they have been used. Separate discrete components allow for flexibility in configuration and upgrading. I just bought a new system mere weeks ago (Dell btw.) and I have already added components to it that I wanted. But I didn't purchase it in 'consumer' mode, thus what _I_ want in a system is not what a non-computer person would want.
For computers to become a ubiquitous device it needs to be in a form factor that consumers are familiar with. Most people do purchase TVs, with the intention of upgrading the speakers or the tuner, nor do they purchase microwave ovens with based on whether or not they can upgrade the turtable significantly later. What drives purchases in the consumer market are:
1) Ease of use - Can I plug it in and use it? 2) Features/capabilities built in - I'll choose the model that has the features I want built in! 3) Price - Can I afford it?
By making a computer a consumer device, Dell (or any manufacturer for that matter) has an incredible opportunity to make the killer consumer device. Imagine, what if in a form factor similar to an IMac there was a device that has the following capabilities:
17" monitor/touchscreen 64mb Ram, upgradeable via small removable panel on side. 4gb drive DVD Drive SVideo Out TV Tuner capabilities Integrated Sound w. Speakers plus AC3 and the usual audio inputs/outputs in back, headphone jack in front 2+ USB ports, make KB & mouse use USB Port for home automation 10Mbit Network Card 56K modem Joystick port in front
What does this device do? Replaces many consumer electronic entertainment devices... Want to watch a DVD movie? Pop it in and watch on monitor, or connect it to TV... Want to Manage Checkbook? Click/touch the checkbook icon... Want to play a game? No problem, plug gamepad in front of unit and run the game... Want to surf? Fire it up...
Heck, with a big enuf HD (or one reserved for that) you could even replace your VCR....
I'm not saying these specs are what should be done, instead they represent what could be done. A device that replaces or can control so many components would be successful in the consumer market.
Using such a system will closer model the value of individual's posts. Default scores would be pulled toward the middle, thus reducing the number of "Golden 3/4 default" people. This does not mean that their comments would be lost, since moderators would be able to feel more comfortable in promoting the good comments without the immediate possibility of making someone "Golden 3/4 Default".
This would also reduce the number of moderation points down for that group of folks who often make well-thought posts, but occasionally care for the snap remark.
Scoring of posts should, _IMHO_ come more from what moderators think of THAT post rather than what prior posts by the author were rated as.
Current moderation scores posts according to how relevant and meaningful the post is. Such a grading system is useful when reviewing a good topic (such as the Linux/Oracle article) and needing to see the most relevant posts. On the other hand, wouldn't other dimensions of evaluating posts be useful, such as:
Humor
Flame
Pinhead Post
Then you could also have highlights for each day such as "Funniest Posts", or "Toasters", or even "10 Stupidest things said today!" I just hope I don't ever make the last list....
I don't care if the contents are a plea for some political cause, an advertisement for a lexus, or a badly misspelled smut page link, if you are forcing me to spend time to deal with your message, what you are doing is NOT PROTECTED SPEECH. You DON'T have permission from me to force me to take time to deal with trying to ignore you.
Its not the contents of spam that is the problem, it is the underhanded ways that spammers use to try to force their message into MY TIME.
If you use methods that prevent my reasonable efforts in filtering email I don't want to see, then I should be able to seek redress. PERIOD
1) Create a Class file
Have as members of class file:
Integer (should implement as properties)
Left Node (integer, as property)
Right Node (integer, as property)
2) Declare an array of this class, the nodes are offsets, assume 0 is root
AFAIK, yahoo gives people the option to have information about them marked as "private", which is different from being truly Anonymous.
If you wish your identity to remain private, then your name will be unavailable except when deemed necessary by a court.
As was said in prior posts, freedom of speech guarantees you the right to say anything you want, but does not protect you from the consequences of your speech.
People who seek anonymous identities merely to get around accountability for their speech fall under the "worthless cowards" category.
You are an EE, did you take upper math? In some ways a CS degree could be considered an applied mathematics degree (I happen to have both)
Mathematics teaches rigorous and analytical thinking in ways that are difficult to pick up independently. The final year of a good CS program takes these concepts and applies them further to solving problems through software.
In your *own* example, you mention addressing a problem on an embedded system, and then making a disparaging remark about how CS students didn't know about port addresses or an ISR. Guess what? That is a TECHNICAL skill that is part of programming. On equal measure I could judge you by your ability to design a hierarchical query in SQL to traverse a self-referential table, but I won't, because that too is a necessary technical skill needed to solve a specific programming problem.
It often irks me when people with degrees in EE (and other engineering disciplines) claim to be at the apex of programming skill because they did work like you do. The methods you use for what you do are not easily scaled up to larger problems.
Software development is a discipline where you should start off with a good foundation in the theories of programming and then temper that with experience working under others.
Let me clarify a few things:
A person who goes through a CS program and pays attention and learns (not just studies to pass the tests, a sore point I have with colleges today) the concepts and materials presented through coursework, upon graduation, is qualified to do almost nothing. All a really good CS program imparts is a good fundamental knowledge of how to program, _in_general_.
You do NOT go to college to learn to program in C, C++, Java, Pascal, Assembly, COBOL, ADA, Javascript, Perl, BASIC, AWK, Lisp, PC Scheme, or any other technical programming skill. Any such skill you possess upon completion of a CS program is a side effect of your education! The point of completing a CS program is to learn how to learn
Think about the name of the degree: Computer Science. The _SCIENCE_ of computing. Generally, programming, and a little broader, Computer Science can be defined as The process of managing complexity.
Throughout the history of computing, the task for programmers has been to evolve tools for handling larger and larger tasks. We have come from flipping switches on room sized hardware to a point where we have languages and tools that abstract high-level GUI application to a few mouse clicks and keystrokes.
Almost every programming language started as someone looking at current tools and saying to themselves, "This is too much work, I can generalize these concepts which take months of coding in this language and aggregate them into almost atomic concepts if I make a new language that is based on this level!" Computer science, the field we *all* work in is constantly advancing, not because we are bored and have nothing better to do, but because we are constantly presented with larger and larger problems to solve.
Many "self-taught" programmers who do not have the benefit of a good CS degree are limited in the scale of complexity that they are able to handle. I'm not saying they are less intelligent, but they tend to lock themselves into a fixed technology layer and solve the problems at that level. They haven't been exposed to the breadth of information that a CS degree should give.
As to those CS grads you mention as being worthless...they would be just as worthless without their degrees. A background in CS can make a good programmer a great programmer, but it can't help someone who just doesn't have the mindset for programming.
A CS degree just helps you _Scale_Up_.
I find that a CS degree, by itself, tells me nothing about the abilities of a person. But, more often than not, its lack points to a possible deficiency in the fundaments.
Yes, many CS programs are clogged with people who merely want "to work with computers".
Like you, I was programming for, as you said it, *years* before I took a CS class. I hate to date myself, but my first computer was a VIC-20 and I taught myself BASIC on it. From there I too had a steady progression of computers. I was very technically proficient in programming by the time I entered the CS program.
However, it was in that program that I found that programming is more than being able to fire out lines of code to do something. Concepts of software development, such as design patterns, algorithm analysis, software engineering processes, lifecycles, and team programming were ingrained in me.
Just because someone has a CS degree does not mean that they can program worth a damn, nor does an English degree mean a person is worth their weight in sand as a writer. As was said in another post, and I misquote... "A CS degree teaches you the History of programming, so you don't make the same mistakes" (apologies to author, was a good post!) In order for that CS degree to be of help to you, you need to PAY ATTENTION AND LEARN WHAT THEY ARE TEACHING YOU. Figure out what professors are the ones "in the know". Do more than is required in class.
There are a lot of programmers without a CS degree that can get down and dirty with a program, delve into the depths of code and accomplish major feats of programming, and come up successfully from those debugging sessions knowing that they accomplished something worthwhile. I have a lot of respect for these folks, for I too have been there and often need to dive in and hack. But it is these same people who, without the background given in a CS, tend to overcomplicate the design of large systems and end up with an unmanageable mess.
I'm not saying that without a CS degree you can't effectively design a large, complex system. But they have to get that self-discipline and knowledge ouside of a degree program designed to expose those concepts to students.
Generally, if you want to make the leap from being a brilliant hacker/hotdog program writer to a great software architect, you need to get that background imparted through a good CS program.
Shouldn't you be enrolling in college right now?
You don't get a degree in CS to learn a programming language, an Operating System, or a piece of software. The focus of a good CS program are emphasis on algorithms, design patterns and software development processes.
As far as your #1 vs #2, I have found the opposite. People who have not had the rigorous background in the above tend to be those who put in a lot of hours doing things the hard way, with no eye toward overall design. These are the folks who can rock the bits but miss the big picture.
I am not saying that a CS degree will ensure that a programmer will be good, nor am I saying that a degree replaces experience, but what a CS degree from a good program gives is a solid foundation in the fundaments of programming.
The marks of a good programmer are:
-Solid foundation in programming concepts
-Knowledge of the processes of software development
-Curiosity and exploration of new technologies
-Passion for the work
-Rigorous and analytical thinking
Note that I didn't mention stuff like "Mastery of ___ language" or "Proficient knowledge of ____ OS". Those are technical details that in and of themselves, are side effects of what I listed.
I often find that a CS degree makes the difference between a true software engineer and someone who is merely a skilled technician.
at least cite him
The goal is 10% moderation, right?
But moderation points are granted at a rate of 1%
Granted, prior posts would give it a little leeway, but....
That rate is not sustainable.
We said it in the mouse survey forum, and I'll say it again....You cannot beat the action of the Honeywell mouse. They are friggin indestructible...
CS in college does not teach you how to program in C/C++/Java/Pascal/Whatever. You should consider yourself fortunate if the technical skills you picked up in college classes permits you to instantly take up a job. College teaches you the CONCEPTS of programming. You achieve a breadth of knowledge that prepares you to learn whatever skill is necessary.
You are taught programming languages in college to provide a platform for studying the deep concepts of software development; algorithms, lifecycles, teamwork, and design patterns (to name a few)
If you want to be hired out of college, then during college you should be teaching yourself current languages. The only mechanism that a college provides for gaining vocational knowledge is the coop/intern program.
I'll probably get flamed over this remark, but I haven't met a programmer who does not have any formal college CS background who is worth a damn when it comes to large application organization, the discipline is just not there.
Anybody can throw some lines of code together and accomplish a task...it takes a rigorous background in CS to start thinking in terms of design patterns.
The design/layout of PCs are a natural result of how they have been used. Separate discrete components allow for flexibility in configuration and upgrading. I just bought a new system mere weeks ago (Dell btw.) and I have already added components to it that I wanted. But I didn't purchase it in 'consumer' mode, thus what _I_ want in a system is not what a non-computer person would want.
For computers to become a ubiquitous device it needs to be in a form factor that consumers are familiar with. Most people do purchase TVs, with the intention of upgrading the speakers or the tuner, nor do they purchase microwave ovens with based on whether or not they can upgrade the turtable significantly later. What drives purchases in the consumer market are:
1) Ease of use - Can I plug it in and use it?
2) Features/capabilities built in - I'll choose the model that has the features I want built in!
3) Price - Can I afford it?
By making a computer a consumer device, Dell (or any manufacturer for that matter) has an incredible opportunity to make the killer consumer device. Imagine, what if in a form factor similar to an IMac there was a device that has the following capabilities:
17" monitor/touchscreen
64mb Ram, upgradeable via small removable panel on side.
4gb drive
DVD Drive
SVideo Out
TV Tuner capabilities
Integrated Sound w. Speakers plus AC3 and the usual audio inputs/outputs in back, headphone jack in front
2+ USB ports, make KB & mouse use USB
Port for home automation
10Mbit Network Card
56K modem
Joystick port in front
What does this device do? Replaces many consumer electronic entertainment devices...
Want to watch a DVD movie? Pop it in and watch on monitor, or connect it to TV...
Want to Manage Checkbook? Click/touch the checkbook icon...
Want to play a game? No problem, plug gamepad in front of unit and run the game...
Want to surf? Fire it up...
Heck, with a big enuf HD (or one reserved for that) you could even replace your VCR....
I'm not saying these specs are what should be done, instead they represent what could be done. A device that replaces or can control so many components would be successful in the consumer market.
Using such a system will closer model the value of individual's posts. Default scores would be pulled toward the middle, thus reducing the number of "Golden 3/4 default" people. This does not mean that their comments would be lost, since moderators would be able to feel more comfortable in promoting the good comments without the immediate possibility of making someone "Golden 3/4 Default".
This would also reduce the number of moderation points down for that group of folks who often make well-thought posts, but occasionally care for the snap remark.
Scoring of posts should, _IMHO_ come more from what moderators think of THAT post rather than what prior posts by the author were rated as.
- Humor
- Flame
- Pinhead Post
Then you could also have highlights for each day such as "Funniest Posts", or "Toasters", or even "10 Stupidest things said today!" I just hope I don't ever make the last list....Hmmmm, what if I added a display to em....
Instant multimedia.
The DVD would be a bit uncomfortable
I don't care if the contents are a plea for some political cause, an advertisement for a lexus, or a badly misspelled smut page link, if you are forcing me to spend time to deal with your message, what you are doing is NOT PROTECTED SPEECH. You DON'T have permission from me to force me to take time to deal with trying to ignore you.
Its not the contents of spam that is the problem, it is the underhanded ways that spammers use to try to force their message into MY TIME.
If you use methods that prevent my reasonable efforts in filtering email I don't want to see, then I should be able to seek redress. PERIOD
it ain't the contents of spam that is a problem, its the delivery and deception that is the problem