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

How important are the college modules?

Options
  • 03-11-2010 12:54am
    #1
    Registered Users Posts: 7,869 ✭✭✭


    I'm in college, and hopefully will get my bachelors on SoftEng at the end of the year. I feel like I'm doing well so gonna go for a good degree result! *fingers crossed*

    Anyway, a couple of the subjects I was wondering about though. For example, the maths. Do programmers really use algebra on a daily basis? Are they lost without this stuff? For example, this stuff. I can see how maybe it might come in handy for certain stuff, but only for a percentage of programmers. And even then, if it came up in a job that you needed to code something based on this stuff, would you, as a recent graduate, be expected to be proficient in this stuff? Or could you learn it on the job, or even be given the calculations/answers/formulas to put into the code?
    The same goes for hill cyphers. Are they commonly used in industry?

    Same with another subject. Logic. Do i really need to know how to write down how a farmer crosses a river in a boat, with a fox/hen/corn? Or how to do this stuff? I cant really see how that can apply to industry. Although I dont have any experience so corrent me if i'm wrong here!

    And finally, all that Use Case stuff. I can definately see how that applies in industry. It would apply to a project manager or someone higher up than a graduate! Would it be the odd time someone might throw you a use case diagram and get you to code something off it? But, surely by the time you work your way up to the level where you're designing systems and using UML then you'd have forgotten everything you'd learned in college, thus having to relearn it on the job anyway! So in that case, maybe having previous exposure just might help with future on-the-job learning.

    I could be way off here, but I suppose thats what I'm interested in here. Am I way off, or near enough to the truth of what actually happens??

    Cheers.


