Wednesday, March 16, 2011

What do Colleges now teach in BS in Computer Science?

20 years I was taught languages (Pascal, Basic, LISP), data structures and algorithms, and math classes. I would like to know what is being taught in the last 10 years?

Are there courses on process and life cycle?

Are there Microsoft .Net and Java specific courses?

Are there business application development and enterprise computing courses?

From stackoverflow
  • I finished my degree 2 years ago. We covered languages (Java, C, Eiffel, Lisp, Prolog), data structures, interface design, statistics, and math. There were theory courses as well (OS basics, machine language). You had some choice courses, so you could take some business courses, but it wasn't mandatory. Nor was the interface design course, but it did cover building business applications, and was a fairly popular choice.

    York University Computer Science Department

  • 15-10 years ago, in addition to the topics you mentioned, I took courses in operating systems, networks, computer graphics, AI, theory of computation, and human-computer interaction. Java just came about at the end of my undergrad years, and .Net did not exist yet. There were no business application development courses of any kind.

  • You could just pick your favorite university's web site and look at their degree plans and course catalog.

    Here's my school. And their course catalog.

  • Lots of math, Data Structures, Digital Systems, Computer Architecture, Analysis of Algorithms, general programming language concepts, OS, Software Engineering, and some other specialties as electives. These include things like AI, image processing, graphics, etc.

  • My school had required courses on general computer science topics, computer organization (i.e., how processors work and interact with memory, etc.), programming language theory, algorithms and data structures, and basic operating systems design. Electives included compiler optimization, graph theory, graphics, networks, and security, among others. Required math courses included calculus, discrete math, and probability and statistics.

    We were taught to program in Java on Red Hat Linux, although some courses utilized C and C++ as well; the programming language theory course used Haskell.

    We had only very basic instruction on the software development process and life cycle. But this is a good thing -- that's software engineering stuff, and computer science is not software engineering. We barely had time to scratch the surface of CS, so SE would've just been too time-consuming. (That said, seniors did take a course that involved the development of a software project using extreme/agile programming techniques.)

    Adam Jaskiewicz : I had pretty much the same courseload and languages, save that the Programming Languages course used Scheme rather than Haskell, and "computer organization" was called "computer architecture" and involved writing some basic stuff in MIPS assembly and making a simple 16 bit CPU in a logic simulator.
    mipadi : Yeah, the computer organization course I was also based on MIPS32, and we did similar stuff.
  • I finished my degree alittle more then a year ago. While obviously I can't speak for all programs. The curriculum I had was very similar to yours.

    C++ for most courses including data structures in C++. AI in prolog and python. I had an operating systems course where we used Java, my database course also used Java and JDBC. However, most .net and java specifics I have learned outside of school. My program really focused on CS theory and mathematics.

  • Obviously I can't speak for everyone, but this is from my own experience. I graduated in May 2007 with a BS in Computer Science.

    Several languages are still taught. My school focused on one language (Java) to teach to new students, but you learned more languages as you advanced. One course in particular was a survey of programming languages and different paradigms (OO, functional, and procedural languages are taught).

    There was a Software Engineering course that touched on processes. Lifecycle is taught from the beginning, since you can't get far without it.

    There were business application development courses that used VB.NET as a platform. There were also a few enterprise computing courses that used J2EE.

    There were also courses in

    • Algorithms and Data Structures
    • Operating Systems
    • Client-Server Programming
    • Network Administration
    • Database Design
  • Purdue University, taught C,C++,Java as primary languages and exposed us Scheme, Smalltalk, Ada, and Prolog.

    We also got to choose our own languages for certain project and classes, I usually would choose python or ruby.

    Also, learning and using Linux was mandatory.

    The classes offered were fairly standard: Data Structures, Networking, Artificial Intelligence, Database, Algorithms, Web Application Development, User Interface Design, Operating Systems, Compiler Construction, and Language design.

  • A lot will depend on what country you're in, and what school you go to.

    Certainly the basics are taught everywhere that I know of:

    • introductory programming
    • algorithm analysis
    • data structures
    • large project class
    • discrete math
    • programming languages

    Beyond that, it's largely up to the institution as to how math-/theory-/business-/practical-heavy they want to be. And whether it's a BS or BA.


  • Rather than just say it, I'll let my school's CS and SE departments speak for themselves:

  • Many colleges and universities now follow the IEEE/ACM Model curriculum:



  • U of Idaho CS degree, Fall 08


Post a Comment