1. Welcome to the new MacRumors forums. See our announcement and read our FAQ

Having trouble grasping program concepts...

Discussion in 'Mac Programming' started by SuperCompu2, Sep 6, 2008.

  1. macrumors 6502a


    I'm in an introductory programming course at my University, and We're starting out with scheme. I find it really hard to understand what's being taught, yet the other people in the course seem to be doing fine. The course was advertised as being "good for people with no prior programming experience", yet I still find it extremely difficult to grasp what's being taught.

    Anyone have any tips for learning programming or study tips to reinforce what I've learned? Sure, I could read endless amounts of text on the subject, but I feel there must be other strategies to mastering programming. It concerns me almost to the level of wanting to avoid it for the rest of Uni.

    Help? Thanks!
  2. macrumors regular

    Have you tried speaking to your tutor about the difficulties you're having? (BTW, I can personally attest to the folly of not communicating with tutors in these situations - it tends not to work out so well.) Helping you understand (and how to learn to understand) is kind of what they're there for.
  3. Moderator


    Staff Member

    The unfortunate truth is that it's impossible to teach absolutely everyone to program. Some people simply never, ever, grasp the concepts and never get comfortable with it. I saw quite a fair few realise this and switch courses when I was doing my CS degree.
  4. macrumors 68040


    Reading endless amounts of text is how you learn. That's like asking "how do I learn the intricacies of british literature without reading a lot of british literature or commentary?". It will take a fair amount of reading. There are a few reasons your peers might be having an easier time, such as:
    They have studied programming concepts in the past.

    They are reading a lot more, spending more time working with one another, spending time with a Teaching Assistant or the Professor, etc. Generally putting more into it.

    They are simply pick this up more easily.

    The first case, they just have a head start, so you have to catch up. The second case you can remedy by putting more work in. The third is simply unfortunate, and means you'll have to work that much harder to "get" programming than others.

    Scheme is a more difficult starting point, in my opinion, than other languages. It will serve you well, but it forces logic and rigor, and concepts like recursion much sooner than other languages. Nonetheless, with some effort and time, you will be able to pick it up. I don't know that there are real "tips" to programming. You have to learn the syntax, and start writing. When you run into problems, post here, ask your TA if you have one, or ask your professor. It is their responsibility to teach you, after all, but they can't force you to understand.

    Good luck, I didn't want to be harsh. I think you CAN do it, but it's time for you to decide if you will. There is a chance that you really can't do it, programming is not for everyone. If programming "just isn't your thing", i suppose it's better to know now. Is CS your major? If not, you're in a much better place to give it up if you decide that's the right thing to do.

  5. macrumors 6502a


    With programming, it isn't enough to simply read about it, one has to jump in and do it and that,in practice, means practice. In that sense, it's not unlike learning a musical instrument, or to be less grandiose, learning long-division for the first time.

    Many otherwise bright students struggle with it at first, so don't get too discouraged. It's going to take many hours in the computer lab, much tear your hair out frustration, but eventually if you keep at it, at some moment everything will just click.
  6. macrumors 6502a

    1. Online resources not done by professionals. Professionals tend to talk like professionals. Random people who want to be helpful seem to make better tutorials and docs. Easier to understand. Maybe it has to do with the fact that they're doing it because they want to, they aren't getting paid.

    2. If anyone you know programs or knows basic programming stuff, ask them to tutor you. I wish I could have a 1 on 1 tutor, but unfortunately I've moved onto programming my dad can't help me with anymore. Being able to talk with the person, use paper to show ideas, and having a laptop in front of you so you can do hands-on is probably the best way in the world to learn.
  7. macrumors 65816

    I have to echo whats already been said...you have to do it. Type up the examples in the book, change stuff around, add more features, etc. That is the absolute best way to learn.
  8. macrumors 6502

    I tried to teach some programming basics to some people, came to the conclusion that not everyone can do it. It helps to want to do it, however seems that you need logical and abstract thought processes to get anywhere.

    If you're wondering what you need one of those functions everyones talking about for...might as well give up now :D
  9. macrumors 68000


    Over the years at my University, I came to one conclusion: Not everyone can be taught how to program. It doesn't have to do anything about the IQ of a person. It has more to do with the concepts of abstraction.

    What I always tell people is that before you sign up for programming courses, you must already know what you are getting into! Some people find so hard programming, that they give up before they finish the University.

    If you feel that you will never understand programming, I suggest you stop here, and realize that it only gets more difficult from here. However: make sure you try hard before jumping to conclusions. Make sure that you don't understand the programming concepts no matter what you do. Don't quit something before you know that you have done everything you could. Study hard.
  10. macrumors 6502a

    Focus on outcomes. Like maths, programming can be taught very much as a series of skills, distinct from the application of those skills, which can be confusing.

    You don't give the broader context of your course, but take a general problem and ask yourself how you would go about solving it (forget about computers for a second).

    A couple of examples, which can be as simple or complex as you wish to make them:

    Calculate the damage caused to two colliding vehicles
    Find small repetitive, sequences of DNA in a much larger sequence
    Select important, descriptive text from a web page for a search engine

    Break these problems down on paper - work out what you need to know to find the answer and what calculations to perform and then work out how you describe this to the computer (the programming bit).
  11. macrumors 6502a


    Thanks for the advice guys!

    Looks like I'll spend a little more time in the texts, and the likelihood of getting some sort of extra help has skyrocketed.

    I do have a desire to program, but this course has discouraged me a bit. I wouldn't say I've lost all hope, I guess I'm just waiting for someone who I can understand a little better to help me with concepts.

    I'll keep you updated on the coming week as my battle with programming continues!
  12. macrumors 6502a

    I am of the belief that anyone can program. You just need enough passion to overcome any natural disabilities you may be cursed with. There's a lot of patient people here who know by now that I don't seem to learn things too well... but I just love programming so much I'm determined to learn, and it's working.
  13. macrumors G3

    Is it a course based on this?


    That's supposed to be the most liberal arts oriented way.
  14. macrumors 6502a


    MIT teaches its 'programming 101' course from this text:

    Structure and Interpretation of Computer Programs

    which is available online for free (you can also check out MIT's OpenCourseWare site with webcasts, lecture slides, homework assignments, etc.)

    This book teaches programming concepts using Scheme, and if you're not using it already, may be a better exposition than what you're currently reading.
  15. macrumors 65816


    I'm a self-taught programmer. I learned C/C++ a few years ago. Before that, the only thing I could wrap my mind around was BASIC. I still can't really fit my head around Obj-C, with its "id" type, and I only sort of get scheme.

    My point is, try BASIC. If you don't get it, programming is not for you, but trust me, you will get it. Make sure to structure your code as much as possible, and not to use a goto :p (which is frowned upon in almost every language except assembly). As soon as you can, try to move on to C, or Python, which is probably better in the long run. If you've gotten that far, you'll know where to go from there.

    This is my course for teaching yourself programming in 6 years :D.
  16. macrumors G3

    The only interest of BASIC was in the 80's when that's all you got in your home computer.

    The best language for teaching programming concepts is Scheme. Even ones most programmers don't know about.

    For a language for kids, there is Logo.

    Look at The Little Schemer and The Seasoned Schemer. They are extremely quick to read.
  17. macrumors 65816


    Maybe so, but it's easy.
  18. macrumors G3

    How would that be any easier than DrScheme and its language levels?
  19. macrumors 6502a

    I've said it before, and I'll prolly say it again. Learning BASIC is a horrible way to get into programming if you plan to move on to a serious language like objective C. 99% of the bad habits, different naming conventions, etc. that BASIC has compared to obj-c or most other languages are unavoidable. I struggled so long just to get past what I knew in BASIC. I saw something, and immediately knew what it was. Only I was wrong because BASIC is just so different. It's bad bad bad bad bad bad bad bad bad. Period.
  20. macrumors 65816


    By serious language, I would assume you mean useful. Python to me isn't a very serious language, having been named after a british television show, but it's still useful.

    People say they struggle to get past BASIC after using it for years, I guess that never happened to me.

Share This Page