Slashdot Mirror


Constructing a New College IT Curriculum?

slonkak asks: "For extra credit in my Management & Information Systems we were asked to redevelop the IT curriculum. Interning at a government organization for the past 5 years, I have a good idea of what I'd like to know graduating from college. Here are the two tracks I came up with. Does anyone have any suggestions on how to improve this curriculum? I would like more experience members of the Slashdot community to give their input on what they would like to see new hires have a good understanding of." Yes, this one may sound like Slashdot-Do-My-Homework, but the underlying question is still worthwhile. For you IT Managers out there, what do you expect someone with a college degree to know? For you prospective CS Students who might be reading, what would you like to learn while obtaining that degree?

127 comments

  1. Tech training vs. education by dsci · · Score: 5, Insightful

    In looking at the two programs outlined, I noticed that they somewhat focus on training for specific products (VC .NET, 2003 Server, Cisco Routers, etc.) rather than underlying theory and principles.

    As the owner of a small business who sometimes looks to hire developers for specific projects, I would probably not hire someone coming from this type of curriculum. In contrast, a programmer with education in principles could likely learn VC, gcc, VectorC or whatever compiler tool best suits the project. To this end, I would not put on my job search documents "experienced in VC .NET" but rather "experience programming C++."

    --
    Computational Chemistry products and services.
    1. Re:Tech training vs. education by Anonymous Coward · · Score: 0

      One course on Java and several on .NET technology?

      I wouldn't hire you if that is the course load you took in school. I need to see Java and J2EE plastered all over your resume before I make an offer. We are a Java house and you've just eliminated 50% of the jobs available in the job market.

    2. Re:Tech training vs. education by llefler · · Score: 4, Informative

      It looks more like a catalog for an IT training company than a serious CIS curriculum. To consider it a CS curriculum, it's too sad to even laugh. Just the course title "Real World Programming".... None of the colleges/universities I have attended have had the staff to teach the course. That's why they have Internship courses. And excuse me, two Exchange classes in a Development curriculum?

      Having recently returned to college to get the degree I would need to get the job I already have, I've given some thought to this topic.

      First, what's with the 'washout' courses being in the 3rd year? One university I attended required Advanced Cobol as a senior level cource. Cobol, JCL, etc. And it was designed around the premise that it would be the hardest course in the curriculum. (which was basically an instructor saying, I'm going to give vague assignments and then mark off when you can't read my mind) Rather than wasting people's time, frontload the curriculum. Make the intro course tough. For instance:

      Computing Concepts 5-6 hrs - number systems, functions/procedures, basic computer architecture (IE registers, etc), structured programming, BASIC, Pascal, ASM.

      Two C language classes

      Database concepts - introduction to SQL, simple database design, normalization

      Advanced databases - advanced designs, stored procedures, triggers, management techniques

      Operating systems concepts - file systems, memory management, threading

      Networking technologies - sockets, RPC, DCOM, corba, etc.

      Systems Design I - Requirements, documentation, analysis techiques. Design tools. (UML, DFDs, process flow, business rules)

      Systems Design II - project scheduling, JAD, meet with one of the other Depts of the college to design a system to meet some business need.

      Senior project - team project to develop one of the systems designed in Systems Design II.

      And judging from some of the professionals I've dealt with; a reintroduction to spelling and grammar.

      Of course this is a CIS development track. It doesn't pretend to address CS or systems.

      --
      It is amazing what you can accomplish if you do not care who gets the credit. -- Harry Truman
    3. Re:Tech training vs. education by E1v!$ · · Score: 1

      I'm in partial agreement here. When hiring, I look for a basic skill set, (C++, Java, for web HTML, PHP, Javascript) but ultimately it's the employees ability to understand the project I have in mind.

      Application specific training is fine for vocational schools, or if all you want to be is a 'drone' (DeVry is a school that pumps out skilled, high paid drones). If you're more interested in moving 'up the chain of command' what you need is a solid understanding of process, information architectures, and data modeling.

      In any curriculum there does need to be a 'basic' language taught just to get the ball rolling, but very quickly courses focus on concepts, with the most appropriate languages being used to illucidate them.

      So, if you want to be a 'computer tech' or a med/low level sys admin, DeVry offers a curriculum much like the one you outlined. But if you want a larger view, something that will make you more valuable to yourself and your company(ies) focus on being trained in concepts and leave the detail work (learning specific apps and langs) to your own time.

    4. Re:Tech training vs. education by rmohr02 · · Score: 1
      It looks more like a catalog for an IT training company than a serious CIS curriculum. To consider it a CS curriculum, it's too sad to even laugh. Just the course title "Real World Programming".... None of the colleges/universities I have attended have had the staff to teach the course.
      The way I read it, nearly all of the CIS courses at my university would be combined to form this "Real World Programming" course.
  2. Mirror by slonkak · · Score: 1

    I can't imagine my ISP being able to handle the /. effect. Anyone willing to mirror the 18K pdf?

    PDF

    1. Re:Mirror by Gudlyf · · Score: 2, Funny

      A bit difficult to mirror it when it seems you're changing it on the fly.

      --
      Trolls lurk everywhere. Mod them down.
    2. Re:Mirror by slonkak · · Score: 1

      Yeah.. changes are done. One /.'er noticed a typo that I corrected.

  3. Sounds like a training curricula by speedy1161 · · Score: 5, Insightful

    The curriculum that you have posted sounds like something out of DeVry or Chubb and not something that you'd find at a college. Instead of having particular courses in .NET/Java/C++, have generalized data structures and algorithm classes that teach the basics of low-level software design and hammer the importance of efficiency home.

    Having theoretical coursework may seem lame and not usefull post-graduation, but they often teach the concepts that are the most used in a CS position. These concepts can be enforced with projects, homeworks, and, most importantly, through internships or co-operative education experiences.

    I am a computer scientist in the defense industry and I have seen other 'computer scientists' with degrees from schools whose curriculum approaches what you are proposing. They have a lot harder time thinking in terms of the problem and are 'hard-wired' to use certain technologies to solve every problem. They rely on the SKILLS they were taught in college rather then on the KNOWLEDGE they learned through theory and the application of the theory through constructive coursework.

    Here's a link to the current CS curriculum of the school I attended, it has changed a lot since I went there but the focus on theory and knowledge is still present.

    1. Re:Sounds like a training curricula by Zapman · · Score: 4, Insightful

      I completely agree. There's a huge difference between a degree coming out of your 'technical schools' and a true 'computer science' degree. Most of the jobs that are being outsourced are the ones your curriculum would train someone for. The jobs that are staying are the architecture, the system design, etc.

      I believe it was Dijkstra who said something like "Show me the code, and I will not understand. Show me the data structures, and I will." Data structures and interfaces are the heart of programing, and the difference between being a code monkey and a great programer.

      Finally, there's a point about aptitude. I am a great sysadmin. I am not a great programer. I understand a lot of what goes into being a great programer, and I know I don't have it. Your curriculum does not allow specializations, and I really think it should.

      The heart of all programing does not change. Only languages and methods change. If you can change languages and methods easily, you'll be a much greater programer.

      --
      Zapman
    2. Re:Sounds like a training curricula by rmohr02 · · Score: 1

      I agree--that's how the CIS program at my school is. There are a couple of 1-credit courses on specific languages, but the focus on theoretical CIS is present everywhere else.

    3. Re:Sounds like a training curricula by Anonymous Coward · · Score: 2, Insightful

      "Show me the code, and I will not understand. Show me the data structures, and I will."

      I guess Dijkstra wouldn't find Open Source very useful.

    4. Re:Sounds like a training curricula by notbob · · Score: 0

      I disagree on the whole not knowing code only design being better.

      "Code monkeys" at least will try to build a system that can be coded in a reasonable amount of time without inflexibility.

      Our "DBA" comes up with some really whacked out designs that are just horrible, I've done both the data design and the code, but frankly our DBA is a windows dba.. not exactly anything special.

      SQL Server 2k is cake to admin, it's all point and click with insane simplicity.

    5. Re:Sounds like a training curricula by josh_freeman · · Score: 1

      One of the best things about the Georgia Tech CS program is that they don't attempt to teach you any specific languages. None. Nada. They teach concepts. In fact, when I was there the first programming class was all in pseudocode. The real advantage to this is that when you get out in the real world, the hot language you learned three years ago in school is now obsolete, and you're going to have to learn a whole new API, or learn parts of the API you've never used before, or learn the API that the Cheezy-poof crazed program you're replacing came up with in a fit of carbohydate-induced stupor. If you teach the concepts behind the language first, it's much easier. I've been given projects in languages I didn't know and completed them on time because I knew enough of the underlying concepts to map what I knew from previous languages to the new language.

      Teach the basics. The applications will be easy to grasp once the rudiments are taught.

    6. Re:Sounds like a training curricula by Anonymous+Brave+Guy · · Score: 1
      I guess Dijkstra wouldn't find Open Source very useful.

      I'll bet. And if those running Open Source projects learned from his wisdom, they'd have a lot more people contributing.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  4. One idea.. by hookedup · · Score: 4, Insightful


    When I was in college, seems all we did was install things, set things up, put things togeather. Now here's a crazy idea.. break a system/network/router/etc.. real good, then give it to the students to figure out why it's broken. This could be improperly installed hardware, missing system files, broken network cable, the possibilities are endless.

    Since I graduated, I do a lot more 'fixing' than I do setting up things.

    1. Re:One idea.. by barzok · · Score: 1
      For far too many people, "fixing" means "setting it up fresh" because they lack that experience you're encouraging here - they just blitz everything and reinstall.

      Not unlike "reboot to fix it" in Windows.

    2. Re:One idea.. by Charles+Dart · · Score: 1

      My favorite way to test someone -- before they arrive pull the ethernet cable just out of it's seat so it looks plugged in but is not connected. Then when the person comes in sit them down in front of the workstation and ask them to figure out why its not connected to the network.

    3. Re:One idea.. by DerekLyons · · Score: 1
      When I was in college, seems all we did was install things, set things up, put things togeather. Now here's a crazy idea.. break a system/network/router/etc.. real good, then give it to the students to figure out why it's broken. This could be improperly installed hardware, missing system files, broken network cable, the possibilities are endless.

      Since I graduated, I do a lot more 'fixing' than I do setting up things.
      And you would not be one-tenth as good at fixing if you hadn't spent so much time burning the basics, and a knowledge of how it's supposed to work into your brain. You know how 'x' is supposed to work, because you've set it up and seen it working right. That means you know what to check when 'x' goes all pear shaped.

      The proper way to learn this kind of system and how to fix it is to learn how it works, and why. Then you break it and fix it. Any other way breeds cookbook readers, not techs.
  5. You mean IT? by Tom7 · · Score: 5, Insightful

    For you prospective CS Students who might be reading

    Ho ho ho now, Computer Science is very different from Information Systems/Information Technology.

    1. Re:You mean IT? by (trb001) · · Score: 2, Interesting

      Yeah, this is practically a Management Information Systems (MIS) program that's a little heavy on the networking side. MIS is typically taught out of the business school and became popular during the dot-com boom for people who wanted to make money and realized that having computer programming knowledge was a good way to do it&lt/opinion>. I had a roommate and a work partner who both did this, and neither were terribly competant in CS...they just didn't know the theory. They were missing the love for CS that a lot of us have, and only saw CS as a way to make $.

      --trb

  6. Courses parts of a whole, not little islands by rogueMonkey · · Score: 1

    This is not an idea about specific courses but more about how they should be related to each others. Even in the same "branch" (ie:101, 201, 301), courses often had little relations to each other.

    Have a course on algorithms make you build a hashmap and then a course on GUIs - two semesters later - use it to build something useful. This kind of interdependance would help students learn to write reusable documented code. Then have them write a program using some other student's old modules... that will teach them how to integrate and maintain crappy buggy code from someone who left the company 3 years ago.

  7. WTH? by Hard_Code · · Score: 2, Insightful

    What the hell? This is just a product training course.. not an IT curriculum.

    An IT curriculum would look like

    * introduction to programming (some intro language)
    * statistics or some numerical mathematics course
    * data structures
    * concurrency
    * operating system design
    * database design
    * artificial intelligence
    * network topology and routing theory

    etc.

    --

    It's 10 PM. Do you know if you're un-American?
    1. Re:WTH? by kzadot · · Score: 5, Funny

      Your right that the original poster wrote up a lame ass product training course, and while yours is a reasonable looking computer science course, CS aint IT.

      An IT curriculum would look like this:

      * Bullshit buzzwords like Paradigm, Convergence, Competitive Advantage, Quality Assurance. Note, only the buzzwords not necessary, save the actual meanings for the nerds.
      * Helpdesk techniques like Blaming other companies, Pretending to be too clever for the caller, Being a general arsehole.
      * Powerpoint
      * Clicking on the OK button
      * Defragmentation
      * Plugging cables in (in general terms anyway, save actual distinctions between different types of cables for the specialists)
      * Pencil chewing
      * Tieing a tie
      * 1 Day of web design
      * Solataire or Minesweeper
      * Pretending your a programmer when the hot secretary comes around.
      * Pretending to be the janitor when a programmer comes around.
      * The kissing of bosses asses.

      Oh, and in preperation of future industry developments:

      * Flipping burgers.

      etc

    2. Re:WTH? by Moeses · · Score: 1

      I used to hold a view a lot like this. Especially in college. My CE buddies and I would make fun of people that dropped out of engineering to study CS and we'd make fun of the IT majors as CS droppouts.

      The more experience in the real world I got the less it really makes sense.

      For example, Akamai is straight IT. All the research done by the CS PhDs was IT work. All the intricate code the software engineers wrote is IT work. The point is that IT is a lot more than help desk support and changing tapes. Some IT work is also top of the line academic CS research.

      Granted, there are a lot a idiots running around working in the field of IT doing idiot IT jobs. Sure, fine. Don't we need them though? Would YOU rather do it? I wouldn't.

      It may behoove you to consider IT as an area of knowledge worthy of study as a programmer or engineer rather than as an inferior area of knowledge. The more you do the more you'll realize the large crossover between the fields of IT/CS/Engineering/Mathematics. Such a broad view really helps one design systems and to engineer. It would help one to be more than a code monkey programmer.

      Such a study should help you solve problems more simply and elegantly. Try it, you might like it.

    3. Re:WTH? by EABird · · Score: 1

      Oh...you forgot surfing Slashdot

    4. Re:WTH? by Anonymous Coward · · Score: 0

      Let us not forget

      *Pretending any suggestions coming from outside of your department are impossible to implement.
      *Claiming credit for coming up with the idea that you previously said was impossible after you figure out that it can be done in 6 hours.
      *Quoting figures that you learned a decade ago like "Virtual memory should be 2.5 times the physical memory".
      *Wearing a tight shirt.
      *Pretending the people like you.
      *Flirting with your boss to get promoted.

      Feel free to ask my former coworker jhusok@prcnet.com where he trained in some of these methods. They worked swimmingly for him.

  8. dunno' about IT by Anonymous Coward · · Score: 0

    but for CS copy them

    1. Re:dunno' about IT by Anonymous Coward · · Score: 0

      note the parent links to the opencourseware project. Very useful!

  9. It's pathetic by aurelianito · · Score: 3, Insightful

    The things that one should learn at college should be more permanent. Learning a technology or other is irrelevant. And technology changes (a lot). Today is Windows and Linux, but in ten years, who knows?. Formal education should go to the basics. If you learn about networking, you should learn the difference between state-full and state-less protocols, and the two army dilemma. If you are learning about programming, you should learn about paradigms (several of them, imperative, functional, objects, etc) and, maybe, concurrency issues and stuff. If you are learning databases, the best thing is the relational model. Focusing on tools instead of concepts it's bread for today and hunger for tomorrow. Hope it helps, Aureliano

    1. Re:It's pathetic by cpthowdy · · Score: 1

      Would you mind explaining just what the "two army dilemma" is? I have never heard that before and Google wasn't my friend this time.

    2. Re:It's pathetic by Anonymous Coward · · Score: 0

      try looking up "two army problem" instead.

    3. Re:It's pathetic by kscguru · · Score: 1
      Two-army dilemma is the basic illustration for synchronization problems.

      An army is in two parts, A and B. If both parts attack together in a coordinated assault, they will win; if either part attacks alone, it will be defeated by the enemy army.

      So, the commander of army A sends a note to army B saying "attack at noon tomorrow". But he wants to make sure that army B actually gets the message (i.e. the messenger wasn't captured), so he requests a reply. Say he doesn't get a response - did army B not get his message? Or did the reply get lost? Maybe army B's commander is smart and wants a confirmation that A knows B is going to attack... when can B be sure that A is going to attack? Actually, there is NO POSSIBLE WAY to make sure both armies agree - thus, the dilemma.

      The lesson you are supposed to learn is that it is impossible for two entities to simultaneously be sure of the same thing (e.g. the attack time) AND sure that the other entity knows it. Or, you have to allow for some communication problems whenever you have to communicate with someone else. :-)

      --

      A witty [sig] proves nothing. --Voltaire

    4. Re:It's pathetic by Kosgrove · · Score: 1

      I saw this presented in the first class of my graduate Network Design class as a "proof" for the minimum number of ACK's required in an unreliable (i.e. packets can get lost) network layer protocol like TCP, so there's another example for you.

  10. Too Specific by Gudlyf · · Score: 4, Insightful
    It seems you're tying people down to specifics (Microsoft, Cisco, Oracle, etc.) when really there are no "fundamentals" courses.

    For Network Engineering, I'd expect to see courses on network topology principles (regardless of whether it's Cisco or not you're applying it to). OSI, TCP, IP, broadband networking principles, wireless technologies, security, cryptography, oh and security.

    I'd also expect to see classes on the foundations of operating systems and the core aspects of them, how they work, why they work the way they do, etc. Also fundamentals of computer systems themselves -- how they are designed, where they are headed and how, etc.

    How about the design and use of compilers in principle? How they work, why they work, why you use the syntax of C/Java/C# vs. something else.

    In short, you're way too specific. These seem like courses I'd take to get a certificate in each, not a degree. You can have a C++ programming course with Microsoft Visual, but that should be up to the professor or the curriculum on top of it. I've been in C++ programming classes that allowed the students to use whatever C++ compiler they wanted, since it was the underlying programming priciples that were important, not that we knew how to navigate Microsoft's expensive interface.

    --
    Trolls lurk everywhere. Mod them down.
    1. Re:Too Specific by sylencer · · Score: 1
      These seem like courses I'd take to get a certificate in each, not a degree. You can have a C++ programming course with Microsoft Visual, but that should be up to the professor or the curriculum on top of it. I've been in C++ programming classes that allowed the students to use whatever C++ compiler they wanted, since it was the underlying programming priciples that were important, not that we knew how to navigate Microsoft's expensive interface.

      You're very right here, when I learned programming in C (which taught us a lot about algorithms and data structures as well), we had to program ANSI C. Our programs had to be platform-independent enough to be compiled either under GNU/Linux with gcc or MS VC under WinNT4, we didn't know which one before.

      And I don't like the idea of a C++ course, because it is neither strictly object-oriented nor imperative, it's both. We started with Pascal, went on to C, and learned OO with Java, which was a very good decision, IMHO.

  11. I Disagree by rmohr02 · · Score: 2, Interesting

    First and foremost, make those classes more than 3 credits. It's hard to fill a quarter/semester when all your major courses have so few credits.

    I don't like the class on basic HTML--if you can't pick that up on your own, you're in the wrong major. In fact, I was flat out told that by a professor in one of my first CIS classes.

    Finally, I don't see any reason to spend time learning basics about one application (like Exchange or Visual C++) when I can learn the basics of those quickly enough on my own after learning general concepts about software engineering. Also, the Windows Server 2003 class will most certainly be outdated in 2-3 years.

    1. Re:I Disagree by (trb001) · · Score: 1

      Agreed...teaching any one operating system is pointless. Have an Operating Systems class that teaches what an OS does. Spend a week at the end saying "Now, Windows incorporated network this-and-that along with GUI that-and-this while Debian/RedHat/SUSE does this...".

      Really, if a software package is used as anything, it should be a teaching aid that furthers your understanding of some theory. It should not be in the title of a course because software changes so often. Except vi, but having a course on that would confuse most and inflame the emacs zealots.

      --trb

    2. Re:I Disagree by dubl-u · · Score: 1

      I don't like the class on basic HTML--if you can't pick that up on your own, you're in the wrong major. In fact, I was flat out told that by a professor in one of my first CIS classes.

      It would depend on the purpose of the class. In a CS curriculum, I'd agree; a person who can't puzzle out basic HTML should probably look elsewhere.

      But in a vocational education program, HTML's not a bad thing to learn. I've been doing adequate HTML since before Netscape, but when I need HTML done right, I always bring in an expert who understands making things that look pretty but that will degrade well on older browsers and weird devices like the new generation of wireless handhelds.

    3. Re:I Disagree by DarkVein · · Score: 1

      Agreed.

      Instead, that course should concentrate encapsulation and presentation of data intended for human consumption. The course should open up with a primer on XML syntax and structure. They should stress that languages like XML, XHTML, and HTML are designed to tell machines things that humans would understand from presentation. CSS is should be introduced, with basic to intermediate layout and presentation techniques, especially linking, just so the class understands that their output doesn't have to look like crap, and structure comes first. ECMA Script (Javascript) should be covered in a different class, but it's structural placement and some examples should be touched upon.

      A second followup course should deal with ECMA Script, introduce HTML Forms briefly as an introduction to XForms, and hit upon more server-side concepts like mod_rewrite, cool URLs, smarter addresses, etc. While the first course concentrates on form and "what", this course focuses on execution and "how".

      Good layout techniques with CSS should be covered in a more artsy course dedicated to dynamic presentation. That means reflow, not gifpix. This course will cover concepts concepts leaning towards good UI design: Why shouldn't you remove underlines from links lightly? It should spend a lot of time on text layout: optimal widths (why they're optimal), whitespace, line height, kerning, serifs, distraction (animation). Color coordination should be covered. Basically, this is a layout and design course, not a course on CSS syntax. Concepts learned should be applicable to other style sheet languages. Students should be encouraged to design right before introducing wrong hacks for IE.

      --

      I'm as mimsy as the next borogove but your mome raths are completely outgrabe.

    4. Re:I Disagree by rmohr02 · · Score: 1

      For a vocational program, I agree that a course on upper-level HTML/CSS/JS isn't a terribly bad idea. However, if I'm getting a Computer Science degree from a four-year university, I'd rather my courses focus on theory and abstract views of computer programming than HTML.

  12. CS, or IT? by Bluesman · · Score: 1

    "Information Technology" sounds like a re-branding of the Communications major, possibly with a few more courses thrown in on computers. I don't think the curriculum really matters, as long as you get a degree at the end, right?

    But if you seriously want to learn about the technology that drives networks, business, etc., you need to start at the lowest level with an understanding of how binary works and what that means. Then progress to how this works in computers, with bytes, registers, memory, busses, etc.

    I think computer science or IT majors could be substantially more helpful if they started with these principles before jumping into the Hello World in Java. At that point, the machines are still a magic black box and the abstraction on it (push the green button to compile) become too ingrained, and it's a lot of work to get a student to see past the abstraction to what's really happening.

    I mean, learning about pointers in C before learning assembly language and compiler design seems ludicrous to me, but that's the way most comp sci majors are laid out, apparently. We don't teach math by showing students how to use a calculator to do calculus and then show them "what's really happening inside."

    So, if you want a good, useful curriculum, start from the ground up.

    --
    If moderation could change anything, it would be illegal.
    1. Re:CS, or IT? by Austin+Milbarge · · Score: 3, Interesting

      I totally agree with you. I taught at two colleges in New York and let me tell you, who ever makes up these curriculums are really doing the students a disservice. I found it very frustrating because these students were pushed along with high level concepts and buzz words. Dont get me wrong. Technologies like COM, ActiveX, .NET, JNI, J2EE, XML, JavaScript, ASP, Applets, CGI, VRML, etc, etc, etc... are all useful and great. But they come and go almost everyday! Whereas basic concepts like pointers, stack frames, dynamic memory allocation, linked lists, hash tables, trees, file mapping and virtual memory are the foundation of all computing and are ingnored or barely mentioned in schools anymore.

      Why? Because learning this stuff is downright difficult. But this is where the science is. Most colleges and certification courses who promise big $$$ to it's students who graudate, don't have the time and resources to teach students the basic building blocks, which is why I feel we (America) are losing our grip in IT on a global scale.

      Another piece of the spoiled pie is that these students are taught about technology mostly through Microsoft products and Microsoft's marketing and never understand how makefiles or compiler switches work. I can't begin to tell you how many companies I've worked for that hire button clickers and mouse draggers only to find out they are paying BIG $$$ for a guy who can barely solve a problem without looking through his Microsoft technet CD or worse yet, re-installing Windows! We really need to get back to the basics and teach computer science and NOT some company's marketing campaign.

    2. Re:CS, or IT? by wan23 · · Score: 1

      Er... how are compiler switches and makefiles real computer science? Be it a button or a command line switch, it's all just an implementation of a utility and has nothing to do with the actual task being completed, let alone real computer science.

    3. Re:CS, or IT? by Anonymous Coward · · Score: 0

      Of course it does! Part of computer science IS understanding the tools we use and how to use them affectively. A doctor learns how to use a stethascope doesnt he? Are you saying that is not scientific? My mentioning compiler switches was because these switches (be it command line or button) can affect how code is generated. We've all written programs that run in debug mode and crash in optimized mode. It is important to understand underneath the covers as to how code is generated by these tools and not rely on defaults set by their manufactures to get you by. This is just one of many things that students aren't taught but become essential in the work place.

  13. trade school curriculum by gyratedotorg · · Score: 1

    this looks like a trade school curriculum. not that its bad, but lets not forget that trade schools are only meant to train you for a particular job, whereas college trains you to think and solve much broader problems. this is probably why so many of the tech consultants around here who *dont* have cs degrees, quickly become useless when you start talking about things they didnt learn about in a classroom (eg: anything non-microsoft). but i digress.

    your curriculum would benefit from courses that arent so platform/technology dependent, such as algorithms, data-structures, and things like that.

    --
    Gyrate Dot Org - "Where high-tech meets low-life"
  14. Semester Long Projects is the Way to go. by saden1 · · Score: 1

    The best way to gain skills is to work on semester long projects. Back in school did several semester long projects and my favorite was one in which we simulated a UNIX operating system using Java. It was challenging. It had a console all the little UNIX command line apps (cat, talk, edit, vi clone, supported piping, etc). I doubled my skills as a programmer and my Java skills went from 0% to 100% thanks to that project.

    --

    -----
    One is born into aristocracy, but mediocrity can only be achieved through hard work.
    1. Re:Semester Long Projects is the Way to go. by mabhatter654 · · Score: 1
      On the same note, I've worked for a while with an older worker who was from Britian. Their classes when he was in school were all linked together. Much like you're saying, particularly in IT [he's not asking about CS! That's a different monster!] where solutions matter...not how pretty it is. It would be better to structure the courses around projects...then allow the students flexiblity in solving the problems. Also, that would get rid of some courses [like posters whined about HTML] as they would be required skills to learn even though not specifically taught.

      The problem I see is that IT guys are inflexable in changing things...so many places want somebody who has 3-5 years on some specific program [but can't ever seem to pick a good one!]... But from what I've seen of CS people they come out of school stupid and unemployable. Sure they can write a really cool OS...but they couldn't explain any reason to a manager why to USE it!

      There are many more IT people than CS people...and most "hackers" fall into the IT catagory. IT is about getting the job done with the tools in front of you NOW. CS is about inventing new tools...which isn't important to most companies to have perfect tools...they just want a job done.

  15. Theory by Ouroboro · · Score: 3, Interesting

    I can't speak to your network engineering curriculum, but the curriculum for developer is woefully lacking in any theory. What you have designed here is a curriculum that will produce individuals that are capable of producing software that conforms to a specification, but have not been prepared to create a specification.

    There needs to be courses in data structures, algorithm analysis and operating system theory. I would concern myself less with teaching someone how to be a Java programmer, or a .net programmer, and more with what skills are required to be a good X programmer, where X is whatever language/technology that he or she is presented with. This means that the curriculum and your student aren't obsolete when there is a technology du jour.

    I will say that the one thing that the CS curriculum that I was involved in didn't prepare me effectively for was, documentation. I think that it would have been nice to have been required to produce more in the way documentation for the projects that I was involved in.

    --
    When I want your opinion I will beat it out of you.
  16. More than tech skills are necessary by XBruticusX · · Score: 1

    Those aren't bad from a skillset standpoint, but you should probably work in at least one 3 hour technical writing course, and maybe another one concerning the basics or principles of how the IT business works. Weekly, I see brilliant engineer/admin types crash and burn because they cannot adequately express themselves and sell management on why a project failed, why it is necessary to pursue a project, who should get the credit for something actually working, etc.

  17. Stack overflow!! by frenchgates · · Score: 4, Funny

    CS205 has CS205 as a prerequisite! I think recursive courses should be reserved for higher levels.

    --
    Syntax error: loose != lose, affect != effect, then!=than
  18. Oh dear Lord... by (trb001) · · Score: 3, Insightful

    This isn't a CS curriculum, it's a trade school curriculum. Here's why:

    First off, don't have speicifics! College should make you learn to think, not make you learn what to think. It's trite, but it's true...the best curriculums expose you to new thought processes, new types of systems and new algorithms.

    Why are you taking three semesters of 3 different databases? Have one course: Relational Databases, and take a week to explain the difference between the three. You aren't trying to get someone their certification before graduation.

    Where's your fundamental coursework? Data objects? Operating systems? Comparitive languages? Learning how to write hello world? You need these courses as the backbone. Anyone on /. can tell you that once you pick up the fundamentals of programming (which, fyi, takes years to come to grips with and more years to master), switching languages is as easy as learning syntax and a little about the internals of the language. C -> C++ -> Java -> Pascal -> Perl -> VB...all have the same fundamentals.

    Two semesters of Exchange? Why? Very few people actually need to know the inner workings, and buying a book for $50 is tons cheaper than two semesters. Teach this through network theory and protocols.

    Historical courses...a history of software, hardware changes/design, the 'family tree' of langagues...these help students to flesh out why the smartest people in our field made the choices (some good, some bad) that they did. There were good reasons for creating what seem like God awful languages ((((Lisp/Scheme?)))) as well as needs that lead to developments like Perl and relational databases. Having a professor over the age of 50 who remembers the days before relational databases is a must...someone who worked on a team to write their own would be even better.

    I liked the network theory portions of your curriculum, but there's way too much. A semester (maybe two) on the history of networking, TCP/IP and other protocols (why doesn't anyone use Token Ring anymore?), along with basic, cross platform client/server networking in C (if you can write it in C, you can do it in any other language IMHO). Don't have an entire semester of routers, it's just not worth it.

    In general, the best curriculums require overviews and offer electives in specifics, typically available starting your junior year (after you've gotten your feet wet). As much as possible, stay away from specific, commercial technologies. Even though Cisco is the leader in routing, teach what routing is without using the name 'Cisco'. If the student is smart, they'll be able to recognize what Cisco did well and why becaues they have the theory to back it up.

    --trb

    1. Re:Oh dear Lord... by dubl-u · · Score: 1

      Why are you taking three semesters of 3 different databases? Have one course: Relational Databases, and take a week to explain the difference between the three. You aren't trying to get someone their certification before graduation.

      Heck, why not take out the word "relational" and cover the broader topic?

      I'm so tired of hiring people who think there is no possible way to store data besides a relational database. I can't count the number of people I've had to grab by the ear and drag around the office saying, "Look! A word processor! Look! Networked Quake! Look! A giant LDAP directory! Look! Google! None of these things use relational databases but they somehow still haven't fallen over and died. How is this possible?"

      Ok! Sorry. My rant for the week is over. I just couldn't take it anymore.

    2. Re:Oh dear Lord... by /dev/trash · · Score: 1

      I know of a local 4 year college that boasts that "along with getting a great education in CS, you also will become MCSE ceertified."

    3. Re:Oh dear Lord... by Anonymous+Cow+herd · · Score: 1

      Uhh... word processors store data in flat files, if you need a whole class on flat files, you need help. Networked Quake doesn't even store data on any scale, other than log files. And I think Google uses an RDBMS at the back end to handle some of the indices. I could be wrong on that one though

      --
      Ita erat quando hic adveni.
    4. Re:Oh dear Lord... by GoofyBoy · · Score: 1

      >There were good reasons for creating what seem like God awful languages ((((Lisp/Scheme?))))

      My brain refuses to believe that there is any good reason for LISP to exist.

      --
      The surprise isn't how often we make bad choices; the surprise is how seldom they defeat us.
    5. Re:Oh dear Lord... by Anonymous Coward · · Score: 0

      Microsoft Certified System Engineer certified?

    6. Re:Oh dear Lord... by dubl-u · · Score: 1

      You've missed my point entirely. RDBMSes aren't just about storage; they're also about retrieval and processing. Many people don't seem to get that you can build applications without using an RDBMS.

      word processors store data in flat files, if you need a whole class on flat files, you need help

      Yes, they store it that way. But do they make changes to documents via SQL queries? No.

      Also, there's a big difference between dumping some stuff out to disk and a good file format, especially one that needs to be upgradable and interchangable over the span of many years. Having reverse-engineered a number of file formats, I'd say a lot of programmers apparently need a class in file format design.

      Networked Quake doesn't even store data on any scale, other than log files.

      Except, of course, for megabytes of level data, used mostly on the client. But my point is that Quake, and especially networked Quake, does a whole lot of intense processing of data in a cooperative fashion without a line of SQL. Why? Because it's too slow and doesn't manage the data in the ways that you need.

      And I think Google uses an RDBMS at the back end to handle some of the indices. I could be wrong on that one though

      Unless they've made radical adjustments, they use no RDBMS in their search. I've heard they use 'em for billing and reporting on the AdWords stuff, but as far as I know, the live stuff gets nowhere near an RDBMS. As it shouldn't.

  19. Similar to many of the others, but a few more item by Mycroft_514 · · Score: 1

    Yes, your curriculm is design to produce a "90-day wonder" programemr. It is not designed to generate an analyst, or a senior programmer.

    You need to focus on several underlying topics. To include:

    -OS design
    -Compiler design
    -Database design (and not just Relational, you need Heirarchtical and network model theory as well)
    -Graphics design
    -Statistics (If you think you can be a DBA in a relational world without stats, dream on)
    -Intro to languages (a kind of survey of what languages are out there and strengths/weaknesses)
    -Network principals (Not available when I went to school as my degree pre-dates LANs)
    -Screen design

    That should do for a start. Oh, and certifications from vendors are so much waste paper when it comes to doing the real world job.

  20. My thoughts ... by abrotman · · Score: 1

    Make the first cirriculum more general. Discuss how things like SMTP,NTP,DNS, etc. work. Then make the intro for Linux/Windows mandatory and the rest for each should be optional. You shouldn't force a person into running an exchange server. Perhaps offer a class in "Alternatives" where you would show Exchage,Notes,OCS,Postfix, sendmail, etc. and compare each and thier benefits. This could pertain to many things such as web servers, smtp servers, database servers. perhaps switch the order of 203 and 303. Learn the basics of a network design before actually implementing one.

    For the second, why are people doing development learning Exchange? Also, if i were designing a programming ciricculum, I would start them with C/C++, then perhaps Java, then C#. All the way attempting to avoid using something tied to a platform(ie Mono for C#). Another thing would be to swap Oracle and MySQL,PostgreSQL. Oracle is quite a bit more DB than most people need. Postgres is very ANSI SQL compliant. And honestly, who the hell uses ColdFusion anymore. And I could be mistaken but I imagine ASP will die also as more people pick up C# for web stuff. And PLEASE dont forget about PHP and Perl. PHP seems to be growing in popularity, and Perl is an old standby that can be used almost anywhere(including sysadmin work).

    But hey... these are just my thoughts. I am not a professor. Also look at theory just as much as practice. The idea of how to make a Web script(PHP,etc) work correctly is just as important as the actual knowledge of doing it.

    1. Re:My thoughts ... by ParamonKreel · · Score: 1

      I would amend the programming languages to state that They should be taught basic (linear?) programming C style first such as algorightms, loops, control structures, and the like.

      Then they should move into a developed OO language and learn OO. I'd say java just because I think it is easier to do the OOP part of coding in Java/C# due to the more simplified syntax, (lack of pure virtual vs the other possibilites), garbage collection, and no multiple inheritence(Java). These things can be very good, but many time you can loose youself in these issues. Finally getting out of the Language theory with a finisher course in C++ for advanced OOP and Patterns.

      This is somewhat similar to what I took. I transfered into CS from Mechanical so I took the fortran / C++ "this is how to number crunch and do basic command line apps" class. Then I went into Java and learned oop. Then we did our Patterns in C++ (which was difficult to double up learning C++ and learning Patterns, but that's what you're there for).

      Then again, I program professionally in Java but in one of my masters classes on Pattern Languages (very cool/interesting) we did it all with C++/STL/Generics (which is nice to know for Java now). This time around I got much of the stuff I missed in C++ the first time, however I still have issues with the syntax in C++, such as things being order dependent (when I'm not used to that).

      Blast me for not being a C++ guru, but I think that the later languages like C# and Java are abit easier to do intermediate stuff in. I did find C++ awesome for OpenGL, but forgot it again after that.

  21. Encourage/Account for internship knowledge by cjhuitt · · Score: 1

    My school really encouraged students to get an internship or two under their belt while obtaining their degree, and it was immensely useful. It made me appreciate a lot more of what I was learning, and think of ways to apply it as well.

    In addition, it made me a lot more hireable, I believe, than somebody with just the straight education that I got would have been.

    On the other hand, my school was lousy at recognizing the experience students would get in internships. For instance, they had two semesters of required classes that were designed specifically to simulate stuff "like it is in the real world". These classes were A) required for those of us who actually had been in the "real world", B) Not like the "real world", and C) Not changed with the suggestions of those of us who had been in the "real world".

    Oh, and team projects suck, but find some way to make sure they know how to communicate and know the importance of coding legibly. Everyone should have at least one class where they have to take someone else's code and make it work for a new application. It would teach volumes.

  22. Different Programming Languages by aWalrus · · Score: 1

    Your proposed curriculum lacks a class that teaches a variety of different (maybe esoteric) programming languages. When I was at college, we had one where we programmed in Scheme (a variant of Lisp), Smalltalk, Clipper and some Java. That may sound stupid at first because you can't delve very deep into each of them, but it does give you a very nice overview of what can be done with different tools. Lisp's syntax is entirely different than what you're used to when coming from a java background. Rules-based oriented programming languages solve very complex problems in an elegant way, etc.

    What's this useful for? They say when all you know is a hammer, every problem is a nail.

    --
    Overcaffeinated. Angry geeks.
  23. More "practical" courses that I would like to see by phamlen · · Score: 1

    Others have already tackled the "this is really a training curriculum" problem, and talked about adding some courses on theory, algorithms, etc. I would like to add another set of courses (probably upper level) that I think would be interesting...

    1) Debugging Techniques
    This course covers the art of debugging, basic and advanced debugging techniques, how to debug someone else's code, debugging client/server applications, debugging performance/load issues, debugging on high-volume systems, debugging technologies, etc.

    2) Development Methodologies
    In today's environment, there are many development methodolgies in vogue. This survey class will cover not only specifics of the Waterfall model, Rational Unified Process, and agile methodologies (such as XP) - but will also cover the theorectical basics of what a methodology must address. Expect discussions of feature/requirements gathering, build/release/maintenance cycles, and other "non-programming" issues.

    3) Building computer systems not programs
    This course covers how to build "computer systems" that consist of more than 1 program. Learn the types of system architectures (client/server, multi-tier, etc.), issues and design considerations for systems, maintenance considerations, debugging issues, etc.
    (Note: this could probably be broken into multiple courses. I would love to see a level 1 and a level 2)

    4) Project Management for Programmers
    (Requirement: Development Methodologies)
    This course discusses the basics of project management, working with a team, breaking a large project into manageable tasks, estimating task length, choosing milestones, etc.
    Although not a substitute for a full Project Management curriculum, this course will give you a good overview of the basics of project management.

    5) Technology Evaluation
    This course teaches the basics of "evaluating a technology." What makes a technology good? What makes a technology obsolete? This course will discuss the theorectical process for choosing development platforms, databases, software, development methodologies, etc. As the world changes, you'll need to figure out which changes to embrace. This course will show you how these decisions should be made.

  24. Re:Similar to many of the others, but a few more i by Anonymous Coward · · Score: 0

    Can you explain briefly why OS design, compiler design, and graphics design are important for people who want to be good programmers (besides being examples of specific types of fairly important programs)? Also, can you briefly explain how statistics has anything to do with being a DBA? What I know of statistics and databases indicates that there is little overlap in theory-- in practice I use databases everyday to generate statistics.

    I'm not asking to be argumentative, but because I am a professional data analyst with a strong interest in programming who would like to understand what else I should know about (there's so much to learn, you know the deal).

  25. Reading & Writing by duffbeer703 · · Score: 3, Insightful

    IT people need to be able to read and write coherently.

    I don't care if you're the best Java/.NET/C/whatever programmer on earth. If you cannot effectively communicate, you are not a very useful employee.

    --
    Conformity is the jailer of freedom and enemy of growth. -JFK
  26. Re:Similar to many of the others, but a few more i by llefler · · Score: 1

    -Screen design

    One of the most important aspects of being a programmer. Too many developers don't understand what makes a good user interface and what doesn't. Things like consistency through applications and the OS. Not forcing the user to constantly switch between keyboard and mouse. Efficient data entry. If you think you can make a good user interface using a web browser, you are probably wrong.

    --
    It is amazing what you can accomplish if you do not care who gets the credit. -- Harry Truman
  27. Question for the submitter by Jmstuckman · · Score: 1

    What kind of degree is this curriculum supposed to produce? The editor mentioned "CS Students" as the people who would take classes like these, but this curriculum has very few Computer Science courses in it, so I have my doubts that it was intended to result in a BS or BA in Computer Science.

    1. Re:Question for the submitter by slonkak · · Score: 1

      This is an IT degree. Not CS, Not CE, Not IS. Information Technology. The whole point of this degree is to combine concepts with practical use; the theory most people are ranting about being put to use through different applications. I don't know about most of you, but you can teach me all the theory you want. It's not going to make sense until I get my hands on something and do it for myself. That's what I'm after. These classes will teach theory, but at the same time let you figure it out for yourself...

    2. Re:Question for the submitter by Jmstuckman · · Score: 1

      I see. I think people are ranting because the editor that posted the story mentioned "CS", but there is nothing in the degree that would prepare people for graduate study of Computer Science, as I'm sure you already knew. However, I think that one class in algoritms and data structures would be appropriate for this degree. The class doesn't have to involve any theory at all, and knowing how trees, hash tables, linked lists, and other data structures are implemented (even if they are implemented already by most modern programming languages) is really required to write any significant program nowdays. I also wonder if the order of C++ and Java should be enforced -- the way things are set up now, both the C++ and Java intro classes will have to teach the students what a variable is and what a loop is, and that's a waste of time.

    3. Re:Question for the submitter by FortKnox · · Score: 1

      I wanted to find an actual post of yours to respond (so this is kinda off topic of the thread).

      But what you say about needing hands-on and such is very college like. It isn't until several years after you are out of school do you understand that you use more of the theory you get in school than the specifics. I know people have been going nuts about it, but theory is what you need, because in 10 years, technology changes. Either you have the theory to change with it, learned the theory from application, or are like one of the many COBOL programmers I've worked with... sitting in your job hoping the company doesn't take the initiative to upgrade technologies and making your job obsolete.

      --
      Good quote, too many chars. Seriously, the slashdot 120 char limit sucks!
    4. Re:Question for the submitter by llefler · · Score: 1

      Ahh, I understand now.

      Ok, here's what you are proposing.

      Information Technology: Network Engineering

      CCNE
      MCSE
      RHCE

      Information Technology: Development

      MCSD
      RHCE

      It should take all of three weeks to complete the course work, but we'll make it 5 so you can have a break in between.

      I doubt that the developer track has any merit at all. If you can't understand the business you can't provide any solutions.

      For the networking side, you're good until the software changes. But assuming you can get hired, you can probably talk them into retraining as the technology changes.

      Not only would I consider the degrees worthless, I wouldn't want to work with someone with such a limited education. Personally, the most useful classes I took in college are the ones that help me understand how our business works. 2-accounting, 2-economics, finance, statistics, 2+-english.

      Less than useful are the 3 datacom and networking classes. Few jobs out there for Netware (3.x), modems, codecs. You don't know how happy I am to know the difference between ethernet, arcnet, and token ring. And more recently, that amazing technology known as ATM. Windows 2003 is going to look good on your transcript when you graduate and Longhorn is the Win OS to run.

      --
      It is amazing what you can accomplish if you do not care who gets the credit. -- Harry Truman
  28. Capstone? by UserChrisCanter4 · · Score: 1

    Outside of the obvious comments about teaching the fundamentals, not a particular method (it does seem a bit too community college-ish), I would recommend a project-oriented capstone course. Of the many students I've spoken to who needed one of these, the vast majority found them to be the most difficult but worthwhile classes. The University of North Texas (located a few miles from several big-name PC game developers) have an interdisciplinary game design course that's pushed as one of the final courses for students interested in the subject. It encompasses both the CS department and the art department, and they have one semester to develop a working game. Something like this teaches planning, working as part of a team, logical delegating of tasks, time-management, and a whole slew of other things that even a difficult upper-level programming (or art) class simply can't teach.

    As an alternate example, a friend of mine graduated a little less than a year ago. His senior Electrical Engineering project was a small group effort (~6 students, IIRC) to design the power source for an anti-personnel missile for Lockheed Martin. Basically, they were given specs (size, acceptable heat levels, power output needed), and were working to design an actual part that would be used in an actual product. The most telling part of the experience was one statement he made a few months later:

    "You know, I wish that everytime a professor had taught us something, they would've said, 'by the way, this doesn't actually work in the real world'".

    A good application of learning can have a much better result for the student than one more class on topic X. Of course, if poorly done, such classes have the ability to completely screw over good students, impart little knowledge, and piss off industry contacts, but making it work shouldn't be too terribly difficult.

  29. Team Programming and Project Management by TekZen · · Score: 1

    I think it would VERY appealing if an applicant fresh out of college had some experience in how to develop/maintain software in a group. This would only apply to the software development track, but a course that gave an overview of several team programming methodologies would be great. To many college software projects seem to be stand-alone apps developed by a single programmer, and that is not very "real world".

    Along the same lines I think that both tracks should have a course in project management (not a course in MS Project). Every self respecting geek always has a project going on (or two or twelve).

    -Jackson

  30. What About The Hardware ? by Ed+Almos · · Score: 1

    Software wise I can't fault your course, but there appears to be little if anything about computer hardware.

    1) Network hardware. Hubs, switches, routers, firewalls.

    2) PC Hardware Architecture. ISA/PCI, CPU Architecture, Video systems.

    3) Comms. ASDL, Modems, Firewire, USB.

    I've actually come across a recent Computer Science graduate who didn't know the difference between a PCI slot video card and an AGP card yet he could talk forever about CPU architectures. He didn't get the job.

    --
    The more corrupt the state, the more numerous the laws. - Tacitus, 56-120 A.D.
  31. GAH by r00k123 · · Score: 0, Redundant

    redevelop the IT curriculum.

    For you prospective CS Students

    For the MILLIONTH time. CS != IT (see, if you're IT, you might not get that)


    IT is CS lite.

    1. Re:GAH by Ed+Almos · · Score: 1

      Maybe IT is CS Lite but if a CS graduate applies for a job as Deputy IT Manager I would expect them to know a LITTLE bit about the hardware used in day-to-day business.

      Ed

      --
      The more corrupt the state, the more numerous the laws. - Tacitus, 56-120 A.D.
    2. Re:GAH by Anonymous Coward · · Score: 0

      Get off your high horse Troll.

      A good IT program is more practical than many (not all) CS programs when preparing people for the world of corporate IS.

      The IT program (later renamed IS then MIS then back to IT ad nauseum)I attended was in the school of technology, and required multiple theory classes in each of design , databases, and telecom (or did 8 years ago), AS WELL AS communications and business classes. You were also required to have practical classes in the IT areas.

      The result? I'm now a project manager for a Fortune 100 corp (although I was much happier as the tech guy/architect), years ahead of the CS grads from the same school(who can build OS's and compilers, but my company doesn't need OS's).

      Most of my friends were CS majors, they built compilers and OS's that no one ever used, I (and my teams) built applications for local businesses (from requirements gathering to implementation) our junior and senior years.

      Most of those friends are on their third or fourth employer, still doing just-above-trained-monkey level jobs. Yes, the theory is important, I mainly deal with languages and technology that did not exist or was on the far fringes when I was in school; but you don't need a full-on CS degree to succeed. Actually, at this corp, CS is at a disadvantage because most of the time you have to be able to communicate with the 'business types' that the CS students made fun of in school (you do know that in most instances, they are the ones who write and sign the checks!)

    3. Re:GAH by Kwikymart · · Score: 1

      IT is what CS students should be studying in their spare time, and not some "lite" version.

      --

      Buying a Dell computer is equivalent to dropping the soap in a prison shower.
    4. Re:GAH by ParamonKreel · · Score: 1

      This is why I think engineering schools should require social activities also or more intermingiling with other schools on join projects.

      I knew more business students in college than other CS students (I knew 2 by name because they were TA's and had their photos and names on the web).

      It wasn't me either. I was on the football team (talk to jocks (tho not dumb at this school)), in a frat (talk to drunks and people from other schools), and ran the tv station (talk to artsy people and get money from the Deans / get permission for important events). The CS guys were just scared to talk to anyone who they hadn't sat next to for 50+ hours in the cs lab. My senior year I had to start being overbearing to get them to talk in group projects.

      Then again I've had more luck in masters school, as most of the people have been working for a while and have to talk to others. Most CS people seem to loosen up after work hits them.

      All of this said (in regards to the parent), In my current job I've had to build a compiler, and write a language / parser. But then again my job is a bit different than my previous IT jobs as I'm asked for Design solutions all the time, not just monkey code.

  32. He calls this homework? by MalleusEBHC · · Score: 1

    Yes, this one may sound like Slashdot-Do-My-Homework...

    Don't worry Cliff. After reading his proposed curriculum, I don't think he has been doing his own homework for some time now.

  33. Typo ? by theefer · · Score: 1

    * Pretending you're a programmer when the hot secretary comes around.

    I think you skipped a "not" in this sentence, didn't you ?

    --
    theefer
  34. Some practical neccessities by DesScorp · · Score: 1

    While I agree with most posters that an IT program should focus on important concepts rather than specific products, there are a couple of "products" that are so important that they should be included in ANY program

    - Unix; Don't focus on one brand, or even on one kind of unix (such as linux), but you need to know the basics of all unix variants. Take an O'Reilly Nutshell Book approach to this.

    - Windows; Same thing. There are basics that apply across the board, especially now that everything is based on the NT kernel.

    - TCP/IP; these are the rules of the road, baby. Everything uses it to communicate now.

    While products come and go, some things are going to be in use for a long time, and even if they're not proper "academic" subjects, their practicality and neccessity demands some study, even at Uni.

    --
    Life is hard, and the world is cruel
  35. Re:Similar to many of the others, but a few more i by Mycroft_514 · · Score: 1

    The design of the underlying structure of a relational database is heavily based in statistics.

    When you send an SQL query to the DBMS it makes use of the statistics of the various tables to determine the best path to get to the data. To design the database, you need an understanding of how the DBMS goes about doing this to allow you to tune queries more effectively.

    In the case of partitioned tablespaces, one must use statistics to determine how best to partition them.

    It goes on from there, but I think you get the gist of it.

  36. No good by Permission+Denied · · Score: 2, Informative
    It has been mentioned (repeatedly) that this is a trade school curriculum, not a CS path. However, even as a trade school curriculum, this seems pretty bad to me. I'll concentrate on the programming aspects of the curriculum rather than the administration bits (although I have reservations about those as well).

    I once TAed a course on web programming to adults with little background in programming. Whereas you split up web programming into FOUR COURSES, we covered all that material in ONE COURSE. The students had enough programming experience and concepts from other courses that they were easily able to pick up Javascript, Perl, Python, PHP, etc. We spent no time on HTML coding since students were already familiar with other markup/meta- languages (even if they didn't have experience with XML or EBNF, enough exposure to programming should make learning HTML trivial).

    Good programmers have a solid understanding of underlying architecture, even if they program GUI or web applications in Python or Java. You list no course on "Computer Architecture" or even "Assembly Programming" (not the same thing but often combined in one course). A course on "Compiler Architecture" should be central to any curriculum, not only because it elucidates programming languages through their implementations, but also because it's a perfect example of melding programming with CS theory.

    Instead of separate courses on Java, C++, C#, etc. you need to have a single course on "Programming Languages" which is a survey course of the various languages. This should be taken after an in-depth study of programming in one language. The in-depth study will allow the student to get into more "advanced" topics (in quotes because I'd consider them rather basic) such as advanced data structures (such as B-Trees), Big-O/Theta/Omega notation, hash functions, basic design patterns, loop invariants, etc. It helps no one if you simply re-teach the same elementary topics again and again but in different languages.

    The programming language survey course would allow students to apply already-mastered "advanced" concepts to new syntaxes and idioms. The survey course should not simply showcase various procedural programming languages (all the languages you list), but should also include languages like Scheme or Haskell (functional programming), ML (type inference and other type theory), Prolog (logic databases), and perhaps something like Forth or Postscript. Students should be able to take lessons learned from these more "esoteric" languages and apply them to whatever they're doing (I use type safety lessons from ML in my C, functional programming in my Perl and PHP, embedding business logic into a database for end-user modification akin to Prolog, and a stack is not some abstract but mostly useless example from CS theory, but something that I actually use, thanks to Forth/Postscript). If you try to teach functional programming in C# or Javascript, students will have a difficult time following you as these languages can certainly do some functional things but they aren't designed for it, so it's not the right place to learn functional programming.

    Due to a solid background in OO theory and implementation, I was able to pick up Objective C in no time at all when I first had to do some Mac programming. Objective C takes a completely different approach to OO programming and C++, Java or C#. I was able to understand the difference between statically-bound and dynamically-bound methods immediately because I know how vtables, etc. are implemented in C++ and was able to extrapolate what a runtime binding system could do for a C-like language from experience with functional languages. Message forwarding posed no conceptual problems - it just made sense. Although Java may now support introspection, you won't find much use for it without dynamic binding, so I doubt Java programmers can easily learn how to use that feature of their language without at least some experience in Objective C or Smalltalk. This is not some min

  37. programing languages in CS by bluGill · · Score: 0

    Anyone taking a CS course program should not be allowed credit for taking classes in C, C++, Cobal, Fortran, Scheme, Lisp, Assembly, Smalltalk, Java, or any other single language. Those courses are offered, but your grade will not effect your GPA, and will not count towards graduation. CS students should be able to pick up any language they need in their own time.

    CS should require that everyone take a "programing to hardware" class where assembly is used (doesn't matter which, though I recomend an older RISC one where you don't have to worry about delay slots and the like that complicate modern architectures, yet have simple instructions)

    CS should start everyone off with something they have never done. The first class I took in CS requried Scheme, and the professors made it clear that the primary motivation was odds are none of us had seen it. Secondary motivations were: is Lisp is cool, and there is an excellent introduction to programing book from MIT that uses scheme. This class is the first introduction to data structres and algorythms that most CS students should get. There should also be one required programing language course, it should cover at least 12 languages in 10 weeks, and require some algorythm be implimented in all of them. (better yet several so you can see the advantages and disadvantages of each)

    CS should concentrate on on algorythms and data structures. (perhaps design patters should be added in? there weren't written when I graduated but they seem useful and teachable)

    There isn't time to cover everything, so there should be a graphics line that eventially gets into games. There should be a real-time line, for those interested in time critical things there should be high performance line for those interested in parrell and super computers. There should be a historical line for those interested in that, complete with runing on that old punch card machine in the basement of the physics building and programing it (if it works...) And several others that I can't think of right now. Not all of the above will be long enough for a degree, but the total should be more than a student has time to take in 4 years.

    1. Re:programing languages in CS by green_crocadilian · · Score: 1

      Anyone taking a CS course program should not be allowed credit for taking classes in C, C++, Cobal, Fortran, Scheme, Lisp, Assembly, Smalltalk, Java, or any other single language.

      I don't understand your reason for not giving credit for language classes. That would drive away people under credit pressure (multiple majors, transfers, no AP credits from high school, etc). Those people would be forced to learn the language on their own time (kinda inconvenient in the middle of a group project), probably putting them at disadvantage.

      There should also be one required programing language course, it should cover at least 12 languages in 10 weeks, and require some algorythm be implimented in all of them.

      Interesting idea. I wish my school had one - would have helped the large fraction of my friends who are scared of Perl...

    2. Re:programing languages in CS by bluGill · · Score: 1

      The point is two fold: first, if you can deal with CS, learning a language isn't a big deal. Most of what you do will be covered in C, Java/C++/C# (depending on your school), a LISP (likely scheme, which was covered in the first class you took, and the prof gave you time to learn it), or a scripting language (again it doesn't matter which, I used TCL, others perl, python, or ruby. Even visual basic would work)

      Learn those in the early years, and if you are a transfer student learn the ones you need over summer. Although if you can't get by in a completely new language within 2 days you should switch majors. (mastery takes years, but within 2 days you know the important syntax, have an idea of what the librarys contain, and know where to look to find the details)

      Don't forget that the 12 languages in 10 weeks class will cover most of the languages you need too, so if you are concerned about not knowing something you need take that class.

  38. Re:Similar to many of the others, but a few more i by Anonymous Coward · · Score: 0

    So designers of databases typically perform statistical analyis?

  39. What degree program - what result ? by MerlynEmrys67 · · Score: 2, Informative
    Ok - if this is a two year, quarter hours... might be OK. However 9 hours credit for setting up a linux box ? Those three courses should go into a single class, same for MS (or get rid of both of those classes)

    This ciriculum is a complete waste for what I would be looking to hire (a software engineer) - might be Ok for a network/system engineer

    For CS - I would hope to see
    Survey of computer languages - one of each type
    Advanced computer language (pick one above>
    Data structures (in a language not taught above)
    Networking (not setting up - programming)
    OS development (not do something with Linux either)
    Compilers
    Distributed Computing (not p2p - real app)
    Project/Team class (solve a hard problem - program management)
    Hardware design/CPU architecture/System level stuff
    Technical writting
    Technical Speaking
    Algorithms

    - now since I tend to hire networking people
    Advanced Networking
    Security/Cryptography
    Advanced OS concepts

    Hefty list, and not geared toward what your program is producing at all - but this is about what I would look for.

    The end result is, what job do you want when you get out - looks like your ciriculum will produce system/network engineers, I am after people that have software engineer somewhere in their title... My program wouldn't train you to be able to do that job at all

    --
    I have mod points and I am not afraid to use them
  40. I'd like to see more business by nelsonal · · Score: 2, Interesting

    It seesm like a ton of Information Resources are utilized at businesses, and as the resident business geek, I get tons of questions regarding how some accounting proceedures work (journaling, account closing, payroll). So I'd suggest that technical IT curriculum, not those who will be doing research into CS theory but those who will be the day to day practitioners of it, get a few accounting classes. For starters I think the average IT student would benefit from a Principles of Accounting (100 level class) and a managerial finance (how to use accounting to make business decisions type of 200 level class) almost all colleges and technical schools offer them and they would probably do more than any other thing to improve the productivity of a graduate than anything else I can imagine. As a bonus it would be quite useful for anyone planning to start a business. Finally, the thinking behind accounting is very similar to the data manipulation that I've seen in beginning programming classes. Later, a personal finance class and principles of economics class would be more marginal improvments.

    --
    Degaussing scares the bad magnetism out of the monitor and fills it with good karma.
  41. Roughly what everybody else is saying... by Anonymous Coward · · Score: 0

    Your basic problem is you want people who know
    how to use certain products and nothing else.
    This is generally a bad idea for a CS major
    or even a tech school major. Realize when VC++
    changes the interface your requirements for VC++
    becomes worthless. Knowing C++ is still useful
    even if a compiler changes, support gets dropped,
    or you change to a new platform. Should VC+ .Net
    end up going nowhere, you still want people to take
    a worthless class.

    Try to understand, curriculums tend to change very little.
    When they do change, it means anybody in that major
    will have to switch to a new one, thus many people
    who took a class will have to take another class.
    Realistically, this curriculum you list has very little
    relevence to an actual CS curriculum. You should
    have started by looking at a real CS curriculum
    (or even several). From there, you should have a rough
    idea of what to come up with.

    Also realize while this may work for you, it likely won't
    work for others. Would you want someone who graduated with
    a degree but only took classes with no relevence to
    anything you use or do working for you? Just think of someone
    else who would want a CS graduate but only uses a few of the programs
    you have listed.

    Overall, I think its a good thing you aren't the one
    designing an actual curriculum. There are several problems
    within your listed curriculum and it will have no relevency
    to many other people who might be looking for CS grads.

    Stick to managing.

  42. Re:Similar to many of the others, but a few more i by Mycroft_514 · · Score: 1

    Of the data, good DBA do, yes. And we are talking statistical analysis more of the distribution of the data.

    If you have 50% of the values of the first field in the key are 0, then that isn't that good of a first key field, since it will tend to lump your data together. This is just one example of the kinds of things one must be aware of.

  43. Re:Tech training vs. education - Crackheads! by Anonymous Coward · · Score: 0

    All of you are wrong!!!

    You only need two classes to survive in IT these days.

    1. Outsourcing 101
    2. Marketing 101

    Who needs to learn algorithms, principles, and all that stuff? Just outsource it all and sell management on what a great thing it is. Get that bonus... then on to the next company.. rinse... repeat...

  44. Homework? Yes. Indeed. by tchdab1 · · Score: 1

    And the student programmers in this school are asked to develop a working class enrollment management system, or a college payroll system, or a proposal for a desktop upgrade.

    Etc.

  45. What I think is lacking... by CliffH · · Score: 1

    Disclaimer: I do NOT have a CS degree in any way, shape, or form.

    Of the many things noted in that curricullum that is lacking is a fundamental understanding of the HARDWARE you will be writing to or working with. It's all well and good to know the software, but I don't know how many CS students I've seen that could write these nice little programs that do great little things, but couldn't fix a basic problem on their system (hardware or software wise)if their lives depended on it. This is by no means the rule, just the observations of a lot of graduating CS students that have come my way. I think if more schools focussed more on the underlying hardware theory, the software theory would fall into place much easier and the students would have a much fuller grasp of what they are doing.

    Now, in stating what I have in the above paragraph, if you're looking at just doing a training course on specific tools, you HAVE to include hardware knowledge. I guarantee you any school will get a bad name if someone fres out of college with high marks is thrown into a Net Admin job or head of IT and can't troubleshoot a basic problem like a faulty power supply, memory, corrupt drivers, file system corruption, etc. Do paper MCSE's ring a bell???

    --
    sigs are like a box of chocolates, they all suck remove the underscores to email me
    1. Re:What I think is lacking... by ParamonKreel · · Score: 1

      I think this in part could be a social issue. Seriously. After going through being the only CS person in my Fraternity, I knew how to fix just about any MS or MacOs Messup you could think of. Then again I also spent double duty removing crippling spyware, viruses, and porn software (Jimmy, why do you have somthing under network connections labeled Sex.com?)

      My computer on the other hand rarely messed up because I needed it to do my coding assignments or I'd have to go sit in the lab with the other CS people... Scary

  46. As a Information Technology major -- by denubis · · Score: 2, Insightful

    Look at RIT
    it.rit.edu

    IT can't be compressed into one track -- you need diffrent skills for diffrent parts. Your webbies will be diffrent from your DBpeople who will be different from your systems people who will be diffrent from your security people who will be diffrent from your HCI people: There's a lot to IT.

    There's also a lot of overlap. (I haven't RTFA, sorry. Papers to write.)
    1) IT people need to know how to program in a REAL programming language. Right now, we consider that to be java, but that's going to be an internal flamewar.
    2) IT people need to know how to speak. Lots of communicatino courses
    3) IT people need to know how to get requirements. Lots of HCI fundamentals -- interviewing, STDs, DFDs, etc..

    Beyond that, look to RIT to get some specific ideas.

    IT is not CS, and it isn't IS. We're happily in the middle.

    1. Re:As a Information Technology major -- by ccwaterz · · Score: 1

      Are they teaching Java in the programming core now?

      I was taught C++ back in my freshman year (95-96).

      A couple years later they dumbed the program down by switching to VB. I would hope that era has passed...

    2. Re:As a Information Technology major -- by slonkak · · Score: 1

      Java isn't technically in the core yet. There is a class this semester under the "special Topics" label, which is basically a trial class. My college, like many, want to dwindle down to VB and I do not want to let that happen.

  47. hmmm... what's the next semester? by cballowe · · Score: 1

    That sounds like one semester there - at least for a university level student. You're splitting up your classes too much - linux, for instance, by the end of a semester, a student should be able to implement a kernel module that does something like /dev/magic8ball or something. An advanced class would involve designing and implementing a network filesystem (including the data structures on disk and all that fun stuff).

    Where I went to school, a 3 unit class meant that you were in class for an hour a week and expected to spend about 2 hours on the class out side of class. 60 units in a semester was a rough semester, but not entirely uncommon (I think I did 56 a couple of times -- 8 semesters of 45 was the requirement for graduating - basically). I think your unit estimates are in line with the time required for teaching those things.

    Both of the course listings sound like topics for a minor in being a corporate IT person at most. IT isn't worthy of a major -- combine it with some business, technical writing etc. and you've got a good start on a career in IT -- call it MIS or BIS (management/business information systems).

    A CS degree is going to be lots of theory, lots of proofs, lots of math etc. Algorithm design, OS design, analysis of complex systems, information theory, etc. None of it should be training in specific technologies.

  48. Developer Hindsight by Bandit0013 · · Score: 1

    I originally started college in Computer Science/Engineering and ended up switching to Information Systems, which was in the college of business. Which track you enroll in really depends on your end goals as a developer. Two quick points:

    1. I love business. All I ever wanted to do was work with accounting, finance, order management, etc. By moving to IS I got a hefty helping of how a business actually works. Because of this, unlike some of my CSE coworkers, I tend to have a VERY good relationship with the end users.

    2. Low level stuff bores me. I have no desire to code an operating system or anything remotely like that. I love to step into my visual studio world, and make some nice data in data out applications that are easy and useful to my end users. My real joy does not come from rewriting a function x times until I shave 5 processor cycles, nor is it from doing some new sort of funky AI. I mean, kudos to all the more "hardcore" folks who like doing that stuff, but my joy comes from seeing a user happy with what I produce.

    So that being said... I think that programming needs to be split into a few tracks:

    There should be a track for what I would call a low level programmer, someone who does the very important coding of operating systems etc. We're talking assembler, circuit theory, pretty much what you'd get in a good engineering program.

    A second track should be made for database / client server programmers. These guys would specialize in SQL, database design/theory, and c++/java.

    The third track would be your web developers, once again I think SQL is a must and then toss in some .NET languages and some coldfusion.

    The tracks should be open enough to let people pursue extras such as AI or any other deeper more technical coursework, or do what I did and fill the extra with business.

    1. Re:Developer Hindsight by ParamonKreel · · Score: 1

      Trimming a function down by 5 cpu cycles doesn't get you too much, cept maybe in games. However when you can find algorithmic issues or major design flaws (why are you running the same query over the VPN 4 times?) can make me very happy. Especially when people are worried that the application is too slow and hten you give a few 1000% speedups so that the end user no longer has to wait 50 seconds for search to return, now he doesn't even know that somthing happened (then again this can be bad because the user thinks you're not doing anything (is it broke?))

  49. Suggested CS curriculum [LONG] by Slipped_Disk · · Score: 3, Insightful

    OK, I'm not qualified to give an IT/IS curriculum outline -- What I DO feel qualified to do is suggest a generic CS outline.
    As many other posters have pointed out, the outline presented reads like a trade school/training course outline: Learn Cisco IOS. Learn MS Win2K+3. Learn Linux (presumably redhat). Learn MS SQL Server, MySQL, Whatever. Learn VB. Lern Visual C++. etc.
    Rather than tying students to a particular product, teach them genericly useful skills.

    For example:

    • CSC-101 : Introcuction to programming
    • CSC-101A : Lab for CSC-101 (people learn by DOING not by having Dr. Fuzzyeyebrows lecture for days on end)
    • CSC-102 : Discrete Mathematics 1
    • CSC-103 : Discrete Mathematics 2 (prereq: 102)
    • CSC-201 : Algorithms and Data Structures (Prereq. 101 & 101a) -- This is where they learn the algorithms...
    • CSC-202 : Analisys of Algorithms (prereq. 201) -- This is where they learn about efficency, complexity, etc.


    Now that they are well-versed in the basics you can start feeding them more advanced topics:
    • Database design (How and why Relational databases work the way they do. Relational algebra, Query optimization & planning, the Hows and Whys of indexes, crash recovery)
    • Database implementation (seperate course where students go hands on and build a database as a semester-long project)
    • Artificial Intelligence (NLP, Neural networks, game-playing algorithms like minimax)
    • Programming Languages -- Not "in this course we are going to teach you lisp, prolog, C, Pascal and Ada", but "Learn lambda calculus, type theory, etc. and how it all ties together to make a programming language like C"
    • Networking and Data Communications - From the hardware level up: explain the basics of how ethernet signalling works, the REASONS behind those annoying "maximum length of a segment" rules, how TCP/IP works, culminating in the students building a network (with whatever software/hardware is available - They shouldn't NEED to use linux or windows or OS/2, they should be able to adapt)
      This course would include a BASIC discussion of security.
    • System Security - How to build secure networks, good policies for security of local machines, encryption and its benefits/drawbacks/weaknesses.
    • Software Engineering - Theory (teach the students the basics of gathering requirements, designing solutions, etc. Get them accustomed to thinking like they will almost invariably have to in the Real World.
    • Software engineering - Practice (semester-long project in which the students use everything they learned in the Theory course to tackle a project, either one assigned to them by the professor or (preferably) one assigned to them by an outside concern. At my school the software engineering class was approached by another section of the university to design outreach software.

    One of the most important things that any student - IS, IT, CS, Trade School, WHATEVER - needs to learn is HOW TO READ THE F***ING MANUAL -- The great failing of my school is that there are people at my level (seniors) who have been "using" the CS department's UNIX machines (Solaris) for almost four years now who do NOT know about "man" and "apropos".
    The things employers (my employers anyway) look for are the ability to THINK and solve problems, and the skills to know where to look to find the answer -- Man pages, news groups, google, etc. are all resources that seem to be wasted on many of my peers. Not knowing where to look is a huge resource sink in the Real World, and will not be helpful to your chances of future employment.
    --
    /~mikeg
    1. Re:Suggested CS curriculum [LONG] by Anonymous Coward · · Score: 0

      Heh, RTFM is an understatement. You'd be shocked (ok probably not but I was) at how the use of google groups has given me a reputation as the guy who can find answers to the "hard" stuff. Fools.

  50. Employers want it both ways! by Anonymous Coward · · Score: 0

    I agree whole heartedly with people who say the underlying theory is most important. However, employers expect you to know how to use specific technology, or they'll never hire you (the Catch-22). A person who gets a CS degree and wants to be a DBA, but has never used anything other than Access to make a simple DB for a class assignment will never get a job!

    A CS or IS degree in and of itself does not seem to be good enough. So, some specific certification would seem to be necessary to even be considered employable!

    1. Re:Employers want it both ways! by jjp5421 · · Score: 1

      The next catch-22 would be the "paper certification". Without appropriate experience the professional certifications seem not to count.

    2. Re:Employers want it both ways! by ParamonKreel · · Score: 1

      Lie or count "Sidework" (Ie do database design for free for a friend or someone else who will just "take" it. That's how I learn most technologies anyway is with a side project. If someone pays you for it, is it not professional work expericence? if you do it for a charity, is it not also?

      What's the difference between doing a side project for yourself, one that a few others use, and a decently used open sourced project (bug fixes, I know). But really, when does it become countable work experience.

    3. Re:Employers want it both ways! by jjp5421 · · Score: 1

      I think it is all in the presentation. When I was looking for work I stacked the side work into the employment section, and the ones that I couldn't fit (my first resume had to be 1 page) I got to write rec. letters. All in all, I think small jobs do count and at least show that you are trying.

  51. This comment is gold by FortKnox · · Score: 2, Interesting

    Since I've been out of school, I've had to learn 4 different computer languages. But that was no problem, because I had the theory and background in my (computer engineering) coursework and degree.

    Honestly, computer languages just come down to syntax[1]. If you have the theory and background to know the "ways to code" (not just "coding in C++"), then languages are just about learning syntax.

    Coding in the real work is 30% design, 10% implementation (coding), 10% fixing bugs, and 50% maintainability. If you just know different computer languages, you can handle 10% (even 20%) of the job (implementation and fixing bugs). You need a good theory basis for a good design, and a really good design for good maintainability.


    [1] Well, functional, object oriented, and procedural languages types, then syntax. Writing an app in lisp, java, and C are all different style of coding altogether, but you still need to know how to use the theory with these language types.

    --
    Good quote, too many chars. Seriously, the slashdot 120 char limit sucks!
  52. Re: Design by Slipped_Disk · · Score: 1

    Sounds to me like your DBA never learned the basics of database design.

    In ANY data storage system where there are interrelations between the elements (objects) being stored (this includes the obvious relational systems as well as hierarchical systems) the design phase is always best carried out on paper using some kind of modeling scheme (UML, Entity-Relationship drawings, etc.)

    This is the method my company uses to design large-scale databases to support our systems and network management software.

    The result? A few whiteboards full of circles and arrows and dotted lines (the intermediate nastyness while we work out exactly who will be related to what in which ways) culminating in a diagram that translates very nicely into the Relational world, and subsequently into the hierarchical world (LDAP ala RFC 2307).

    While sometimes staring at the code is the ONLY way to understand something, the importance of a thorough understanding of the reasoning behind the design CANNOT be overstated.

    --
    /~mikeg
  53. I was in your shoes not long ago... by jjp5421 · · Score: 1

    I was in a MIS program a few years ago as a moderately experienced low level network technician. As a student, I wanted to learn real world practical, applicable, specific skills that I could easily transfer to a job/the-real-world.

    Instead the college they taught me broad concepts, theories, structures, and abstract ideas to instill knowledge of different fields of IS. I was introduced to multiple programming languages, not to teach me these languages, but to try to make me a developer (and to teach me the mindset and background that I would need to have to actually learn a language). I was taught the relational data-model, the theories of good design, and how to create a logical, practical DB on paper (sure we built projects in Oracle, but we had to learn O development ourselves). The rest of my time was spent learning about things that I saw as a complete waste of time (statistics, accounting, finance, management, marketing, etc.).

    While I was in school I was surrounded by people that were getting an MI$ degree, they were just looking for the path of least resistance and the highest paycheck. My program left me as a jack of all trades, and far from a master of anything. I considered my time at the University a complete waste of time. As I entered the job market late in 2000 I also realized that the well had run dry and most of the jobs were gone, and the money was nowhere to be found.

    I finally found a job, and believe me it was a humbling experience. My previous on-college-related experience landed me the position, but the degree must have looked good on paper (but I knew difference). Over the past few years I have climbed the ranks and have attained the goals of my five year plan way ahead of schedule, and the funny thing is that I now realize that my hard earned experience was useful for about a week. My degree, and the concepts that it taught me have paid off daily (and will for the long haul).

    Your program looks more like a vocational/technical program than a college curriculum. This would be a great resume builder, and short term payoff for students, but learning vendor/brand specific training is no substitute for an education. It is harder to design a network than to configure a router, it is easier to learn C++ than it is to learn how to program, it is harder to learn relational data modeling than it is to learn how to develop an Oracle database. Odds are, the program you and your peers want to re-design probably serves you best (in the long run).

    But that is just my $.02 (but at my hourly rate is would actually be about ~$50.00).

  54. Re: Design by notbob · · Score: 0

    We do whiteboards, but during the "meeting" to discuss the design, our dba snapped at anyone who tried to talk / discuss, so ignoring all developer input / collaborative work.

    So whats the point of a "design" if not all the important parties involved.

    After 15 mins into the meeting of him being a pompous cock, i returned to reading a book, another stared into space, and the 3rd went back to his laptop.

    All of my documentation now that refers to anything in his database says "This dumps into our DBAs design so it's his responsibility to document and write the stored procedures".

    I'm not going to help someone who won't consider input, it's his ass I'm staying 10ft away from it.

    DBAs = great concept

    A stoner asshole grumpy old man for a DBA = lame duck of the industry aka more harm then good.

  55. Re:One idea.. (and a good one) by Slipped_Disk · · Score: 1

    Too right - I am a HUGE proponent of the "if it's broken just reinstall it" school - In many cases it's faster.

    On the other hand, sometimes it just IS NOT an option. When I took my current job (almost 5 years ago) I inherited a horribly broken NIS/NFS mess in our UNIX environment -- So broken that if machines needed to be turned off (or on) it had to be done in a specific order or the entire UNIX network would collapse on itself.

    Surely blowing everything away and starting over would have fixed the problems, but it would also have taken me months to rebuild since I had no understanding of how the structure came to be the way it was (and my bosses had long since forgotten).

    Instead I slowly repaired the mess from within, and within a year we had a setup where almost any machine can be switched off without causing any problems (the main NFS server, for obvious reasons, must remain on. :))

    ------------

    Of course, there is the problem of HOW to give students this experience. At my school the CS department is not really responsible for its own equipment (a completely seperate issue involving university politics), and as a result if something breaks (like a machine losing its NFS or NIS+ lifeline) our only recourse is "reboot and hope it comes back". We can't even unmount/remount NFS partitions or force the systems to rebind to NIS+.

    Many schools actively deny their students the experience of fixing broken systems, and as long as this is standard practice we will continue to get graduates who don't understand that sometimes a big magnet is NOT the best tool for the job.

    --
    /~mikeg
  56. Lame by gtrubetskoy · · Score: 2, Insightful
    I think I would develop signs of serious depression soon after starting your IT course.

    First of all it uses words like Linux, Windows, Exchange... Those are things you can learn by reading HOW-TO's on the Internet and O'Reilly books. Paying tuition for this sort of thing seems like a waste of money.

    This may be a radical point of view, but I believe that one should only hire a teacher to learn things that one could not learn himself. An extreme example of that is playing a musical instrument - you can take 3 years to read all the HOW-TO's on piano playing in the world, and I will bet that a 7 year old who has a good teacher will play far better than you after the same period of time.

    I rank myself pretty high when it comes to knowledge of computers and networking, and yet I never took any courses on Linux (or UNIX - Linux barely existed back then). The things that helped me most in my career were my ability to read, write, speak, listen and understand, experience in basic science (math and physics), my musical training, my study of foreign languages (English being one of them) and perhaps the few courses in programming (BASIC and Pascal).

    You have to focus on skills that do not become obsolete - creativity, ability to think out of the box, persistence, patience, communication skills. And when it comes to spefic knowledge, learn history, science, literature - they are constants, their value does not decline with time.

    The specific knowldge of "Linux", "Windows", "IOS" or "OSPF" etc. should be treated as "figure it out when you need it and foget it afterwards"

  57. Re: CS Curriculum by Slipped_Disk · · Score: 1

    MIT OpenCourseware -- As the parent post said this is a great starting point for any school redesigning their CS curriculum. I'm sure it also has value as add-ons to an IT/IS/MIS curriculum. No mod points - Someone please mod parent up. Thx.

    --
    /~mikeg
  58. Well take some English papers then! by Anonymous Coward · · Score: 0

    Is that communication with bosses or between employees?

  59. NO WAY by sohp · · Score: 1

    There's so many things wrong with these proposals I won't even bother going into specifics.* What I will say is, there is a Better Way, and I have seen its genesis. The Master of Fine Arts in Software, and the University of Illinois just recently gave the idea a trial run, which I was thrilled to have been able to participate in.

    * OK, I couldn't help myself, I had to mention one specific: Why is writing HTML and CSS in the programming curriculum?

  60. What are you trying to get out of this? by oneiros27 · · Score: 2, Insightful
    I mean, when you say 'College Curriculum' are you talking about Associates, Bachelors, or Masters?

    Are you trying to build network admins, system admins, user support personel, operations staff, or what?

    I've actually thought quite a bit about this, as I used to work in higher education (user support, programming, system administration), and I believe that there are two key aspects that you're missing:
    • Focus on generalizations, not specifics -- They change a hell of a lot less often, and with a good solid base, the student should be able to figure out the fine details (details are for electives, not core classes)
    • Don't discount real-world experience -- Classroom learning can only go so far. Look at successful programs like Drexel, where you alternate between interning and classes

    You also have to give the students some choices. You should have more classes offered than are needed to graduate, and designate them as core and elective.

    I'm going to assume that a person is going to take 15 credits per semester, with there being 4 semesters for an associate's degree, 8 semesters for a bachelor's, and am going to ignore master's, and assume that those folks would be in IT management (MIS, or Engineering Management degrees).

    I would want someone working on an associates to intern at least one summer, and a bachelor at least two. Also, work study [about 10hrs per week, qualifying for 3 credit hours per semester] for 1/2 their semesters. I'd prefer each of them to do their first semester in user services, no matter what the discipline, as system administrators need to have an appreciation for what the front line support has to go through.

    Work study tasks might include such IT related tasks at the university as telephone support, supporting a computer lab, or being assigned to a specific academic or administrative department to handle their support issues. They might work inside the university's data center, helping with network wiring, configuring hardware and racking systems, but well, that all depends on the size of the data center.

    They should be working with full time staff members, not left on their own, like overnight operators monitoring logs. [maybe as a paid job if they're known to be trustworthy, but not as part of work study]. For those doing user support, they should be able to escallate problems to other full time staff members, should it be outside of their scope.

    Okay, this message is getting too damned long... Here's a few thoughts about classes. Which ones are core, and which ones are elective, and which go with which specialization can be worked out later. [some should be apparent] Not all of these would be 3 credits.

    • Introduction to Information Systems -- general concepts on networking, security, data, etc
    • Intro to Computer Security -- cover the NSTISSI training requirements
    • Psychology for System Admins -- aka. how to deal with problem users (and sysadmins, and managers)
    • Intro to Networking
    • Intro to System Administration -- permissions, user provisioning, logging, etc
    • Advanced Network Security -- specialized security tools, dealing with intrusions, etc
    • The Joy of Backups -- go over issues in different systems (eg, web servers, databases, file servers) and how to balance cost vs. time to recover.
    • High Availability -- load balancing and clustering concepts
    • System Development -- planning a new system, and documenting it
    • Essential Network Services -- dns, dhcp, syslog, ldap.
    • Mail Services -- smtp, imap, pop. Issues with spam prevention, viruses, etc.
    • Databases -- compare and contrast OLAP vs. data warehouse issues
    • Network Design -- firewalls, gateways and documentation
    • Scripting for Admins -- shell scripts, perl, expect

    Well, you get the idea... There's so many more classes that you could teach. I haven't even touched upon hardware, and only barely on OSes.

    Oh, and for the core c

    --
    Build it, and they will come^Hplain.
    1. Re:What are you trying to get out of this? by DerekLyons · · Score: 1
      Work study tasks might include such IT related tasks at the university as telephone support, supporting a computer lab, or being assigned to a specific academic or administrative department to handle their support issues. They might work inside the university's data center, helping with network wiring, configuring hardware and racking systems, but well, that all depends on the size of the data center.
      I think your idea could stand some examination of the methods the CIA (Culinary Institute of America) conducts their schools. There, each lower level course feeds its output to either an upper level course, or to a public restaurant.

      I.E., scraps from the Butchery class go to the Skills class to make stocks from. Cuts from the butchery class go to cookery classes and public restaurant(s) that are part of the school. Stocks from the Skills class go to other cookery classes and to the public restaurant(s). Food from the cookery classes feeds the student body. Students who complete a cookery block spend a quarter working in a public restaurant that uses that style of cooking.

      Make your IT course serve the rest of the university in the same way. You get real world experience for your students, and support/work etc for the school systems. (See Micheal Ruhlman's "The Making of a Chef" for a dern good read and a far better insight into the process.)
  61. What I would like to see by Brandybuck · · Score: 3, Insightful

    Back when I was in University computers were still a relatively new thing. There weren't any entrenched ideas about how it should be taught. And Microsoft was a decade away from a monopoly.

    Consequently, we were taught computer science. No programming, not server administration, and most definitely not Windows. Very first class was Pascal, just to teach use the basics of programming. The next was assembler to learn the low level stuff about how computers worked.

    Then the very next class was Algorithms and Data Structures I. We were to use C on BSD UNIX, neither of which we had been exposed to before. The first assignment was due in a week. This sink-or-swim method taught us two important lessons. First, language wasn't important. Second, it taught us the real-world skill of learning new stuff on our own.

    After that the core classes were more data structures and algorithms, programming language concepts (where we learned lisp, prologue, ada and smalltalk, among others), and compiler design and construction. Others outside of the core included networking, operating system principles, etc.

    I felt it was a well rounded curricula. But when I talk to recent University graduates, they're learning tech-school stuff like Windows, CISCO routers and Linux administration. While these are important skills, they're not computer science. If you want to learn a trade, go to a tech-school. Real colleges and universities are for education. Knowing the technical details of Windows might serve you for the next five or ten years, but learning the underlying principles of operating system design will serve you for a lifetime.

    Aeronautic engineers don't go to school to learn about Beechcraft and Lear, so why are software engineers being taught CISCO routers?

    Old Fart signing off...

    --
    Don't blame me, I didn't vote for either of them!
    1. Re:What I would like to see by Anonymous Coward · · Score: 0
      Aeronautic engineers don't go to school to learn about Beechcraft and Lear, so why are software engineers being taught CISCO routers?
      Because you'll never get hired if you don't know how to use specific technology!
  62. Information Technology: Development by falconwolf · · Score: 1

    I see you've added Graphic Design to the Information Technology: Development curriculum, I like that. Currently I'm in a web program, specifically "Web Programming" now. Design is a compleatly different degree, and we don't do any of it. I'd rather we did, at least some classes in it. It's weird, here in the states I haven't seen any degree programs dealing with the web that covers much of both design and programming yet I've chatted with students in Canada and England and they do both. They also have to take classes in accessibility, which we bearly touch. All we've had to do was to use Bobby to validate it and Bobby misses a lot when it comes to accessibility. With the federal accessibility laws on the books I'd think colleges would do a better job of covering it.

    With a disability myself accessibility is an interest of mine, and I'm thinking if there's one thing I'll specialize in it's accessibility. If so though I'll have to do it on my own.

  63. It's a perfectly good curriculum by use_compress · · Score: 1

    For someone into skydiving, gunfighting and bashing OSX on slashdot.

  64. Confused by Anonymous Coward · · Score: 0

    Why are the terms "Computer Science", "Information Technology", and "Information Sciences" being used interchangeably here? If the goal is real, honest to goodness programmers... shouldn't they be in a CS program instead of something else? By virtue of being in an IT or IS or MIS (or, or, or), there's something else they're doing. If the goal here is to create a person who is more Pointy-Haired Boss than Dilbert, what's the point in teaching them core programming concepts again? Smash them in the face with $programming_language (VC.NET, COBOL, PHP in Swahili) so they have a comprehension of what the process of programming is like (and a very concrete one at that), so they have a better context to communicate with programmers... not to actually be one themselves. Of course, I have no idea what it is any of these degrees actually are supposed to be, despite the fact I'm years into one...

  65. Re:More "practical" courses that I would like to s by cyndymw · · Score: 1

    I agree with everything you said, as this seems to be a more solutions-oriented approach than most. I would add three more: 6) Communication At many organizations, there are rooms full of programmers who are technically brilliant enough to make computers dance on command, but those aren't the ones who talk to customers and often aren't the ones who are promoted. The most effective and valuable technical professional is one who is great at what they do AND can communicate intelligently in a variety of media. This course would cover technical and business writing, public speaking, speaking and listening aspects of discussion, and persuasion. 7) Documentation (prerequisite: Communication) This course would cover two types of documentation: inline code comments for future programmers who may edit your code, and user documentation in html (or another readable form). Inline comments would cover things like explaining what certain identifiers stand for, prefaced explanations (inputs/outputs is a good place to start) and anything that you would want to know when editing someone else's code. User docs will teach how to identify one's audience and write to that user level and at just the right pace. 8) Security Theory Needless to say, keeping its information secure is one of the biggets concerns of any organization, and it will continue to be so. Students need to know general concepts of keeping a network secure, not just the latest Cisco-specific DeVry offerings, and need to understand that most the specifics they learn may be obsolete before they have a chance to apply them. This course would take a very diverse network running on several different platforms and simulate attacks to test the proactive and reactive concepts that students have learned. I hope this was helpful! Let me know if you agree/disagree.

  66. Some Schools Are Still Like This by Poeir · · Score: 1

    In Iowa State University's curriculum, I've been exposed to VB, C++, Scheme, Java, MIPS assembly, and I believe the operating systems course would normally have used C, but they had a different professor teaching it (so C++ was used instead). One other required (semester) course is primarily a group project in which the students can use any language or platform they want. Most of my other classes have been math-heavy; calculus, physics, algorithms, languages (math, not programming). One semester I actually didn't need a computer at all.

    On the subject of Java, the feel I got from the class was, "Welcome to Computer Science 362. Here's some Java. Learn it by tomorrow." That wasn't actually said, but Java was very sink-or-swim, by a few weeks in one had to have a grasp on it. The actual course was heuristics and program design.

    --
    Sigs are like bumper stickers.