Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I'm currently a sophomore at my university, majoring in Computer Science.

Obviously, there are some programming courses as part of my curriculum. However, I'm feeling very underwhelmed by its progress.

I've self-taught myself a lot and like to code in my spare time as a hobby.

I'm currently in Computer Science II. I never took CS 1 because it seemed rather basic -- I asked someone in the department if they would override my CS 1 requirement if I passed their final (which I did with flying colors).

Anyway, the class is going by quite slowly. It seems like the rest of the class has a hard time understanding some basic concepts, which the professor needs to keep going over to help them understand.

Is this normal? Looking at the class schedule, I seem to know everything except for one or two things near the very end of the semester.

Is there a different perspective I can look at this through so it doesn't seem so boring?

share|improve this question
5  
Show-off. You were not prepared to make the most out of college. Do not take classes that you do not need to. Fight with your teeth and claws to place out of the stuff you know. There are ways. You are not going to learn much in 4 years anyway, but you might as well try to get a bit more out of it. There are always graduate classes, and those will kick your ass, kid. –  Job Feb 1 '11 at 15:24
5  
@Job Such a strong position. It was never my intention to show off, and this is a problem that I think many people with an avid interest in their uni major may experience. The course description (and also what I was told by advisors) was quite vague and each professor teaches at a different pace. It's not as clear cut as you make it seem. –  Corey Feb 1 '11 at 15:42
5  
Maybe you could take the time to help the rest of the class? Learning to be a good teacher could be useful. –  Niphra Feb 1 '11 at 15:50
4  
Again, stop attending. You're at university - there are billions of other more interesting experiences you could be having right now. Have them! If you're out of ideas, go into a music class or pick up a girl at the library. You are ultimately responsible for how you spend your time - you have the luck to identify you're wasting some of it. Stop it, and do something more useful - anything. –  blueberryfields Feb 1 '11 at 15:56
1  
@blueberryfields Well, I'm hard-of-hearing and have a girlfriend, so those are probably not the best suggestions to make, heh. Though, I fully agree with your point. I'm not denying it's a waste of time, but rather trying to explain why it is, which I'm doing mostly for myself to reflect on. –  Corey Feb 1 '11 at 16:15

12 Answers 12

I have only one thing to say, make sure you understand your stuffs, if not then ask professor that you have not understood and be transparent with your TA's and Professors and always keep learning and make use of various online communities like this where people who have good industry experience help you and guide you.

share|improve this answer

Academically, take up harder units such as data structures, complexity analysis, discrete structures, combinatorics etc, placing more focus on the maths.

To improve your programming and problem solving skills, I find nothing to be more challenging than the ACM-ICPC. This is their official site. Find out if your uni has a team, and if not, try to convince your professor to pull one together. :) This competition is where you get to code alongside the best of the best. Check the bottom of this page for some examples of the stuff we have to learn AND apply, even as undergrads (there are quite a few grad students participating too). Check the problem archive for questions to solve, and if you can actually breeze past them, I think you should just drop out and demand a job from Google (or any company of your choice) as uni's just gonna be wasting your time.

And if you want some advanced reading materials, take a look at this discussion over at CST.SE.

share|improve this answer

Count yourself lucky that you have an easy class this term. Don't blow off the assignments. If they seem boring or easy, then it's time to add elegance. There ought to be a way to formulate the next obvious questions or think deeply about the problems presented to you.

Take those questions in during office hours and pose them to the professor. Every time I did that when I was in school the professor would drag down a book and show me a new angle on the subject.

Above all, don't complain to the professor that his class is boring. There's one or two of you in every group, every term. He knows it. Dropping out would be far worse, because as the others have pointed out, for you, it's about to get really, really interesting, but the follow-on courses are likely to use the jargon and material from the one you can barely sit through today.

Also, don't sell your textbooks. ;-)

share|improve this answer

I'm in almost the same situation. I'm a dual computer/electrical engineering major with a computer science minor, and that minor requires me to take a second-semester course, which I'm taking late as an easy A: It's CS 251, Computer Architecture. I've taken the courses which come after it in the junior and senior years, CS351 (Unix and C) and CS451 (Operating System design), and I've also had various engineering courses which go into even greater detail. I don't expect to learn a whole lot. I've talked to the department chair, and it's not something I can clep out of and still get my minor for some obscure reason .

