advertisement

Weblog:   What would you put in a Computer Science Curriculum?
Subject:   Lack of "machine" and also more underlying science
Date:   2005-09-08 15:35:12
From:   bioinfotools
Very quickly, two comments:


1. Over the years I've noticed the near complete demise of teaching of how computers works at near-hardware level. CS students were once taught assembler (and even machine langauge) and basic hardware logic. Today I'd add more concepts like caching, pipelining, OOE, etc. The point is that do todays students really have any notion of what the computer is actually doing? This impacts on a lot of performance-related issues. For example, its hard to appreciate how a good compiler contributes to code performance unless you have some appreciation of what the hardware is up to. (You could have a similar thread on OS structures now that I think about it.) Some might argue that this isn't needed much anymore, but in many areas its still vital.


2. I've always thought that universities should emphasis the underlying theory/structure, with the practical as just a necessity, not the essence, unless its the "lower stream" course for people in other disciplines to pick up programming. For a CS course, ompiler theory, OS structures and approaches, number representation (incl. IEEE), parsing theory, etc., etc. And, err, you've listed nothing on algorithms??! better not start me on that ;-)


Your course so far looks like a "lower stream" practical course to me, with the CS students to take additional course(s) that teach the actual computer science, as opposed to programming (as croach touched on).


myc18's suggestion of technical writing is excellent, but I'd prefer to see that taught as a short course by the appropriate Arts dept. Ditto for the legal side of things, but done by the Law dept. of course.


andy, I agree with the DRY and coding practice issue. I've seen published graduates from the "new" bioinformatics crowd with code that horrifies me.

Full Threads Oldest First

Showing messages 1 through 4 of 4.

  • Lack of "machine" and also more underlying science
    2005-09-11 13:34:50  snap [Reply | View]

    1. Yes! They still teach this stuff in CS programs. I only graduated within the past few years!

    2. This is EXACTLY how it worked at my alma mater and it seems to be the case at many other schools. A lot of time and energy (and money;}) was spent on these topics you mention as well as the design and analysis of algorithms in my program. I think part of the reason certain professionals share the opinion that the author expressed is in part related to this fact. The link to the real-world is not always apparent to all parties involved.



    • Lack of "machine" and also more underlying science
      2005-09-11 13:43:30  snap [Reply | View]

      Technical writing was a required course at my institution. After being in the working world and having some exposure to software specs or the lack there-of, I'm starting to understand why. I remember problems being much more clearly defined in school and the emphasis being more on solving as opposed to defining. It can be more challenging to identify or define a problem as opposed to actually solving it! Perhaps that's why it is overlooked so often by business partners or users.

      Learning how to ask the right questions in the right manner comes in handy. For someone who is particularly bright or has never really been challenged, this can be a humbling experience :).



  • Dan Zambonini photo Lack of "machine" and also more underlying science
    2005-09-08 15:59:02  Dan Zambonini | O'Reilly Blogger [Reply | View]

    Completely agree with the low-level stuff, I'd forgotten about that. I really like this Joel Spolsky article that talks about why you should be aware of what's going on underneath: http://www.joelonsoftware.com/articles/fog0000000319.html

    To be fair, I did mention searching and sorting algorithms, but I did sort of gloss over them...
    • Lack of "machine" and also more underlying science
      2005-09-08 21:31:47  bioinfotools [Reply | View]

      Sorry I missed your ref. to core algorithms--reading in a hurry.

      Thanks for the link to the article, although I'm so busy it might be a week or two before I get a chance read. Joel usually writes well. Lightly skimming it seems to be about strings et al. I've seen some very clever implementation of strings in "C-land" (I've even a fancy one of my own which I've never polished the rough edges off) with some nice coding concepts that'd do well in a CS course.

      Simple things like how hardware has evolved and the concepts brought in are useful. Some very basic concepts have application elsewhere and can be surprisingly "deep", e.g. caching, indirect references (in the very early days memory refs. were direct...), various types of look-up tables, etc.

      On the subject of history, one of the reasons people like Joel "see" well is that they saw the history pass and understand why things are the way the are. The current schemes are really designed so much as evolved if you think about. I think you get a lot deeper understanding of a subject if you understand its history. The same is true of most fields (I'm a computational biologist and I can say the same is true of biology and most of the "hard" sciences).

Showing messages 1 through 4 of 4.