Academic advice: Mathematics or Computer Science?

After working for several years in the information security business as a software developer and researcher, I'm planning to go back to school and complete, at least, a bachelors degree but would like to go on to graduate work. I will be talking to an general academic advisor in a few months but I can't get this out of my head: What I really want to do is graduate work in theoretical computer science. That is, my specific interests include the lambda calculus and combinatorial logic, formal logic, type theory, category theory, automata theory, formal languages and so on. All of these have in common that they are almost completely rooted in mathematics. However, when I look at the mathematics program at the university that I'm planning to attend it has a very strong emphasis on calculus, which I have little interest in (however, that's not to say that I wouldn't enjoy more calculus and learn a lot from it in the process.) When I look at the computer science programs, all of the undergraduate work seems overly-practical for someone who wants to do graduate work in theoretical c.s.. For example, I have no interest in studying programming languages such as Java or working with database systems more than I already have.

My first instinct is to go through the mathematics program and transition to a c.s. program at some point at the graduate level, but it seems to me that I'd still end up having to go through a lot of courses rooted overly-practical computer engineering in the end anyway. I think that I would prefer the mathematics because it includes may non-c.s. and non-calculus topics that I'm interested in such as number theory, abstract algebra and so on. But will I be left out of c.s. completely if I do this?

I was hoping with all the educated folk on this forum, someone may have a had a similar experience or advice that might help me make the right decision.

In summary, is it better for someone with my interests and ambitions to bare the calculus or bare the Java, and if I do opt for the math., will I be putting myself at a disadvantage for oppertunities in c.s.?

