I would almost advise against doing lectures prior to taking the specific classes just because you’ll have to go through them again anyway and it is good to do it with the rest of the class so that you can ask questions and see what other questions other students are asking.
One thing that should be stressed because it is a pitfall for some students, none of the classes will teach you programming or a specific language. Some people thought SDP was a class in programming, it is not. Just like CS undergrad, you are expected to learn the language on your own for any class but depending on you, you can learn as you go. It makes life easier if you aren’t trying to learn about pointers in C while you are trying to study a subject so knowing the language beforehand is useful.
Having said that, this is what I’d advise for people based on classes or skills:
- Anyone who didn’t take intro to CS in undergrad – Take Udacity’s Intro to CS. Yes you may have programmed before but I think covering the basics is good.
- Anyone who has never used Linux – “Linux Command Line basics” from Udacity.
- Anyone who has never used Git – Take the “How to use Git and Github” from Udacity and also “Writing READMEs” from Udacity
- Anyone who does not know Java – Use GaTech’s Lynda subscription and take the “Java Essentials” class on lynda.gatech.edu. If you aren’t a student yet, take “Intro to Java Programming” on Udacity
- Anyone who doesn’t know Python – if you took the intro to CS class on Udacity, hopefully you get enough Python practice. Otherwise take the “Programming Foundations with Python” on Udacity
- Anyone who doesn’t know C– The K&R C book would be my recommendation but there is also a free version of “Learn C the Hard Way” that would also be good http://c.learncodethehardway.org/book/
- Software Development Process – Udacity has a couple Android classes, they do use the Google IDE but that knowledge is transferrable even if you use Eclipse. A few people got tripped up by the Android app portion of the class and even just taking part of an android dev class can help (How to create <anything> in Android or Developing Android Apps). Learn Java.
- Knowledge Based AI – Java or Python can be utilized, your pick. If you take with another Java course (like SDP), then it may be easier to do Java, if you take it with a Python course (like AI for Robotics), then it might be easier to do Python. “Intro to AI” on Udacity may be a good option if you have never taken an AI course
- Machine Learning – Although the course is available on free Udacity, I’d actually recommend taking Thrun’s “Intro to Machine Learning” on Udacity instead. It will help you get a good feel and also has a project attached to it. It is also good to know Java for the second project as you are given code in Java. If you want to explore the use of R, “Data Analysis with R” on Udacity would be a good option as well. And if you have never taken a statistics course (my CS undergrad didn’t require it somehow), take “Intro to Descriptive Statistics” and “Intro to Inferential Statistics” on Udacity.
- AI for Robotics – Learn Python, Linear algebra refresher may be good too. “Intro to Artificial Intelligence” from Udacity may be a good option as well if you have never taken an AI course
- Computer Networks – Learn Python, learn Linux basics
- Advanced Operating Systems – Learn C, take Intro to OS if you have never taken an OS class, learn Linux basics
- Intro to Operating Systems – Learn C, learn Linux basics
- Intro to High Performance Computing – Learn C. “Intro to Parallel Programming” on Udacity may be a good option as well. Learn Linux basics.
- High Performance Computing Architecture – Learn C/C++, learn Linux basics, if you haven’t taken a computer architecture course recently, take one online (MIT OCW and Coursera both have them), take “Intro to Parallel programming” on Udacity.
- Database Systems Concepts & Design – new class but there is a “Intro to relational databases” course on Udacity that might be good for it
- Intro to Health Informatics – “Intro to HTML and CSS” on Udacity. Freecodecamp.org is also fantastic but probably overkill
- Big Data for Health Informatics – New class but I’m guessing that “Intro to Hadoop and MapReduce” on Udacity would be beneficial. Also, Mongo offers free Mongodb courses online at their sitehttps://university.mongodb.com/ Take “Intro to Machine Learning” on Udacity and also Learn Java or Python
- Software Architecture and Design – Take SDP or have had some similar SE course.
- Computer Vision – Learn python, do a linear algebra refresher
- Computational Photography – Learn python, have a camera (recommended but iPhone with an app can work)
- Computability, Complexity & Algorithms – I wish I knew. There are a variety of theoretical algorithm classes floating around on Coursera.org. There is also “Intro to Algorithms” on Udacity. Also, one of the TAs thought that the book “Mathematical Thinking” would be useful. The biggest thing here is how to do proofs.
- Intro to Information Security – Learn C, learn python, learn Linux basics
- Machine Learning for Trading – Learn python, do the “Intro to Machine Learning” course on Udacity
- Reinforcement Learning – Take Machine Learning, learn Java
- Embedded Software – New class but learn C, take a computer architecture class if you haven’t recently (Coursera, MIT OCW)
- Software Analysis and Test – New class but learn Java
- Educational Technology – Take any 2 courses in the program, have an idea on a project you might want to do that would be loosely related to education
Also, feel free to correct me anyone on the recommendations. I’m going from my own experience and experience of others.
Advanced Operating systems course :
-It is a tough course. Requires on average 20 hrs per week and could easily reach 30 during projects. -Requires a good knowledge of C. Make sure to freshen your C skills before project 1. lynda. gatech. edu/ has some good beginner courses. Do check them. -Projects are released early and you have around 2 weeks to complete them. Always start them early and keep a close eye on piazza. A lot of good tips will be coming from your peers. -You need to keep some notes/summaries from lectures. Otherwise you will quickly get overwhelmed by the range of topics covered. Bhavin Thaker has created some awesome notes but covers topics form second half of course. Do check them https://www. researchgate. net/publication/299535414 -For mid and final exam, start early and keep a day or two only to read past papers and their solutions. Some of the questions/topics will be repeating in past papers and you need to focus on them.