Page 1 of 2 12 LastLast
Results 1 to 10 of 14

Thread: Seeking some advice

  1. #1
    Join Date
    May 2010
    Beans
    90
    Distro
    Ubuntu 10.10 Maverick Meerkat

    Seeking some advice

    Alright guys, I've been learning Python on my own for the past few months. Right now, I'm in a business course in college, and it'll be over in about a year. After that, I am going to go back and upgrade my highschool transcript (basically just take some math and physics courses)

    After that though, what I really want to do is go into computer science at the university.

    I plan on going as far as I can in computer science, and so I would really like to be prepared. The problem I'm having though is I'm not sure what I should be focusing on to be prepared. Like, I know my way around Python (relatively) and I'm comfortable with it. I know I'm going to need to brush up on my math (one of the reasons im upgrading some highschool courses)

    I guess basically what I'm asking is:

    1. What math should I focus on?

    2. I've heard people say focus on ONE language at a time, and others say you should work with a dynamically typed language like Python and a statically typed language like C. Should I focus more on that? or should I stick with Python?

    3. I feel as if I'm learning only how to perform some tasks (or what to do to solve a problem) and not what is happening when I perform a certain task or even why I should do that. If that makes any sense at all, I'd like to focus more on what's happening and not what to do.

    If there is anything else I should focus on or think about, I'd be glad to hear about it. I have many mathematics and programming related books. Unfortunately, the programming books only seem to teach the syntax of a given language.

    If you think this would be better off in the cafe, feel free to move it.
    Thanks for any help!

  2. #2
    Join Date
    Sep 2007
    Location
    Christchurch, New Zealand
    Beans
    1,328
    Distro
    Ubuntu

    Re: Seeking some advice

    My advice would be to first decide what areas of computer science you feel most drawn to.

  3. #3
    Join Date
    May 2009
    Beans
    522

    Re: Seeking some advice

    Quote Originally Posted by worksofcraft View Post
    My advice would be to first decide what areas of computer science you feel most drawn to.
    And that list is just a brief overview at best. The field of computing is massive.

  4. #4
    Join Date
    May 2010
    Beans
    90
    Distro
    Ubuntu 10.10 Maverick Meerkat

    Re: Seeking some advice

    The course at the university of manitoba (likely where I'm gonna go) has six areas of specialization:

    Theoretical Computer Science
    Networks and Security
    Artificial Intelligence
    Human-Computer Interaction and Computer Graphics
    Databases
    and Software Engineering (Which based on the wikipedia article, i assume would be closer to software systems in the article?)

    out of all of them, I'm mostly interested in software engineering and artificial intelligence, though I'm not entirely sure what jobs would be available if I were to specialize in artificial intelligence. Does anyone know?

    Would I be cutting myself off from software engineer jobs if I didn't specialize in it?

  5. #5
    Join Date
    Sep 2007
    Location
    Christchurch, New Zealand
    Beans
    1,328
    Distro
    Ubuntu

    Re: Seeking some advice

    Quote Originally Posted by TheWeakSleep View Post
    The course at the university of manitoba (likely where I'm gonna go) has six areas of specialization:

    Theoretical Computer Science
    Networks and Security
    Artificial Intelligence
    Human-Computer Interaction and Computer Graphics
    Databases
    and Software Engineering (Which based on the wikipedia article, i assume would be closer to software systems in the article?)

    out of all of them, I'm mostly interested in software engineering and artificial intelligence, though I'm not entirely sure what jobs would be available if I were to specialize in artificial intelligence. Does anyone know?

    Would I be cutting myself off from software engineer jobs if I didn't specialize in it?
    AI would be a great choice

    I only worked with it briefly as I'm really more on the hardware side. Used it in image recognition systems, to identify bank notes also worked in a place where they used it for speech recognition.

    That was all quite some time ago but I suspect that with improved technology and more reliable results it will find many more applications... who knows you may be working on a proper androids brain functions one day

  6. #6
    Join Date
    Nov 2009
    Location
    USA
    Beans
    Hidden!
    Distro
    Ubuntu 10.10 Maverick Meerkat

    Re: Seeking some advice

    If you are looking for books that really explain why you do things in a language, I have found that the "Absolute" series of programming books are great in that respect. I learned C++ from "Absolute C++" and I learned Java from "Absolute Java" and the main thing I liked about that series is that I felt like it did a great job of explaining how everything works and why you follow certain practices.

    As the previous poster already said, AI is used in a lot of interesting things that you probably wouldn't really expect it to be used for. Basically anything that needs some form of problem solving skill is probably going to need some form of AI. Speech recognition was already mentioned, but even making sense of a written language requires AI techniques, which is something that can be applied in data mining applications.

    As far as brushing up on math goes, it would be helpful for getting through your math courses, but I think it is unlikely you will ever need to apply very difficult math in anything you do in computer science classes. My university requires computer science students to do math courses up to calc 2, but nothing further. My previous university required calc 3, I think, and linear algebra, so it basically just depends on your university.

    My main thought on learning a language, especially as your first language, is that it is preferable to use a language that is going to teach you good programming practices. After spending a significant amount of time learning your first language, you will probably think of future languages in terms of your first language, at least at first. Python, for instance, is a great language that makes a lot of things extremely easy to do. Since python is your first language I would advise you to be aware that some other languages are going to be more difficult and require more work to do certain things. Don't let that discourage you, though.

    My first language was C++, and I'm actually really glad that is where I started because I think if I had started with something like python I would have found it more difficult to move to C++ and Java. It was actually kind of difficult for me to get back into C++ after using python for about 6 months. I would probably have been just as well off, if not better off, starting with Java, though. Java so strictly enforces object oriented programming that it doesn't take long to really understand what object oriented programming is all about if you are writing Java. C++ doesn't enforce OOP at all, so it can be a little less clear to a beginner what OOP really is.

    The bulk of my experience programming is in those 3 languages, so I can't give much advice on other languages. I have done a fair amount of web development as well, but if you decide to start working on web stuff that's kind of a different topic.

  7. #7
    Join Date
    May 2010
    Beans
    90
    Distro
    Ubuntu 10.10 Maverick Meerkat

    Re: Seeking some advice

    I think I've decided that I'm going to 'specialize' in both software engineering and artificial intelligence. The specialization is basically getting a 'C' or better in the classes required for the specialization and it'll get you a notation on your transcript saying that you met the requirements. It specifically said that you can get as many as you want, and as I'm interested in both (and think that the relate to eachother ) I think that's what I want to do.

    I'll definitely have to check out those "Absolute" books that you're talking about Yarui. I haven't seen them before, but good thing christmas is soon, maybe I can get my girlfriend to get them for me

    I haven't looked at exactly which math courses are required (It's so hard to navigate through everything on the university's website ) and I've heard a lot of people say that you don't use most of it. I kind of like math, so I'm not really going to worry about that, it's just that I haven't done much math since highschool and I'm afraid it will take me a long time to catch up. (The math class in my business course right now is pretty much basic algebra)

    I am going to take some highschool level math classes after this course though, just to catch up. I guess I'll just practice as much as I can.

    As for the languages, I'm having some troubles grasping OOP (Though I hear that is common) and it's only harder that I'm learning in on my own in an unstructured environment. Is there anything I should do to help understand it, or is it something I need to just work with more to get it?
    I have on occasion looked at different languages (Mostly C, though I've looked at Java and Ruby) to see how it works in those languages. I guess I still think I'm a beginner and I'm not comfortable enough to leave Python just yet

    Anyways, thanks for all the help guys I haven't been so excited about this since I started, now that I've neen thinking of getting into AI.

  8. #8
    Join Date
    Nov 2009
    Beans
    1,081

    Re: Seeking some advice

    IMNSHO, "AI" is far too poorly defined to be realistically considered an actual specialty and instead gets relegated to the 'nearly meaningless buzzword' category. One should instead talk about actual methods or very specific goals -- Bayesian classifiers, HMMs, edge detection algorithms, distance functions, principal components analysis, latent semantic indexing, Q-learning, simulated annealing, parts of speech tagging, source separation, perceptrons, ANNs, SVMs, kernels, and so forth -- and most of the above list comes strictly from statistical inference on numerical or boolean data, so it's far from complete! It barely touches upon anything dealing with NLP or image processing, for instance.).

    As for math, study up on probability and statistics, graph algorithms, matrixes and linear algebra, and differential equations for a decent start.

  9. #9
    Join Date
    Nov 2009
    Location
    USA
    Beans
    Hidden!
    Distro
    Ubuntu 10.10 Maverick Meerkat

    Re: Seeking some advice

    I think you will probably grow to understand OOP more as you use it more, but just using an object oriented language isn't necessarily going to force you to use object oriented concepts depending on the language. Like I said, C++ doesn't really enforce it, so you could program in C++ without ever actually touching OOP. Same goes for Python, it has the capacity to use object oriented code, but you don't necessarily HAVE to do things in an object oriented way. That's why I was saying I find Java to be great if you are looking to understand OOP better, especially if you are learning it out of a decent book.

    It took me a little while to figure out how I needed to structure my files in Java to make it work because it is so strict with how you name and group your files and how you make multiple files compile together as one program. I never had a class on Java so I had to teach myself and it took me a few days to start getting a good grasp of the structure of the language. When I finally did, though, I was able to see how strongly it was beginning to shape my understanding of OOP. I had used plenty of OOP in the past, but never thought about it the way I do when writing in Java. It didn't take me long to start thinking in terms of objects rather than just variables. It is definitely a concept that can be tough to get your mind around at first, but I find that I like OOP more and more as I continue to use it.

    IMNSHO, "AI" is far too poorly defined to be realistically considered an actual specialty and instead gets relegated to the 'nearly meaningless buzzword' category.
    It is definitely true that AI is a very broad category that covers an enormous number of vastly different materials. I wouldn't go so far as to refer to it as meaningless, though. AI courses generally cover a lot of different things in a very short amount of time, but the main point of that is to expose you to all those different areas of study. Yes, most of the subjects you study in an AI class are an entire field of study that you are glossing over in a few class periods, but there is nothing wrong with getting a broad view of the concepts that are referred to collectively as AI before deciding on a subject or two you may be interested in going deeper with.

  10. #10
    Join Date
    Apr 2007
    Location
    (X,Y,Z) = (0,0,0)
    Beans
    3,715

    Re: Seeking some advice

    Maybe this will sound a bit weird, but...

    IMO, the best way to learn what OOP is about is using the SICP book (http://mitpress.mit.edu/sicp/full-te...ook-Z-H-1.html), which uses the Lisp dialect called Scheme to teach general programming techniques, but those are completely applicable to any language you'd like. It's interesting to see that OOP is not about syntax or compilers that enforce it more or less strictly, but about how you organize behaivor and data in your code.

    The problem I see with C++ and Java-oriented OOP books is that they consider OOP to be that Simula-based OOP syntax and semantics those two language have. Ok, it will help you to understand how to use the OOP concepts those languages feature and you can translate that with some relative ease into C OOP (e.g. GLib/GTK+). Undoubtly, that's what most people really need. But you have some interest in stuff where those languages may not be powerful enough in part because of the restricted view they have of OOP; you can't really do AI without some dynamic programming language and these *tend* to do OOP in a fashion more or less Smalltalk-based ("messaging"; i.e. runtime dispatch of methods... sometimes having methods as first-order objects) or if you end up in Common Lisp, you have to master the wonders of its dynamic multidispatch OOP system.

Page 1 of 2 12 LastLast

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •