The new forums will be named Coin Return (based on the most recent vote)! You can check on the status and timeline of the transition to the new forums here.
The Guiding Principles and New Rules document is now in effect.

Need some advice planning out my CS degree

exisexis Registered User regular
edited December 2008 in Help / Advice Forum
I just finished my second year in my Bachelor of Science majoring in Computer Science. I fucked around and did absolutely terrible last year. This year I took things a bit more seriously, quit WoW, and my results were a lot better. However since I was such a tool during first year, I've turned a three year degree into a four year degree. Now I'm looking at my last two years and I'm having a hard time deciding how to go about this. There are only so many 3rd year Computer Science papers, and I'm taking all of them except for the stuff I really don't want to do (Performance Modelling and Simulation, and Microprocessor Systems). I've even extended to taking a couple of classes that I'm not super excited about, but feel like I really should know to make myself employable (eg. Database Management - I took Intro to Databases this year and didn't really enjoy it, but I graded well enough). There are like two 2nd year CS papers I didn't take this year, both of which I have absolutely zero desire to sit through.

So what I figured was, I'll take everything in CS that I want to know (most stuff) or feel would help my job prospects, and for the rest I would simply pad it with stuff that interests me, a lot of which has very little/nothing to do with CS. I feel retarded for asking, but am I doing this wrong? I could take some more math classes, but I generally don't really enjoy math, to be honest (I know, olol CS major that doesn't love math), and besides the Psych class I've picked after being advised by my Human-Computer Interaction lecturer, most of my picks are really disjointed.

What isn't helping is that I really don't have an idea what I'm going to do when I finish university. I enjoyed my Software Engineering class so right now I'm telling myself that I'll be working somewhere within that field. I'm hoping I'll have a better idea after some third-year stuff.

Anyway, here's a spreadsheet of what I've come up with. I need 360 points to graduate, 216 above level 1. Assuming I pass everything over the next two years I'll be 44 points over, and I'm only taking 3 classes in my last semester so if I somehow struggle I should be able to tack some more stuff on there.

I know the last year is looking light on the CS side but I'm not super comfortable with having a year away from a lot of these subjects and going back into them feeling a bit rusty.

Any advice would be appreciated.

exis on

Posts

  • Pure DinPure Din Boston-areaRegistered User regular
    edited December 2008
    I also am having the problem of not having enough upper-level CS classes to take. (I placed out of the first year of my four year program, finished my upper-level course requirements last year, but still needed another two semesters to get enough credits total.) Right now I'm getting a class worth of credit and a lot of good experience doing an independent study project, which I recommend trying to do if you have someone who could advise you. Or if your school has a graduate program, maybe you could help the grad students with their research or take a graduate class. I'm also picking up a minor in mathematics, but I know you said you're not too keen on math.

    Pure Din on
  • clsCorwinclsCorwin Registered User regular
    edited December 2008
    I've halfway through my third year, and pretty much have all my GEs done since I transferred in from a community college. The math is understandable. I enjoy learning the concepts, but I fucking hate doing the work. Seriously. After my required Linear Algebra and Discrete Structures, I'm done with math. And, as a friend of mine with his masters in CS said, if you're doing something that needs a specific math, then take a course, if not, then wait.

    Right now after I get through the bottleneck that is Data Structures, I get to dive in to the rest of my coursework, which boils down to (my list of what I want to take):

    CS 3850 Object Oriented Programming
    CS 4750 Operating Systems II
    CS 3150 Nonlinear Systems and Chaos
    CS 4440 Theory of Algorithms
    CS 4250 Database Management Systems, 3 units
    CS 3000 Communication Networks, 3 units
    CS 4450 Coding and Information Theory
    CS 3740 Computer Organization
    CS 3750 Operating Systems I
    CS 4100 Programming Languages (WP)
    CS 4300 Compiler Theory
    CS 4410 Automata, Computability, and Formal Languages
    CS 4800 Software Engineering
    CS 4960 Seminar in Computer Science

    As long as you're not gonna go nuts with too many, or too few CS classes, you should be fine.

    clsCorwin on
  • exisexis Registered User regular
    edited December 2008
    clsCorwin wrote: »
    I enjoy learning the concepts, but I fucking hate doing the work.

    This is exactly how I feel about it. I actually quite enjoyed the stuff that I was learning in my Discrete Math intro class. But I'm not particularly strong on math so a lot of the work that went in to proving my understanding wasn't much fun.

    You brought up something that I'm not really sure about. I have Discrete Methods and Linear Algebra classes available to me, but to do Linear Algebra I'll need to take another math class next year to meet the prerequisite for the class. I've heard people suggest linear algebra for anything involving video games (I'm sure it has it's uses elsewhere too :P). Like I said I'm unsure what I'm going to do after uni. Working in game development sounds cool though honestly I could take it or leave it if the opportunity was there. Am I going to be kicking myself years from now if I don't learn some of this stuff?

    exis on
  • VoroVoro Registered User regular
    edited December 2008
    exis wrote: »
    I'll take everything in CS that I want to know (most stuff) or feel would help my job prospects

    Does your degree program support internships? That will do a hell of a lot more for your job prospects than any course you take. Also, networking. I finished a BS in Computer Engineering in 2005 and not having an internship or any industry contacts has really screwed me over. Aside from that, Real Time Systems and Introduction to Computer Forensics were probably the only interesting courses I took that weren't on your list, though it depends entirely on the course instructor.
    Am I going to be kicking myself years from now if I don't learn some of this stuff?

    Chances are you won't remember the majority of the math you learn if you aren't using it for years. Supposedly I learned Inverse Laplace transformation, but I'll be damned if I can remember what any of it looks like. Having text books handy helps, but you'll probably need a refresher if you use any of this math outside of college.

    Voro on
    XBL GamerTag: Comrade Nexus
  • superchewiesuperchewie Registered User regular
    edited December 2008
    Linear algebra is used all over the place in computer graphics, and I'm actually surprised your graphics class doesn't have it as a prereq. In games, as I'm sure you know, graphics are a key component, so having strong 3D math skills is important (both in understanding and application). Outside of games linear algebra can still be very useful, but I don't think I'd call it essential.

    From what I remember of discrete math, it was pretty easy and a lot of it was rehash of what you've probably already done numerous times (boolean operators, combinatorics and the like). There have been times when remembering some of the more math-y points of the subject would have been useful, but nothing to lose sleep over.

    As far as what you might do after graduation, software engineering is pretty much synonymous with computer programming, so that's the go-to title. The differences between jobs would be the types of software you're supposed to be engineering. And I'm guessing you're not really into hardware (skipping Microprocessors), but neither am I, so I can't really give any advice there. I guess there's also research and further degree programs (Masters/PhD) that you could go into as well.

    Take this all with a grain of salt though, as I graduated this past spring with a CS degree and can't find a job to save my life. I've been targeting the games industry, but apparently I don't have good enough math skills and I don't orgasm when someone mentions "C++" and spit and swear when any other language is mentioned (slight exaggeration). I also can't seem to find work in other fields because I don't have experience with all the new Web 2.0 technologies.

    My suggestion is to go to any job fairs your school holds and see what's out there. Also, if there's a particular field you're interested in (AI, or Graphics, or whatever), talk to those professors about what kinds of jobs you can look for and what classes are really important for those fields.

    And it's also not bad to take classes you actually enjoy instead of "more CS classes for the sake of CS." It helps round out your education and gets you into a more diverse classroom setting at least. Looking at your schedule, though, I'd be a little uneasy about the lack of CS courses the last year too. If I were you, I'd probably end up taking some math courses.

    superchewie on
  • GanluanGanluan Registered User regular
    edited December 2008
    When I graduated with my CSE degree in '05 I had my 3rd to last and 2nd to last semesters filled with upper division CS/EE classes. My final semester I took a couple easy filler classes to finish out a couple requirements.

    My reasoning was two-fold: I felt like I needed a break my final semester before getting into the workforce, and I figured a lighter schedule would give me more time for career fairs/networking/job placement/etc. Like you mentioned though, make sure you stay polished on your skills even when not using them. I would HIGHLY recommend either taking a class on the newest web tools (AJAX, REST, etc) or learning them yourself, as they are in incredibly high demand right now and development seems to be moving away from desktop applications. Are you classes based on .NET, Java, or something else?

    Based on interviews I've seen and the way I interview people for positions here, it's most important to understand the concepts (OOP, for example) but also how to implement them in the language(s) they use. We will hire people who show good understanding of the principles but are light on actual programming experience, but not the reverse.

    I have to say, I work in business development and I've already forgotten most of the advanced Calc and Diff. Eq. stuff I learned. I suppose if necessary it's easier to pick them back up than learn them new, but unless you plan to get into specific fields, I don't think you'll be hurting yourself by forgoing the extra Math.

    Ganluan on
  • clsCorwinclsCorwin Registered User regular
    edited December 2008
    If you like graph theory, I can see plenty of applications for linear algebra based on that alone, not to mention graphics as everyone else ha mentioned. All in all, its been the first math class I've enjoyed in about 2 years.

    What Ganluan has said is pretty much what I keep hearing, especially from friends working at Microsoft, IBM, etc. Knowledge of the concepts and fundamentals is key, knowledge of syntax can be learned anytime. If you know the concepts, you can switch to a different language fairly easy. The converse is not true. That and knowledge of algorithms. Big companies love a good knowledge base in algorithms.

    clsCorwin on
  • DaedalusDaedalus Registered User regular
    edited December 2008
    I'm in the senior year of my CS degree right now, and all I can really say is that if your school offers a course in Design Patterns, jump on it, seriously. Apart from your courses in algorithms and data structures it will be the most important thing you take.

    Aside from that, take stuff that looks interesting and then see if that leads to a job. Don't take courses you hate in order to be "more employable", because what you are doing is making yourself more employable in a subfield that you hate. If you don't care about (for instance) graphics or GUI, you can still get jobs doing (for instance) embedded systems work. If web development doesn't interest you, there are other jobs. You get the idea.

    edit: also, getting some internship or, failing that, a research assistant position over the summer or something is crucial. Schoolwork alone generally doesn't help you learn to deal with huge codebases and groups of people.

    Daedalus on
  • clsCorwinclsCorwin Registered User regular
    edited December 2008
    Yea. That is one things that has been bugging me, because I know I need to find something. My problem is there is not much tech industry nearby.

    Plus I work full time, which is non negotiable since I have a wife and 2 kids.

    I've applied for an internship at Lawrence Livermore Labs, which a) is more than likely fucking hard to get into and b) nearly 2 hours away

    clsCorwin on
  • SmurphSmurph Registered User regular
    edited December 2008
    I just graduated with my CS degree back in June. If there is one thing I wish I could go back in time and tell myself it would be to take everything. I avoided stuff like AI and compilers because I thought it would be hard and put too much stress on me. After getting a job as a software developer, I realize that the opportunity to learn totally new stuff every couple months is pretty unique to school. As an engineer you probably won't be writing code all day. There are meetings, presentations, spreadsheets, etc.

    Smurph on
  • exisexis Registered User regular
    edited December 2008
    I missed my chance for a few summer internships that were offered up about a month ago, which I'm kicking myself over now. But I'll definitely look into it next year. I'll speak to my Software Eng lecturer, who A) is awesome, and B) has been around for a long time and has a lot of contacts in the local industry.

    As for stuff I'm not taking, after looking more closely at what I'm skipping, my only real option is Microprocessor Systems. Like databases, I didn't enjoy the prereq but graded reasonably well in it. But I'm working on the assumption that a sound understanding of databases is very important, whereas I have no interest in microprocessor systems and am hoping it won't be so necessary. Not to mention, fuck assembly.
    Are you classes based on .NET, Java, or something else?
    Mostly C/C++/Java. For most assignments we're given a choice, and I'm a bit more comfortable in C++ or C, though for my software engineering project this year we were told to use Java. I feel reasonably comfortable with OOP in either C++ or Java.
    Based on interviews I've seen and the way I interview people for positions here, it's most important to understand the concepts (OOP, for example) but also how to implement them in the language(s) they use.
    Yeah, during first year when we were being taught the principles of OO, this is what the lecturers kept saying. That despite learning it in Java, the class wasn't about learning Java, the class was about using Java to gain an understanding in OO. I appreciated that a bit more while learning C++ this year; feeling comfortable in C and with OO in Java, picking up C++ was pretty smooth. I'd like to think I'd be able to transition into other OO languages relatively easily.
    Aside from that, take stuff that looks interesting and then see if that leads to a job. Don't take courses you hate in order to be "more employable", because what you are doing is making yourself more employable in a subfield that you hate.
    Yeah this is basically how I've been trying to approach this. Considering I wasn't getting super excited during much of my intro discrete math class, I'm questioning whether it's worth spending another 3 semesters (I need 2 semesters of level 1 math to even meet the prereq for this Linear Systems class) studying it. My biggest fear being that if I have difficulty maintaining an interest, I'll struggle, which is partially why I did so terrible first year. I guess my big concern is that a lot of this linear algebra stuff teaches concepts that I need to know, even if I won't be explicitly using it.

    Thanks a lot for the advice so far, everyone.

    exis on
  • GanluanGanluan Registered User regular
    edited December 2008
    If you want to go into software engineering, I would highly recommend getting familiar with the .NET Framework, especially 3.5. There are a ton of jobs (around here at least) for .NET developers right now.

    Ganluan on
  • zilozilo Registered User regular
    edited December 2008
    If you want any chance at all at a job in game programming, you're going to need to take a linear algebra course. Other types of programming (web stuff, databases, etc), not so much- but for hardcore C/C++ jobs, you'll kick yourself if you don't get that training now.

    For reference, I'm a programmer in the game industry.

    zilo on
  • exisexis Registered User regular
    edited December 2008
    zilo wrote: »
    If you want any chance at all at a job in game programming, you're going to need to take a linear algebra course. Other types of programming (web stuff, databases, etc), not so much- but for hardcore C/C++ jobs, you'll kick yourself if you don't get that training now.

    For reference, I'm a programmer in the game industry.

    Okay, well I'm rearranging some classes to fit in the prerequisites to be able to take Linear Systems the year after. It involves dropping some random interest classes (ie. philosophy stuff), but my timetable is starting to look a lot more sensible. Discrete Methods will also be available to me the next semester, and I've put it down for now.

    I'm really only doing this to cover my ass. Like I said, I'm unsure what I'm going to be doing outside of university. I always liked the idea of working in games but it's hardly my lifelong dream, and I've heard a few negative things about working in the industry (really hard to get in to, relatively low pay rates, long hours/tight deadlines, etc), though I don't know how much of that is true.
    If you want to go into software engineering, I would highly recommend getting familiar with the .NET Framework, especially 3.5. There are a ton of jobs (around here at least) for .NET developers right now.
    I'll pick up a text book and see if I can get a bit of a handle on this myself. As far as I'm aware none of the courses available to me use/teach .NET.

    I definitely have a much clearer idea of what I'm doing for the next two years now. Thanks a lot for the help, guys.

    exis on
  • zilozilo Registered User regular
    edited December 2008
    Re: working in the game industry- yeah, it's hard to break in. That's probably the worst thing about it. The pay is surprisingly good, and the hours (at least where I work) are fine in the grand scheme of things. I think the longest week I've worked was 60 hours, which is a cakewalk. There's the occasional horror story of people having 100 hour weeks and stuff but those are definitely exceptions. Generally, crunch comes up once every 18 months and is 8-12 weeks of 50+ hour weeks which (in most cases, in the US) is compensated either through OT or bonuses. In my opinion my friends who are doctors and lawyers are much worse off than I am with respect to working hours.

    So you shouldn't let that stuff scare you off, but at the end of the day what makes you happy as a programmer in this industry is solving technical problems. At the end of the cycle you've got a game, but your day-to-day satisfaction comes from the same place as in any other programming job.

    zilo on
Sign In or Register to comment.