Slashdot is powered by your submissions, so send in your scoop

 



Forgot your password?
typodupeerror
×
Education Linux Business

Constructing a New College IT Curriculum? 127

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?
This discussion has been archived. No new comments can be posted.

Constructing a New College IT Curriculum?

Comments Filter:
  • by dsci ( 658278 ) on Wednesday January 14, 2004 @11:21AM (#7973446) Homepage
    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++."
    • by llefler ( 184847 ) on Wednesday January 14, 2004 @12:44PM (#7974336)
      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 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.
    • 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 dat
  • I can't imagine my ISP being able to handle the /. effect. Anyone willing to mirror the 18K pdf?

    PDF [floodcity.net]
  • by speedy1161 ( 47255 ) * on Wednesday January 14, 2004 @11:24AM (#7973475)
    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 [stevens-tech.edu] 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.
    • by Zapman ( 2662 ) on Wednesday January 14, 2004 @11:45AM (#7973710)
      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.
      • by Anonymous Coward
        "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.
    • 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.
    • This comment is gold (Score:3, Interesting)

      by FortKnox ( 169099 )
      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. I
  • One idea.. (Score:5, Insightful)

    by hookedup ( 630460 ) on Wednesday January 14, 2004 @11:24AM (#7973478)

    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.
    • 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.

      • 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 proble
    • 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.
    • 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 burnin

  • You mean IT? (Score:5, Insightful)

    by Tom7 ( 102298 ) on Wednesday January 14, 2004 @11:28AM (#7973541) Homepage Journal
    For you prospective CS Students who might be reading

    Ho ho ho now, Computer Science is very different from Information Systems/Information Technology.
    • Re:You mean IT? (Score:3, Interesting)

      by (trb001) ( 224998 )
      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 <opinion>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 mi
  • 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
  • WTH? (Score:3, Insightful)

    by Hard_Code ( 49548 ) on Wednesday January 14, 2004 @11:37AM (#7973620)
    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.
    • Re:WTH? (Score:5, Funny)

      by kzadot ( 249737 ) on Wednesday January 14, 2004 @11:53AM (#7973773)
      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
      • * Pretending you're a programmer when the hot secretary comes around.

        I think you skipped a "not" in this sentence, didn't you ?
      • 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.
      • Oh...you forgot surfing Slashdot
  • It's pathetic (Score:3, Insightful)

    by aurelianito ( 684162 ) on Wednesday January 14, 2004 @11:40AM (#7973665) Homepage Journal
    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
    • 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.
      • 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 ge

  • Too Specific (Score:5, Insightful)

    by Gudlyf ( 544445 ) <<moc.ketsilaer> <ta> <fyldug>> on Wednesday January 14, 2004 @11:44AM (#7973701) Homepage Journal
    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.

    • 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 (

  • I Disagree (Score:3, Interesting)

    by rmohr02 ( 208447 ) <mohr.42NO@SPAMosu.edu> on Wednesday January 14, 2004 @11:45AM (#7973706)
    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.
    • 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 t
    • 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 a
      • 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.
    • 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

  • "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, e
    • Re:CS, or IT? (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, sta
  • Comment removed based on user account deletion
  • 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.
    • 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
  • Theory (Score:4, Interesting)

    by Ouroboro ( 10725 ) * <(moc.oohay) (ta) (tyoh_noraa)> on Wednesday January 14, 2004 @12:03PM (#7973862) Homepage Journal

    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.

  • 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.
  • by frenchgates ( 531731 ) on Wednesday January 14, 2004 @12:11PM (#7973960)
    CS205 has CS205 as a prerequisite! I think recursive courses should be reserved for higher levels.
  • Oh dear Lord... (Score:4, Insightful)

    by (trb001) ( 224998 ) on Wednesday January 14, 2004 @12:13PM (#7973986) Homepage
    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
    • 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 sayi
      • 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
        • 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
    • 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."
    • >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.
  • 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 strength
    • -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.
  • 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 30
    • 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
  • 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 o
  • 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 o
  • 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 techno
  • Reading & Writing (Score:4, Insightful)

    by duffbeer703 ( 177751 ) * on Wednesday January 14, 2004 @12:55PM (#7974479)
    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.
  • 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.
    • 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 yours
      • 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 m
      • 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
      • 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 pr
  • 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
  • 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 (
  • 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.
  • 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.
  • 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 th
  • No good (Score:3, Informative)

    by Permission Denied ( 551645 ) on Wednesday January 14, 2004 @02:08PM (#7975428) Journal
    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

  • 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

    • 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 putt
      • 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 s

  • by MerlynEmrys67 ( 583469 ) on Wednesday January 14, 2004 @03:27PM (#7976442)
    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

  • by nelsonal ( 549144 ) on Wednesday January 14, 2004 @03:28PM (#7976464) Journal
    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.
  • 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.
  • 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

    • 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
  • by denubis ( 105145 ) <brianNO@SPAMtechnicraft.com> on Wednesday January 14, 2004 @05:26PM (#7978147)
    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.
  • 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 an
  • 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 wi
    • 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 use
  • by Slipped_Disk ( 532132 ) on Wednesday January 14, 2004 @05:38PM (#7978329) Homepage Journal

    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.
  • 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
  • Lame (Score:2, Insightful)

    by gtrubetskoy ( 734033 ) *
    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 ta

  • by sohp ( 22984 )
    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 [dreamsongs.com], and the University of Illinois just recently gave the idea a trial run [testing.com], 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?
  • by oneiros27 ( 46144 ) on Wednesday January 14, 2004 @10:49PM (#7981512) Homepage
    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

    • 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) cond

  • by Brandybuck ( 704397 ) on Wednesday January 14, 2004 @10:55PM (#7981549) Homepage Journal
    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...
    • 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 actual
  • For someone into skydiving, gunfighting and bashing OSX on slashdot.

The Tao is like a glob pattern: used but never used up. It is like the extern void: filled with infinite possibilities.

Working...