Course Review – Pattern Discovery in Data Mining (Jiawei Han, UIUC)

Here is my review of Feb-Mar 2015 incarnation on Coursera of Pattern Discovery, which is the first course in Data Mining specialization. Ranking is 2.2 out of 5 (bad), while I passed with 99.3% grade.

Technologies: Data Mining is the process of extracting knowledge from data.
The basic ideas and techniques are learnt: Apriori principle, frequent pattern growth, pruning, etc. Due to the absence of homework substantial efforts are needed to apply to real problems.

Material: the course presents foundations of data mining by describing the basic notions and their relations (pattern, knowledge, mining process) +
presenting a variety of efficient pattern discovery algorithms. The outlined applications are in text processing, network/graph knowledge discovery, and advertising.

Instructor/lectures: Jiawei Han is a world-leading researcher in data mining.
He is enthusiastic to describe the details of techniques, but frequent omissions/typos + lack of programming assignments make it challenging to fully understand and internalize the concepts.

Course review – Machine Learning (Andrew Ng, Stanford)

Here is my review of Sep-Dec 2014 incarnation of Machine Learning course on Coursera. Ranking is 4.8 out of 5 (excellent), while I passed with 100% grade.

Technologies: machine learning is a technology in itself, playing a central role in image recognition and machine vision, autonomous cars, search, AI, etc. Neural networks presented in homework can be readily adapted for a problem at hand. Learnt techniques can be used to gauge and optimize performance + visualize results and guide further improvements. Homework teaches Octave/Matlab.

Material: the course offers an introduction to machine learning, a flourishing field of CS. Various machine learning techniques are presented from simple logistic regression to neural networks and support vector machines. Multiple applications are described such as anomaly detection, recommender systems, and OCR.

Instructor/Lectures: Andrew Ng worked closely with Google and Baidu Research on applied machine learning. He is very enthusiastic about the subject. Andrew often provides practical tips and elaborates on common pitfalls in the real-life applications.

My studies of advanced Java SE and preparation for Oracle Certified Java Professional 1Z0-804 exam

The second level of Java certification is becoming an Oracle Certified Java Professional. In Sep 2014 I got a job offer from Deutsche Bank for Software Development Engineer position. For several weeks before the start of job I studied for 1Z0-804 exam, and successfully passed it on 10 Oct 2014.

Here is what I did to prepare:
Step 1. Made a study plan largely based on my preparations for the associate certification. This time the plan included advanced topics such as design patterns. The full list of topics can be found here. I wrote notes for all materials I studied and then looked through the notes before the exam.

Step 2. Read relevant parts of the official Oracle tutorial, well-referenced by the Really Big Index. In particular, the trails helpful for the professional certification are:
Learning the Java Language (especially generics),
Essential Classes (Exceptions/ I/O / Concurrency),
Collections, Internationalization, JDBC Database Access.

Step 3. Watched tutorials on SkillSoft (got access through one of the recruiters).
In particular, “1Z0-804 Java SE 7 Programmer II” series of courses proved helpful.
It contained 3 tutorials: “Syntax and Class Design”, “Generics, Errors, and I/O”, and “File I/O, Concurrency, JDBC, and Localization”. The tutorials covered Data Access Object pattern.

Step 4. Separately studied design patterns by reading chapters of “Design Patterns: Elements of Reusable Object-Oriented Software” and “Head First Design Patterns“. The former book is written 20yrs ago, but is still an unsurpassed standard in the field.
Besides DAO, the exam covers Abstract Factory, Factory, and Singleton patterns.

Step 5. Separately studied NIO, Collections, and Concurrency by readings through API.
After all, the official Oracle API is the most-authoritative source of information about Java. The general descriptions of interfaces are written very well, e.g. List Interface.

Step 6. Looked through “Study Tonight” guides. They have nice organization of material, e.g. Collection Framework.

Step 7. Took several practice exams. Enthuware has a great battery of up-to-date practice tests. I got quite anxious after failing the first practice test with a score of 64%.
However, after some catching up in the weak areas, I boosted the score to ~75%.

Step 8. Developed a strategy for the exam. It has 90 questions per 150 minutes. Answering 9 questions every 15 minutes is a good target. The exam has both short easy questions as well as tough questions with 2-3 pages of code samples.
One has to answer short questions in 30 seconds to have a luxury of spending 3-4 minutes answering long questions. Every other question has “code does not compile” option. By the conclusion of studies my brain worked as a quite good Java compiler…

As an added bonus came previous studies of “Java Concurrency in Practice” book, which really helped me during the interview at Deutsche Bank.

I got a score of 85% on the real exam!