I recently started the Online Master of Science in Analytics (OMSA) at Georgia Institute of Technology. My first course, Introduction to Computing for Data Analysis (CSE 6040), ended this week so I thought I'd share a description and review of the experience.
The OMSA program consists of 15 hours of core coursework on analytics in computing, business, modeling, operations and visual analytics. Another 15 hours are spread across electives with a focus in one of three available tracks: Analytical Tools, Business Analytics, or Computational Data Analytics. A six credit-hour practicum caps it all off. The program is fully online and mirrors the on-campus version of the Master of Science in Analytics at Georgia Tech.
The OMSA program consists of 15 hours of core coursework on analytics in computing, business, modeling, operations and visual analytics. Another 15 hours are spread across electives with a focus in one of three available tracks: Analytical Tools, Business Analytics, or Computational Data Analytics. A six credit-hour practicum caps it all off. The program is fully online and mirrors the on-campus version of the Master of Science in Analytics at Georgia Tech.
Intro to Computing for Data Analysis (iCDA) is one of the core introductory requirements in the program. The main goal of the course is to teach the framework for how to approach analytics problems and break them down into their components, to then solve them using python, SQL and math.
I've been using self-taught python and SQL in my analysis work over the past four years, and I found that this course very closely resembled my day-to-day workflow. Seeing that I was already doing the same stuff that gets taught in a graduate level analytics program gave me a huge confidence boost and introduced me to some more theoretical concepts that I hadn't worked on before.
Modules/Topics
- Python bootcamp
- Pairwise association mining
- Representing Numbers (floating-point arithmetic, numerical analysis)
- Preprocessing unstructured data - string and regular expressions
- Tidying data - pandas merge/join, melting, casting
- Relational Data (SQL)
- Intro to numerical computing - numpy/ scipy
- Ranking relational objects - graphs as sparse matrices, PageRank
- Linear Regression - direct (QR) and online (LMS) methods
- Classification - logistic regression, numerical optimization
- Clustering - The k-means algorithm
- Compression - Principal components analysis (PCA), singular value decomposition (SVD)
Format of the course
The material was presented in short recorded video lectures and Jupyter Notebook assignments. Half of the grade was earned through weekly homeworks and the remainder was split between two mid-terms and a final exam.
All communication was done via Piazza, the online discussion forum. I wasn't a huge fan of this because there were hundreds of posts being added every day, so it was tough to keep up with everything and find what I was looking for. That being said, I whenever I communicated with TA's I found their responses were helpful. Your mileage may vary. Office hours were held every week, but I only tuned in to two of them because the assignments and videos were enough for me to figure things out.
I really liked the Jupyter Notebooks because they gave immediate feedback. You could work on a problem, tweak the code, and submit unlimited times until you got points for the solution. The exams worked the same way, so I immediately knew my score.
I found the first midterm to be more challenging than the second one because it dealt more with pure python, while the second mid-term was about Pandas and SQL which I have tons of practice with. The final exam was challenging because of the more theoretical concepts covered at the end of the course. I spent 45 minutes on the first few questions that covered data cleaning and manipulation, but then spent another +2 hours on the final problem, which required an understanding of principal component analysis. I thought the tests were very fair and there were no tricks.
Prerequisites
In my view the course is not designed to teach you python. I think having some foundation in programming is the most important prerequisite to come into the course with. It's possible to get through the class and maybe even get an A without any previous experience, but it will require a lot more work. I use pandas and SQL at work on a daily basis, so that really gave me a leg up.
Linear Algebra and Calculus were two other stated prerequisites. I have little experience in these subjects, so this was the main thing that stressed me out throughout the course. Heavy math concepts didn't really come in until two thirds into the course with the module on ranking relational objects. At that point, the lectures went through deriving math formulas underpinning each of the analytical tools, and I could barely follow along. But when it came time to do the homework, the expectation was more to be able to read and understand the formula enough to convert it into code and make the calculation work, rather than to derive the formula.
During one of the office hours sessions the TA said not to worry too much about understanding the derivation of the formula, and that learning that stuff will come in a different course later on, but that the goal of this course was to be able to get us to translate the math into code. Since I was able to implement the code, but had no idea how the math worked I relaxed a bit, because it seemed I was able to do what the course is trying to teach (namely, the python stuff).
Level of effort
In the first part of the course I spent around 10-15 hours per week studying and doing assignments. The module covering floating-point arithmetic and numerical analysis was by far the most difficult and time consuming topic because it dove deep into computer science concepts. It felt really good to get through it and figure it out.
The second part of the course focused on Pandas and SQL, which I have plenty of experience in, so I was able to get through the assignments in less time.
As I said earlier, the third part of the course was the most challenging conceptually because of all the math and formulas. Once I started to focus on the programming instead of learning the math, I coasted and was able to complete each homework in about 2-3 hours. I probably got a bit burned out by the end, or I was discouraged by the math stuff. This ended up biting me a bit in the final, but I survived.
Final take
Overall I really enjoyed the course and I highly recommend it. It's been a great introduction to the OMSA program and it helped me to build a better foundation in pure python methods (dictionary and list manipulations) and regular expressions, and I was introduced to key analytical tools (ranking, regression, classification, clustering, compression). I need to dive deeper into these, but I'll have the opportunity to do so in later courses in the program. I'm looking forward to learning more.