So, I've been making the most of it. While the rest of the class has spent three weeks learning how to convert hex to binary to decimal (yes, that's 9 hours of class time), I've been developing a PCB on which to mount a PIC32 microcontroller with a modern MIPS core, instead of using the 1988-era SPIM simulator. I've talked to the proff, and he supports my desire to do the exercises in a more modern (and hence more complex and practical) environment, and he's interested in modernizing the course someday.

If you're a standout student and not just a show-off, talking to your professor should get you some different, more challenging assignments. Do it tactfully. If you're not interested in doing some additional work but still want the degree, perhaps you should minor in business so you can be a manager instead.

If you still find yourself with free time, join an open-source project or get an internship at a local software company. Learning about how real development is done is incredibly valuable, and it's something many schools don't teach.

Or, you could always transfer to the engineering school. You can't find many engineering schools that are accredited and under-challenging.

share|improve this answer

If your school has a team that participates in the ACM ICPC you could always look into that. It's what I did and I learned more from the other people in that group that from class my freshman year.

share|improve this answer

There have been some good answers so far, but I thought I should add that MIT has a lot of CS open courseware. You could always "take" some of their courses without being enrolled or contribute to some open source stuff to build up additional resume line items.

share|improve this answer

The first two years of any program should pretty much be a joke in any field if you have the aptitude to do well in your chosen field of study. I can't remember any "hard" classes until my junior year. If you want to be ambitious then asked your professors what kind of research project they are involved with and if there is any room for you jump aboard. Also, it is not uncommon for fun academic student clubs to exist such as a solar car team, game development club or some equivalent that can you look to get involved in.

share|improve this answer
    
Maybe true for most majors, but certainly not engineering. The engineering mechanics courses that are taken in the second year are usually the most rigorous and important classes in an engineering curriculum. Most upper level courses will be built almost entirely on a (hopefully) strong foundation of these courses. –  Darel Feb 1 '11 at 15:32
    
This varies widely with different schools and different programmes. –  FrustratedWithFormsDesigner Feb 1 '11 at 15:43
    
I total disagree. I went to school for electrical engineering and my experience was exactly as I described. I will agree that those class are important, but they are still not even close to rocket science. –  Pemdas Feb 1 '11 at 15:54
1  
I suppose it depends on the university. At my university, there were way too many engineering students enrolled so the 101 class was essentially an academic bootcamp meant to make half the students drop out and change majors. –  Neil Feb 1 '11 at 17:33
1  
Intro CS is harder if you don't have prior programming experience. I found it to be pleasantly challenging, with only a little BASIC I taught myself in my teens and some HTML under my belt. During my freshman year, I also was taking differential equations, linear algebra, and statics (where the top of the curve got about 60% of the questions on tests). So freshmen can take difficult classes, and still need the intro CS classes and find them challenging (especially if you have good professors who add great extra credit challenges to assignments!). –  Ethel Evans Feb 1 '11 at 19:15

Even when the assignments appear trivial and boring, you need to complete them anyway. The quickest way to fail is to be bored and skip the assignments. I know because I've done it before.

Anyway, the class is going by quite slowly. It seems like the rest of the class has a hard time understanding some basic concepts, which the professor needs to keep going over to help them understand.

This is normal. Many people enroll in certain college majors because they see the salaries they can make when they graduate. Not all of them have the aptitude for the career they are striving for. This is why you see that many of the students are struggling with basic concepts. And there are some educational institutions that try to cash in on this trend; Joel calls them Java Schools.

There will be several hurdles that aspiring programmers will find in education. One of which is recursion, and another is pointers.

I’ve come to realize that understanding pointers in C is not a skill, it’s an aptitude. In first year computer science classes, there are always about 200 kids at the beginning of the semester, all of whom wrote complex adventure games in BASIC for their PCs when they were 4 years old. They are having a good ol’ time learning C or Pascal in college, until one day they professor introduces pointers, and suddenly, they don’t get it. They just don’t understand anything any more. 90% of the class goes off and becomes Political Science majors, then they tell their friends that there weren’t enough good looking members of the appropriate sex in their CompSci classes, that’s why they switched. For some reason most people seem to be born without the part of the brain that understands pointers. Pointers require a complex form of doubly-indirected thinking that some people just can’t do, and it’s pretty crucial to good programming.

Source.

You will find that some folks just don't get recursion and pointers. At the moment, you're probably encountering fellow students who just don't get assignment and looping.

