Advertisement
If you have a new account but are having problems posting or verifying your account, please email us on hello@boards.ie for help. Thanks :)
Hello all! Please ensure that you are posting a new thread or question in the appropriate forum. The Feedback forum is overwhelmed with questions that are having to be moved elsewhere. If you need help to verify your account contact hello@boards.ie

Theoretical waffle is making learning programming hard

Options
  • 22-03-2011 5:51pm
    #1
    Closed Accounts Posts: 40


    I am in the second semester of first year in a Computer Science, and while I have progressed immensely since beginning last year – and have really grown to like programming, and hopefully whatever Computer Science has to offer in future, I am finding myself been put off the subject at what I feel to be theoretical waffle clouding out the practical aspect of the subject, at least in some of the lectures I am attending.

    I am certainly not behind and have worked hard to keep up. However, I am finding that at times that the way the lecturer is teaching the subject makes it very hard to make head nor tail of what is going on, and that it is hard to put some of the theoretical concepts we are been given into practical use when it comes to actually programming.

    Has anybody who has attended college had this problem, aka. theoretical nonsense making it hard to pick out the practical stuff and apply it in java, c++ etc. I certainly like Computer Science and programming, and with hours and hours of practice and hard work, have progressed immensely (at least for me) since starting. However trying to learn in this certain module, and applying theoretical concepts to practical use can be like searching for a needle in a haystack.

    Did anybody else have this problem in college if they attended, and as time goes on, does the subject become more, or less theoretical? Thanks.


