Higher Software Education
-
16!!!!!! I only had eight! And, when I say big red button, it wasn't that big. Or that red, really. But it was a button. We had to get up at six O'Clock in t'morning and lick t'road clean with 'tongue.
___________________________________________ .\\axxx (That's an 'M')
Softie. We had to draw the wires ourselves, and then solder them together. When we needed another program, we ripped those wires out and put in new ones. Whippersnappers!
-
When I did my degree (back in the early 90's) they taught programming concepts and practices rather than any particular language. Languages we taught ourselves, and applied the concepts we had learned.
-------------------------------------------------------- Knowledge is knowing that the tomato is a fruit. Wisdom is not putting it in fruit salad!!
_Damian S_ wrote:
When I did my degree (back in the early 90's) they taught programming concepts and practices rather than any particular language. Languages we taught ourselves, and applied the concepts we had learned.
That's why most employers wonder why most new CS & SE graduates have never written an application that has more than a 1000 lines of code. :doh:
Why go back to the drawing board when you have a Tablet PC?
-
_Damian S_ wrote:
When I did my degree (back in the early 90's) they taught programming concepts and practices rather than any particular language. Languages we taught ourselves, and applied the concepts we had learned.
That's why most employers wonder why most new CS & SE graduates have never written an application that has more than a 1000 lines of code. :doh:
Why go back to the drawing board when you have a Tablet PC?
I wrote several apps in the 2-10k range before getting my degree. None were for a CS class though.
Today's lesson is brought to you by the word "niggardly". Remember kids, don't attribute to racism what can be explained by Scandinavian language roots. -- Robert Royall
-
Gary R. Wheeler wrote:
knuckle-dragging
Lab coat- and taped glasses-wearing you mean?
Nope; those are the computer 'scientists'. The knuckle-draggers show up with a hangover, a sunburn from a weekend of bike riding, and a major piss-off because the stupid lab coat type didn't plug in a network cable.
Software Zen:
delete this;
Fold With Us![^] -
Just finished B.SC in Computer science, two yrs back. Had classes in C, Assembly language, compiler design, JAVA, and even web programming. If one just sticks to web programming, no need for low level knowledge of computers. The courses were great but lousy teachers but I think that a low level knowledge is essential, when things go wrong in places where you least expected, you need that low level knowledge and find a workaround based on that.
ktm TechMan wrote:
I think that a low level knowledge is essential, when things go wrong in places where you least expected, you need that low level knowledge and find a workaround based on that.
That's my point - it 's not necessary to know the nuts and bolts in detail, but to understand the foundation. Also, I hate workarounds! If you are going to fix it, fix it right. Microsoft should have done it years and years ago, instead of building on a house of cards.:mad:
-
I thin this is important also, but I think teaching these concepts as part of a language is also a good idea. Many of the concepts can be difficult to cover without concrete examples. Teaching the examples within some context helps most folks understand things a bit better. I went through on class that attempted to teach software concepts using only pseudocode... The problem is that they were so stuck on the syntax used in the fake code that often times the idea of the 'programming concepts' themselves were lost.
Yes, I should have specified a bit further - we did Pascal in first year and C in the other years... as far as commercial languages go, that's what we taught ourselves. ;-)
-------------------------------------------------------- Knowledge is knowing that the tomato is a fruit. Wisdom is not putting it in fruit salad!!
-
_Damian S_ wrote:
When I did my degree (back in the early 90's) they taught programming concepts and practices rather than any particular language. Languages we taught ourselves, and applied the concepts we had learned.
That's why most employers wonder why most new CS & SE graduates have never written an application that has more than a 1000 lines of code. :doh:
Why go back to the drawing board when you have a Tablet PC?
As per my comment in the thread above, I should have been a little more specific. At uni, we did Pascal and C. These aren't what I would call commercial languages in the business software field (the field I work in). We learned all the good things you need to know about designing good quality software, and implemented it all in C. Of course, these days I believe they use Java and some other stuff, my point is that the language you learn at uni isn't all that important - it's the underlying concepts that they teach you. Someone who knows a particular language inside out, but doesn't understand the basic concepts of what is a good design for software isn't as good (imho) as someone who can learn a new language reasonably quickly (or can find the answers they need) but has a great understanding of design/implementation concepts to make good quality software. No point writing a 5000 line unstructured mess full of goto's and multiple exits with repeated sections of code all over the place when a 1000 line nicely written piece of software will do nicely!!
-------------------------------------------------------- Knowledge is knowing that the tomato is a fruit. Wisdom is not putting it in fruit salad!!
-
This is my first post, so be gentle. My background is mostly on the hardware side of computers. Back in the day when Motherboards were expensive ($1.5 - 30k) in the early 80's (Not Apple Computers!), I made a living repairing them. One part of my job involved writing assembly programs that were used to diagnose individual components to locate the one having a problem. (Try finding a memory chip with one blown bit on a array of four boards or a stuck on bit in the logic circuitry.) So, I understand how computers work, what exactly happens when a handle (or pointer) is created, what a BLT is and how it works differently with the CPU than other programming operations, etc... Basically, the nuts and bolts. I've noticed that since I took up VB.Net and I am trying to wrap my mind around all the concepts that make up OOP, Polymorphism, Delegates, Reflection, etc.. that allot of the fundamentals of how a computer really works are never talked about. For instance, when a beginning programmer asks "BackColor = Color.Transparent only shows a black screen, Why?" The typical response is Silence, Microsoft doesn't support it or it doesn't work." I know why, do you? Just like fundamentals in baseball is necessary in win the World Series, I would think it would be necessary in programming. My question is: What do they teach in school about computer fundamentals? Have you guys that have been programmers for years ever thought about it?
From the replies it looks like I'm the youngest to reply and my experiences are quite different. My love of programming started between the third and fourth grades when I took a summer school class that had us using BASIC on Apple //e computers (which I took the next two summers as well because I enjoyed it so much). In high school we had some basics that I mostly sat through with glossed-over eyes (although this is when I learned of QuickBasic and began to lose my tan :-) ) and then eventually a VB class (which was a joke because I taught more than I learned - the teach as much as the other students). I went on to get an AAS in Computer Programming Technology and tested out of the basics classes. They had us use C++ and Java as well as Cobol and something else (sorry, getting fuzzy here, maybe a scripting language or something) on an AS 400 system. I think the one I can't remember was the one I enjoyed the most, but it may have been the Cobol. At any rate, back towards the intent of the topic, we hardly learn anything about the basics and if we're taught we're quite likely to ignore it and forget it as soon as we know it's not going to be on the next test. I wish I understood some of the more basic stuff, but as others have mentioned, it just isn't required. The languages now are too forgiving and computers are so fast and storage is so cheap that there is no reason to worry about your code being optimized for speed or size either one. I always wanted to learn assembler and binary and all of that (somehow I have always managed to prefer a keyboard to a mouse and a dos box to a GUI), but you could spend several lifetimes learning everything you could want to learn and ultimately you only need as much as your job requires, in my case that's VBA, VB.NET, SQL, ASP (classic still), PHP, HTML. And I was never formally taught any one of those, VBA comes the closest, but all of the rest was inferred off of my original BASIC or learned via the internet. It's a shame that I don't use any of the Java, C++, or Cobol that I actually have records to show I know.
-
Nope; those are the computer 'scientists'. The knuckle-draggers show up with a hangover, a sunburn from a weekend of bike riding, and a major piss-off because the stupid lab coat type didn't plug in a network cable.
Software Zen:
delete this;
Fold With Us![^]System Administrators you mean? They're not engineers.
-
As per my comment in the thread above, I should have been a little more specific. At uni, we did Pascal and C. These aren't what I would call commercial languages in the business software field (the field I work in). We learned all the good things you need to know about designing good quality software, and implemented it all in C. Of course, these days I believe they use Java and some other stuff, my point is that the language you learn at uni isn't all that important - it's the underlying concepts that they teach you. Someone who knows a particular language inside out, but doesn't understand the basic concepts of what is a good design for software isn't as good (imho) as someone who can learn a new language reasonably quickly (or can find the answers they need) but has a great understanding of design/implementation concepts to make good quality software. No point writing a 5000 line unstructured mess full of goto's and multiple exits with repeated sections of code all over the place when a 1000 line nicely written piece of software will do nicely!!
-------------------------------------------------------- Knowledge is knowing that the tomato is a fruit. Wisdom is not putting it in fruit salad!!
Damian, at one time C was the main commercial production development language (80s and early 90s). Even IBM used Pascal to write their MVS OS. But then, a great C programmer could write tighter code than a C++ compiler could create. (There was once a time when assembly was king.) Personally, I like Java, C#, and C++ much better than C or Pascal and they are more efficient and less bulky (in the code I write). It is nice to know the architecture of the hardware you are targeting, but the OS masks much of that from you. To know the limits of your language environment is more important and where your libraries can take you.
-
This is my first post, so be gentle. My background is mostly on the hardware side of computers. Back in the day when Motherboards were expensive ($1.5 - 30k) in the early 80's (Not Apple Computers!), I made a living repairing them. One part of my job involved writing assembly programs that were used to diagnose individual components to locate the one having a problem. (Try finding a memory chip with one blown bit on a array of four boards or a stuck on bit in the logic circuitry.) So, I understand how computers work, what exactly happens when a handle (or pointer) is created, what a BLT is and how it works differently with the CPU than other programming operations, etc... Basically, the nuts and bolts. I've noticed that since I took up VB.Net and I am trying to wrap my mind around all the concepts that make up OOP, Polymorphism, Delegates, Reflection, etc.. that allot of the fundamentals of how a computer really works are never talked about. For instance, when a beginning programmer asks "BackColor = Color.Transparent only shows a black screen, Why?" The typical response is Silence, Microsoft doesn't support it or it doesn't work." I know why, do you? Just like fundamentals in baseball is necessary in win the World Series, I would think it would be necessary in programming. My question is: What do they teach in school about computer fundamentals? Have you guys that have been programmers for years ever thought about it?
I got my B.S. C.S. 12/07. Most of my courses were programming in C++ and ignored the hardware, except for the mandatory Computer Architecture and elective Microprocessors. They were essentially the same course, except in the first we learned x86 and the in second Motorola 68k assembler. They were actually 2 of my favorite (and most challenging) courses. We learned the basics of how a processor works (registers, pipelines, etc) and wrote some relatively simple assembly programs, but that was it. I now work at a small custom industrial electronics engineering company. I do all my programming in C++/CLI and C# now, but most of the my job involves writing utility programs to interface with the hardware the electrical engineers design. I work with the embedded programmers to know what the command format to send (typically over a COM port as raw hex data). So I don't worry too much about how the low-level stuff works, but for me it's useful so I can tell if any bugs are due to hardware, embedded software, or my utility software. Dybs