You sound just like me. I graduated with a B.S. And M.S.In Comp Sci in May. I had co-ops in The Industry and I loved them.
I was so much happier at work than at school. And now that I'm out of school and working, I am a much happier person. It seems like your problem is not the lack of programming/design exercise, but the fact that they are trivial assignments that no one will use.
This sounds like a pre-disposition to software engineering. If that is the case, one thing you can try is to start a blog, which I did too, and post about software engineering, which deals with the creation of software for every day use. If that is too boring, you can start a side project -- ask a friend or search online for an example project with a set of basic requirements.
Fill in the blanks yourself, crank out a design, and implement with an eye towards more requirements coming down the pike. Write a test plan, practice TDD, do rigorous testing, documentation, etc, etc. Basically, simulate a real project to get your fix. One thing about my CS curriculum that I'd change is to have more software engineering courses earlier.
They are interesting and useful courses. They tend to introduce them to students who are nearing or entering their senior year, like you, so I'd check it out.
I did create a project on SourceForge, a clone of a game they had on the computers at school when I was in junior I think I'll do some more work on that. Not sure if I'll start my own blog, but I'm definitely going to check out yours now. – Matt Blaine Sep 19 '08 at 21:54 Yes yes yes +100 to the side project.It's actually what all the Fortune 500 companies with IT departments look for.
– user691859 Jul 7 at 7:05.
All of that adds up to maybe 1 to 1.5 years of study. But now I'm stuck learning about propositional logic, how to calculate voltages and currents at arbitrary points in circuit diagrams, and which pin is the 3rd address line on an 8086 processor! Are you sure you're in a computer science degree program?
That sounds far more like computer engineering or electrical engineering; computer science in my experience rarely gets more low level than assembly, compiler design, operating systems, and processor structure; what you've described sounds exactly like the few EE classes I've taken.
Well, most of the software development products and software development work out there are bound to be enterprise applications -- that is, simple applications that require neither esoteric algorithms nor design elegance. Those are jobs for, well, not computer scientists, but for software engineers. The "useless stuff" that you have learned are applicable to a small (yet lucrative) subset of the current IT industry.
These are things that, say, allow you to create Google. Sergey Brin and Larry Page used precisely the knowledge that you are learning now to put up the world's.best.search.engine.ever. They customized their own hardware.
They wrote their own OS. They wrote their own hard disk drivers. They optimized the power consumption of their PCs.
They succeeded. That being said, what are your career plans for yourself? If you want to go into mainstream enterprise application development, be my guest; you can even do it right now.
But if you have aspirations of putting up your own startup with this high-falutin ultra-scalable ultra-efficient application, that's where you will see the fruits of your current labors.
I know this is super old, but I have to say that I seriously doubt all of that about custom hard disk drivers etc. That would be a waste of their time.. they were CS graduate students, and their breakthroughs were theoretical. Their success was in knowing the linear algebra to invent PageRank, not in optimizing the power efficiency of their hardware or squeezing a 10% performance boost out of 90s hard disks... that's ludicrous. – Brian Gordon Oct 31 at 3:51 Ludicrous perhaps, or simply misworded, three years ago.
I probably meant they had to write their own file system. ;) – Jon Limjap Nov 1 at 12:38.
To echo what a lot of comments have already said, it does indeed sound more like Computer Engineering than Computer Science. I just got my CS degree from Georgia Tech this past August (it was a great 5.5 year run :P), and the most CE-related stuff I did was summed up in the bulleted list of your question. As for pearls of wisdom, I've found the CS degree by itself is incredibly vague.
There are so many different areas you can go into, and because of this, the curriculum itself varies extensively from university to university. The pattern at the higher-tier CS schools is pretty clear, though: they focus on theory to prepare you for an MS program in a specialized field of CS research. If nothing else, though, what I got most of it was how to learn.
Yes, CS by itself is broad and only broadening as the months - to say nothing of years - go by. It is an incredibly fast-paced field and those who are on top today may very well not even be in the tabloids tomorrow. Yes, linear algebra is great.
Yes, algorithm analysis is great. Yes, programming in x86 assembly is great. All of these are classics that form a solid foundation for just about anything.
But the technology that utilizes these classics is changing more rapidly than a politician's platform, so the ability to learn new materials and concepts is absolutely crucial. And I think a CS degree does that to the point of absurdity. It would have indeed been nice to know all that earlier, back when I still believed Computer Science = Software Engineering.
This hits especially close to home as I am supposed to be in my 3rd year of my CS degree. I could not stand how trivial everything was and became completely unmotivated. I've been working "out there" part time for a relatively long time and I absolutely love doing it, I just really dislike the classes and how I've been taught.
I ended up taking this semester off and doing full time web work and I'm loving it so far. I will go back in the Spring to get that piece of paper but it's definitely helped me.
Yeah, I've been able to take semesters (3 total so far) and work "out there". It's actually required. What I'm facing now though, a whole year straight, including the summer, of classes.
But yeah, knowing I'm not the only one seeing things this way makes me feel a lot better. – Matt Blaine Sep 19 '08 at 4:00 If you absolutely don't enjoy Computer Science.. it isn't impossible to get a job without the degree. – Simucal Nov 21 '08 at 6:20.
Definitely sounds like computer engineering to me. Personally, I took software engineering, and found almost all my courses extremely useful. Especially in 3rd and 4th year.
I'm two years out from graduating my BSc(Computer Science). I had a similar experience towards the end of my third year at uni. Work was teaching me more about software development than university and I needed to justify staying through the fourth year.
After talking to a people who had recently graduated and a few employment companies I came to the conclusion that it was worth staying at uni for the doors that the degree will open numerous employers (including my current one) won't take you on without the degree. The other piece of advice I was given was to use the (huge amount) of spare time to fill in blank spots on your resume. Join some (worthwhile) student organisations, enter some programming competitions.
Generally do what it takes to make your resume look better than the your peers once your finished. The number of opportunities afforded to you by the university is huge once you start asking around. Everyone walking out of a university can code you need to stand out.
Most employers really want you to have a degree, and a lot won't even look at your resume if you don't have a degree no matter your experience. Besides, if you're only 1 year away, just go for it and get it done. Once finished you won't have to do it again.
You should be learning about algorithms, operating systems, compilers, programming languages, databases, etc in Computer Science, not logic gates and pins on processors (though there's usually is one course on that). In other words, you will be dealing more with abstract concepts and mathematics than you will be with manipulating silicon.As Dijkstra said Computer science is no more about computers than astronomy is about telescopes. If you are a coder at heart and you are accidentally in a Computer Engineering program, you better let somebody switch you before it's too late.
Just think about how much sooner you'll be able to retire. Really. Stick it out for another year and get your fancy piece of paper, then get back to business.
Chris Pietschmann Most employers really want you to have a degree, and a lot won't even look at your resume if you don't have a degree no matter your experience. And some see the value of real experience over people whom came out of a computer science degree and had their mind wasted on stuff they don't need to know for the job like the 3rd pin line on an 8086 and wish they could find somebody with practical skills they could actually use instead of having to adopt a novice and train them up. My suggestion is don't rely on uni to teach you everything you'll need to know for the job.
They teach concepts and structures. Its up to you to apply them and learn the specifics and increase your own value. FWIW, I gave up on uni.
And now I telecommute with the other side of the world and love it. And the irony is what I'm working with I was never taught. ( I may apply concepts I learnt in other languages / classes but still ).
Do what microsoft does. Embrace and extend. While you may not see the value in some of these classes, with a little effort you'll find, for instance, that programming an Arduino is ton's of fun, and you now have enough experience to do it.
Also, you're learning an important lesson about perseverance - beyond this there will be many points in your life where you'll be wondering what the heck you're doing what you're doing. Push through these, get the work done, and you'll often pop out on the other side improved.
". In this case, he may have the wrong major.It's not enough to be able to persevere if you're not learning what you'll need to know in the process. – Kyle Cronin Sep 19 '08 at 2:34 1 You forgot the third part of that expression: Embrace, Extend, and Extinguish.
:) – Jason Baker Sep 19 '08 at 2:39.
I agree with the general sentiment -- it sounds like you are in a Computer or Electrical Engineering program rather than computer science. The focus on the hardware is a sure sign it is engineering (plus it sounds like my 2 yrs of EE course work, before I dropped that part of my double major). In general, you sound like a pragmatist, so here's what you will learn from a CS degree (not a CE/EE degree!) that will be of benefit: Finite State Automaton (and its various incarnations), Operating systems, AI (if it avoids Lisp and predicate logic you'll probably learn more practical stuff), Compiler Construction (that course has been foundational for my 10 yrs of software development, even though I don't make compilers :-)), Network Communications and so on.
Also, Software Engineering courses (which will focus on many practical non-coding aspects of software development) are of great value. Also -- something that will help guide you into what optional courses you should take are what did you enjoy or hate in your "real life" work? You can shore up your "hates", or you can develop a specialty in the area you love.
Also -- for your personal edification, pick up Code Complete and the Pragmatic Programmer books to get you through the darker times (e.g. Hardware classes). Personally, I recommend transfering to a CS or Software Engineering curriculum as that seems more where your heart is than EE or CE.
Yeah, I'm actually making my way through Code Complete right now. – Matt Blaine Sep 19 '08 at 15:08.
Take some classes in topics/areas that will be of practical use to you in the future, and that have nuances that might not as readily picked up by just working on projects on your own or at a job. A few examples from the last year of my CS degree (back in 1999) which I still find useful regularly: Operating Systems / Multithreading Database theory User interface design / human factors.
None of the courses I've taken so far have dealt with databases, but fortunately I've learned a lot from the co-ops I've been on regarding that. User interface design & human factors - that should be part of the curriculum! Thank you.
– Matt Blaine Sep 19 '08 at 3:57 Matt, you're welcome! – Jon Schneider Sep 19 '08 at 21:29.
Propositional logic rules! That was one of the only college classes that I actually enjoyed the point of the degree sometimes is: do you finish what you start?
I've got my CS degree. The courses were boring. I had a real coding job while in school, so that helped.
Another thing to perhaps consider is the simple fact that CS degrees don't really mean much. 4 years SE career experience means a lot more in this market than a CS degree. I'm not trying to tell you to drop out... but I know plenty of rock star devs that never even started...
Aaron, I wonder what you mean by "rock star devs that never even started...". You mean they aren't in the IT industry right now? – Jon Limjap Sep 19 '08 at 2:44 I meant never even started college... they went straight to industry.
– Aaron Jensen Sep 22 '08 at 1:20.
As well as learning the basics, a computer science degree is about learning from the people around you and making the most of the social environment you are in. I recommend starting a group for passionate students to get together and either attempt to create something yourselves (game, framework, program etc) or just to discuss issues and be geeks! Not only will you benefit in the short term by learning from each other but it is great to make and retain contacts for the future when you may be looking around for employment.
Granted this is an old question and my answer is also going to be somewhat dated but here is how my 4 years of university broke down when it came to CS courses: 1 - Introduction to programming and various principles like Divide and Conquer, using Abstract Data Types like Stacks and Queues, etc. 2 - Object-oriented programming, linkers, parsers and more of a breakdown in the SDLC and how compilers work. 3 - Broad-based touching on various topics. Exposure to hardware and using breadboards, operating systems, concurrent programming, numerical analysis, finite automata theory, etc. At this point there were 6 courses to take rather than just 2 which was the case for the first couple of years where I went to university.
4 - Choices amongst which of 3 one wants to take further.In my case this would be a mix of Algorithm Design and Analysis, Computation Complexity Theory, Symbolic Computation, and Introduction to Artificial Intelligence. My university years were 1993-1997, so the program has probably changed a lot since those days, but I remember some of it pretty well. Hopefully you've graduated by now and are working instead of studying so much.
I cant really gove you an answer,but what I can give you is a way to a solution, that is you have to find the anglde that you relate to or peaks your interest. A good paper is one that people get drawn into because it reaches them ln some way.As for me WW11 to me, I think of the holocaust and the effect it had on the survivors, their families and those who stood by and did nothing until it was too late.