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?
Tech training vs. education (Score:5, Insightful)
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
Re:Tech training vs. education (Score:4, Informative)
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.
Re:Tech training vs. education (Score:2)
Re:Tech training vs. education (Score:2)
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
Mirror (Score:1)
PDF [floodcity.net]
Re:Mirror (Score:3, Funny)
Re:Mirror (Score:1)
Sounds like a training curricula (Score:5, Insightful)
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.
Re:Sounds like a training curricula (Score:5, Insightful)
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.
Re:Sounds like a training curricula (Score:2, Insightful)
I guess Dijkstra wouldn't find Open Source very useful.
Re:Sounds like a training curricula (Score:2)
I'll bet. And if those running Open Source projects learned from his wisdom, they'd have a lot more people contributing.
Re: Design (Score:1)
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 re
Re:Sounds like a training curricula (Score:2)
This comment is gold (Score:3, Interesting)
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)
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.
Re:One idea.. (Score:2)
Not unlike "reboot to fix it" in Windows.
Re:One idea.. (and a good one) (Score:1)
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
Re:One idea.. (Score:1)
Re:One idea.. (Score:2)
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)
Ho ho ho now, Computer Science is very different from Information Systems/Information Technology.
Re:You mean IT? (Score:3, Interesting)
Courses parts of a whole, not little islands (Score:1)
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)
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)
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
Typo ? (Score:2)
I think you skipped a "not" in this sentence, didn't you ?
Re:WTH? (Score:2)
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.
Re:WTH? (Score:1)
It's pathetic (Score:3, Insightful)
Re:It's pathetic (Score:1)
Re:It's pathetic (Score:2)
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)
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.
Re:Too Specific (Score:1)
You're very right here, when I learned programming in C (
I Disagree (Score:3, Interesting)
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.
Re:I Disagree (Score:2)
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
Re:I Disagree (Score:2)
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
Re:I Disagree (Score:2)
Re:I Disagree (Score:2)
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
CS, or IT? (Score:2)
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)
Re: (Score:2)
Semester Long Projects is the Way to go. (Score:2)
Re:Semester Long Projects is the Way to go. (Score:2)
Theory (Score:4, 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.
More than tech skills are necessary (Score:1)
Stack overflow!! (Score:5, Funny)
Oh dear Lord... (Score:4, Insightful)
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
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
Re:Oh dear Lord... (Score:2)
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
Re:Oh dear Lord... (Score:1)
Re:Oh dear Lord... (Score:2)
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
Re:Oh dear Lord... (Score:2)
Re:Oh dear Lord... (Score:2)
My brain refuses to believe that there is any good reason for LISP to exist.
Similar to many of the others, but a few more item (Score:1)
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
Re:Similar to many of the others, but a few more i (Score:1)
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.
Re:Similar to many of the others, but a few more i (Score:1)
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 y
Re:Similar to many of the others, but a few more i (Score:1)
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.
My thoughts ... (Score:1)
Re:My thoughts ... (Score:1)
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
Encourage/Account for internship knowledge (Score:2)
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
Different Programming Languages (Score:2)
More "practical" courses that I would like to see (Score:2)
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)
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.
Question for the submitter (Score:1)
Re:Question for the submitter (Score:1)
Re:Question for the submitter (Score:1)
Re:Question for the submitter (Score:2)
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
Re:Question for the submitter (Score:1)
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
Capstone? (Score:2)
Team Programming and Project Management (Score:1)
Along the same lines I think that both tracks should have a course in project management (
What About The Hardware ? (Score:1)
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.
He calls this homework? (Score:2)
Don't worry Cliff. After reading his proposed curriculum, I don't think he has been doing his own homework for some time now.
Some practical neccessities (Score:2)
- 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)
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
programing languages in CS (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. 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
Re:programing languages in CS (Score:1)
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
Re:programing languages in CS (Score:2)
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
What degree program - what result ? (Score:3, Informative)
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'd like to see more business (Score:3, Interesting)
Homework? Yes. Indeed. (Score:2)
Etc.
What I think is lacking... (Score:2)
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
Re:What I think is lacking... (Score:1)
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
As a Information Technology major -- (Score:3, Insightful)
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.
Re:As a Information Technology major -- (Score:1)
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...
Re:As a Information Technology major -- (Score:1)
hmmm... what's the next semester? (Score:1)
Where I went to school, a 3 unit class meant that you were in class for an hour a week an
Developer Hindsight (Score:1)
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
Re:Developer Hindsight (Score:1)
Suggested CS curriculum [LONG] (Score:4, 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:
Now that they are well-versed in the basics you can start feeding them more advanced topics:
This course would include a BASIC discussion of security.
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 your shoes not long ago... (Score:1)
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)
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
NO WAY (Score:2)
* OK, I couldn't help myself, I had to mention one specific: Why is writing HTML and CSS in the programming curriculum?
What are you trying to get out of this? (Score:3, Insightful)
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:
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.
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
Re:What are you trying to get out of this? (Score:2)
I think your idea could stand some examination of the methods the CIA (Culinary Institute of America) cond
What I would like to see (Score:4, Insightful)
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...
Some Schools Are Still Like This (Score:2)
It's a perfectly good curriculum (Score:2)
Re:GAH (Score:1)
Ed
Re:GAH (Score:2)
Re:GAH (Score:1)
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 Dean
Re:Employers want it both ways! (Score:1)
Re: CS Curriculum (Score:2)