Writing a report about Computer Science for school, looking for information



  • @asdf said:

    I took a lot of courses in university that I consider valuable for my education, but not for my job

    I agree to a certain point.

    I believe computer science needs to be a flavored degree.

    When you go to get an engineering degree, they're going to ask, "What kind"?

    I think the same should be for programming.

    The first two years should be generic, and the second two should be a mix of meta skills (like source control, unit testing), and industry related (business, science, etc.)

    Computer Science needs the math, but Computer Business (Programming), no.


    A Computer Science degree aspires to more than business programming.

    It's derived from a degree that was intended to train programmers that developed new technology. New compilers, etc.


  • Winner of the 2016 Presidential Election

    @Gaska said:

    Someone writes device drivers too. Do you think every CS graduate should know at least the very basics of writing device drivers so they're prepared for such a task?

    Bad analogy. Algorithms and data structures are a much more general concept than device drivers.

    @Gaska said:

    And I bet that everything you have to know to accomplish it was entirely self-taught (or taught on the job) and you use literally none of the knowledge you acquired from AaDS classes.

    Wrong. I couldn't have possibly taught myself everything without the foundations I remembered from my CS courses.

    @Gaska said:

    And if I "truly understand" it, it helps me write my spreadsheet application... how exactly?

    So you're saying you can be good at parallel programming without having the slightest clue how preemptive scheduling works and how to keep all parts of the system busy at the same time?



  • @xaade said:

    Math proofs are invaluable in developing the type of mind that thinks in TDD

    TDD ... :doing_it_wrong:



  • Eh?

    Maybe I should have narrowed it down to "Unit Test", and testing in general.


  • Winner of the 2016 Presidential Election

    @blakeyrat said:

    Set theory is the foundation of the SQL class many people in this thread have mentioned as being extremely useful to them.

    Including me, BTW.

    @lesniakbj said:

    Uhhh do you do any work with Relational Databases? Set Theory is the foundation for understanding how basic queries are transformed and run. Pretty useful stuff for constructing complex Intersect/Except queries, even more useful when modelling relationships in data.

    More useful from a Data Modelers than an SQL Developers perspective, but understanding how data belongs to certain sets/subsets/supersets really helps with data organization, composition and relationships.

    Hm... Still not convinced you actually need to know anything about set theory to understand those concepts, but you guys convinced me that I may have been wrong about that.



  • @asdf said:

    Hm... Still not convinced you actually need to know anything about set theory to understand those concepts, but you guys convinced me that I may have been wrong about that.

    In relation to a Computer Science degree, yes.

    In relation to programming in general, specifically programming end-user business applications, no.

    I think you want to look at a tech school and a tech degree next time.



  • @xaade said:

    You miss out that CS is not just a programming degree.

    I have a CS degree. It doesn't matter what it is INTENDED for (and I had this argument with the chair of my department, frequently, our yelling matches were legendary -- we would go out for drinks afterwards though, he was cool). 97.9999999999999999% of the people who get one, use it as a PROGRAMMING DEGREE. And that is what people hire holders of it for -- mostly.

    If they had offered just a Computer Programming degree that cut out the bullshit and added more security, more application development, and more modern language and intern-like stuff, I would have leaped into that program like my ass was ON FIRE! =___=



  • @xaade said:

    Eh?

    Maybe I should have narrowed it down to "Unit Test", and testing in general.

    TDD ... not a fan, sawwy ¯(°_o)/¯



  • @Vaire said:

    97.9999999999999999% of the people who get one, use it as a PROGRAMMING DEGREE. And that is what people hire holders of it for -- mostly.

    That is a fault of the industry, not the school.

    @Vaire said:

    If they had offered just a Computer Programming degree that cut out the bullshit and added more security, more application development, and more modern language and intern-like stuff, I would have leaped into that program like my ass was ON FIRE! =___=

    They didn't. Universities don't.

    Universities offer more generalized higher order degrees.

    If you want a tech degree, attend a tech school.

    Businesses need to adapt to that kind of thinking too.

    Most businesses are over hiring and underpaying when they hired a Computer Science degree.


  • Winner of the 2016 Presidential Election

    @xaade said:

    I think you want to look at a tech school and a tech degree next time.

    Nope. A lot of the theoretical stuff is actually awesome and I'm glad I had those classes.

    @Vaire said:

    security

    @Vaire said:

    modern language

    @Vaire said:

    intern-like stuff

    I had all those classes. Seems like you went to a shitty college/university and that's why you're so negative.



  • @asdf said:

    Nope. A lot of the theoretical stuff is actually awesome and I'm glad I had those classes.

    Well, I don't know what to tell you.

    Seems like you'd be happier with a tech degree, and picking up electives at a university. Given that you can finish a tech degree sooner, it'd come out the same but tailor to your unique tastes more.


  • Winner of the 2016 Presidential Election

    @xaade said:

    Seems like you'd be happier with a tech degree, and picking up electives at a university. Given that you can finish a tech degree sooner, it'd come out the same but tailor to your unique tastes more.

    In case I haven't made it clear: I am very happy about my university degree and would do it again. I think theoretical classes are a very good thing (as long as there are enough examples and/or applications for motivation/understanding). That doesn't mean I cannot criticize some parts of it and suggest that some stuff should be replaced with other stuff, does it? :)



  • @asdf said:

    That doesn't mean I cannot criticize some parts of it, does it?

    No.

    It just seems you want to have your cake and eat it.

    I suppose you could create a degree where there was theoretical stuff and it was all electives to give you more flexibility?

    I just figured that if you only wanted to dip slightly into the theoretical, that could be done for cheaper and quicker with a tech degree, is all.



  • @xaade said:

    They didn't. Universities don't.

    Universities offer more generalized higher order degrees.

    If you want a tech degree, attend a tech school.

    Businesses need to adapt to that kind of thinking too.

    Most businesses are over hiring and underpaying when they hired a Computer Science degree.

    What they teach in the CS degree is largely related to being an actual, honest-to-god scientist. E.G. forming hypothesis, running experiments, and developing new tech. How many COMPANIES are hiring people to do that, outside of Google/Apple/Microsoft/etc? The rest who try to do that, end up underpaid in academia.

    The vast majority of the people who get the degree, just want to program for a living. College could be a lot more useful to those people with relevant classes related to that. It doesn't mean it needs to be a technical school. That is just bigotry, plain and simple. The topics of the history of things, and the rest of the subjects from computer science can still be TAUGHT, just not in a hands-on way. They should be taught as an overview class, just like another history class. It is information that should be known, but it won't be used.

    I agree with the prior comment that like Engineering, they should ask Computer Science majors, "what kind?" The first couple years can be general, the rest should be targeted to the type they want to be.


  • Winner of the 2016 Presidential Election

    @xaade said:

    I suppose you could create a degree where there was theoretical stuff and it was all electives to give you more flexibility?

    ???

    No, pretty much the only thing I'd change about my CS degree in retrospect is replace the second calculus course with more useful math. Also, maybe replace some professors who were simply crap at teaching.


  • Banned

    @asdf said:

    Bad analogy. Algorithms and data structures are a much more general concept than device drivers.

    Everyone uses drivers, yet rarely anybody has to make one. Everyone uses a sort function, yet rarely anybody has to make one. This is as good analogy as one can be.

    @asdf said:

    Wrong. I couldn't have possibly taught myself everything without the foundations I remembered from my CS courses.

    I assume you had more or less the same stuff as I did on that class. I learned about single-linked lists, double-linked lists, bubble sort, insert sort, merge sort, quicksort, binary trees, heaps, graphs, maps and hashmaps. Which of these did you need?

    @asdf said:

    So you're saying you can be good at parallel programming without having the slightest clue how preemptive scheduling works and how to keep all parts of the system busy at the same time?

    Exactly. For the most time, I just need to remember when to lock and unlock mutexes, and minimize points of synchronization. The biggest gains in concurrent programming are made at the high level.

    Of course, if that's not enough, then you do need to know those gritty low-level details. But that's a very rare case that occurs only in very specialized software.



  • @asdf said:

    I had all those classes. Seems like you went to a shitty college/university and that's why you're so negative.

    Ad hominem attacks, very mature. Um, I guess I can reply in kind, I know you are, but what am I? Is that how it goes?
    I went to a perfectly nice college, thank you for asking.
    I said I wished there were MORE of those types of classes, not, you know, any at all.
    And I am negative because a lot of it was a waste of time, and anyone who has gone through the program and is intellectually honest and working in the industry, knows that.

    Just because one ENJOYS a class, does not in any way make it USEFUL or RELEVANT in one's professional practice.



  • @Vaire said:

    The vast majority of the people who get the degree, just want to program for a living.

    Then it's the wrong degree.

    @Vaire said:

    College could be a lot more useful to those people with relevant classes related to that

    Which is a tech degree.

    It may be a tech degree offered by a college, but that doesn't change what it is.

    @Vaire said:

    That is just bigotry, plain and simple

    I think you're undervaluing tech schools here. It's not bigotry to say that College/University degrees are generic and tech degrees are tech skill specific.

    You seem to be making the same mistake as the industry, by undervaluing tech degrees.

    @Vaire said:

    Computer Science majors, "what kind?" The first couple years can be general, the rest should be targeted to the type they want to be.

    Yes, and then we have more flexibility.

    But a Computer Business (programming) degree would still contain a lot of unused theoretical, and generic high order information.

    For example, it might contain a few 3rd / 4th year finance classes.



  • @asdf said:

    No, pretty much the only thing I'd change about my CS degree in retrospect is replace the second calculus course with more useful math.

    Then you got the right degree.



  • @xaade said:

    Yes, and then we have more flexibility.

    But a Computer Business (programming) degree would still contain a lot of unused theoretical, and generic high order information.

    For example, it might contain a few 3rd / 4th year finance classes.

    I would have happily traded finance classes for circuit design and abstract compiler design. Thankyouverymuch 😄



  • Guys,

    1. This is the General Help category, tone it down.

    2. This discussion isn't going to help the poor guy finish his essay. Use the "Reply as linked topic" link.



  • That's Computer Science degree. (The circuit design could be a hardware elective, it's not a hardware degree after all).



  • @blakeyrat said:

    This discussion isn't going to help the poor guy finish his essay. Use the "Reply as linked topic" link.

    I feel it's on topic.

    This is core to what he's wanting to know.

    His degree is not really a computer science degree, so from what we've written here, he already has his essay.

    Half of the tech specific classes need to be stripped out and replaced with higher order classes, like system design, testing.
    Also practical classes, like project planning, unit tests, source control usage.

    That's his answer.

    We're only debating on the details of it.


  • Winner of the 2016 Presidential Election

    @Gaska said:

    I assume you had more or less the same stuff as I did on that class. I learned about single-linked lists, double-linked lists, bubble sort, insert sort, merge sort, quicksort, binary trees, heaps, graphs, maps and hashmaps. Which of these did you need?

    • How do you know whether you should choose a TreeMap or a LinkedHashMap or something else in some Java application?
    • That class taught me that the correct algorithm and data structure depends on the data set you have. It's good to know that quicksort (or something similar) might not always be the best option. Also, it's good to know how different kind of maps work, because looking up data is a very, very common operation. Also, how else would you know what hashCode() is for and how to implement that?
    • Would you understand anything about complexity of an algorithm at all if you hadn't been introduced to that concept using those simple examples?

    @Vaire said:

    Ad hominem attacks, very mature.

    Wasn't supposed to be one, but... OK.

    @Vaire said:

    Just because one ENJOYS a class, does not in any way make it USEFUL or RELEVANT in one's professional practice.

    Yeah, but that's why you choose to go to a university instead of a tech school, right?


  • Banned

    @blakeyrat said:

    1) This is the General Help category, tone it down.

    But we're helping each other here! I mean, with a general enough definition of help, it certainly fits the category!



  • @asdf said:

    How do you know whether you should choose a TreeMap or a LinkedHashMap or something else in some Java application?

    Based on the relationship of the data?

    Linked Hash map can break some of the rules of a Tree map, like creating circles and such.


  • Winner of the 2016 Presidential Election

    @xaade said:

    Based on the relationship of the data?

    Did you read what I replied to? That was exactly my point: It's useful to learn about basic data structures ;)



  • @blakeyrat said:

    2) This discussion isn't going to help the poor guy finish his essay. Use the "Reply as linked topic" link.

    @xaade said:

    Based on the relationship of the data?

    Linked Hash map can break some of the rules of a Tree map, like creating circles and such.

    Example.

    He probably wouldn't have that information from his degree.

    Unless it was a side note in his Internet II class.

    That's the fundamental problem with his degree.

    @joshtheskilledgamer said:

    Program Modifications (modifying existing programs in C#)

    This is a 3rd year class in his degree.

    That's like freshman class in a Computer Science degree, if at all.



  • Oh, and to be clear.

    This is not trying to insult your school.

    This listed degree is not bad or useless or inferior.

    We're just comparing it to a Computer Science degree.


  • Winner of the 2016 Presidential Election

    @Vaire said:

    abstract compiler design

    +1, unfortunately the professor that taught all compiler classes retired when I started my master's, so I never had the chance to learn everything I wanted to know.

    @Vaire said:

    circuit design

    Had to take such a class, and although it was useful, I hated it. Hardware is not my thing. Do you want to have it? I'll give you my memories for free ;)


  • Banned

    @asdf said:

    How do you know whether you should choose a TreeMap or a LinkedHashMap or something else in some Java application?

    Pick whatever. If it turns out it's too slow, change it. I don't know Java enough to know which container is which, but in C++, I always default to std::vector and std::unordered_map (or std::map if keys are numbers or enums) with default allocators (and in case of map - default hasher) and I've yet to regret it.

    @asdf said:

    That class taught me that the correct algorithm and data structure depends on the data set you have.

    What it didn't taught you is that most of the time, the difference is negligible. Sorting 600 entries will be fast no matter what algorithm you pick.

    @asdf said:

    Also, how else would you know what hashCode() is for and how to implement that?

    API documentation.

    @asdf said:

    Would you understand anything about complexity of an algorithm at all if you hadn't been introduced to that concept using those simple examples?

    OK, this might be a valid point. But half an hour is enough to teach the most important stuff about complexity analysis - the rest is either pure academia or not useful outside of few niches like kernel programming.



  • @Gaska said:

    But half an hour is enough to teach the most important stuff about complexity analysis

    From our perspective.

    I remember getting it myself in half a day, but the professor spent 3 days on O(n/n^2/etc), and some people still got it wrong.


  • Winner of the 2016 Presidential Election

    You know what? I understand your point of view, and I've thought the same for quite some time. Then I changed jobs and suddenly had to work on a data-processing application where performance really mattered. And I suddenly realized that all this stuff was actually useful. And that it's a lot of fun as well.

    80% of us will write some performance-critical piece of code at some point in their lives (most likely more than once), so at least the very basics should be taught to every CS student. Also, even if you'll rarely ever have to do such a thing: If someone has absolutely no clue about stuff like that, (s)he will produce horribly slow software like Discourse. ;)



  • @asdf said:

    If someone has absolutely no clue about stuff like that, he produced horribly slow software like Discourse

    You mean, I could be replying to something you wrote 3 mins ago, not 1?



  • Holy fuck a useful @Lorne_Kates post.


  • Banned

    @xaade said:

    I remember getting it myself in half a day, but the professor spent 3 days on O(n/n^2/etc), and some people still got it wrong.

    I know people who spent three years of high school trying to understand how to solve quadratic equations. I don't remember if they finally got it or not.

    This is an extreme example, but accomodating to people who can't learn directly leads to lower quality of education. Also, wasting time on useless stuff gives less time to teach the useful stuff, which also leads to lower quality.

    @asdf said:

    You know what? I understand your point of view, and I've thought the same for quite some time. Then I changed jobs and suddenly had to work on a data-processing application where performance really mattered.

    Questions:

    1. Is it possible to learn this by yourself?
    2. If you weren't taught this at college, how probable is it that you would learn it in your free time? I consider myself to have intermediate level of knowledge about software optimization (ie. more than most of my colleagues, but wouldn't say I'm competent enough to make performance-critical software all by myself), and I learned literally nothing about it at college (as in, everything I was taught, I already knew beforehand).
    3. If you didn't know this stuff before taking this job, would it really make such a difference after the probation period, during which you surely would have learned everything needed for your job?
    4. If you didn't know this stuff, would it affect your chances to get hired there?

    @asdf said:

    80% of us will write some performance-critical piece of code at some point in their lives (most likely more than once), so at least the very basics should be taught to every CS student.

    100% of Poles in England speak Polish, so every English school should include mandatory Polish classes.

    @asdf said:

    Also, even if you'll rarely ever have to do such a thing: If someone has absolutely no clue about stuff like that, (s)he will produce horribly slow software like Discourse. 😉

    Like it or not, Discourse is a successful product.



  • @Gaska said:

    If you weren't taught this at college, how probable is it that you would learn it in your free time? I consider myself to have intermediate level of knowledge about software optimization

    That varies from person to person, and from job to job.

    At some jobs, I'm not granted the time to learn how to do a task right. I'm given a strict deadline, and out comes shit.

    At other jobs they up and send me off to training for it.



  • @Gaska said:

    100% of Poles in England speak Polish, so every English school should include mandatory Polish classes.

    The more I talk about this topic, the more I value electives.


  • Banned

    @xaade said:

    That varies from person to person

    The kind of people who quite enjoy college classes is usually the same kind of people as those who read lengthy Wikipedia articles on obscure stuff and learn random programmingy thingies for fun.

    @xaade said:

    and from job to job.

    I said, free time.



  • @Gaska said:

    I said, free time.

    I see.

    Well, I still hold that some jobs not only take that ethical luxury away, but also actively make it difficult for you to even recommend these changes.

    First place I worked at actively worked against improvement. Everything had to be sanctioned top-down.



  • @xaade said:

    And there was a class on State Machines that's useful right now for me, since some of our systems rely on using state machine like logic to support two-way state based communication.

    I would assume most networking classes talk about finite state machines.



  • @JazzyJosh said:

    I would assume most networking classes talk about finite state machines.

    That would be a question for the OP to investigate.

    Are these concepts covered in the myriad of tech specific classes. Or do the classes spend all the time worried about the specific implementation.



  • @lesniakbj said:

    "Hey go code this"

    do the needful


  • Winner of the 2016 Presidential Election

    @Gaska said:

    1. Is it possible to learn this by yourself?

    I can only speak for myself, but I probably wouldn't have. You can always take an online course at Coursera or sth., but that's true for everything and it requires you to invest a considerable amount of time.

    You can always look up algorithms or read papers about a Great New Distributed HashMap™ or a great new parallel xy algorithm or whatever, but you at least need to know the basics to have a clue what they're talking about.

    @Gaska said:

    2. If you weren't taught this at college, how probable is it that you would learn it in your free time? I consider myself to have intermediate level of knowledge about software optimization (ie. more than most of my colleagues, but wouldn't say I'm competent enough to make performance-critical software all by myself), and I learned literally nothing about it at college (as in, everything I was taught, I already knew beforehand).

    See above: Unlikely, since it's hard to learn the basics just by reading books/articles without taking a course, and that requires a considerable amount of time.

    @Gaska said:

    3. If you didn't know this stuff before taking this job, would it really make such a difference after the probation period, during which you surely would have learned everything needed for your job?

    I knew way too little when I started, but I remembered all the basics, so I had a solid foundation to build upon and made it through the probation period. I still know way less than most of my coworkers, though.

    @Gaska said:

    4. If you didn't know this stuff, would it affect your chances to get hired there?

    Usually yes, but fun fact: They forgot to interview me at all. :D And now I'm the one interviewing others and asking them questions I couldn't have answered myself when I started.

    @Gaska said:

    Like it or not, Discourse is a successful product.

    Hm, maybe this has become a pet peeve of mine and is not really that important, but: Imagine a world where every applications is twice as fast and uses half of the memory it does. For most applications, that would probably be possible if people would design them correctly from the start.

    https://www.youtube.com/watch?v=rX0ItVEVjHc



  • @blakeyrat said:

    I'm not going to pretend I'm 100% sure what this means, either. And I know it's (kind of) possible to write .net code in C++. But assuming that's what that line-item means is just an assumption.

    c++/cli is actually pretty useable. they have extra syntax to garbage collected references and .net classes.



  • @asdf said:

    For most applications, that would probably be possible if people would design them correctly from the start.

    That's harder than it appears.

    1. Design requirements change rapidly, whether you use agile or waterfall. The only difference between the two work plans, is how the requirement changes will end up affecting your code. Will it be meshed in and need refactoring later, or will it be a major refactor at the end. Saying to design with extensibility in mind is a farce. Balancing extensibility with robustness is like chasing the white rabbit.
    2. Technology changes. I remember implementing a change where the user had completely swapped out their system from the time the change was planned to the time it was implemented.
    3. Experience changes. You lose and gain human resources over the course of projects. Interfering coding styles sometimes obfuscates design.

  • Winner of the 2016 Presidential Election

    @xaade said:

    Design requirements change rapidly, whether you use agile or waterfall. The only difference between the two work plans, is how the requirement changes will end up affecting your code.

    See the video for what I mean. Basically:

    "Base your mental model of your application on the data you're processing and what operations you perform on it, not the other way around (model data structures that fit into your naive mental model)."


  • Banned

    @xaade said:

    Well, I still hold that some jobs not only take that ethical luxury away, but also actively make it difficult for you to even recommend these changes.

    I'm not talking about employing best practices at work. I'm talking about learning for the sake of learning.

    @asdf said:

    I can only speak for myself, but I probably wouldn't have. You can always take an online course at Coursera or sth., but that's true for everything and it requires you to invest a considerable amount of time.

    Fair enough. But it struck me as very, very weird that your first thought on self-learning was an online course at Coursera, and not a tutorial found somewhere on the web.

    @asdf said:

    See above: Unlikely, since it's hard to learn the basics just by reading books/articles without taking a course,

    Here, however, you're just plain wrong. There are way more people, even among students, who learned more about programming from random tutorials found on web than during classes. In fact, it's more common for books or articles to be required to understand classes, not the other way around.

    @asdf said:

    I knew way too little when I started, but I remembered all the basics, so I had a solid foundation to build upon and made it through the probation period. I still know way less than most of my coworkers, though.

    This sounds like a reverse Dunning-Kruger effect where you know too little about the subject to realize how much you know about the subject.

    @asdf said:

    Usually yes, but fun fact: They forgot to interview me at all. 😃 And now I'm the one interviewing others and asking them questions I couldn't have answered myself when I started.

    You sick bastard.

    @asdf said:

    Hm, maybe this has become a pet peeve of mine and is not really that important, but: Imagine a world where every applications is twice as fast and uses half of the memory it does.

    And everything costs twice as much.

    Don't get me wrong. I'm the kind of person who does care about performance. I always want my code to be as memory and computation efficient as possible. Hell, I've grown up on C++, and am chief Rust evangelist around here! However, some time ago I learned how much more you can achieve if you sacrifice a little performance. I don't advocate writing crappy code - but people shouldn't care too much about performance if they don't have to. Most of the time, if the code looks okay, doesn't have nested loops and doesn't abuse recursion, then performance is fine.

    BTW, in my eyes, the main problem with Discourse isn't that it works so slowly, but that it doesn't work. Seriously, the 3389dae361af79b04c9c8e7057f60cc6 thing is the funniest bug I've ever discovered - and one of the funniest I've ever seen or heard about!


  • Winner of the 2016 Presidential Election

    @Gaska said:

    Here, however, you're just plain wrong. There are way more people, even among students, who learned more about programming from random tutorials found on web than during classes.

    Hm, I think there are skills that you easily learn from tutorials and ones that are significantly harder to teach yourself that way. This is one of the latter ones. That's what I was trying to say.

    @Gaska said:

    This sounds like a reverse Dunning-Kruger effect where you know too little about the subject to realize how much you know about the subject.

    Maybe. Never thought about it that way.

    @Gaska said:

    @asdf said:
    And now I'm the one interviewing others and asking them questions I couldn't have answered myself when I started.

    You sick bastard.

    Well, I'm not unfair to them: I don't not recommend someone because (s)he didn't know the answer to some question, they only have to show they know how to approach an algorithmic problem.

    @Gaska said:

    And everything costs twice as much.

    Hm, not necessarily. If you base your mental model on the data you're processing and what kind of operations you're performing on it instead of the other way around, you're already Doing It Right. A lot of people approach software design way too naively, because that's what you're taught in OOP 101. ("I'll model some domain objects so that I have a nice mental model and then create classes based on that.")

    @Gaska said:

    However, some time ago I learned how much more you can achieve if you sacrifice a little performance.

    That's true, of course. But I'm not claiming you shouldn't use abstractions at all or optimize the hell out of every line of code. Just: Take performance into account when designing your system by thinking about the data and how you're processing it.

    @Gaska said:

    Most of the time, if the code looks okay, doesn't have nested loops and doesn't abuse recursion, then performance is fine.

    On a low level (method implementation), yes. On a high level (design error), no.

    Oh, and have I ever mentioned how much I hate that most CS courses sell recursion as a great concept, when it's something that you should never, ever use in real code if you can avoid it?
    (Not saying that teaching the concept is wrong, but there should be a huge disclaimer saying: "Always use iteration instead of recursion in real code!")



  • @asdf said:

    Oh, and although it doesn't fit into the questionnaire: I hope you're teaching your students how a debugger works and what conditional breakpoints are. Every time I see someone insert printf()s into his code, I die a little inside. It seems like at least 50% of the professional programmers I know were never taught how to use a debugger and how much time it can save you!

    During my brief stint as a CS major, we were all instructed to do our work ssh'd into a Solaris cluster using GCC and actively discouraged from using any modern IDE. I have become convinced that the goal of many undergraduate departments is not to give students job skills and prepare them for the real world, but to prepare those same students for grad school.


Log in to reply