I like doing part-time research in reinforcement learning. In recent years (up to 2009) there was a reinforcement learning competition held at rl-competition.org with some very interesting problems, but this seems to have been discontinued. I'd love to improve my skills and knowledge and measure it against other enthusiasts in the field - are there still any such competitions around?
Doesn't look like it, the major people who organized it last year are busy graduating from PhD. You could email the students who organized it last time to ask though: Shimon Whiteson, Brian Tanner, and Adam White
Also, http://metaoptimize.com/qa is basically the stack overflow for the machine learning community, it's usually a better place for such ML-specific questions.
Related
This is not for asking any doubts or queries. I know this is a technical forum and hence would be the best platform for me to get advice on.
I am a Master's student in computer engineering and hold interest in Robotics. I am confused as to where should I start if from. I have 2 courses one is on controlling of robots and other is based on introduction to AI. I don't want to take both the courses together. I am confused as to do I need to go for controlling of robots first or AI first?
Also, if you know any good forums/blogs on AI then please share... Would be a lot helpful.
Thanks.
AI and robot control are different subjects, and do not necesssarily cross over that much. AI covers writing software that is intelligent, and applies to things as disperate as character recognition in scanned text, stock market analysis and face detection. There are uses of AI techniques with mobile and manipulator robotics, but there are lots of good robot projects out there that are implemented with zero AI.
Your control course for robotics will likely cover the basics of kinematics and dynamics of robots, path planning, and cover a fair bit of practical robotics knowledge. All of this course is important knowlege for building and controlling robots, and if robotics is your goal destination then i would take this course. You can do good work in the robotics field with zero knowlege of AI, but you cant with zero knowlege of robot control.
Well, I would take the AI class first, because I would want to know more about the logic before going to the control part.
As far as forums go, you could check out the AI Forum, and the AI Depot (the AI Depot is not exactly a forum, but it has some good resources and articles).
You can also check out these Area51 StackExchange site proposals:
Cognitive Science
Robotics Research
Machine Learning
I have learnt C and Assembly(IA32) on Linux and I will also be learning a few more languages this year.
I want to make my fundamentals strong and for that I need some tips from you guys as in, where will I find programs for practice? so that I solve them and get more and more experience.
Any good web links that would help a novice programmer to improve and be confident about the language he/she is learning.
I try looking up for questions on websites but they are either too difficult or not meant for beginners.I want some source which would help me to be more clear fundamentally and conceptually.
Thankyou.
You could start by coding some of the simpler Project Euler problems in C, and then translate them to assembly. The problems get progressively more challenging as you go.
This page has an on-line version of The Art of Assembly Language Programming by Randall Hyde, but without the laboratory exercises. However it still includes a lot of code snippets, and Randy takes a high-level approach to assembly programming using macros which will be familiar to a C programmer. (I worked with Randy nearly 30 years ago doing assembly language programming on the Apple II).
It depends on how "novice" you are, but I'll be suggesting the UVa Online Judge.
One thing you can do (recommended to me by an experienced programmer) is read really good code. The Linux kernel is written in C. You can go to http://www.oldlinux.org/ to study with the first version, which would probably be easier than the current one. Beyond that, I would recommend finding an open source project for C that interests you. Working on a real-world project that interests you is going to be the best way to grow your skills.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 1 year ago.
Improve this question
I've been on and off with the C language for the past year(?) until two months prior to present day when I decided to take my learning a bit more seriously. In some areas of the language I feel comfortable, but I know that by anyone's terms I'm still considered an amateur and have much, much more to learn.
Recently, I've heard nothing but good things about how helpful taking an approach in different paradigms is to gain perspective, so I figured maybe trying to learn another language would be nothing but beneficial to the areas I'm weak in with the C language and possibly programming concepts in general.
SICP is considered one of the most influential books every programmer should read according to stackoverflow and plenty of amazon review comments, so naturally I chose it - just recently purchased the hardback. I'm excited to learn in hopes of coming out with some much needed experience, but my only concern is whether it would be a problem for someone at an early stage as I am to attempt learning two languages with different paradigms at once. I'm hoping learning Scheme and the concepts from this book will help me to think differently and more abstractly with C rather than confusing me.
Any insight would be great - whether it be to continue with these two languages, perhaps choose another language to aid my C or drop the second language for now. I just need insight from a seasoned person on the matter.
Learning both will give you a good appreciation for the strengths and weaknesses of both langauges, as well as two very different problem solving approaches.
Have fun!
I think you'll be okay. It's similar to learning maths and chemistry at the same time, and most people manage just fine. (Except for people who don't understand maths and chemistry, and enroll into liberal arts ;) )
If you are new to programming, I would urge you to start with HTDP. Yes, it is scheme based, and focuses on recursion, but its goal is to give you a framework for approaching problems that is generally applicable. It may seem boring at first, telling you stuff you think you already know, but don't skim. The disciplined approach they take to approaching problems translates easily away from scheme and recursion, and is a useful tool in general.
There is no reason not to learn both languages at the same time. They are sufficiently different that you are unlikely to get confused. If you have time to learn only one, C is probably more generally useful, but they are both (by modern standards) very simple languages, so learning both should not be a problem.
Most academic environments (university, specifically) expect you to handle multiple new languages at the same time. (And there's hardly an earlier stage than "still in school.") Each subject is going to have its own preferred language in terms of features that benefit that subject, and each teacher is going to have their own preferred language and, well, they're the teacher so you just have to deal with it :)
As long as you can keep them separate, it's not really the language itself that's the important part. Focus instead on what that language does and what you can do with it.
Back at my school, it was easy to tell the freshmen from the seniors. The formers would talk about what languages they know, the latter would talk about what designs and abstract concepts they've used.
Remember, the language is just a tool. Development should be more language-agnostic, focusing more on the job at hand and just using the right tool for that job.
I disagree with some of the other answers. This is not like studying two different subjects simultaneously: you generate the same output (a useful computer program) in C or in Scheme, but you go about it in very different ways. Universities may have students taking classes using different languages at the same time, but those curricula are, in theory, curated by a thoughtful department that is trying to avoid confusing students.
While it is certainly possible to study both C and Scheme at the same time, they may turn out to not be complementary for you. I would recommend proceeding as you wish, but as soon as you hit a rough patch you may want to consider focusing on one at a time. Following HtDP is a great idea if you are new to programming. If you are comfortable programming in general and want to learn C -- a good goal to have! -- then you can focus on how you write programs in C. The key is that you first want to learn how to write programs, then you can focus on learning specific languages.
learning a programming language is no different than learning any other language. If you can handle learning spanish and french at the same time, you can handle C and Scheme.
Another reason to be familiar with both C and Scheme is the Foreign Function Interfaces (FFI) provided by almost all Scheme implementations. You can quickly prototype a product in Scheme (or some other Lisp) and then you may find that you need to optimize some portion of the code for speed. You can re-write that part in C and invoke your fast C function from Scheme using FFI. Or you may need to interface some library (GUI, database etc) with Scheme. Your C expertise coupled with the FFI will help you here.
Learning C has made me a better Scheme programmer and vice versa. After spending years with Scheme and Common Lisp, I've spent a year programming almost exclusively in C. When I go back to Scheme, it is much easier to express myself because I know the kinds of things the machine is good at; C has helped me develop a good sense for algorithms. Knowing Scheme before going into C allowed me to develop certain nonstandard idioms while learning the standard ones. I think that since the two are completely different ways of doing things, and they both have their advantages, they are the two best languages to master.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
I wanted to ask Stack Overflow users for a nice idea for a project that could entertain a fellow student programmer during a semester. Computer vision might look interesting, although I couldn't say if a project on that field is something that could be achievable in 4 months. What do you think?
There is a story that, during the early days of AI research when significant progress was being made on "hard" logic problems via mechanical theorem provers, a professor assigned one of his graduate students the "easy" problem of solving how vision provided meaningful input to the brain. Obviously, things turned out to be far more difficult than the professor anticipated. So, no, not vision in the general sense.
If you are just starting in AI, there are a couple of directions. The classic AI problems - logic puzzles - are solved with a mechanical theorem prover (usually written in Lisp - see here for the classic text on solving logical puzzles). If you don't want to create your own, you can pick up a copy of Prolog (it is essentially the same thing).
You can also go with pattern recognition problems although you'll want to keep the initial problems pretty simple to avoid getting swamped in detail. My dissertation involved the use of stochastic proccesses for letter recognition in free-floating space so I'm kind of partial to this approach (don't start with stochastic processes though, unless you really like math). Right next door is the subfield of neural networks. This is popular because you almost can't learn NN without building some interesting projects. Across this entire domain (pattern processing), the cool thing is that you can solve real problems rather than toy puzzles.
A lot of people like Natural Language Processing as it is easy to get started but almost infinite in complexity. One very definable problem is to build an NLP program for processing language in a specific domain (discussing a chess game, for example). This makes it easy to see progress while still being complex enough to fill a semester.
Hope that gives you some ideas!
The staple software that most people implement as one of their first applications of ANNs is character recognition (not necessarily hand written characters).
You could do something simpler than general "vision", like point a webcam at a digital thermometer and read the temperature from that.
Can't tell without knowing more about you, your friend, and the project. My guess is "no".
I'd point you towards two sources. The first is Peter Norvig's "Artificial Intelligence"; the second is "Programming Collective Intelligence". Maybe they'll inspire you.
Write a spam filter. Pick an interesting corpus to train on and filter (Twitter messages, Facebook wall posts, blog comments...?). There are lots of ways to go about building the classifier, identifying training data, etc.
One thing I always wanted to do was improve the AI of older video games. Take DOOM for example. Very simplistic AI, compared to even what you see today. You could try improving or even completely rewriting AI for enemy characters in a video game.
Or you could write your own little game that specifically focuses on the computer making surprisingly informed decisions.
I've always thought it would be interesting to write something that will look at a post (say, a question here) and predict how many votes it will get. I originally thought of the idea in the context of looking at a blog or an article and predicting vote ups/downs on reddit (or more simply a bucket like low, medium, high).
A program that plays poker, hearts or similar.
Make it interesting, for example a game AI, I know a chess sim might take awhile, but maybe you could boil it down a bit (just 3 pieces, 2 rooks and a king each side) for example...
Turing tests are interesting. Here is a link on how LOLBot passed the turing test
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 3 years ago.
Improve this question
Second Life is fun to play with, and some developers are creating content there, but I was wondering what useful resources (if any) are available in Second Life for professional software developers.
Discussion groups
Education/training
Vendor support
Development-related presentations or demos
Professional contacts
To clarify: I'm not really looking for information on developing stuff for use in Second Life (although those answers are welcome). I am looking for pointers to stuff in SL that programmers would find useful for their real-life work.
They have a site about some of these uses: http://secondlifegrid.net/programs/api/
and some pages on the language they kind of grew: http://wiki.secondlife.com/wiki/LSL_Portal
Like you I find playing around with SL pretty interesting for recreational coding. One of the experiences that made me think there was something to it was trying to code a working clock in a sandbox (a general building area in SL). Other avatars would walk past and make suggestions and as there's a fair few coders around it soon turned into an interesting collaborative effort. If only it was that simple in RL. Some things just work really neatly in SL - I once implemented a swarming algorithm using a flock of 'birds' as the objects (which gives a whole new take on oops).
As to resources - assuming you're beyond basic coding level then you should be able to figure most things out from the LSL Wiki - http://wiki.secondlife.com/wiki/LSL_Portal.
There's an ebook - "Scripting Recipes for Second Life" by Jeff Heaton which covers the basics in a reasonably well laid out way. It's only a few dollars but probably only worth it if you've not done a great deal of coding elsewhere. There's also regular classes held in-world, but I believe most of these are at a pretty basic level.
For groups I've always found the Scripters of Second Life group very helpful with a lot of people generally on it. There's one called simply Scripts which is quite active too.
A couple of words of warning, LSL, whilst Turing-complete is pretty broken in several areas, lacks modern program constructs (and some older ones - like arrays!) and much of the 'black-art' of LSL is knowing how to work around the limitations, With the advent of Mono though this is likely to be a decreasing issue.
Also there does seem to be an assumption by the Lindens that if you want to do any 'heavy-lifting' code you'll do it on a server off-world and call and return results to/from SL. This isn't helped by the XMP-RPC implementation being very broken, although HTTP works fine (and generally better than might be expected).
I vaguely remember Dr Dobbs running some sort of ongoing "Programmer's Island" thingy in SL, but I can't find the reference right now.
Apparently some sort of "virtual conference" for software developers.
As far I'm concerned, I'm trying to contribute to the OpenSim project which is a OpenSource clone of the SecondLife server infrastructure, written in C# and Mono.
OpenSim is SL like, enhanced with many additional script commands, open grid protocols, with customized modules and plugins. It definitely worth a look if you dont already heard about it.
ControlBreak suggested this in a comment (I'm promoting it to an answer):
You can visit Microsoft Island. Presentations of new products are done regularly - http://www.kzero.co.uk/blog/?p=663#more-663
IBM, Microsoft and Sun are pretty active in Second Life and sometimes there are interesting presentations/demos to see. Some of those are great for networking and meeting people from those companies which work on products you're interested in.
There are several groups for Java, PHP and several other programming languages apart from LSL, however IMO they're not as good resource as other non-SL resources. You can get your questions answered more quickly on StackOverflow or IRC.
IBM held several interesting programming competitions - there was something with robots finding a way out of the maze by IBM, there are also robot wars and some other programming competitions in SL, however they are all LSL-oriented.
I think I saw a beginner PHP class once, so if you're interested in learning programming language from start, try searching events and you might find something; however those are pretty rare in my experience.
Look & Feel team Scripting, it's mine. Common 3D trouble is confusing camera center between camera or actor. A designer may think camera center is world when it should be actor.