If you HAD to major in computer science

what would you double major in to "balance out"/complement the CS degree?

statistics

Pure Math + Computer Engineering BS then a CS MS.

Mathematics

That was I can just end up doing almost the same thing I do now.

CS -> Cryptography -> Elliptic Curves -> Arithmetic Alg. Geom.

What classes would you take?
(starting from calculus 3 and up)

computer science: computer """science""":

Math

what?

If your CS major contains mainly theoretical courses, take an applied subject so that you get both an understanding of the concepts involved as well as some experience in implementing them.
And conversely.

advice needed

my CS curriculum has a mix of both. throughout the next few years, I plan on taking (for cs)

year 1
data structures and parallelism
statistical foundations for cs
hardware/software interface
database systems internals
algorithms
systems programming

year 2
digital design (circuits)
networks
computer vision
machine learning
data visualization
theory of computation

year 3
computer security
operating systems
distributed systems
compiler construction
artificial intelligence

wondering if I should add Computer Architecture, Computer Graphics, Embedded Systems, or NLP

and if I should remove Computer Vision

also, how does the order of this schedule look?

should I move any courses around (i.e., take x before y)?

planning on double majoring in statistics or mathematics

Looks like a solid education to me - with a double major in statistics, you'll avoid the brainlet phase of CS

Math + CS with minor in Economics

Looks similar to my undergrad program, except I chose other electives.

It's too early to tell you, really. When I started CS and wanted to do computer graphics, now I'm in distributed systems. Take a look around in the subfields first, but then don't branch out too much.

If you like CV, ML and all that shit, go for statistics.
If you like algorithms, distributed systems, theory of computations, AI and compilers, go for discrete maths and logic.
If you just want easy code monkey money, go for economics.

>wondering if I should add Computer Architecture, Computer Graphics, Embedded Systems, or NLP
I would reduce everything related to hardware unless you plan to go for some security subfields or embedded systems. It's just not useful otherwise, even to broaden your view, leave that stuff to the CE guys. Go for NLP if you take the statistics direction, it's just ML+linguistic features.

>should I move any courses around (i.e., take x before y)?
Did you already start? I don't know your parallelism lecture, but people tend to get shrek'd when encountering parallelism first, so I see it as risky to take that course in your first year, take it after the algorithms course.

operating systems and computer security are meme courses in 99% of all unis, just read tanenbaum books (which they are probably based on anyway) and take some course that actually helps you.

Finance so I can do something similar or becoming a financial engineer.

>get shrek'd
what did he mean by this?

>year 1
>statistical foundations for cs

No calculus? Shit.

should've included I've already completed a freshman year:

year 0
calculus 3 (1-2 done in highschool)
intro to programming (non majors)
mathematical philosophy
discrete maths, proofs, numerical theory (computing foundations)
functional programming and programming languages
linear algebra
statistical methods
differential equations
linear analysis

should've mentioned this - if I major in math, I'll take non/linear optimization (1-3), numerical theory (1-3), and probability (1-3), 9 courses

If I double major in stats, I'll do mathematical statistics 1-3, real analysis 1-2, resampling inference, applied regression + anova (this path gets me a free minor in mathematics)

ML comes in the second year, so I'm guessing that's going to be combinatorics with maybe some ramsey theory for fetuses

technically it's my third year (started at year 0 because that doesn't really count)

here is the official description: Methods for designing systems that learn from data and improve with experience. Supervised learning and predictive modeling: decision trees, rule induction, nearest neighbors, Bayesian methods, neural networks, support vector machines, and model ensembles. Unsupervised learning and clustering.

>year 1
>data structures
I did that in year 2 and struggled. What the hell kind of basic shit do you cover in a first year data structures unit

"Covers abstract data types and structures including dictionaries, balanced trees, hash tables, priority queues, and graphs; sorting; asymptotic analysis; fundamental graph algorithms including graph search, shortest path, and minimum spanning trees; multithreading and parallel algorithms; P and NP complexity classes."

looks like a solid education to me

Oh I see on university of washington site that it's not typically a first year unit. Actually I might be wrong but it doesn't even look possible to do in first year considering prerequisites

when I said year 1, I meant first year "in the major", so technically my first year was year 0. Sorry, that was unclear

Ah okay. American system is different to mine so maybe I just didn't understand terminology

no it was just my bad starting from 0 instead of 1

I concur

ya it's UW

Where the fuck are you going to college

I'm guessing it's the University of Washington in Seattle - good program for CS and Statistics

Agricultural. Not even kidding. People who are specialists in two very different fields have the ability to bring great positive change to those fields. Agriculture is a huge business that underutilizes technology. Not to say it's horse pulling plows. There are all kinds of automation and remote sensing going on but there is a deep gap in those businesses between the computer guys, the MBAs and the product specialists (i.e. the farmers). If you can be the glue between at least the farmers and the techies, you'll end up rolling in cash.

physics, with a focus on quantum... then get into quantum computing in grad school... then be part of the next technological boom on the ground floor... :)

Some will say math and this makes sense to brainlets and CS majors, but I repeat myself. But CS majors tend to write shit from the viewpoint of a programmer. Not the end user. I'd couple it with something related to the audience you wish to write programs for.
1) you'll understand how they'll want to use the program
2) you'll have something different to fall back on after training Pajeet the loo avoiding H1B minimum wage code monkey to take your job.

Computer Architecture is neat. You can take it in year 3, it's a good complement to operating systems.

Is it worth it even though I'll probably be working on high-level software later in life?

Almost every university has a Math BS, major in that and get a minor in Comp Sci.

Is it really this important? I've only done shit scripting and want to go into comp sci. How much more beneficial is it to surround yourself with with math and then only minor in comp sci?

Mathematics

Agricultural engineering, Make robofarms for our lord and savior Elon's colony on mars

>what would you double major in to "balance out"/complement the CS degree?

Electrical Engineering. any other answer is straight memes

It would be beneficial to your abilities, but not beneficial for your employment or further education with CS. In fact, you would be much more unprepared than a good student with a major in CS would be. Don't fall for the maths >> CS meme, only brainlets who need validating spout that shit.

>Computer Architecture
It will make you a better programmer. When you understand computer architecture, you will have a complete grasp of memory management, compilers, linkers and assembly programming.