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?

3 of 127 comments (clear)

  1. 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
  2. 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

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