Convincing Colleges to Upgrade Their Classes?
Pray_4_Mojo asks: "I'm an engineering student at the University of Pittsburgh, and I'm currently taking a required class known as 'Computer Interfacing'. While I enjoy the instructor, I find most of the material to be severely dated. We will spend the majority of the class covering RS232/XMODEM/Token Ring means of computer-to-computer communication. Almost no mention of USB, Firewire, or IRDa is made within the class. I am trying to convince my professor that this material is relevant, as these types of interfaces will be dominate in the world we future grads will be working in. As an example, I demonstrated that the keycard access system to gain access to the Interfacing Lab has a USB port for data download/firmware programming. The professor seems interested, but it seems that I need to convince the department to revise the course requirements. Has anyone attempted to modernize their CS/Engineering program and met with success?"
What next? Sneakernet?? 80K hard sectored 5.25" floppies??? Two tin cans and a string???? And this college degree is supposed to show that you are educated and get you a job in the real world?
It's not about whether or not you have experience in the latest tools and technologies. It's whether you have the fundamentals in place to allow you to apply that fundamental knowledge to any other system.
In the specific case of serial interfaces, there really isn't all that much different between RS-232, RS-485, and USB or Firewire. They are all serial interfaces that employ the same fundamental concepts. In the real world you'll have to apply that knowledge to any number of serial interfaces.
The same logic can be applied to a discussion yesterday about using MS or open source programming environments in a CS department.
When it comes down to it, the stuff you are learning is the same as all the modern interfaces. The same concepts, not much different. Sure, USB is a bit faster than 56k serial/RS232. But in the end, having the *tools* it takes to learn the stuff you will in the are those that would enable you to learn what is behind USB and Firewire with relative ease. Hell, at least half the class (probably a lot more) will probably forget the information out of lack of it being useful down the line.
Eventually, USB and FireWire may be what is taught in that class, provided they stand the test of time like *MODEM and RS232 have.
Working toward a usable PDA environment in the spirit of Newton OS: Dynapad
Carnegie Mellon University, one of the best CS/ECE colleges in America, is like 2-3 blocks down the road. ;)
But, seriously, I have to agree with gtwreck: The old-school interfaces that you're learning probably aren't that far off from current technology.
It's a heck of a lot of work to structure a good course. You may talk to your prof about projects done outside of class (in place of a paper or as extra credit) to start out.
...but I do remember it's fairly different from standard TCP/IP. Which would make it quite a useful platform to teach concepts, as there would almost certainly be a dedicated TCP/IP class in most curriculums anyways. It's good to demonstrate different (if unusual) concepts.
This is why CS curriculums include not widely used in industry languages such as LISP; just because they do things radically different.
These interfaces are much simplier and are a good base for moving forward. While your not likely to use them the concepts are the same AND if you go into a lab you have a reasonable chance to use one of the older interfaces.
That said a brief discussion of newer interfaces towards the end of the class is probably relevant.
I know when I was in college we studied the PDP-11 architecture. Well, I've never done anything on a PDP-11 and except for hobbiests I doubt you could find one BUT I do have a solid understanding of concepts that started with that class.
One should not theorize before one has data. -Sherlock Holmes-
If you really want to learn about Firewire, do something with it for your Senior project.
And the men who hold high places must be the ones who start
To mold a new reality... closer to the heart
You can teach fundamentals with Cobol and Logo too.
.NET, firewire, usb, irda, would hopefully give you a better chance of getting a decent job than one still using older technology.
A school teaching the 'fundamentals' using newer technology, like php,
When I learned ASM I learned it on a Motorola HC11, not a P4. Learning the concepts is much more important than learning an implimentation.
If one is unable to extrapolate the knowledge gained from studying one form of serial interfaces to another then if the course is modernized you would still be required to go back to school when the USB / FireWire / Whatever the course is taught with fad ends.
As it turned out, the real problem was not teaching OOP to the students. OOP is easier to explain to new programmers than structured programming (people use real-world objects all the time - not so much real-world procedures). Half-way through the first semester, the students could implement Tetris.
The real problem was retraining the faculty. Even though they knew OOP was a good thing, it took them a while before they had internalized OOP enough to present, e.g., algorithms and data structures in an object-oriented style. No one believed that you could teach inheritance and polymorphism before you taught loops, conditionals, and arithmetic.
Faculty teaching the intro courses may be in touch with industry and research. That's not enough. The faculty need to rethink an entire course to present the right academic material in a modern, industry-relevant way. If the faculty can do that (and, make no mistake, it isn't easy), they you'll get a course the students love, that will get them a job, and that will prepare them for a strong academic program as well.
For the truly curious, the textbook for that course is actually still in print, even though it depended on Borland Pascal, which is long-since defunct.
-----
Klactovedestene!
The real problem is, CS and CE programs should be designed from a theory stand point. Any class that relies heavily on a specific implementation or technology will be out of date as soon as you graduate (or sooner) The notable exception being classes that are designed to deal only with specific technologies or implementations or languages.
The bulk of your education in CS should be theory, optimization and concepts. Implementation and specific technologies you should be able to pick up on the job or as a tool to learn... not the actual content of the learning.
**Instant Short Version**
I learned C so that I could learn to write decent code, with planning and an eye for efficiency of design. Not just for the sake of learning C.
~foooo
Unfortunately, the profs weren't very interested in listening to a stupid undergraduate. Ah well. I went around the system by using the computer club as my own class of sorts. The few folks who showed up every week seemed to really enjoy learning about how the modern stuff works. Plus, I think I had way more fun doing that than if the classes would have changed. Generally I didn't try to lecture all the time. Sometimes someone had something they'd be interested in and do some research then show the rest of us. Other times I'd be sitting there and they'd start asking me questions (as I had gained a bit of a reputation as being a good source of knowledge) and I'd help wherever I could. It was cool and I like to think I helped some of the others expand their horizons a bit.
Hexy - a strategy game for iPhone/iPod Touch
If you want to learn new stuff, the teacher has to know it as well. If the professor doesn't know it, they very well can't teach it to you. If you go to a technical school, like RIT where I go, the professors are just as up to date as the students, usually moreso. I'm a CS major, and they teach us current technologies. Taking a class on XML right now actually. If you aren't in a technical major at a technical school you can't expect to be learning anything valuable. It's like being in an engineering class in liberal arts school. You aren't going to learn quality stuff.
The GeekNights podcast is going strong. Listen!
\.
Everything else is either based on or pretty similar to those two... well, OK, there's also Ethernet's CD/CSMA paradigm.
THREE things, that's THREE things to learn Cardinal Fang! (And a fanatical devotion to the Pope!)
John Slimick's the guy to learn from at Pitt; he used to teach at the Bradford campus in the frozen north. He's an excellent teacher as well as an all-around nice guy.
The fact is that everything you will learn at any university is going to be dated. As has been said before, it takes a great deal of time to properly develop a new or up-to-date course. The profs have to be trained first.
But, no matter how progressive the school is, they will still be behind the industry curve, unless they themselves are developing the technology. When you get out of school you will not have been fully educated on the latest and greatest technology. That's why you do internships and graduate work and entry level positions.
Only after you have finished learning the "legacy" stuff and then spent time in a job getting up to speed on the present day technologies, as well as getting some hands on professional experience under your belt, can you hope to be up-to-date. Then you will find that you have to spend the rest of your career "running" as hard as you can, in order to keep up-to-date.
But, here comes the biggest kick in the huevos. Every single generation of students wants/tries to change things. Evry single one. Each one seems to feel that they know better, what should be done. But, the sad fact is that, you don't have the necessary life, business, political, technical experience to be qualified to make that decision.
I'm sure that all the present students will proceed to flame me for this last statement. But, they, and you, will see in the next 10 years or so that, you really aren't qualified. Only after several years will you develop the necessary life/political/business/technical experience to be truely qualified to make decisions on changes for the future. So, for now, sit back and learn. That's what you are there for, not to run the show.
You never said but, I'll bet that at least some of the old RS232 stuff that you are learning is indeed new to you. Also, RS232 is STILL heavily used in a very wide range of technical industries and it will continue to be for some time to come.
industry still uses all the "old" things you mention. and all the "new" things are based on the old ones. they evolved from those standards.
crawling is a useful skill to have. and while walking is better for many tasks, you still learned to crawl first.
US Citizen living abroad? Register to vote!
Meanwhile, and most students don't realise this, but you are allowed to do research of your own beyond the scope of any given class. I know you may not have the funds to pursue everything you want, but neither does the college.
There are two types of jobs out there: 1) ones that require experience and 2) ones that don't want experience because they want groom you.
:)
For the first group, there is no way that you could possibly gain enough experience in 6-9 hours a week for four years. That's only about 4-6 months of professional experience (about two full-time internships if you're so lucky).
For the second group, employers are more interested in finding someone who is a good problem solver and has the ability to pick up newer technologies quickly. In a lot of ways, as an employer I'd rather have someone who learned COBOL at school for fear that they'd carry bad habits if they knew C++ or a newer language that I'd expect them to use on the job.
<Open Source Evangelizing>
Of course, working on Open Source software can give you the desired experience and prove you have the ability to learn quickly on your own
</Open Source Evangelizing>
int func(int a);
func((b += 3, b));
It's basicly the same here at Vermont Tech. Granted I think that RS232 and XMODEM are still relevant, as they're SIMPLE. Also RS232 is still widely used, and while XMODEM may be garbage it is still the basis of many other protocols and is easy to understand. At least I thought so. I got in an argument with a professor once, as a lab assignment he asked us to connect two computers with a null modem, set the link to 7 bits, and transfer a file using XMODEM, in that order. I told him XMODEM doesn't work over a 7 bit link. He told me it does. It took me about a half hour to convince him that he was wrong.
After putting intense pressure on this same professor, he did spend a couple of days at the end of the class talking about USB, but it was uselessly superficial. It would have been far more beneficial for us to have done some USB programming in lab, or something.
It is hard for schools to keep up with all of the modern hardware and software and protcols, as the industry moves to fast. But why should they keep right on the bleeding edge? While RS232 may be old, learning about RS232 teaches you the PRINCIPLES of communication, thus better equipping you to learn new interfaces. The same goes for XMODEM. USB and FireWire are pretty fucking complex protocols to jump right into when you haven't covered any time of communication standard before. But I think that considering how ubiquitous USB is becoming, it should absolutely be included in the curriculum.
On the other hand, there's no excuse for teaching TokenRing. For the love of god, spend that time teaching ethernet.
-73, de n1ywb
www.n1ywb.com
Chances are, the prof has been using these notes since the dawn of time. I had one professor who had notes that looked 30 years old, paper scrawled in illegible chicken scratch, and fraught with errors. Most of the time, the same professor will teach the same class for quite a few years because it is easier to teach something you are familiar with than learn the ins and outs of the latest technology, otherwise it would interfere with research.
Don't for a minute think that the professors are there to teach you. A few enjoy teaching, but most are there for research.
"The area of penetration will no doubt be sensitive." ~ Spock
You may find what you're looking for at a nearby trade school. At university you're expected to learn things for the sake of personal enrichment, not for the development of specific technical skills. That is perhaps not your objective.
For what it's worth, a serial port is a serial port and RS232 is a ver forgiving place to start an interface course.
A lot of the courses had already been changed.
But to higlight an example, the 3d graphics course in 3rd year is revised each year to adapt to new developments in the past year. For example, pixel shaders are taught in the current 3rd year course, and who knows what else next year.
However, the second year introductory graphics course has stayed mostly the same, introducing the basic concepts which are applicable to more than one situation, and dont change very often.
I would assume that a lot of the concepts, if not the specifics, would stay the same even between say RS-232 and USB. Sure, there are a lot of differences in protocol specifics, and a lot of extra features of USB (otherwise there wouldnt be much point to using it), but the general idea of transmitting a signal down the wire, and having to deal with flow control, error correction, and whatever else (now I _know_ I didnt revise hard enough - memory's failing me here).
Of course, updating the specifics can help, but not at the expense of clouding the basic concepts, or just for the sake of something being newer and more in fashion at the moment (think replacing a C course with a java course, losing any concept of memory management with free(), and confusing students no end when they finally do come to c/c++ ). Tomorrow, USB will be obsolete, and all the specifics learnt today will also be obsolete, but the next big thing that replaces it will use the same basic concepts, have the same problems to deal with, just at a higher speed, and with more features.
I started school at BYU this semester. I'm going into CS. The first required class had a horrifying syllabus. We were to learn about C, basic electronics, and assembly language built for a theoretical computer. I was disgusted that we would learn just about NOTHING which would be practical. I transferred out of there so fast. Now, I just hope I can get exempted from that class or take a C++, Java, or X86 assmebly course instead.
void
void
if it wasn't for the students.
I teach two undergraduate courses. I know what it's like to have students complaining about the content of a course, and I have two comments about this topic.
Firstly, changing what is taught in a course is very very very very hard work, and a course that has been restructured or had its content changed is very very very likely to have problems with said new content. It is simply not practical to keep updating a course to deal with new technology. Once a course is stable, it is far better to leave it that way. Also, the staff teaching that course must spend time doing research and likely supervising postgrad students. They must do this to keep their job and to maintain the reputation of the university.
Secondly, universities are not vocational training institutes. University teaches the basic theory and concepts behind the technology, and teaches students how to learn these concepts. The student should then be able to apply these theories and concepts in an employment situation.
If you want to learn how to use new technology solely to apply those skills to a job, go to polytech or do a training course. Don't sit around whining to the course instructor, because frankly he probably knows a hell of a lot more about how to run a course than you do.
If you want to learn how to fly a 747, I'm betting there are about a zillion more things that you have to do before even getting to taxi to the runway, as compared to a cessna.
On the other hand, if you want to learn how to program by learning C#.NET, all you need is notepad and a compiler. In other words, the existence of advanced stuff won't get in the way of the basics, and in the meantime, you're learning modern syntax and modern thought patterns.
Not only that, but remember that learning the syntax is vital to becoming proficient -- and employable. You are much less likely to be asked to "forget" Java/C++/C# than, for example, lisp or cobol.
- a.c.
What flavor of engineering are you attendiong school to learn? There is still lots and lots of test and measurement equipment being produced that uses good old serial communications. It's cheap, reliable and still more universal than Ethernet and its friends. Even if later in life you end up using, say, TCP for your data collection, what is that TCP stream? Little more than an emulated serial connection. You want to know how this stuff works, really.
Learning how to think is more important than learning how to do.
I've had similar situations in my cs degree where I found the material almost archaeological. But it's the concepts that are important to learn at the start and the roots of these concepts are in the old stuff.
If you want to learn how to fly a Space Shuttle you don't start out on one! You spend many years and tens of thousands of dollars learning on the concepts on small aircraft. Granted, knowing the gauge layout of a Cessna has zero relevance to an orbiter but the concept of watching your fuel levels applies equally well in either case.
So yes, when you get to space school they will say "forget all that airplane stuff" but they're not really telling you to forget the concepts, just the nitty-gritty details that you don't need any more.
Compres vous?
Highlights of Skills
Develop computer solutions in a variety of computer languages and data base management systems, including: Word, Excel, Visual Basic, RPG, COBOL, Access, Oracle, C++, SQL and Windows applications development systems
The real problem at Pitt is the upeer level graduate courses aren't updated either, starting couses should cover old tech, nothing like learning MIPs assembly on simulated hardware, but the upper graduate probgram doesn't seem to cover modern tech
I don't know about Token Ring, but RS232 is all over the place in industrial hardware like barcode scanners and other non-PC hardware. I think it is much simpler to program both for the programmers and the hardware designers. Also, remember that Intel came up with USB to sell processors because USB is a total CPU hog as compared to FireWire. So, while your PC does not have a problem with this now, certainly industrial hardware does not have the infrastructure on board to deal with USB. So, I think the appropriate thing is to talk about RS232, USB, IrA, BlueTooth, and WAP. You want BlueTooth because it is going to be in all cellphones, hence proliferate into everything else. You want WAP because for things where BlueTooth is too slow, you will want a higher-speed wireless system. For instance, you could have a WAP enabled Digital Video Camcorder that automatically pops up a recording window when you start recording, all without any wires!
My DVD and Game Collection Tracking L
When you first learn math we don't nursery school / kindergarden with "Let Delta be a derived functor mapping abelian catagories...."; you don't learn 20th century math at all. Rather what you learn is:
counting -- a technology that is certainly tens of thousands of years old
arithmetic -- a technology that is many thosands of years old and was fully developed 5000 years ago
algebra of one variable -- a technology that is a thousand years old
geometry of 2 dimension -- a technology that is over 2000 years old.
And if you are really good at highschool you learn
calculus of one variable -- a technology that is over 300 years old
By college the undergraduates make it up to about the civil war.
____________
There is a difference between education and vocational training. Education teaches you how to evaluate information and how to learn new information. Vocational training teaches you specific information for a specific field. There goal is to teach concepts not technologies.
What you are learning are very simple hardware / software interfaces. Why use complex interfaces of modern hardware that confuse the issues on an academic course? Leave that for vocational schools.
If you want to do a class in current technology the best way is to go independant study. If there is an insstructor with relevant knowledge it shouldn't be that hard to get something set up.
Consider yourself ahead of the game when you look for a job. If the university wants to move ahead in the course outline, they have "supporting evidence" for next year.
I'm probably in trouble on this one, but here it goes:
I think this problem is unique to engineering. Universities were not created for this kind of thing. Thus you have an inherent conflict between (a) getting a job and (b) learning theory.
Historically, you would get a degree *in a different field* (probably physics or math) then go to professional school, such as law school or medical school (this one would be engineering school) and learn all the latest applied technology there.
I am not saying this is the way things should be, only noting the origin of the conflict. In fact, I think it is great to have a degree in engineering, during which you spend some time learning musty subjects like math, physics, english lit, art history...something else.
I teach physics at a University. (Contrary to what was said earlier, my students are the best part of my job - I think of it like playing a single person RPG versus a massive multiplayer RPG. All other things being equal, it is always nice to interact with people, and help them out where you can.)
Point is, in physics you learn the last 400 years of physics research, in roughly chronological order. You go a long ways before you reach the cutting edge and this is fine because you are trained to become a scientist - not a technician. Seems about half to 2/3 of the posts seem to agree there is an equivelant principle in engineering. I can't comment on that.
a war on terrorism? How can we end a war on a method?
Here is why.
- Get the lecturer replaced with someone else - this means someone else has to be willling to teach the course
- Find the lecturer a whole lot of free time to revise the course material (which I assume has been generated over a period of years) all at once. This probably means them taking time away from research, which is what you professor probably feels he's there for anyway.
Even if you succeed, the material won't be updated while you're on the course. At best, the next course would start with the new material.(This reflects the situation in the UK, where academic teaching staff in Universities almost always have research commitments (and publications are used as a performance metric).
Some of the material you are working with is not so bad, either. Learning about RS232 might teach you several things that are generically useful in designing system interfaces :-
It's been a while since I've worked heavily in industrial interfacing, but I'd be surprised if USB is even relevant to that at all. Think more along the lines of RS422, 10baseT, and optical fibre (often carrying converted RS232, in fact).
I'm not particularly familiar with XMODEM, but I think it's likely to help you undersand valuable facets from the above (bandwidth/reliability tradeoffs, protocol features for catching errors, latency versus throughput, bandwidth-delay products). Token Ring seems an odd choice to me, though. After all the hardware must be tricky to get these days (or perhaps your course has no hands-on component, which would make hardware availability irrelevant).
One of the most interesting hardware interfacing things I've done was implement both ends of a mostly-symmetrical serial protocol. One end was implemented as a set of four cooperating threads, and the other as a state machine. One way of doing it was (in that case) much much easier than the other (less code and more reliable).
The 'out of date' technology I got to learn was Modula-2, back around '91/'92. I was mortified at the time.
Looking back though, it didn't really matter. I went from that to C/C++, Java, Python, etc. College isn't to teach you a specific technology, but the fundamentals, and how to learn the rest.
Or something like that
When still in college, I upgraded the lab course for assembly programming. The lab course used to be PDP-11 based, and we used a semi-working MS-DOS based emululator. We upgraded to PowerPC assembly - x86 was rightly regarded as way too complicated as a starting point.
Making the new assignments and getting everything to work on the local computer setup (this included writing an eery program that used TCP/IP to communicate between the PowerPC emulator and a custom-built terminal-emulator) took the better part of three months.
While the lab course got much better, we were still getting complaints about doing 'non-mainstream' assembly (some students complained that we didn't do x86). But we went to the trouble of explaining them why, which helped. I am sure we would've stuck to PDP-11 if it wasn't for the terrible software: the PDP-11 is ideal as a learning device. It is arguably the best example of proper orthogonal design in a microprocessor; better than PowerPC, and incomparably better than x86. The fact that PDP-11 immediate addressing mode is just post-increment indirect access on the program counter still brings tears to my eyes ;-)
First bottom line: learning proper principles is much more important than learning a bleeding-edge technology. These are often cluttered with performance-enhancing details that students cannot grasp when first approaching a subject. After leaving college, you should be intellectually equipped to read specs and manuals of current and future designs. While I agree that it is a good idea to pay some attention to current technology (it helps to convey insight into the limitations of older technology), current technology usually has too many quirks for teaching a subject.
Second bottom line: revising a class taking a tremendous amount of work. In practice, this is probably what keeps most lecturers from doing so.
I see lots of comments pointing out that for specific technology skills, you would be better off at a trade school, and that general concepts based on tried-and-true, simple example technologies are what you should expect at Universities.
Isn't a balance possible? I have been well-served by the general concepts I picked up while working through my engineering degree, but a more practical class or two would certainly have been welcome. I fully expect to be learning new technologies regularly during my career-- but a kickstart for students coming into the industry seems like a good idea.
So why not? Is there such an anti-tech-school feeling in universities that their students can't benefit from some specific training in addition to their more general classes?
When I was an student I learned Lisp and Pascal to learn *concepts*. I never ever have used thos languages professionaly.
In the "Real World" [tm] I have used COBOL, ALGOL, C, C++, Java, Perl and two or three more more exotic.
I would had made no difference to my preparation as a proficient Engineer if I had learned a bigger amount of buzzwords per hour.
IANAL but write like a drunk one.
Damn dude, how are you missing this. It may be that someone who cannot grasp itwerx's argument is not a good canidate for this type of learning, so in your case, you are right. If you do not know how to apply what you know in other subjects to your current task, you will never grow.
You, sir, are a $10 an hour programmer, and not a computer scientist. You know syntax like a ditch digger knows his shovel. You say "syntax is vital to becoming proficient -- and employable". That's only true if you want to be a keyboard monkey, and even then, how fast you can type is just as important as the syntax. If you know the concepts, you can pick up the syntax of any modern programming language in a few days. If you don't know the concepts, you're only employable until your language of choice goes out of style, and then you can flip burgers. There are concepts you can't learn with C#.NET that are easy to teach with lisp or prolog. You may never use lisp in your job, but in 5 years, you may never write another line of C# either.
What good is your education if it teaches you short lived information? Pay to learn the concepts. If you want to learn syntax, go buy a book.
You can use WAP over GPRS, normal cell phone data link, from your PC with your broadband connection etc.. wap doesn't specify the transport media, wap is more like html in cellphone world.
> You say "syntax is vital to ....
....
/concept/ of regexps, having to continually refer back to a book for syntactical differences makes you a less prodigious and a less proficient programmer.
> becoming proficient -- and employable".
> That's only true if you want to be a
> keyboard monkey, and even then, how
> fast you can type is just as important
> as the syntax.
> What good is your education if it
> teaches you short lived information?
> Pay to learn the concepts. If you want
> to learn syntax, go buy a book.
> If you know the concepts,
> you can pick up the syntax of any modern
> programming language in a few days.
i *did* pay to learn the concepts, and I was almost at the top of my CS classes at the university of illinois -- not exactly a shabby institution of learning.
but guess what? i did indeed buy a book, and i realized that understanding the principles of OO and the basics of data structures and algorithms is a nice thing, but is a very far cry from being expert or even acceptable as a programmer.
there was one book in particular that had twenty-four chapters. only two dealt with syntax, which i had no problem with. it was the rest of the book that was daunting: so the other twenty-two chapters can be learned in a few days?
i'm not talking about typing speed, per se. i'm talking about comfort with the idioms and idiosyncrasies of a particular language. that was what the other twenty-two chapters dealt with. if you're comfortable with regexps in perl, that's a far cry from being comfortable with regexps in VB, or even javascript for that matter. even if you're comfortable with the
it's not a matter of being a "keyboard monkey." it's about not letting syntax get in the way of thiking.
this is the point i'm trying to make: for a reasonably smart english-speaking person, learning the pronounciation and tenses of say, spanish, is not that hard. but being FLUENT means that you have to learn the idioms of the language, and indeed attention to the details of the language become all-important.
- a.c.