share|improve this answer
    
That was a good read. My school is definitely a Java School in that manner, because... well, it teaches Java and tries to dumb it down as much as possible. It's strange though -- after the class I'm currently taking, it jumps into more advanced things like data structures, advanced algorithms and operating systems. So my school is not a lost cause. I really hope this class weeds out some of the struggling students. –  Corey Feb 1 '11 at 16:09
    
@Corey - I've got a minor at a Java school, and trust me, they can dumb down data structures and algorithms a lot. Teach about three data structures by memorizing the Java API reference, and then tell students they can just import the rest of them. Get them to be able to follow the pseudocode of a sorting algorithm, and do a simple sort with 5 items on paper, and your job is done. OS is harder, I'll admit it. –  Kevin Vermeer Feb 1 '11 at 17:31
    
@reemrevnivek Well, that's not very promising, but I probably will learn something. I don't consider myself an expert by any means, but definitely above the novice level that my class is currently teaching at. –  Corey Feb 1 '11 at 18:23

Channel your energy into something that excites you. If your classes aren't challenging you, challenge yourself; push your boundaries. Work on a pet project; enter contests such as Dell's Social http://www.dellsocialinnovationcompetition.com/ ; volunteer your time and skills to a cause you believe in.

If your university has a graduate program, talk to the professors doing research. If your university does not offer such programs, talk to your professors -- someone you admire and trust -- and ask if they'd be willing to connect you with their colleagues in industry or other schools.

Hope that helps and best wishes,

KM

share|improve this answer

If your curriculum is anything like mine was, things will get challenging when you start getting deeper into data structures, computer architecture, algorithm analysis, models of computation, and formal languages. Your compiler class will probably one of the most challenging; odds are it'll be the most code you'll have to write for an undergraduate-level course.

Edit

Like Perndas says, this stuff starts being thrown at you in your junior year. I remember computer graphics also being somewhat intense (this was the days before OpenGL, so we had to roll all of our own code for setting up the viewport, field of view, shading, etc.).

share|improve this answer
1  
Do you have anything more than anecdote to base those odds on? I'm curious because I only have anecdote, but mine is that I wasn't asked to write a single line of code in the compiler courses. –  Peter Taylor Feb 1 '11 at 16:54
    
@Peter Taylor: Nope. Just going by the program I went through. The regular class required everyone to hand-hack their own lexers and parsers and generate compilable assembler code. I took a summer session, so we got to cheat a bit with lex and yacc. Even so, the only class that came close in terms of volume of code was the graphics class. –  John Bode Feb 1 '11 at 17:24
    
In my class, the entire class was given old Matrox graphics cards. With a "War and Peace"-sized technical manual roughly 1000 pages, we had to write drivers that would use it to draw triangles on the screen. The easy part was writing the program that drew triangles on the screen. The hard part was everything else. Had to write my own compiler as well using bison and lex. That was tough, but I think I enjoyed that a lot more by comparison. –  Neil Feb 1 '11 at 17:29
    
in fact, thinking about it, we did more programming in the theory of computation course. I remember that the lecturer offered prizes of bottles of wine for Turing machines to solve a couple of problems. –  Peter Taylor Feb 1 '11 at 22:17

Build your own project on the side if you aren't feeling challenged enough. Its what I do - a lot of individuals going into CS or even IS haven't even done basic scripting like javascript before. I know the feeling though.

share|improve this answer

For starters, ask the professor for some more challenging problems. They don't have to be for marks or anything, but deeper investigations of the problems discussed in class. You could also look at the assignments for the next course in the programme and see how those feel. Also check your textbook, some of them have interesting labs and exercises that the prof never gets to due to time contraints.

share|improve this answer
    
..and if you can complete those problems, that will establish your credibility, which can lead to not having to do the boring work. –  Kevin Vermeer Feb 1 '11 at 17:22
    
I strongly agree with this. My intro professors always added extra credit challenges to the coding assignments, so even highly skilled students could be challenged. Also, is this a research university? You could ask the professor to introduce you to some grad students working on more advanced problems related to your coursework. This could set you up to work with one of them as a research assistant later on as well. Be humble when talking to the professor; you don't want to look like a 1337 kiddie (I TA'd a few intro classes . . . there were always a few of these). –  Ethel Evans Feb 1 '11 at 19:22

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.