Comments

  • Registered Users Posts: 1,275 ✭✭✭bpmurray


    Yes, of course you will use this stuff, although the amount of it you use will depend on where you work. You'll definitely use UML, including use cases (they're actually the best possible way to explain something to non-techies). Not every day, of course!

    The algebra stuff is probably restricted to HPC, but it's also being used in the extreme analytics in this new smarter planet stuff, and the provability is extensively used in critical systems (medical, aircraft, ships, etc.).

    Anyway, focus on getting the best possible marks you can, and for F's sake, learn another language as well as Java - there's probably a billion Java programmers on the planet.


  • Closed Accounts Posts: 25,848 ✭✭✭✭Zombrex


    The_B_Man wrote: »
    I'm in college, and hopefully will get my bachelors on SoftEng at the end of the year. I feel like I'm doing well so gonna go for a good degree result! *fingers crossed*

    Anyway, a couple of the subjects I was wondering about though. For example, the maths. Do programmers really use algebra on a daily basis? Are they lost without this stuff? For example, this stuff. I can see how maybe it might come in handy for certain stuff, but only for a percentage of programmers. And even then, if it came up in a job that you needed to code something based on this stuff, would you, as a recent graduate, be expected to be proficient in this stuff? Or could you learn it on the job, or even be given the calculations/answers/formulas to put into the code?
    The same goes for hill cyphers. Are they commonly used in industry?

    Same with another subject. Logic. Do i really need to know how to write down how a farmer crosses a river in a boat, with a fox/hen/corn? Or how to do this stuff? I cant really see how that can apply to industry. Although I dont have any experience so corrent me if i'm wrong here!

    And finally, all that Use Case stuff. I can definately see how that applies in industry. It would apply to a project manager or someone higher up than a graduate! Would it be the odd time someone might throw you a use case diagram and get you to code something off it? But, surely by the time you work your way up to the level where you're designing systems and using UML then you'd have forgotten everything you'd learned in college, thus having to relearn it on the job anyway! So in that case, maybe having previous exposure just might help with future on-the-job learning.

    I could be way off here, but I suppose thats what I'm interested in here. Am I way off, or near enough to the truth of what actually happens??

    Cheers.

    You are some what missing the point of these modules.

    Have I ever had to implement the fox/hen/corn problem. Or implement a hill cypher? Nope.

    Have I ever had to think quick to solve a problem I haven't faced before that has arisen and needs a quick and elegant solution, a solution that often has to be mathematically worked out before it is programmed. Millions of times.

    These modules are not simply getting you memorize solutions. They are supposed to be training you to think and give you the tools to do this.

    And that is very important.


  • Registered Users Posts: 515 ✭✭✭NeverSayDie


    The_B_Man wrote: »
    For example, the maths. Do programmers really use algebra on a daily basis?

    No.
    The_B_Man wrote: »
    Are they lost without this stuff?

    Yes.

    What Wicknight said. It's mostly not about learning particular techniques, tricks or pages of facts. It's about being equipped to do the job of a software developer. In order to do that, you need logical, structured, mathematical problem-solving abilities. Teaching you particular bits and pieces of maths and other stuff is a good way of achieving that.

    Over the course of my professional life to date, I could count on the fingers in front of me the number of times I've particularly needed to use recursion. I've never needed (and it's rarely been advisable) to implement a sort technique, KD tree or crypto algorithm from scratch. I've never implemented a solution to the Towers of Hanoi problem, I've never used calculus for any professional endeavour, and I've only occasionally used graph algorithms. But if I hadn't spent time learning all those things, I wouldn't be very good at my job, at all. I wouldn't have the right framework and mindset to be able to effectively design and build computer-based solutions to problems, as expressed through source code, algorithms, objects, frameworks, etc.

    Re the UML, that's important too - it's a common language and symbology for expressing software architectures and designs. You don't usually have to strictly adhere to the particular symbols and styles and what not (few folks I know do), but it's a step up from lines and boxes on a whiteboard. Programming is only a subset of what software developers do, and UML (or its equivalent) is important for the other parts. That applies at every level, whether you're senior or not - at the junior level, you'll still a) need to understand what the senior folks are designing and how your work fits in and b) need to design the subsystems you get handed responsibility for.

    As you get into professional development and start working on larger, team-built software, the need for all this stuff will become apparent - experience is about the only way of learning that part.

    Edit; I should probably add, there certainly are many situations where you will need heavy maths - various aspects of game development, computer vision, financial modelling, scientific software, medical applications, industrial control, etc.


  • Registered Users Posts: 2,781 ✭✭✭amen


    +1 for the above. Remember college is not about learning for a job but learning to broaden your mind and realm of experiences.


  • Registered Users Posts: 23,212 ✭✭✭✭Tom Dunne


    As somebody actually teaching this stuff in academia, I can add another big +1 to the above.

    It is not the actual subjects, but the broad perspective on technology and how you can use that technology to solve problems that matters.

    In the college I am working, we are moving away from the traditional lecture/lab work to problem based learning, such is the importance of problem solving.


  • Advertisement
  • Registered Users Posts: 981 ✭✭✭fasty


    It's been said already above, but in short, if you can solve abstract problems, you can program. The actual language and technology becomes secondary.

    Interviewers are looking for this these days, there are so many developers out there, and so many of them that are half assed that people hiring are, in my experience, becoming more savvy.


  • Closed Accounts Posts: 4,564 ✭✭✭Naikon


    Well, I have done UML before in college and apart from the concept of a class diagram, I don't see much use for UML. Basically, I think it's for people that don't like the concept of header files as interfaces:pac: I do. but then again, I don't program OO unless forced to. Maths is worth learning simply because it gets you thinking. It's hard at times(I say this as someone who did ordinary maths for the LC) but I really appreciate maths now for problem solving. Do as much math as you can even if it does not directly relate to your domain. UML is typical design by panel stuff imo.


  • Closed Accounts Posts: 4,564 ✭✭✭Naikon


    fasty wrote: »
    It's been said already above, but in short, if you can solve abstract problems, you can program. The actual language and technology becomes secondary.

    Interviewers are looking for this these days, there are so many developers out there, and so many of them that are half assed that people hiring are, in my experience, becoming more savvy.

    Really? I got the impression most employers love their buzzwords. You can't thrawl through the daily rag/net and not come across words like "Enterprise" "Java", "CORBA", "STRONG COMMUNICATION SKILLS", "TEAMWORKER" and such:confused:


  • Closed Accounts Posts: 4,564 ✭✭✭Naikon


    amen wrote: »
    +1 for the above. Remember college is not about learning for a job but learning to broaden your mind and realm of experiences.

    I wish this was the case, but educational institutions these days have to please their clients. Sorry, but practically EVERYONE goes to college these days for job reasons. College is the Leaving Cert of the 21st century imo.


  • Registered Users Posts: 515 ✭✭✭NeverSayDie


    Naikon wrote: »
    Well, I have done UML before in college and apart from the concept of a class diagram, I don't see much use for UML. Basically, I think it's for people that don't like the concept of header files as interfaces:pac: I do. but then again, I don't program OO unless forced to. Maths is worth learning simply because it gets you thinking. It's hard at times(I say this as someone who did ordinary maths for the LC) but I really appreciate maths now for problem solving. Do as much math as you can even if it does not directly relate to your domain. UML is typical design by panel stuff imo.

    You realise that most non-trivial software is designed and built by more than one person working at once? Software development is all about teamwork, at virtually every level.

    All UML does is put some standards on the diagrams and sketches we use when we design software, so that other folks can understand them more reliably, like they would English or source code. We use diagrams because they're often a lot more concise and intuitive than either English or source code for high-level descriptions of software architectures, data flows, processes, etc. For instance, I have on my desk here a description of an invoice credit control subsystem, and the various behaviours, state machines and business rules involved. As implemented in source code, it involves a few thousand lines of code, spread over an n-tier architecture. Described at high level in English, it's fairly difficult to follow, thanks to convoluted business rules and stage changes, and would take a page or two of text. As put down in UML, it's a reasonably intuitive diagram that anyone in here can interpret pretty quickly. Minor things like using diamonds to indicate if/else type decisions help make it obvious how the process proceeds. That's all UML is for - it helped the "panel" of myself and the other guy who spec'd this system to translate the business requirements into something concrete that made a good reference for the person who went on to implement it.
    Naikon wrote: »
    Really? I got the impression most employers love their buzzwords. You can't thrawl through the daily rag/net and not come across words like "Enterprise" "Java", "CORBA", "STRONG COMMUNICATION SKILLS", "TEAMWORKER" and such

    I wouldn't consider those "buzz words" to any great extent - Java and CORBA are real and are very widely used. "Enterprise" is just a euphemism for "business"/"big business". As for strong communication skills and teamwork, well, if you don't have those, you're not really suited to being a software developer at all, so I guess folks just feel the need to put them down explicitly. Also worth bearing in mind that most of those ads are put together by recruiters or HR folks, who are unlikely to be making hiring decisions, they just try and get candidates in for the tech folks (or tech management folks) to examine.


  • Advertisement
  • Closed Accounts Posts: 4,564 ✭✭✭Naikon


    All UML does is put some standards on the diagrams and sketches we use when we design software, so that other folks can understand them more reliably, like they would English or source code. We use diagrams because they're often a lot more concise and intuitive than either English or source code for high-level descriptions of software architectures, data flows, processes, etc. For instance, I have on my desk here a description of an invoice credit control subsystem, and the various behaviours, state machines and business rules involved. As implemented in source code, it involves a few thousand lines of code, spread over an n-tier architecture. Described at high level in English, it's fairly difficult to follow, thanks to convoluted business rules and stage changes, and would take a page or two of text. As put down in UML, it's a reasonably intuitive diagram that anyone in here can interpret pretty quickly. Minor things like using diamonds to indicate if/else type decisions help make it obvious how the process proceeds. That's all UML is for - it helped the "panel" of myself and the other guy who spec'd this system to translate the business requirements into something concrete that made a good reference for the person who went on to implement it.

    Fair enough, it has it's uses in a business context. I am not saying it should not be used. just that it's not a defacto element of software design and implementation. I mean, UML is hardly applicable to something like the development of a filesystem, kernel module or even system administration/embedded programming duties. I would argue documentation is essential for any project. I am probably Myopic(I do have very narrow interests)but I honestly can't see myself using UML in a professional capacity. Certainly not for personal projects anyway. Java and Corba are well established(Java is very popular). I just hate it when job descriptions mention words and not tasks. The Algorithm is the most important component. Java is just a form of implementation likewise perl or whatever.


  • Registered Users Posts: 515 ✭✭✭NeverSayDie


    Naikon wrote: »
    Fair enough, it has it's uses in a business context. I am not saying it should not be used. just that it's not a defacto element of software design and implementation. I mean, UML is hardly applicable to something like the development of a filesystem, kernel module or even system administration/embedded programming duties.

    Given the complexity of software like that, UML certainly would be applicable. Class diagrams of what makes up the kernel module for instance, activity diagrams of how an embedded system processes some particular input or handles some condition, use cases showing how a user will interact with a piece of embedded software, etc. Again, UML is just a standard way of working with diagrams in software documentation, there's not that much to it in its typical use. You don't want to be adhering to the standards too slavishly or it gets pointless, but diagrams are an important part of software documentation, and UML just provides some standard practises and symbols you can use there - to keep everyone one the same page, so to speak. When you have teams of folks with different responsibilities and ability levels, different timelines on the project, and sometimes external teams, language difficulties, etc, that kind of thing helps.
    Naikon wrote: »
    I would argue documentation is essential for any project. I am probably Myopic(I do have very narrow interests)but I honestly can't see myself using UML in a professional capacity. Certainly not forpersonal projects anyway.

    Less necessary for personal projects alright, unless you happen to be fond of the standard anyway. For team stuff though, it's pretty useful, and virtually all commercial software development (which includes the design part) is done by teams.

    Re the job descriptions, yeah, folks writing the ads tend to just list keywords - having non-tech folks writing the copy leads to the standard amusements like "10 years of .NET experience" and its equivalents.


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


    I'm really glad of the other responses on this thread, saying that the abstract stuff is important.

    I was demonstrating a college course recently, where some of the students were firmly telling me the abstract material wasn't relevant, because they had friends who were programmers who didn't use it.

    The reality is that some modules will be more useful later, and some less useful, depending on the career path you take.

    However, modules that seem abstract, but are fundamental - so covering things like logic, which fundamentally underpins CS - are the things you should prioritise as a student. You have a long time to learn domain specific technologies later.

    The_B_Man wrote: »
    Anyway, a couple of the subjects I was wondering about though. For example, the maths. Do programmers really use algebra on a daily basis? Are they lost without this stuff? For example, this stuff. I can see how maybe it might come in handy for certain stuff, but only for a percentage of programmers.
    Learn as much maths as you can, as well as you can.
    The_B_Man wrote: »
    And even then, if it came up in a job that you needed to code something based on this stuff, would you, as a recent graduate, be expected to be proficient in this stuff? Or could you learn it on the job, or even be given the calculations/answers/formulas to put into the code?
    It all depends on the job. In general, you probably wouldn't be expected to know matrix algebra off the top of your head, for a programming job. But it wouldn't be unreasonable, for certain jobs. And you'd certainly be expected to be able to pick it up and work with it quickly to implement it.
    The_B_Man wrote: »
    The same goes for hill cyphers. Are they commonly used in industry?
    I don't think this is a serious question.
    I had to look up hill ciphers; they are a cipher from 1929 which can be done on a simple machine and are based on matrix operations.

    No, of course you don't use outdated ciphers from 1929 in industry, when you can use modern library implementations of GPG or openssl or whatever.
    Clearly, this is an example to introduce you to an application of linear algebra, and maybe basic crypto.

    Like, look, did you ever meet a guy called Barry, who put three sweets into one pocket, and six sweets into another pocket, and then asked you to work out how many sweets he had?

    You probably didn't. But that doesn't mean you shouldn't learn basic arithmetic, examples of which would have been framed in that language.

    The_B_Man wrote: »
    Same with another subject. Logic. Do i really need to know how to write down how a farmer crosses a river in a boat, with a fox/hen/corn?
    Yes.

    If you can't work out something like this, you shouldn't be hired as a programmer.
    Problems that feel similar to that come up all the time in things like synchronisation, network protocols, concurrency.
    The_B_Man wrote: »
    Or how to do this stuff? I cant really see how that can apply to industry. Although I dont have any experience so corrent me if i'm wrong here!
    Mightn't directly be used, but its underpinnings. Learn it.

    The_B_Man wrote: »
    And finally, all that Use Case stuff. I can definately see how that applies in industry. It would apply to a project manager or someone higher up than a graduate! Would it be the odd time someone might throw you a use case diagram and get you to code something off it? But, surely by the time you work your way up to the level where you're designing systems and using UML then you'd have forgotten everything you'd learned in college, thus having to relearn it on the job anyway! So in that case, maybe having previous exposure just might help with future on-the-job learning.
    Some places use UML more, some less. I personally think its overused; but still can be useful.
    Your argument about not doing it in college, because its used by more senior people is bad.
    What if you find yourself working in a startup 2 years after college, and you are doing so well as a programmer, you are asked to help in the system design, and asked to produce an architecture diagram in a hurry?
    Personally, I don't find all the minutiae of UML is that useful, but the general principles certainly come in useful.

    The_B_Man wrote: »
    I could be way off here, but I suppose thats what I'm interested in here. Am I way off, or near enough to the truth of what actually happens??

    Cheers.


  • Registered Users Posts: 7,468 ✭✭✭Evil Phil


    fergalr wrote: »

    If you can't work out something like this, you shouldn't be hired as a programmer.

    I agree, working out algorithms is a fundamental part of the job.
    fergalr wrote: »
    Your argument about not doing it in college, because its used by more senior people is bad.

    I agree again, just because it isn't immediately applicable to the first job you hold down doesn't mean it isn't necessary. You're going to want career progression, right? That means seniority that may require UML skills, might as well learn them now. Easiest path to senior roles is demonstrating that you can do senior-level work, UML skills are going to help here also.

    Don't focus on what you'll be doing day to day in the first job you get, a good education isn't that short sighted, you shouldn't be either.


  • Registered Users Posts: 7,412 ✭✭✭jmcc


    The_B_Man wrote: »
    Anyway, a couple of the subjects I was wondering about though. For example, the maths. Do programmers really use algebra on a daily basis? Are they lost without this stuff?
    Just to preface things, I'm not a conventional programmer and didn't do a CS degree.

    I would probably use algebra when programming as it helps me to visualise and define a problem. If I could not define a problem then I could not begin to solve it and I would not know when I had solved it. So yes, some algebra is useful. Most programmers don't even realise that they are using algebra as it has become an unconscious response.
    The same goes for hill cyphers. Are they commonly used in industry?
    Well a large part of what I used to do was based on ciphers and crypto.
    Same with another subject. Logic. Do i really need to know how to write down how a farmer crosses a river in a boat, with a fox/hen/corn? Or how to do this stuff? I cant really see how that can apply to industry. Although I dont have any experience so corrent me if i'm wrong here!
    If you can't think logically then you should try marketing or PR.
    I could be way off here, but I suppose thats what I'm interested in here. Am I way off, or near enough to the truth of what actually happens??
    College is a bootcamp for newbies. It is not designed to teach you everything but just enough to stop you being dangerous to those around you. It is about, as others have pointed out, giving you a broad outlook on a set of different but related areas. Some of the stuff you learn will not make sense until you have to use it. A lot of the stuff you learn might seem to be rubbish but it may come in handy to know it anyway.

    Regards...jmcc


  • Registered Users Posts: 2,150 ✭✭✭dazberry


    jmcc wrote: »
    If you can't think logically then you should try marketing or PR.

    or IT Management :(
    jmcc wrote: »
    College is a bootcamp for newbies. It is not designed to teach you everything but just enough to stop you being dangerous to those around you. It is about, as others have pointed out, giving you a broad outlook on a set of different but related areas. Some of the stuff you learn will not make sense until you have to use it. A lot of the stuff you learn might seem to be rubbish but it may come in handy to know it anyway.

    I did a few years of an applied computing type degree back in the early 90s. It was filled with a load of unrelated things - definitely taking the term "applied" to a new level, such as marketing, economics and the so called fluffiness of "organisational behaviour". While you could generally make a case for most anything being in the domain of an applied degree, sometimes it felt like it was just an exercise to fill a timetable. In the end, the better students get the better degrees, not the better IT people, as the latter are the ones working their heads around technologies and scraping past the rest.

    I started in 3rd year of a CS degree this year, after writing software commercially for 16 years. This is far more focused, and doesn't have the timetable padding that the first degree had, and makes up for it by having much more hands on projects and assessments. As I feel development is as much about practice as anything else - I'm a lot happier here.

    Having said all that, college is really what you make of it yourself. Every time an assessment comes up there are still people looking for extensions for no good reason, and people doing all-nighters to meet deadlines. This time around all my stuff is in early :)

    D.


  • Registered Users Posts: 342 ✭✭adm


    My little brother just started college and I was looking at one of his textbooks on logic. The language used just seemed horribly obtuse and offputting. I think part of the problem is that it can be hard to formally explain certain concepts. They may be relatively simple in nature but IMO certain academic publications do a poor job of explaining them. And I've just finished a Masters where overall the textbooks were good (and practical).


  • Registered Users Posts: 28,564 ✭✭✭✭looksee


    I am working right at the entrance level of web design etc, and I do a major project that requires practical input. Its possible to see most of the class saying 'this is great' and getting stuck in to find solutions to practical, creative problems, and the others saying 'what has this to do with web design?' Its about solving problems.

    Too many people when faced with a problem just give up and assume it can't be done, or wait for someone else to give them a solution. Being willing to pursue different approaches to a solution - lateral thinking - is essential in many walks of life, but especially so where there is constantly new technology and ever more complex requirements.

    A rather ott analogy - but you can almost hear the creaking when a brain starts to open up to new ideas, but once it has been oiled and loosened up it will fly around sifting and sorting ideas and finding solutions almost before you realise there is a problem.


  • Registered Users Posts: 7,468 ✭✭✭Evil Phil


    dazberry wrote: »

    I did a few years of an applied computing type degree back in the early 90s.

    D.

    Sounds a bit like orange juice flavored drink. Not all degrees are created equal.


  • Registered Users Posts: 2,150 ✭✭✭dazberry


    Evil Phil wrote: »
    Sounds a bit like orange juice flavored drink. Not all degrees are created equal.

    I think that sort of thing was the typical fare back in the early 90s as the course was highly regarded given that it wasn't in a university. Looking at the course now, it has in fairness changed radically, and appears to be more comparable with modern courses.

    D.


  • Advertisement
  • Registered Users Posts: 1,829 ✭✭✭lil_lisa


    I remember sitting in class in school and someone asking me, what the hell are we learning about xs and ys for, when are we ever going to get up in the morning and have to figure out what x stands for and why we have x cubed, this is so stupid!

    And I remember, not one teacher ever explained why we need to study this whether we will get into jobs involving maths, engineering, computers or not in the future.

    I think its the same in college, you learn this stuff because there is a chance you will move on to become the next great Philosopher in Determinants or a Professor in Natural Deduction and if not, at least the classes have opened that part of your brain for you.


    Hmmm...I've basically just repeated what everyone else said I think!

    Anyway, good luck E!


  • Registered Users Posts: 304 ✭✭PhantomBeaker


    OP: I'm going to try a different approach, even though this has already been answered to death.

    You're right in the sense that in my 2 years since graduation, I have never had to write a program to calculate a determinant, although I have used the sort of recursive technique used for that sort of problem.

    However, I have had to use UML in a graduate position because at one point I had to hand a project off from myself to someone else, so I needed to give him a quick rundown of how that project was put together.

    With logic... well, let's just say that in the real world, you are probably going to get a pre-existing project that had particular requirements at the time, and lent itself to a particular mode of operation. Chances are, that project isn't going to follow best practices. Chances are, you're going to have to work around some innate behaviour in that project, and communicate how you plan to do it. While you might not completely agree with how the fox/hen/corn problem should be expressed, you should at least have an idea of how to express problems like that so you can effectively communicate the logic of real-world problems to co-workers.

    The UML and the logic examples I gave touch on the fact that you'll probably have to work with other people in the real world. So, let's reframe of your degree:

    Imagine you're a member of a fictional tribal culture in some far-flung corner of the Earth. Like most tribes, they have their tests for the young braves of that tribe so that they may be counted as adults in that tribe. Most tribes go with the idea that you demonstrate that you can make your own bow and use it to kill an animal for food, and maybe make pottery so you can carry water around. There'll be some form of ceremony so that the initiate is recognised as an adult by people outside your tribe. For the sake of argument, let's say they scar braves to mark their transition into adulthood.

    Seeing that scar, tribespeople (even the ones who don't know you) will know that you know how to make pots, make your own bow, and use it to kill an animal.

    You might be better at the pottery than you are with bow-making and hunting, but your scar shows that you can do all of that (make the pot, make the bow, hunt the animal). The scar shows that you've been initiated, and that you know enough to understand how to be a useful part of society.

    Now, think of that tribe as the programming profession. Your degree is your scar. That scar implies that you, as a tribesman, can:
    * craft your own tools - you probably won't have to do it that often (most people don't roll their own linked list unless they have to, they use libraries to do it for them), but it's understood that you at least know what various tools look like, how they work and how to use them to kill animals (problems), and what kind of animals they're effective against (would you use a linked list when you need to access arbitrarily random elements). The tribe wants to know that you understand what they mean when they use those terms, and what the uses are.
    * think recursively - this should probably be lumped in with the crafting your own tools, but it's so damned useful at times that it stands out on its own. Pity I can't think of a good tribal equivalent for it.
    * know the terrain - you don't have to know all the land, but know how you'd navigate unfamiliar territory - in other words that you think your way through an unseen problem based on previous experience
    * tell your tribesmen about a problem, and (maybe) how you solved it - not everything can be solved by one person, that's what the tribe is for, but to use the tribe's capabilities effectively, you have to communicate with them effectively. Maybe you did something the tribe hadn't done before, can you tell them how you did it? Do you know the shorthand of the tribe so that you're not explaining big concepts repeatedly, or reducing it all down to "stuff"? ("I took the stuff, and I stuffed it in this other stuff, and then I set some other stuff on fire, and it all went up in a puff. Problem solved.")
    * remember the tales of the tribe - Do you know the tragedy of the travelling salesman? Do you know the tales of the Gang of Four like, "The Visitor" and "The Singleton"? These are tales that carefully impart wisdom to us, and are useful when we see a problem that looks like what's described in those tales. So we'll say, "Well, if you squint your eyes, and tilt your head a bit, it looks like the travelling salesman", and assume that all members of the tribe still remember those stories.

    Now back to the real world.

    Basically, your degree marks you as someone who has the rudimentary skills that anyone needs for a job in this field. We learn this stuff for a reason, although I tend to think that a lot of my lecturers did not do a good job of explaining why we needed to know what they were teaching us. That only really became apparent once I was in the workplace.

    Anyway, if you get a good scar degree (like you're hoping to get), it's assumed by the tribe that you're particularly competent in these fields, that you can understand the abstract ideas that are used as shorthand when you're out there; so it would seem counter-productive to throw what you've learned right out the window as soon as you're done learning them or, worse still, manage not to learn them in the first place.

    Still, it's not the end of the world if you don't learn the stuff you're talking about. One day you'll be an elder tribesman, remembering yourself as a young brave that wilfully made no pots until he found a reason to remember. You'll look back and smile serenely as you remember your struggle to remember what you were taught, and how eventually it all fell together. (By the way, that's pretty much me and databases - I drifted through the my Databases 101 module, and now I work quite closely with them, which leaves me wondering (a) how I had such a problem with it, and (b) how much of a meal the lecturer made of, what I now consider to be, a pretty basic subject)

    Basically, your degree says you can do this stuff, whether you really can or not; it's up to you to provide the goods. The advantage to learning this stuff now is that you will have less of a problem getting to grips with it again when you really need to.

    TL;DR: what everyone else said, but with a different simile

    Anyway, I don't know if this made any sense to you, but good luck in your degree.
    Aoife


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


    OP: I'm going to try a different approach, even though this has already been answered to death.

    You're right in the sense that in my 2 years since graduation, I have never had to write a program to calculate a determinant, although I have used the sort of recursive technique used for that sort of problem.

    However, I have had to use UML in a graduate position because at one point I had to hand a project off from myself to someone else, so I needed to give him a quick rundown of how that project was put together.

    With logic... well, let's just say that in the real world, you are probably going to get a pre-existing project that had particular requirements at the time, and lent itself to a particular mode of operation. Chances are, that project isn't going to follow best practices. Chances are, you're going to have to work around some innate behaviour in that project, and communicate how you plan to do it. While you might not completely agree with how the fox/hen/corn problem should be expressed, you should at least have an idea of how to express problems like that so you can effectively communicate the logic of real-world problems to co-workers.

    The UML and the logic examples I gave touch on the fact that you'll probably have to work with other people in the real world. So, let's reframe of your degree:

    Imagine you're a member of a fictional tribal culture in some far-flung corner of the Earth. Like most tribes, they have their tests for the young braves of that tribe so that they may be counted as adults in that tribe. Most tribes go with the idea that you demonstrate that you can make your own bow and use it to kill an animal for food, and maybe make pottery so you can carry water around. There'll be some form of ceremony so that the initiate is recognised as an adult by people outside your tribe. For the sake of argument, let's say they scar braves to mark their transition into adulthood.

    Seeing that scar, tribespeople (even the ones who don't know you) will know that you know how to make pots, make your own bow, and use it to kill an animal.

    You might be better at the pottery than you are with bow-making and hunting, but your scar shows that you can do all of that (make the pot, make the bow, hunt the animal). The scar shows that you've been initiated, and that you know enough to understand how to be a useful part of society.

    Now, think of that tribe as the programming profession. Your degree is your scar. That scar implies that you, as a tribesman, can:
    * craft your own tools - you probably won't have to do it that often (most people don't roll their own linked list unless they have to, they use libraries to do it for them), but it's understood that you at least know what various tools look like, how they work and how to use them to kill animals (problems), and what kind of animals they're effective against (would you use a linked list when you need to access arbitrarily random elements). The tribe wants to know that you understand what they mean when they use those terms, and what the uses are.
    * think recursively - this should probably be lumped in with the crafting your own tools, but it's so damned useful at times that it stands out on its own. Pity I can't think of a good tribal equivalent for it.
    * know the terrain - you don't have to know all the land, but know how you'd navigate unfamiliar territory - in other words that you think your way through an unseen problem based on previous experience
    * tell your tribesmen about a problem, and (maybe) how you solved it - not everything can be solved by one person, that's what the tribe is for, but to use the tribe's capabilities effectively, you have to communicate with them effectively. Maybe you did something the tribe hadn't done before, can you tell them how you did it? Do you know the shorthand of the tribe so that you're not explaining big concepts repeatedly, or reducing it all down to "stuff"? ("I took the stuff, and I stuffed it in this other stuff, and then I set some other stuff on fire, and it all went up in a puff. Problem solved.")
    * remember the tales of the tribe - Do you know the tragedy of the travelling salesman? Do you know the tales of the Gang of Four like, "The Visitor" and "The Singleton"? These are tales that carefully impart wisdom to us, and are useful when we see a problem that looks like what's described in those tales. So we'll say, "Well, if you squint your eyes, and tilt your head a bit, it looks like the travelling salesman", and assume that all members of the tribe still remember those stories.

    Now back to the real world.

    Basically, your degree marks you as someone who has the rudimentary skills that anyone needs for a job in this field. We learn this stuff for a reason, although I tend to think that a lot of my lecturers did not do a good job of explaining why we needed to know what they were teaching us. That only really became apparent once I was in the workplace.

    Anyway, if you get a good scar degree (like you're hoping to get), it's assumed by the tribe that you're particularly competent in these fields, that you can understand the abstract ideas that are used as shorthand when you're out there; so it would seem counter-productive to throw what you've learned right out the window as soon as you're done learning them or, worse still, manage not to learn them in the first place.

    Still, it's not the end of the world if you don't learn the stuff you're talking about. One day you'll be an elder tribesman, remembering yourself as a young brave that wilfully made no pots until he found a reason to remember. You'll look back and smile serenely as you remember your struggle to remember what you were taught, and how eventually it all fell together. (By the way, that's pretty much me and databases - I drifted through the my Databases 101 module, and now I work quite closely with them, which leaves me wondering (a) how I had such a problem with it, and (b) how much of a meal the lecturer made of, what I now consider to be, a pretty basic subject)

    Basically, your degree says you can do this stuff, whether you really can or not; it's up to you to provide the goods. The advantage to learning this stuff now is that you will have less of a problem getting to grips with it again when you really need to.

    TL;DR: what everyone else said, but with a different simile

    Anyway, I don't know if this made any sense to you, but good luck in your degree.
    Aoife


    Playing minecraft much recently?


    While we're on the subject check out this video, for an [awesome]|[dubiously nerdy] reason why you should learn basic fundamentals/logic:

    http://www.youtube.com/watch?v=LGkkyKZVzug
    (When I watched that first, it had 300 views!)


  • Registered Users Posts: 304 ✭✭PhantomBeaker


    fergalr wrote: »
    Playing minecraft much recently?

    That wasn't actually what inspired me, but I have actually been playing it. I was actually reading Brave New World, and I was reading the passage about the "Savages'" initiation rites after just having advised a friend about a CS degree. Thanks to sleepdep, the two merged in my skull.

    But yeah, cool video. How much time must have been put into that?


Advertisement