Slashdot Mirror


CS Students Want Advice on Helping Strugglers?

geekgirl21 asks: "My university's Computer Science Society (a student organization) wants to create a booklet about helping students get through the major's introductory courses (3 semesters of Java). The focus of this booklet is toward the people who work hard but still struggle with the courses. Specifically, we'd would like some advice about where to get the following: clearly written books/articles about the concepts of Java and OOP, how to prepare for tests, how to take notes in class, how to productively complete a coding assignment, and how to write good, documented code. Also, organization is not our group's strong point. So how do you recommend splitting up the work to complete this seemingly intimidating task? Thanks in advance about any advice you can provide."

12 of 99 comments (clear)

  1. Here you go by Henry+V+.009 · · Score: 2, Insightful

    Here is the advice to give a struggler:
    Have you considered a major in psychology?

    Now stop trolling about the honor systems CS departments put in place to reduce cheating. It's not like there is anything you actually learn in four years of CS education that you can't learn in 3 months with a pile of books.

    1. Re:Here you go by Jose · · Score: 4, Insightful

      It's not like there is anything you actually learn in four years of CS education that you can't learn in 3 months with a pile of books.

      I'd disagree. Going through those x years of higher education teaches you quite a bit. You may not remember half the stuff that prof tells you, but it is the other things that you learn that are _way_ more important.

      Like how to teach others. You may be really strong in some aspect of a course that you are taking, so some of the other students ask you how it works/how to do it. The easiest way is to just give them the answer. The problem with that is that those people keep coming back looking for the easy answer, but if you spend 5-10 minutes initially explaining how/why something works, that student will (hopefully) understand how to do it, and won't come back. When you first start doing things like, you'll probably stumble a bit, and it'll take a while to explain things, but once you get the hang of it, then your teaching becomes much quicker, and much more effective. (a very strong asset for you to have)

      Another thing that you will learn is how to ask questions, as above, you may just start out asking for the answer directly, then you start asking why, then (hopefully) after a while, you will be able to succinctly be able to describe a situation, the problem you are having, and what you have tried in a short order of time. (again a very good asset for you)

      You learn how to deal with prick collegues, superiors, and aquaintances.

      A lot of people will think that these are things that you can pick up in high school, or that you already know these things (they are pretty obvious), and yes that is true. But the concentration of these factors, coupled with the pressures of higher education really drive home these qualities, and it should be just second nature to you. So that it is just a reflex, not really something you have to think about.

      yea, you could probably learn some or even all of the technical details in 3 months with a stack of books, 2 pencils (37 erasers!), and a couple computers...but you'd miss the whole point of University.

      --
      The basic sleazeware produced in a drunken fury by a bunch of UCBerkeley grad students was still the core of BIND. --PV
    2. Re:Here you go by GMontag451 · · Score: 3, Insightful
      Your statement is the learning equivalent of saying "some people simply cannot drive with a gas pedal... they need someone to ride with them and operate the gas". Wrong. You can't drive a car without knowing how to use the gas pedal, and you can't learn without being able to pull information from a book.

      No, its the equivalent of saying "some people simply cannot learn to drive without someone showing them how and riding along with them at first" which if you ask me if perfectly reasonable.

      I wasn't suggesting that it should be alright for people to not be able to learn from a book at all, but rather that there are quite a few people that cannot learn from only a book. The value of a good teacher cannot be underestimated.

      The job of the person at the front of the classroom is not to digest knowledge for students, because it can't be done.

      No, their job is to figure out how a student best learns, and translate the material to be learned into a form digestable by the student. Whether or not the student actually digests the material is a function of how much he/she wants to learn it.

      The learning process involves exactly one person, the student. The only one who can teach you is you.

      The learning process invovles two people, the student and the teacher. You need both a motivated student, and a good teacher in order to learn.

  2. Well... by dh003i · · Score: 4, Insightful

    You can always take the approach that has a very strong heritage in the Linux community, and has recently been catching on in some certain colleges: RTFM! READ THE FUCKING MANUAL!

    Seriously, that is what some colleges are doing. You can be expelled for helping a struggling student; it falls under the same class as cheating or plaguarism. The idea is that they want to weed out all those who can't hack it on their own, so as to save them from wasting years of work. After all, programmers need to be able to get stuff done on their own, without asking for help every 5 minutes, right?

    Well, I can understand this approach: programmers need to have some degree of independence. But everyone struggles with some things, and maybe this person has really great ideas for programs/algorithms, but just has problems putting them into computer language. It'd be a shame to waste such a person because (s)he couldn't get it right by rtfm'ing.

    Also, in the real programming world, though much is done independently, no programmer is an island unto himself. No one can do everything, and the wise programmer seeks the advice of specialists in particular areas.

    Personally, I think that you can only help other people understand something/solve something if you know how you do. You might solve a problem lickety-split. How? If you don't know how, you can't really help anyone. But if you can analyze your thought process and come up with exactly how you solved that problem, you can help other people think in the way you do about the problems (which is obviously a good way to think, since you solved it quickly). It might be a rigorous logical thought process, or a highly innovative one. Even if you are really good, you can benefit from this type of thing by understanding the thought processes of others who are really good, thus adding to your own thought processes.

  3. Weed out by lexarius · · Score: 2, Insightful

    If they can't get through a semester of Java and understand the basic concepts of OOP, they aren't likely to go far in the world of CS. Instead of giving them a crutch and producing more undertalented individuals, ask them if they want to try the course again or switch majors. Same goes for any major. There once was a time when a CS degree meant something.

  4. It's hard. Sorry. by WasterDave · · Score: 3, Insightful

    I recently read the first few pages of an introductory Java course taught at a University (too much wind, couldn't go snowboarding). It appeared to be the best introductory coding course ever written. It said, basically:

    * Coding is hard. We don't expect everyone to be able to do it.
    * You will only learn to code if you practice. It's like learning a musical instrument, there are no short cuts.
    * You will still be able to work in IT if you can't code.
    * Did we mention hard? Good.

    Dave

    --
    I write a blog now, you should be afraid.
  5. The cyncical (and elitist) point of view by Dr.+Bent · · Score: 5, Insightful

    Don't help these people. Let them fail. Seriously.

    1) There are already way, way too many bad programmers out there. Every profession has the standard bell curve of skilled vs. lame, but software is 10 times more skewed toward the lame end due to too many people dropping out of school to go work at a dotcom. Don't add fuel to the fire.

    2) Every good programmer I know learned 90% of his skills on his own. Yes, you can learn things at school that are difficult to learn on your own, but quite frankly, these things shouldn't require special help to pick up (outside of normal coursework). If you can't figure them out on your own, your chances of applying them correctly are pretty damn low.

    3) [and most important] Too many people go into Computer Science because the money's good, or because it seems like a better idea than the alternatives, or because they like playing Quake and they think that's what C.S. is all about. Then they get into their 3rd year and decide that they hate programming and switch majors. The sooner these people figure out what it is they REALLY want to do, the better, for them and us. It takes a special kind of person to actually ENJOY (not just tolerate) programming, and if you don't enjoy it you're going to regret making it your life's work.

    On the other hand...

    1. Re:The cyncical (and elitist) point of view by (trb001) · · Score: 4, Insightful

      Yes, yes, double YES!

      I got out of college pretty much at the height of the dotcom saga (May, 2000). I was/am no slouch when it comes to programming...I went to Virginia Tech and was on the school's ACM computer team (unfortunately, I graduated before they won 3rd place in the international finals, but I cheered for them :). When it came time for interviewing, I knew I wouldn't have a problem finding a job but I thought some of my peers might since many of the people I knew from class could barely write C code for their projects. I remember practically writing their code for them while I was in school and figured eventually this would catch up with them when it came time for the real world.

      Yeah, I was wrong.

      These people still managed to get 50k+ starting salaries with signing bonuses that were just sick. They weren't GOOD at what they did, they just knew what a computer was and how to program a little, but that was enough for most companies. And we wonder why those companies didn't do well...

      Anyways, back to the point. I was a computer engineer in college and I still remember the first day of orientation. All the engineers in our orientation group (you were a 'general engineer' until your sophmore year) were gathered in an auditorium to listen to the dean speak. One of the first things he said was "Take a look around...3 of the 5 people sitting near you won't be here when you graduate". I was PROUD of that fact, knowing that I would be one of the few engineers to make it through my 4 years at school.

      I wish CS were the same way. I wish people had a rough time and were forced to drop/fail out of of the major, then maybe we wouldn't have the glut of horrible programmers passing resumes around and making it very, very difficult to find a job these days even if you are an excellent developer. Please, don't help these people more than they deserve, it's doing them and the rest of us a great disservice.

      --trb

  6. Re:Should you? by jeffy124 · · Score: 2, Insightful

    I agree. At some point there are individuals who simply are not compenent to handle the world of programming, or college in general.

    Hearing heard stories from grad students who have TA'd the first year courses at my school, there tend to be four types of students: Those who get it, and those that dont; those that work, and those that dont. Treat as a 2x2 table, every student will fall into one of the four cells, maybe not distinctly, but they will. It should be clear what students in each cell should do, whether it be continue deeper into CS, change majors/tranfer, or drop out right away, drop out a year later.

    --
    The One Rule Of Chess You'll Ever Need: Don't play someone who carries a kit in their bookbag.
  7. Yes, because... by Tom7 · · Score: 3, Insightful

    First of all, it's not clear that these are necessarily computer science majors. Many majors in my school, for instance, require their students to take the intro CS courses but nothing further.

    Second, you should probably learn some patience -- though this stuff may seem easy to you and me, just because someone doesn't "get it" immediately doesn't mean that they won't, eventually, and go on to be successful. I'm reminded of one of the hardest classes I've ever taken, an undergraduate course on functional programming and advanced programming techniques... I hated that class at the time, but now I do that kind of thing for my research, and it's totally comfortable for me. Sometimes it's just a matter of getting over that hump, and sometimes the inability to do that may be more a problem with the teaching method than the student.

  8. Go to lectures by MyGirlFriendsBroken · · Score: 2, Insightful

    My Advice is to go to as many lectures as possible. It reduces the amount of work you have to do by 50%. I say this because you then know where to seek help when you have problems, you know what train of thought has been employed to arrive at a decision and you get to see your mates.

    I would say that seeing you mates is more important that people might think, these are guys and gals who have the same work as you, if you have a problem with some coursework then I doubt very much that you are alone, or the nobody from your course can offer a solution

    I have been employing these ideas for the past 2 years of my CS course at Newcaslte,UK. It has resulted in high marks for comparitivly little effort compared to some of my colegues who think I'm lazy because I don't work past 6 in the evining as I would rather spent the time with my girlfriend. They don't understant that if you start working at 9am, go to all lectures and do most of your work in the lab where there is an inexaustable source of help and experince that there is no need to work for more than about 7 hours a day.

    --
    If you read a speed reading book, does it take you less time to read the second half?
  9. Don't make a booklet, lobby to change the courses. by ivan256 · · Score: 3, Insightful

    Java is not an appropriate introductory language. There are basic concepts you should learn before you start to use java. You should learn to use simple data structures, and learn procedural programming and design before you get confused by the syntax of object orientation. You should be learning how the computer works at a low level before you are expected to understand high level concepts and where it is apropriate to use them. If you start the students out with java, which may seem simple to people who already know how to design programs, the students won't understand why and why not to do certain things. They will be forced to learn through trial and error what they should have been taught to begin with.

    Instead of putting your effort into helping people who have never programmed before to use java, spend your time convincing the school that the first two semesters should be basic programming with some C and some assembler (not as classes that teach the languages, but using the languages as necissary tools to demonstrate the concepts. In early courses, syntax should only be taught when it is necissary to implement a concept), and a data structures class where C pointers and structures should be introduced moving on to java towards the end. Guaranteed, after the students learn basic concepts well, they'll have no trouble picking up java. They'll also write better code for their entire career.