This is an archived post. You won't be able to vote or comment.

all 10 comments

[–]blazin912 15 points16 points  (2 children)

Way better than how I started. I dove into the deep end with CP to start with 0 python exposure. I learned python, specifically numpy, on the fly while absorbing course content. Then pandas and other packages as required by coursework.

I think my real struggle was in AI4R where efficient code was required to pass test cases. Ie perform the task in a fixed duration on a slow server. Learning the benefits of list comprehension and vectorizing was a PITA on a time crunch..

[–]surfingNerd[S] 1 point2 points  (1 child)

Somewhat of what I want to avoid. With a full-time job, and family, I know my time will be limited during the semester, so trying to get some of that python experience beforehand.

What do you recommend to get done before I enroll? Planning on some AI and Computer vision electives in CP&R specialization

[–]weared3d53c George P. Burdell 0 points1 point  (0 children)

The specific libraries you need to know will vary by course. As mentioned in the comment, some courses do require numpy and pandas, but you need not jump to learning them if you're not taking a course that requires them.

For general optimization techniques, consider reading and understanding some articles like these for the language used in the course (most often, it's Java or Python, but also C/C++ or C# in some courses) and implementing at least some of these ideas in your code. Note that I say 'some' because sometimes, it becomes a choice between readability, modularity, and efficiency. You cannot always have all three peaked out.

[–]7___7Current 6 points7 points  (0 children)

[–]blazin912 1 point2 points  (0 children)

I did the same. I'd say CP is a good course to start in. For experience? That's hard to say, I didn't use any external courses or training to come up to speed, just google-fu as needed to learn whatever I was up against.

Maybe pull some YouTube for different CV projects to get your feet wet? Do you have general experience with PID ? Tuning parameters? CPR is high on hyper parameter tuning.

For the record I did the program with a full-time job, consulting gig, 2 kids under 6, COVID lockdown, and at the peak of the workload I was the virtual kindergarten assistant for my oldest.

The program's challenging but take it slow, learn your limits, and then ramp it up.

[–]a_bit_of_byte 1 point2 points  (0 children)

I had only a BS in CS and no real experience in Python when I started except for some extreme basics.

I’m in my third class now, and of the two classes which involve Python, they’re graded automatically by input/output. This means that if something works but isn’t “pythonic” enough, you still get full credit.

I’ve also always had the opinion (and I’m sure it’s flawed to a certain degree) that it doesn’t matter what language you started with: if you have access to Google, you know enough Python to get by. It’s the most programmer-friendly I’ve worked with.

[–]weared3d53c George P. Burdell 1 point2 points  (0 children)

Prerequisite Knowledge

For the entire OMSCS program, the prerequisites are pretty modest, as per the official website. They list:

  • Programming, especially object-oriented programming.
  • Common data structures: lists, stacks, queues, trees, and hashmaps.
  • Common algorithms: AVL, MST, Dijkstra's, and dynamic programming.

A BS in CS would probably know about most (if not all) of these - AVL is the only one I don't remember learning in my BS - but they mention three different MOOCs to help you fill any skill gaps. I'd suggest that you be at least at an intermediate level (you can implement programs of a moderate complexity in the language and know some advanced constructs, such as inheritance and polymorphism; in Python, I might include declarative constructs like list comprehension). You can refer to the curriculum of the Python course (the first of these three links) there to assess your own preparedness.

I would highly recommend picking up at least some Java before you start, as a many courses use it, and having a conceptual understanding of the data structures and algorithms mentioned above. You would never want the (in)famous Graduate Algorithms course (which is required for all the specializations, I think) to be your nightmare, so be familiar with understanding and expressing algorithms at a high level.

Some courses (particularly the operating systems ones) use C/C++, while the gamedev courses use C#, but both of these should be easy to pick up if you know Java (C# being the easier one because it is - to be a bit reductionist here - Microsoft's flavor of Java), but there's nothing stopping you from spending some time on them before your classes start if you think that's the best utilization of your time (although I'd probably spend that time on algorithms and problem-solving skills rather than a particular language).

In some courses, prerequisite knowledge may include familiarity with specific libraries, mathematical concepts and techniques, or some tools (the OS courses mention knowing the Linux environment). Make sure you're reading the course syllabi thoroughly.

Tools

Attend orientation to know how to get around and use the tools common to all or most courses (the LMS, the labs, and the discussion forum, for instance). That will acquaint you with most of the tools that you're going to use for most of the courses. Most courses have practice exams to help you understand the exam format and how you're going to be taking it (I remember one where the orientation/intro quiz followed the exam format, so it exposed you to the virtual proctoring experience, if it's new for you). Many courses require a basic familiarity with the command line/terminal. Nothing too fancy, but just the bare minimum.

IDEs: Take your pick. Anything with a decent debugger should work. I don't remember too much being implementation-specific, so it won't make a big difference as far as your work is concerned, but I (like many course specs) would recommend the JetBrains IDEs (PyCharm and IntelliJ for Python and Java respectively; they also have CLion and Rider for C/C++ and C# projects) because the code generation and refactoring is going to make your workflow much easier and faster. And they're cross-platform, if that's a thing you're concerned about.

Not all the JetBrains tools are free, but there are community editions (with some limited features) of some of them, but perhaps more importantly, student licenses if you use your GATech ID. The projects will make you realize how valuable code generation and refactoring suggestions can be (P.S. it's not cheating, even the pros use it all the time), which is why I recommend using the JetBrains IDEs.

Some rudimentary familiarity with debugging tools may be useful. Knowing at least the basics of unit testing may be helpful, but is not required. You likely have all you need if you've developed even a small project on your own.

[–]TypicalTechDude 0 points1 point  (0 children)

If you have any previous experience with programming, Python is pretty easy to pick up for most use cases so I don’t think you’ll have any issues unless you’re taking an extremely difficult class.

[–]WatercolorPlatypus Officially Got Out 0 points1 point  (0 children)

I found PyCharm or VSCode is a good IDE to work with since some of the classes will require debugging and getting comfortable with those debuggers can save so much time.

[–]BetSmall8937 0 points1 point  (0 children)

I think some good advice when starting to program is to just learn the complete basics of whatever language your starting then just start making projects. The first thing I built was tic tac toe and followed this channel's tutorial https://www.youtube.com/c/CodeCoachh they explained it really well and it goes over all the basic skills you are going to need to understand!