Hey all. I'm currently a senior in high school and plan on going into computer science. I've been accepted into a few state schools and I'm still waiting to hear from a few private. I have a few questions about the career/college course if anyone would like to take a minute to answer any of them.
1) Typically, what type of mathematics would a computer science major take in the freshman year?
2) What languages do most colleges focus on?
3) For those who have entered this career path past college, how easy/hard is it to find a job? How's the competition? What languages do you use in the work force?
The reason that I came here to ask is because I've found that most course descriptions aren't very descriptive. They often don't go into detail about what math course you're taking and such at this early point.
Ok, I am currently a transfer junior (from a community college to University of Illinois at Springfield), and I am doing my work in computer science, so I should be able to help.
1. Freshman year? Probably pre-calculus courses, unless you already have a decent understanding of that stuff. In that case, you will be looking at calculus. For my degree, I am required to take calculus, statistics, and ONE of discrete or finite math. Everything else is optional, but discrete is allegedly pretty tough (likely taking that in the summer) and statistics is allegedly easy (taking that in the fall, probably).
2. Everything focuses on Java. It's a very simple language that doesn't take much learning. However, you'll want to be at least SOMEWHAT knowledgeable in other stuff. For example, I am currently taking a course (Introduction to Operating Systems) where everything is done in C. I have never used it before, so I will be getting a book to explain some of that language's nuances. There is another class (Computer Organization, I think it is) that is allegedly pretty tough and deals with Machine Language. This can all vary by the school, though. I went to a different school for one semester, and they used Python for a little while and even started the class with Scratch (an MIT-made program used to teach basic fundamentals in coding to children; it's like Legos for computer programs).
3. I'm not done with stuff, but I have talked a little to some folks with more knowledge on this stuff than I have. One of my classmates that said the area I am in (Springfield, IL) takes a liking to the languages .NET, Visual Basic, and C++. I've never used any of them, which concerns me a bit, but I am going to try to get into a class or two where I can learn that stuff. My Intro to Operating Systems instructor also said that a lot of Internet code is still done in C.
You're likely going to have the main requirements for your freshman year be Java I and Java II, so you'll want to focus on learning that first. In reality, I had 0 Java experience (or any coding experience, actually) before starting my degree, and the Java I and II courses gave me a pretty good base for working with the language. Sadly, as a junior, I don't feel like I have learned a whole lot since those beginner classes though, and I feel like what I know is fairly basic. For example, I know VERY little about doing anything involving visuals, and that does concern me.
Finding a job is going to depend greatly on what you want to do. In reality, computer science can be pretty flexible, so you should find a job fairly easily. Here at UIS, you choose a specialization of either software engineering or system security, so I would imagine there are similar things in-place elsewhere, but I am not sure on that. You'll just have to speak with the head of the department at the school you choose (or at least an academic advisor you are assigned) to fully figure out what your specific school will offer.
I can help with one thing, if you can get me the information: Which school(s) are you planning to attend/look at? IF you can link me their site, I can probably get a peek at the degree requirements and see what they cover and explain it a little better.
I have an old work friend that entered computer science at stony brook and he's currently taking a Java course (he was actually asking for my help with it haha). I'm currently in pre-calculus, didn't get into honors math early enough to take an AP calc course.
I do have some experience coding. I took a Visual Basic class back in 10th grade and continued building on that experience. I made a few small programs such as a web browser with some features along with a calculator that solves some trig. I recently picked up two large books for VB 2010 and c++ and I plan on looking further into those over the summer. I'm starting to think that I should also focus on some Java as well as Python, those seem to be coming up a lot.
The Albany stuff seems pretty intense. For starters, their list of requirements is horrendous, and looks like it was drawn up by a liberal arts major whose primary work was in abstraction. It's a stupid mess of a map. UIS doesn't require things like Physics I and II, and there is more math required there than at UIS as well (likely because of the level of academic excellence required at that school).
The Stony Brook list is much better. It seems to be PRETTY close to what I have, and I'll give you a basic overview of the courses I recognize. There is a bit of assumption here that they work off of Java, and under a similar curriculum as my community college and UIS.
1. CSE 114 Computer Science I: This would be the introductory Java course. I'm trying to remember a bit of what we covered, but it is mostly the basics. You'd likely get the fundamentals of syntax and that. We used a book called Big Java. We learned tings like how to create and assign variables and objects, creating methods, and creating classes. There was a VERY small amount of GUI and graphics discussion, plus basic use of loops (while, do-while, for, for-each) and the if-else and if-else-if conditional statements.
2. CSE 214 Computer Science II: This stuff would be a bit more advanced, of course. We did a bit of recursion here (creating a method where the method calls itself to solve the problem; a common example of recursion if the Fibonnaci sequence, where you add the previous two numbers to find the next). We worked more with things like arrays, ArrayLists, LinkedLists, and two-dimensional arrays a little. Polymorphism got discussed, as did inheritance and using terms like "extends" and "implements."
3. CSE 215 Foundations of Computer Science: I actually just took this class, and it was a little tough for me (got a B+), partially because I was lazy. You basically cover a bunch of different topics, from machine language (and we messed with it a little), networking, operating systems (we skipped that section because we have a required OS course), databases, AI, and a bunch more. It can be a little overwhelming going from topic to topic like that, but it's not too bad.
4. CSE 219 Computer Science III: We called this Data Structures and Algorithms, and I took it last semester as well (got an A in it). Most of your work is a repeat of CS II, things like two-dimensional arrays are where you start. Then you go through lists, LinkedLists, and that stuff again. Recursion is used a bit more. You eventually discuss sorting algorithms a bit, then wrap it up with a discussion on trees.
5. CSE 220 Computer Organization: This is the only one from this list I haven't taken. I've been told it's all in machine language, and it's a really hard course. Other than that, I'm really not sure what to expect with it.
That's basically all I know about the courses listed for Stony Brook, and I'll say that they seem to be more on-the-ball with presentation than Albany by a long shot. The course work also seems easier, as you aren't being suffocated with math and physics, it seems.
Yeah that Albany course map is interesting, at best. Stony Brook used to be my first choice, actually, and is considered one of the top SUNY for CSE. The bad thing about Stony Brook is that they're notorious for having professors with heavy foreign accents. But I digress, thank you for all of the information, it will definitely help my preparation over the summer!
Haha, that can be troublesome with the accents. I had an Oriental teacher last semester, and it took me a moment to realize he was saying my name during roll, at first. You kind of get used to it, but you maybe should try to talk to one or two of the teachers first, just to see how much the accents really affect your ability to understand them.
Also, if you ever want any help with learning some Java basics, I can help out there. I still have plenty of old programs from my Java classes (all 3), along with some of the assignment sheets associated, if you want to try to solve stuff.