Comments

  • Closed Accounts Posts: 5,482 ✭✭✭Kidchameleon


    I have similar experience. Best advice I could give is take notes and re-read them over and over. This stuff is alien to the human mind, but the more you engrave it into your brain the more sense it will make. If there is something in your notes you don't understand, like a term or an abbreviation etc.. then Google it, there's no point trying to understand a concept without first understanding its constituent parts. From my experience of coding, I wanted to dive straight in and start making apps and games, all the fun stuff, leaving all the theory behind. This was a mistake, reason being, you cant really give instructions to a computer through your code if you don't fully understand whats making it tick! Also if your funding the theory stuff boring, are you in the right course? These subjects should be interesting to any aspiring computer scientist. As you read and learn more about this subject and begin to understand it more, I have no doubt you'll start to find things more interesting!

    Good Luck.


  • Registered Users Posts: 5,246 ✭✭✭conor.hogan.2


    For c/c++ (and other languages) you need to know this "theoretical waffle", from what I know of Java you do not necessarily.

    Know the theories behind Databases is mostly useless if talked about for anything over an hour as its not how it works when actually using SQL, but thats different.

    Give an example of the theory waffle your learning?

    I used to think maths was like that, until you see practical applications in physics and CS.


  • Registered Users Posts: 15,065 ✭✭✭✭Malice


    Heh, your thread title struck a chord with me as I felt pretty much the exact same way when I was in college. I still shudder when I think back over some of the crap I had to learn. Part of the problem with my course was that it had to be pretty general so there were naturally going to be aspects of it that I had no interest in regardless of how interested I was in software development itself.
    For c/c++ (and other languages) you need to know this "theoretical waffle", from what I know of Java you do not necessarily.
    Could you clarify what you mean by this? Are you referring to memory management or something?
    Know the theories behind Databases is mostly useless if talked about for anything over an hour as its not how it works when actually using SQL, but thats different.
    Could you clarify this as well?


  • Registered Users Posts: 5,246 ✭✭✭conor.hogan.2


    What i mean is it would be great if you could just sit down and program games or music software etc, but sadly thats not how it works. You need to learn the theory and the practical side.

    My second point was essentially a follow on. In C specifically you have to get down to the basics and need a proper theory knowledge of memory among other things. This is less obviously useful in c++ (non c end + oop end) and even less clear in Java. But you cant pretend that a computer isnt using bits, doing so will trip you up at some stage unless you never use programming again.

    We all have to do stuff we dont like or have no interest in :) thats not specifically cs.


  • Registered Users Posts: 981 ✭✭✭fasty


    What sort of memory stuff are you talking about Conor?


  • Advertisement
  • Closed Accounts Posts: 18,163 ✭✭✭✭Liam Byrne


    The fact that you are describing it as "waffle" means that you are mentally dismissing it.

    Think of a carpenter who wants to get to work on a table; if he doesn't learn the fundamentals about measurements, or the physics of weight distribution, loading, and the types of joints, the table might look good and then fall apart.

    The same applies to computer systems.

    I have seen so many databases that have been either un-normalised or over-normalised, as well as repeat coding which could have been easier and FAR more maintainable if it were proceduralised in functions or object-oriented that it's not funny.

    Learning the fundamentals is essential and then - once you know those - your creativity can build on those.


  • Registered Users Posts: 1,922 ✭✭✭fergalr


    ITguy2 wrote: »
    I am in the second semester of first year in a Computer Science, and while I have progressed immensely since beginning last year – and have really grown to like programming, and hopefully whatever Computer Science has to offer in future, I am finding myself been put off the subject at what I feel to be theoretical waffle clouding out the practical aspect of the subject, at least in some of the lectures I am attending.

    I am certainly not behind and have worked hard to keep up. However, I am finding that at times that the way the lecturer is teaching the subject makes it very hard to make head nor tail of what is going on, and that it is hard to put some of the theoretical concepts we are been given into practical use when it comes to actually programming.

    Has anybody who has attended college had this problem, aka. theoretical nonsense making it hard to pick out the practical stuff and apply it in java, c++ etc. I certainly like Computer Science and programming, and with hours and hours of practice and hard work, have progressed immensely (at least for me) since starting. However trying to learn in this certain module, and applying theoretical concepts to practical use can be like searching for a needle in a haystack.

    Did anybody else have this problem in college if they attended, and as time goes on, does the subject become more, or less theoretical? Thanks.

    What sort of material are you talking about?
    Be specific. You write a very abstract post for someone complaining about material being too abstract.



    While I don't know to what material specifically you are referring, my gut response is: you've only just started doing CS and CS is a big, complex, subject, with many facets. (This is good, means there's lots to learn!)
    You shouldn't necessarily expect to see how all the different bits fit together for a while. You are, after all, just half way through one year of a multiple year program.


    Just because you don't see how the theory is useful, doesn't mean it isn't. Some of the most useful knowledge requires an abstract foundation.

    Its important to remember that there are some very applied aspects to computer science, and some very theoretical ones; how useful particular sets of knowledge are will probably depend on what you end up doing, or what you care about - but its still quite early to make decisions on that, so keep your options open.


    Now, obviously, you've got to make a judgement on what to learn, with the information you have available to you. And you are right to question things; you shouldn't blindly learn something, just because its on the curriculum.

    So what do you do?

    Maybe have a look at the syllabi of a few of the elite universities.
    If the same sort of material is on their courses, then the smartest conclusion is that all the experienced computer scientists, that designed the courses, probably know what they are doing, and you should learn it.

    Or read writings by famous computer scientists, or by people you admire, that seem smart to you - what do they say?

    Or, if you want the opinion of other CS people on the forums here, let us know what sort of theoretical material you are talking about.


  • Registered Users Posts: 5,246 ✭✭✭conor.hogan.2


    You need a lot of background computer theory, binary for example.

    Nothing in particular but knowing how to malloc, properly understanding pointers and bitwise shifting etc. No matter the language these things are not needed perse but its much better if you know them.

    They need to be explained via theory.

    Yes you need to actually be able to write them out and use them - but not knowing why or how they work means your just sprinkling down code, pressing the magic compile button and hoping for the best.


  • Registered Users Posts: 981 ✭✭✭fasty


    But less so for C++? :D


  • Registered Users Posts: 5,246 ✭✭✭conor.hogan.2


    fasty wrote: »
    But less so for C++? :D

    Say what? you lost me.


  • Advertisement
  • Closed Accounts Posts: 1,864 ✭✭✭Daegerty


    The best way to learn programming then I would say is to mess around with the language yourself

    Look at other people's snippets, change bits, see how it works. You get a fair idea then without listening to the waffle.

    Maybe the lecturer is bad at explaining things


  • Registered Users Posts: 981 ✭✭✭fasty


    Say what? you lost me.

    Ah nevermind, I think I misread your post.

    Anyway, to address what you're saying about memory and theory in C and C++...

    What I was looking for was knowing how data is aligned in memory, being aware of the consequences of branches, of virtual function calls and your data's layout and the like at a hardware level rather than bit twiddling and pointers which really is basic stuff, not computer science theory.


  • Registered Users Posts: 5,246 ✭✭✭conor.hogan.2


    I wasnt aware that was thought in first year computer science.
    Also wasnt aware this was a test lol.

    Plus there should be a basic hardware course, or at least that would be covered elsewhere mainly. Maybe not I didnt do a CS undergrad. How the data is laid out would be covered in that part and just refreshed in programming via variable types etc.

    You are missing the point - pointers may be "basic" but they are often misused. Much like how DB are often not normalized properly or simple code is remade, and remade worse than preexiting code.


  • Registered Users Posts: 981 ✭✭✭fasty


    Well, you say you're going for jobs soon and you should know that stuff, right?

    EDIT: I don't think I'm missing the point, you're backtracking now about theory. Pointers are not theoretical waffle. How are they often misused?


  • Registered Users Posts: 5,246 ✭✭✭conor.hogan.2


    Are you my lecturer? Are you an employer? Didnt think so.

    Either way this is not the place for this discussion. Plus I never stated whether I knew those things or not, as this is the ops thread and its first year stuff.


  • Registered Users Posts: 981 ✭✭✭fasty


    No need for backseat modding, the thread is a discussion about the relevance of theory and a debate about the importance of it.

    You come along soapboxing importance of theory when you don't seem to know what you're talking about half the time.


  • Registered Users Posts: 5,246 ✭✭✭conor.hogan.2


    Hop off there, cheers.


  • Registered Users Posts: 40,038 ✭✭✭✭Sparks


    Settle down lads, would ye?

    As to the OP, some theoretical waffle... well, yeah, it's waffle. Most of it however, is not waffle. In fact, I seem to have spent a very large proportion of my professional life cleaning up messes left behind by people who should have known that stuff but didn't. And I seriously doubt that I'm alone in that.

    Simple fact is, if you're in an undergrad CS course, you are really unlikely to know what is waffle and what is stuff that will be very useful in a few years. Add to that the point that some things you may never do professionally, but what you learn from learning about them makes your professional work of a higher quality, and you're pretty much left with the opinion that you shouldn't try to filter the things you're being taught now on the basis of what you think they're worth.


  • Moderators, Society & Culture Moderators Posts: 9,689 Mod ✭✭✭✭stevenmu


    I remember this feeling well. In first year in particular I found the pace of the theory courses far outstripped the pace of the practical ones.

    A lot of it does seem like waffle at first, but as your practical side progresses and you write increasingly complex software, the theory side starts to matter more and more, but luckily as it becomes more relevant to practical work you are doing it starts to make a lot more sense too (I found at least).

    In a computer science program, there will always be lots of theory, it is a full on science after all. But, in my experiences at least, as you progress through the course and they expect you to have reasonable programming skill, more of the theory heavy modules will have practical sides to them. They also (IMHO) become more and more interesting as you progress.

    Try to find out what modules you will be doing in future years and see if they seem appealing or not. If non of it seems of intrest you may be better off trying to transfer to a <turns nose up>software engineering</turns nose up> course which would be more practical.


Advertisement