Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I'm a student putting together a slide geared towards freshmen level students who are trying to understand what the importance of various classes in the CS curriculum are. Would it be safe to say that this list is fairly accurate?

  • Data structures: how to store stuff in programs
  • Discrete math: how to think logically
  • Bits & bytes: how to ‘speak’ the machine’s language
  • Advanced data structures: how to store stuff in more ways
  • Algorithms: how to compute things efficiently
  • Operating systems: how to do manage different processes/threads
share|improve this question
    
I think this question will be well served at cstheory.stackexchange.com –  Pankaj Upadhyay Nov 13 '11 at 6:55

2 Answers 2

up vote 4 down vote accepted

I don't think it's fair to characterize discrete math as "how to think logically". All math (or most of it, anyway) involves logical thinking, but discrete math isn't any more or less about logic than is algebra or calculus. It's about things like learning the properties of fields and rings, that you generally won't have been exposed to in previous math classes. To make a long story short, while there's certainly logical thinking involved, there's quite a bit that's pretty basically just a type of math you (probably) haven't done much of previously. It's probably also worth mentioning that a fair amount of programming is based fairly directly on various forms of discrete math -- for example, public key cryptography is mostly based on rings and/or fields, and symmetric cryptography tends to be based mostly on group theory.

I think the characterization of data structures as just how to store stuff is a bit short-sighted as well. Although they generally try to do so, it's really quite difficult to separate algorithms from data structures -- many algorithms are dedicated to building and maintaining specific data structures, so what's called a "B tree" (for example) refers as much or more to the algorithm than the data structure itself. Likewise, the computations involved in a fair number of algorithms depend intimately on specific data structures (or at least data structures with specific properties).

share|improve this answer
    
Thank you very much for your response. I did feel that I was over-generalizing discrete math and I'm glad you pointed that out. –  Avinash Nov 12 '11 at 16:08
    
@JerryCoffin All your examples (groups, rings, fields) are drawn from abstract algebra, but what most people would call discrete math is much broader than that. Discrete math describes pretty much any sort of math that deals with countable things, including: graph theory, set theory, combinatorics, number theory, game theory, etc. Logic would certainly be included since it generally involves a limited number of discrete states. Thinking logically might not properly describe discrete math, but it likely squares with many students' experience in taking those courses. –  William Shakespeare Nov 13 '11 at 20:06

Here is my list:

Data structures: how to represent simple types of information for programming.

Discrete math: understand that programming is based on mathematically provable principles

Bits & bytes: how computers represent and transmit information and instructions

Advanced data structures: how to represent more complicated types of information

Algorithms: how to compute things efficiently (and correctly)

Operating systems: how computers manage the sharing of computer processors, memory, disk space, and communications among several competing programs

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.