OMSCS — Artificial Intelligence
Overview
This class is a fantastic, mile-high view of the field. The assignments are probably the most well-crafted of all the classes that I have taken in OMSCS. They more than make up for the lackluster lectures and horrendous exam experience.
My Approach
My approach to this class was a bit out of the ordinary. But because many students like to find opportunities to front-load class work, I think it is worth explaining what I think is the class’ biggest strength.
And that is, I actually did most of the work for this class before the class even started! I was more or less finished with my summer course and had a good deal of free time before the fall semester began. Luckily all of the assignments are public on the GA Tech Github under the ‘omscs6601’ username. In addition, all of the lectures are still available on Udacity.
There are a few caveats. The assignments are subject to change before the semester starts, though it’s unlikely to significantly. Ditto with the lectures, though that’s even less likely. And of course, the assignments themselves will be more difficult when doing them in a vacuum. You won’t have the support of TAs or other students, or access to Gradescope to test your code. And when it comes time to actually turn it in, debugging something you wrote weeks/months earlier will never be an easy feat. But as long as you use your best judgment and recognize that it’s unrealistic to think you can do all the assignments beforehand and get 100 on them once Gradescope opens, this class is a great opportunity to front-load work.
Practical Tips
Recognize that assignments 1 and 2 are by far the most difficult and time-consuming! Plan accordingly. Also remember that you drop the lowest scoring assignment. So also recognize that if you’re struggling with either of the first two assignments, it might be a good idea just to resign that it will be the one that you drop.
Assignment 1
- Start early. You will have a throttled number of submissions to Gradescope, so you want to begin submitting as early as you can.
- This may actually be the worst assignment to try to front-load, since feedback from Gradescope and discussion with other students are particularly invaluable.
- I recall the TA piazza FAQ post being very helpful. The most important piece of advice is making sure your agent is working at each iterative improvement. So that means getting minimax working correctly, then iterative deepening, and then alpha-beta pruning.
- Keep your code simple! An agent that successfully implements vanilla alpha-beta pruning should not be longer than a couple dozen lines. The textbook pseudo-code can help a lot.
- Implementing vanilla alpha-beta pruning is the most important step! After that, use ideas from other students to have fun with it and try to improve your agent.
- Be content with not getting 100.
Assignment 2
- Unlike project 1, the local tests are very thorough, so testing on Gradescope is less necessary.
- In my opinion, this was the most difficult assignment and the one I eventually dropped.
Assignments 3–6
- Do your best to get 100 on them. Most of your classmates will. Passing the local tests should be wholly sufficient to know you will pass the Gradescope tests.
Exams
- You will have about a week to complete a 50+ page exam.
- The exams are notoriously known for having lots of typos, corrections, and corrections about corrections. It is odd that this problem is consistently present each semester. But alas, you should be prepared for it. Things will be subject to change early in the exam week, so be flexible. If you think something is unclear with the exam, ask a TA to clarify and move on to the next problem. Check for clarifications and corrections often. Don’t put yourself in a position to have to throw out a lot of work because a problem changes.
- You’ll be tempted to calculate many of these problems by hand thinking it will be easier than writing code. Think again. Coding will mostly be quicker, less error-prone, and easier to check your work. Doing them by hand afterwards can be a good way to double check your work.
- If you typically only do schoolwork over the weekend, you may feel time crunched. Think about planning a day off of work to dedicate to the midterm and final.
- Be smart about your time. Such a long exam means any single question is worth a fraction of a point. So if you’re relatively weak in a particular topic, it may not be worth your time to spend that extra few hours on a single section.
- In my experience, partial credit was generous. Your best attempt at any problem may be worth more than you think.
Other Tips
- In my semester, the professor posted ‘challenge’ questions that he would solve over a recorded video. They can be good practice for the exam.
- They will probably post a midterm/final from a previous semester as practice. It can be good practice if you’ve got the time to work on it. Otherwise, you may just want to keep the solutions copy handy in case a similar problem appears on your exam.
- In general, the grading in the course is quite generous. You will be in a great position going into the final by getting an A on all the assignments (besides the one you drop) as well as the midterm. Without doing any extra credit, I needed to get a 50% on the final in order to still get an A in the class.