[Edit: I've just been made aware of two important facts. PSU is on a quarter system, not a semester system. Knowing this, the amount of calculus does not seem as heavy as I had thought. Although calculus still stands at slightly over 1/3 of the coursework. The second interesting fact is that PSU has just received a significant amount of money to be invested in improving their computational mathematics curriculum and facilities. In light of these new facts, the commentary in this thread and likely too much thought on the subject, I think that I will probably stick to my, previously less educated, instinct and enter this mathematics program. That's not to say that I'll discontinue my research into other options. I'd like to apologize for not having realized the quarter/semester issue earlier and I'd like to thank all the people who have so far.]

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

I was in the same position:

I was in the same position: I like CS but not the curriculum. At the time I was thinking about Math+CS vs Math+Physics and I went with Math+Physics. I took a few CS classes (for example on automata) and from that experience I can say that this was the right decision. The CS classes are relatively trivial compared to the math/physics classes. You will learn *a lot* more if you go for Math and cherry pick the CS classes you're interested in.

But (1) your university may have better CS classes (2) you have to determine whether they'll let you into graduate CS and (3) I don't know whether Calculus is going to be a problem for you (personally I like calculus).

Re: I was in the same position:

Thanks for your response. The school I'm considering is Portland State University ( and Your approach seems like my best option. I just did a bit more research and backtracked the prerequisites from the automata theory course to the lowest prerequisite and found that it was Discrete Data Structures I. I didn't find anything overly-practical in the path from that to automata theory, so this seems like a good option. It seems to be the same situation for the formal language theory classes (which makes sense).
As far as your calculus comment, I think it will be fine. I just wanted to make sure that it wouldn't detract from my ability to do c.s., in that it could potentially eat up time which could be better spent elsewhere. I want to point out that I certainly do not think that calculus is (or will be) completely irrelevant in the field of c.s.. In fact, I imagine that eventually it will become more relevant.
I definitely have to agree that I would learn a lot more from the math. and optional c.s. as that has been my experience in self-study from the beginning.

Thanks for your input,
- Tony


That is, my specific interests include the lambda calculus and combinatorial logic, formal logic, type theory, category theory, automata theory, formal languages and so on. All of these have in common that they are almost completely rooted in mathematics. However, when I look at the mathematics program at the university that I'm planning to attend it has a very strong emphasis on calculus, which I have little interest in

Find out what sort of "very strong emphasis on calculus" that emphasis is. Does that mean a lot of calculus courses? It could be the sign of a weak program. For example, Caltech's calculus curriculum for undergraduate will feature Tom Apostol's texts [1] [2], and the first course and a half at 'tech can easily blow away many other schools entire curriculum.

Likewise, where I grew up (Long Island, NY), Nassau Community College was well-known locally for having an outstanding mathematics department, despite having only a two year curriculum. The education you would get there would probably be superior to, say, Columbia University, which does not have a very competitive math program (based on the opinions of several I know who have attended both). On the other hand, both of these colleges/universities lack the rigor of needing to understand the Caltech-like proof aspect of calculus you're required to more/less master in order to pass.

It's on this basis that I would recommend looking for ABET accreditation. Some large employers who hire people with advanced mathematical and engineering schools will not hire somebody with a C.S. diploma if they do not have that diploma from an ABET accredited school (like me). ABET accreditation guarantees certain auditing standards have been met in terms of the composition of the faculuty and its curriculum design.

FYI, Portland State is ABET accredited.

Also, since you have significant industry experience, contact the head of the department you want to enroll in and see about options for passing out of lower-level classes. I'm sure if you could present something like, an implementation of, say, a PR-Quadtree as described in one of Hanan Samet's books, to Wu-chi Feng, then he would at least have to consider your stance to take automata theory right away.

Re: Accreditation

Sorry, yes, what I meant by the "very strong emphasis on calculus" was that there are 6 required courses (24 credits) in Calculus. I haven't been able to get ahold of what books they use yet, but I'll do so by contacting one or more of the teachers directly.

Thank you for informing me about ABET, I had not heard of it before today.


Waiting until Calc 4 to do multivariate calculus is weak. It's literally as slow-paced as possible. They cover things like Green's Theorem in the fifth course, Advanced Multivariate Calculus. If there is not a heavy emphasis on proof in the coursework, then this is clearly a curriculum slanted towards engineers and not pure mathematics (and likely not theoretical physics, either). Unfortunately, the course descriptions are infuriatingly vague and do not even discuss performance requirements of students e.g. ability to do proofs.

On the other hand, the undergrad curriculum broken up into small chunks makes it easy for graduate students needing missing credits to take some undergrad courses before starting real coursework.

BTW, ABET by no means "great teachers". It just means certain quality standards are met.


Yes, I agree. Even at the previous community college that I was at (a few years ago) these subjects were at least introduced earlier. I don't recall the name of the textbook right now.
Also, yes, it is really annoying to look at these course descriptions. I noticed that, in c.s. at least, a few of the prerequisites were wrong or missing.
By the way, I will be attending a community college before I go on to Portland State for unrelated reasons. However, I see that they're rather aligned with the uni:
The one thing to consider here is that it may be possible to take some courses in parallel (as it was in some cases at my previous CC), even if they are prerequisites. As usual, the course descriptions give no information regarding this.
Anyway, at least I a better idea of what to look into now.
Thanks again.


I looked at Oregon State's curriculum which seems a bit more organized. As I suspected, some of the calculus courses are intended to be done in parallel. That is, the third and fourth semesters consist of two parallel courses in calculus each. Since everything else here (credits, course numbering, etc) seems to be the same and they are in the same state, I suspect that this is the same for PS. I'll double check though.

An option is to go straight

An option is to go straight to a masters program (a course oriented one, not research). After a couple of years, you might try to transition to a Ph.D.

One of the smartest women I know did this (same thing -- no college, when straight to industry during the boom), did well in the program, and published a great paper.

Re: An option is to go straight

Hmm, I haven't considered this in quite a while since all the MS/MA programs that I encounter seem to require a BS or BA first. I'll have to look into that more.

Java vs. Calculus? No contest.

If you study Java, it's just another programming language.

If you study calculus you'll be deepening your understanding of mathematics in general, at the same time as learning the specifics of calculus. The skills you learn will be reusable elsewhere, even if you think they won't be at first. For example, there's a beautiful application of calculus to type theory and calculus can provide a useful source of examples for fields like category theory. Even in automata theory, your understanding of a seminal paper like this one will benefit from being able to compare with the more usual notion of 'derivative'.


Unfortunately I haven't worked extensively with calculus since high school and a bit of physics in college; although I did have a exceptionally good high school calculus program and I still have a pretty good command of much of the material.

Calculus class would also be a good time to study things such as floating point arithmetic, numerical analysis, and automatic differentiation outside of class. I feel more than a bit cheated that I had not even heard of automatic differentiation until a few years ago, at a time I don't use calculus often and certain parts of my understanding are a touch rusty. :-)

Re: Java vs. Calculus? No contest.

Thanks for the paper using calculus in type theory. I do appreciate that as motivation. One thing I did think about is that there's no way I'd want to skip out on calculus completely as what kind of mathematician doesn't really know calculus? That would have me excluded from plenty of interesting conversations, I'm sure. On the other hand, the more I look at some of these curricula, the more they look like a "calculus major" instead of "mathematics major."

Anyhow, thank you for your input, sigfpe.

- Tony

Funny.. I'd suggest skipping

Funny.. I'd suggest skipping calculus and doing real analysis instead (or maybe complex analysis for a generally wacky time.) (Vector) calculus is often geared towards those not planning to advance further. There are a few theorems that are spectacularly presented in a typical vector calc class, but I'm not sure it's worth it at the expense of other topics. (If you want to be practical, linear algebra and stats take you far, and are chock full of cool yet practical results at the introductory level!)

Being taught math in a way that sets you up for connections to CS... is unlikely, or at least relative to doing it on your own. There are a few exceptions -- information theory, whatever logic/philosophy, classes, number theory, anything the applied statistics/numerics side -- but that's been my experience. Connecting to PL is way rarer (e.g., certain types of logic, category theory seminar @ stanford last year) which is why self-study, perhaps based on such materials, makes more sense to me (though you likely miss out on most of the message this way).

Which other topics do you

Which other topics do you expect from an analysis course that you wouldn't learn in a calculus course?

I don't understand the

I don't understand the question -- they're completely different courses. In a sense, analysis and abstract algebra are the first real foundational math courses, with linear algebra acting like an early teaser. In analysis, you relearn half of what you were taught before (e.g., what is a real number, one or two forms of continuity, covers, mipoint theorems, etc.), and this sets you up for topics like topology and foundations of probability (e.g., metric spaces and martingales, and various analytic tricks). Vector calculus is more like a continuation of the high school math curriculum and thus sits on a foundation that is not rigorous so you miss out on the generality (or not) of the results. Not to say it isn't useful -- physics and engineering live on this stuff.

Thanks. I asked because in

Thanks. I asked because in my university there is no course called calculus, only analysis. We learn what is a real number, convergence, midpoint theorems, differentiation, power series, integration etc. in a course called Analysis I. Vector differentiation/integration & the theorems that come with it (green,gauss,etc) in a course called Analysis II. So this is actually analysis and calculus mixed together?

Analysis I is usually rigorous calculus.

Analysis I is usually rigorous calculus. Analysis is more general than calculus, though, including (at least) differential equations and functional analysis (Hilbert & Banach spaces, etc).

Calculus vs Analysis

Calculus courses usually teach you how to use Calculus, Analysis courses typically teach you how to prove that Calculus works.

Analysis also generalizes concepts in Calculus. For example, Calculus studies the convergence of sequence of real numbers. Analysis covers the convergence of sequence of real functions, both pointwise and uniform convergence.

Real analysis is more about point set topology than calculus is

My university experience was that nearly all of the math and physics majors I knew had "placed out of" calculus when they entered as freshmen. And this was 40 years ago....before the wide use of AP classes in much of the U.S. Maybe my friends were unusual...

I found the OP's comment that one of the colleges he is considering emphasizes calculus...this just doesn't square with any of the undergraduate math syllabuses (sylabbi?) I have seen, at least for major schools.

My freshman year I took a couple of linear algebra classes. Very useful. One was oriented toward manipulating matrices, the other was more abstract.

An analysis class I took started with the construction of the reals via "Dedekind cuts" and introduced more rigorously a lot of stuff I found very useful many years later when my interest in math and CS was rekindled. Really, it was an introduction to point set, or general, topology. Notions of open sets, fixed points of mappings, compactness, and the whole "abstractness" point of view which makes much of theoretical computer science and category theory much more digestible. (It also makes the Haskell and FP talk of catamorphisms and suchlike a lot more "familiar."

A clue is that there's a catchphrase in a lot of books: "mathematical maturity." I just don't think studying a lot of calculus is any real substitute for studying abstract algebra, real analysis, and some general topology.

So for someone thinking about a research career in theoretical computer science, my advice would be "go light" on physics-oriented calculus and go heavier on at least some of the upper division math major classes. (Most of the abstract algebra, real analysis, and topology classes happen in junior and senior years.)

But as sigfpe noted, calculus does have a lot of interesting problems. For a motivated student, a lot of windows into other areas. But my experience with college-level calculus is that neither Apostol's nor Spivak's idiosyncratic texts are used; rather, the focus is on solving integration problems and the like. I think anyone who _stopped_ after calculus would be mystified by, say, Mac Lane's "Categories for the Working Mathematician."

Of course, a lot of cool math can be learned on one's own. In fact, for the more abstract stuff, I prefer to work at my own if I have to spend 4 weeks figuring out why "the product of compact spaces is compact" is so darned important, I can spend this time. And maybe explore it with some Haskell code....

--Tim May

RE: "Real analysis is more about point set topology than...

...calculus is"

...which is why some courses in 'topology' actually end up being a course in real analysis, like the one I sat in on my last semester in college.

I think being exposed to a wide spectrum of math is beneficial. For example, the Mean Value Theorem taught in calculus courses does not hold for geometries not dependent upon the Euclidean Parallel Postulate. Thus, any result that depends on MVT cannot be used in such a geometry. This sort of understanding, of forming minimal models of tasks, such as finding a parallel line, is what math should teach you. You might not realize your MVT-derived results are dependent on a 'constant' such as EPP, but if you are exposed to analytical approaches to non-Euclidean geometries (e.g., hyperbolic geometries), you would learn otherwise.

MVT and Parallel Postulate

MVT (mean value theorem I presume) isn't a statement of geometry and isn't dependent on the Euclidean parallel postulate.

I had a similar reaction,

I had a similar reaction, but then thought maybe he was interpreting the MVT geometrically as "every secant line to a smooth curve in the plane is parallel to the tangent at some intermediate point." This would certainly be false on spherical geometries :).

Edit: Of course, I think I can see my way to the end of a proof that this MVT does hold in hyperbolic 2-space (assuming parallel lines are merely non-intersecting or coincident), so I don't know...

Nice interpretation

But we can certainly agree that this is not "taught in calculus courses"!

Some Random Thoughts

Not all Universities can get the best students; they have to tailor their courses to the students they can get. In the case of PSU it seems they have fairly average students, and their courses reflect that. The best Universities will give you an excellent education whether you take Maths or CS (and you'll get plenty of maths at top CS schools).

My advice is this:

0. Go to the best University you can given your circumstances.
1. Prefer Maths over CS unless the CS school is excellent.
2. See if you can skip some of the intro courses. Maybe do a taught MS, as suggested above.
3. Pester the heck out of your lecturers for additional material.

About point 3. Most students are callow youth who won't take ownership of their learning. We try to push them, show them additional material, etc. but they resist. I don't know a lecturer/tutor who wouldn't be delighted to have a student turn up at their office and ask for more challenging material. Do this and you'll soon be doing exciting stuff.

Now for some editorialising...

In my opinion machine learning and PL theory are two of the most interesting things going on in current CS, and they have great relevance to one another (though this usually isn't realised...) ML addresses heaps of interesting relevant problems, and Map-Reduce is a great example of PL ideas making some ML problems feasible. I'd suggest taking some applied maths (calc and linear algebra as a minimum. Preferrably some stats and prob. theory) to better understand ML.

Re: Some Random Thoughts

Regarding your first paragraph, I have to agree with that. It does seem tailored for people going into sciences that are being forced to take mathematics.

One thing that I did not previously mention is that, for now anyway, I'm going to have to go to an Oregon university. With that premise out of the way, I think it's worth mentioning that it seems that most of the Oregon universities are the way you describe. I realize there are private schools but I haven't looked into that too much yet. (The financial aspect of that especially concerns me right now.)

Thank you for your second two tips. I'm proud to say that I have, in the past at least, done what you suggest in point 3. I spent a lot of time outside of class during my first semester of calculus trying to figure out what the Taylor series for some function may be and checking with my teachers. As for now, pretty much everything is self-study.

Anyhow, yes, maybe I should be looking into what other Uni's are available (public or otherwise.)

Re: Some Random Thoughts

Right, oops. I found a program at OSU called "Mathematical Sciences" which I hadn't noticed before. It seems like it may be exactly what I'm looking for. I'll look into this more.

I don't know much about CS

I don't know much about CS at the Oregon unis. I think some of them have good software engineering programs. There is or was some Haskell research somewhere in Oregon; maybe OGI. Washington is supposed to be very good, but I think they're strong in applications and maybe not so good in theoretical CS.

If you have to stay in Oregon AND you really want to get into research I'd suggest:

0. You should aim to absolutely destroy your coursework thereby getting top grades and thereby getting admission to a top place for your PhD.

1. Go to a uni where there is someone doing stuff that interests you. This way you'll at least have a supervisor for a relevant undergrad/masters project. Do be aware that research interests often change (mine certainly have) and you might end up doing something completely different.

Re: I don't know much about CS

Yes I've heard that UW has extremely good CS programs for both engineering and theoretical work.

Re #0: Absolutely. If I do enter this program at Portland State, that is indeed my plan. And there doesn't seem to be much of an excuse for not doing so since it is so spread out over time.
Re #1 - Changing interests: Yes, I've been thinking about this too. Much of my interest in the theoretical has to do with the practical "issues" we have in software engineering as it is currently practised. So, I could definitely see a change in this if there is a significant change in the industry. On top of that, it may be that doing all of this work that I'll have to do, which is, according to me today, completely unrelated may change my interests.

Regarding Haskell, yeah, I did read that somewhere. I wonder who that was and where it was.


As for what I read about Haskell work being done in Portland, it seems that Galios ( is based there. It seems that they not only do a lot of work in Haskell and for GHC but that they also do some related education as well.


You should consider signing up for the pdxfunc mailing list.

There is or was some

There is or was some Haskell research somewhere in Oregon; maybe OGI. Washington is supposed to be very good, but I think they're strong in applications and maybe not so good in theoretical CS.

OGI shut down their computer science research to focus on health related areas, many of those CS people are now at PSU (e.g., Tim Sheard). PSU isn't such a bad bet, and you get to hang out in Portland rather than live in some small town somewhere. PSU is probably a better bet for CS than UO. But at the undergrad level, just learning and working on cool projects yourself will get you a long way into grad school.

OGI still does comp sci research...

it's just advanced applications of CS, as it relates to health-related areas. It's interdisciplinary and most focused on things like spoken language understanding.

Not all Universities can

Not all Universities can get the best students; they have to tailor their courses to the students they can get. In the case of PSU it seems they have fairly average students, and their courses reflect that. The best Universities will give you an excellent education whether you take Maths or CS (and you'll get plenty of maths at top CS schools).

PSU hasa couple of excellent programming language CS faculty inherited from OGI. Andrew Black has a good OO rep while Tim Sheard has a good functional programming rep.

Re: Not all Universities can

Good to know.

Courses lists are merely suggestions

I was in a situation very similar to your own. I finally chose a Mathematics-Computer science program. The experience was a good one, but I lost a lot of time on courses that were not interesting (especially on the computer science side, since I had done very little mathematics at that point).

Then, in the middle of my last year, I understood (too late for me) a very important principle:

Nobody will prevent you from working more.

You want a course that has boring pre-requisites? See the person in charge and change it for a more advanced course. Use the bureaucracy to your advantage and select a more interesting formation.

Remember: Pre-requisites are only recommendations. Good face-to-face negotiation can get you a long way.