I got into Cooper Union’s Class of 2022 for Electrical Engineering, and while I do want a thorough understanding of how computers work, I feel like my long-term goal in life is to go into computer science, software engineering, AI development, etc… So is Cooper Union good for this? Will I actually be learning what I’m interested in? And will I learn everything I need to go into these fields?
I’m in exactly the same position here. I’m in the position between choosing between Cooper Union (very small, rigorous, in NYC, and EE) and Northeastern (a little more expensive with aid, larger, good co-op program, less intense, and CS).
But the reason I applied to the Cooper Union is because it was supposed to be so rigorous, and a lot of people from their EE program end up going into graduate programs at great schools. Plus the fact that EE will definitely help me understand CS better at the fundamental level. And that I will be surrounded by nerds =)
To answer your question, I think this Quora answer explaining why to study EE over CS in college is pretty compelling (https://www.quora.com/Should-I-study-electrical-engineering-or-computer-science-and-math): “In general, CS degrees are obtained to learn how to program. Programming is not a skill that’s necessarily learned in university. EE on the other hand, is difficult to learn well on your own. Most programmers I work with are self-taught, with specialties in other things (one was an embedded guy, another was a psychology major!). In programming, what matters to get hired isn’t that your degree says “Computer Science”, but rather that you can program. CS programs also don’t provide you with the “key” to be a great developer. You have to write code, often, to do that.” As he said, there will probably be a lot of crossover between the two fields, and EE might give you a better base for other studies if you want to go a different route or beyond pure CS (i.e., something other than software development).
I’m hoping to make my decision after the Admitted Student’s Day a week from today.
This isn’t the case at all CS schools. I’d read this:
http://www.ccs.neu.edu/home/matthias/Thoughts/Developing_Developers.html
While EE can have more opportunities, self-learning CS can lead to very bad programmers. With more straight CS majors graduating, more and more positions are being filled by CS majors rather than anyone who can program. Programming is not computer science, though sadly many programs teach it that way.
@PengsPhils I haven’t really heard that argument much, but I guess most of the advice I have about this is from people a generation up, when electrical engineering really was the basis of computer science.
What is your opinion in response to denk0403’s question then? Could it be worth it or not to go to the CU for EE (also considering other benefits of the school)? I’m curious for more input as well.
@jlam55555 Yeah EE is no longer tied to CS at all really - programs tend to require at most one course making use of hardware at all beyond a computer typically, many requiring none at all. I think that view of the two subject is very dated. There’s truth in that EE is harder to learn, but a good CS program should indeed set you up to be a better programmer than self-learning. A ton of online courses exists yet people still flock to CS in a traditional school setting I think because it provides a lot of additional value. These days the stereotype is that engineers are terrible programmers exactly because of their approach, often from self-teaching that lead to programs that work but are badly designed and prone to bugs. Of course that’s not categorical of all engineers, but gives you an idea of how EE is viewed in Software Engineering.
If your goal is to go into CS/SE/AI, Computer Science is the way to go, not EE. Cooper Union is an amazing engineering school, but they don’t offer even close to any depth in CS. Going to Cooper Union to be a software developer would be pointlessly swimming upstream in my opinion. For @denk0403 , depending on other options available, would likely advise there given their interests and post-graduation plans.
If you look at the course catalog, this is a full listing of all the CS courses I could find offered in Fall 2018:
Introduction to Computer Science (the only CS listed course, all others listed ECE)
Computer Operating Systems
Data Structures & Algorithms I and II
Programming Languages (not about theory but learning them)
Communication Networks
Computer Security
These courses were offered at the “graduate” level:
Artificial Intelligence
Databases
Cybersecurity
Two Machine Learning Special Topic Courses
With no courses offered for AI in the undergraduate level at all, it doesn’t seem like a good route for the OP. You could certainly get skills to become a programmer via this route, but this is not what the department (ECE) is focused on. I would note that of these courses, one professor is teaching AI and both Data Structures courses. The depth of the CS department simply isn’t there. You’d also have to see how many of these courses you can even fit into an EE degree.
There are courses listed in the catalog not offered in Fall, but the question is how often will those be offered?
Compare that to Northeastern (since you’re looking between them) which offers the following CS courses in the Fall at the undergraduate level alone:
CS Fundamentals 1+2
Object Oriented Design
Logic and Computation
Database Design
Algorithms and Data
Programming in C++
Computer Systems
Networks and Distributed Systems
Theory of Computation
Artificial Intelligence
Natural Language Processing
Computer Graphics
Programming Languages (the theory of them)
Compilers
Software Development
Network Fundamentals
Network Security
Computer Aided Reasoning
There are plenty more graduate courses, data science courses, information science courses, and courses not offe3red in Fall that will be offered other semesters that are not listed but would go on for some time.
This isn’t Northeastern specific but is generally true for most good and large CS departments. Many of these subjects listed after Algorithms and Data are not very easy to learn on your own.
@PengsPhils Thanks for looking more in depth for me. I thought there would be more computing in the EE program.
That being said, would you recommend a combined major or major/minor at NEU (if I do choose NEU after CU’s admitted student’s day) between CS and EE? I’m sure I want to go into CS, but I think I also want to learn more about the fields it is based on (i.e., EE and mathematics). I’m sure there will be a lot of crossover. Based on your view that the two fields have grown very disparate, do you think it is worth it to share time studying EE (or math) on top of CS?
(Sorry if this gets a little off topic from the original post)
I think your view that CS is based on EE is flawed - Computer science is far more math and theory-based than anything to do with the system it’s written on. Turing wrote an artificial intelligence program for playing chess for a theoretical computer that did not exist at the time. You can “execute” that program on pen and paper, as Turing himself actually did at the time. Electrical circuits are merely the medium that programs are run on today (and happens to be the quickest, hence its wide use). Advances in electrical engineering made it possible to compute faster.
If you’re sure you want to go into CS, I don’t think a CE/EE major is all too helpful unless you’re going into a specific area like embedded systems. That said, an embedded systems course is required for CS majors at Northeastern and many other schools, and you can always adjust your major as you go through college.
CS already requires a decent deal of math, but a math minor is much more common than the CE/CS combo for those wishing to go into pure CS. Math has many more applications - lambda calculus underpins functional programming, linear algebra is central to graphics, machine learning / AI is heavily statistics based, many various areas of CS make use of discrete math and graph theory, and formal mathematical proofs and reasoning are used for program verification, central to crucial software such as that used for space travel, weapons systems, etc.
All of this is not to discount on the importance or challenge of EE, simply to show that the two fields are much farther apart than it may seem.
@jlam55555 I don’t think I got the chance to talk to you today, but what did you think of Admitted Students’ Day; do you think they offer or have enough flexibility for the kind of CS program you and me are looking for? (I feel like I may have already formulated my own opinion from it but I would still like to hear yours!)
@denk0403 I committed to Cooper. Even though they might not have a great CS program, I like the kind of small-classroom, intense academic environment that they seem to offer. They did mention that they only had a few CS courses like @PengsPhils pointed out, but it also seems that they do go into a lot of the basics of computing in the computing engineering track (from operating systems to the AI course), as well as a really solid basis in math. This was exactly what I was hoping for when I applied, because I really think it will help me in a future career of software development. (After all, they said that about 1/3 of the EE students go into software jobs, so it’s definitely not uncommon.)
It’s very different from Northeastern, in which it seems that things will be handed to me (it’s a much larger school, classes will be larger and have to accommodate more people, and the school culture is much more conventional) but I don’t think I will end up learning as much if I go there. I’ve heard CU is more like a boot camp than a college, but I think its rigor will push me far.
Sorry for the late reply. What are your thoughts?
I mean in engineering or CS, nothing will be handed to you at any school. Especially in CS, a lot of learning takes place outside the classroom no matter where you go as well.