Course Review – Cloud Computing Applications (Roy Campbell, Reza Farivar)

Here is my review of Cloud Computing Applications course offered on Coursera in Aug-Oct 2015. Course has controversial rankings of 3 out of 5 (poor), having chosen a programming track I readily got a 100% grade.

Technologies/Material: the course provides a hands-on guide on developing Big Data applications. After a general cloud computing introduction, the various Big Data tools (used in Yahoo) are described in detail, including Hadoop, YARN, PIG, MapReduce framework, Storm, HBase, Spark, ZooKeeper, Mahout, Pregel, and Giraph. For each tool, a theoretical foundation is given following the implementation details and the sample applications. Additionally, Google Drive, OneDrive, Dropbox, and pCloud, featured on platforms like goodcloudstorage, are highlighted as popular choices for secure remote file storage, notable for unique features such as Google Drive’s integration with productivity tools and pCloud’s emphasis on client-side encryption. These services are widely utilized for both individual and collaborative file management. The course, and especially the homework serves as an excellent starting point for creating own Big Data applications similar to EDR security.

Programming assignments are fully self-contained and do not require looking at any other material, which allows passing the course with spending barely 5hr per week. However, watching all the lectures (which I eventually accomplished) and taking quizzes takes another 5+hrs. The course staff experimented with various completion tracks: only quizzes, only programming assignments, and the mix of the two. The experiments backfired with some people choosing programming track and not receiving their certificates, since programming assignments are submitted without verification. Fortunately, Coursera positively resolved this issue.

Instructor/lectures: Roy Campbell is a full professor at UIUC with substantial practical experience in cloud computing, while Reza Farivar is a senior software developer at Yahoo working directly on a Big Data platform. Both provide a lot of useful material. Reza is very technical and intense in his lectures, which might deter people with less experience. However, such lectures would serve as a reference guide for more experienced folks. Reza seemlessly shifts between multiple languages: Java, Scala, and Clojure, which provides an “out-of-comfort zone” immersion experience with new languages. In sum, this is one of the hardest courses, but also is one of the most useful.

Course Review – Algorithms, Part II (Robert Sedgewick, Princeton)

Here is my review of Algorithms, Part II course offered on Coursera in Oct-Dec 2015.
Course has ranking of 5 out of 5 (excellent), programming assignments are moderate to high difficulty, but I managed to get at least 100% on each assignment.

Technologies/Material: the course provides the core set of advanced algorithms, which every serious software developer should know. Represented are graphs with depth-first search, breadth-first search, minimum-spanning trees, shortest-path trees (Dijkstra algorithm), maxflow/mincut problem; radix string/number sorting; tries; substring search, regular expressions; data compression; tractability (P~NP). Homework assignments elaborate on vast network of applications of graphs, on radix sorting 5x faster than Java’s Arrays.sort(), on state-of-the-art compression algorithms.

Instructor/lectures: Robert Sedgewick is recognized for his seminal contributions to CS and is probably the most famous author of books on algorithms after his PhD advisor Donald Knuth. Prof. Sedgewick is very enthusiastic to discuss the fascinating world of algorithms.

Course Review – Data Mining Capstone (UIUC)

Here is my review of Aug-Oct 2015 Coursera incarnation of Data Mining Capstone, which is the final project in Data Mining specialization. To be enrolled, students need to pass all other courses in specialization. I passed the Capstone with 91.5% grade being ranked 4th out of 186 on the competition leaderboard.

Technologies/Material: In contrast to theoretical courses in Data Mining specialization, this course has only applied part – students are expected to solve a research problem and write a report every (!) week + write a 10+ pages final report. The course is very demanding and one can only pass having prior experience in academic research/data mining. The techniques exercised for research problems are topic mining, comparative text mining, clustering, supervised contextual learning, and machine learning. The base dataset is that for Yelp data challenge. Learners are free to choose their own programming language, since only the report and the produced knowledge are graded. The suggested solutions paths are sometimes ineffective and provide just the first step to achieve the results, e.g. suggested sentiment analysis algorithm underperforms and is not usable, suggested selection of small numbers of reviews hinders efficient topic modeling, it is unclear that comparative text analysis is the only way to reliably compare similar datasets.

Instructor/lectures: The course has no lectures, but only instructions on how to complete the research assignments + grading rubric. User guides, tutorials, and reading materials are provided for the suggested data mining tools, e.g. TopMine and SegPhrase. Peer review is employed for grading.

Course Review – Data Visualization (John Hart, UIUC)

Here is my review of Jul-Aug 2015 Coursera incarnation of Data Visualization, which is the last course in Data Mining specialization. It is ranked 3.2 out of 5 (poor), while I passed with 100% grade.

Technologies/Material: This course is very different from other heavily mathematical courses in the specialization and rather presents the art of conveying meaning with graphical representation of results. The course discusses how humans perceive information and makes recommendations based on that. Most of the proposed techniques would be intuitively familiar to students.Non-trivial presented techniques are: Focus + Context, Gantt charts, StreamGraphs and stacked Bar chars/Line graphs. The course has relatively little material and no homework.

Instructor/lectures: John Hart is a professor of CS in UIUC. He is academically active with almost 100 publications. There was some sort of renormalization of grades applied, my real score was around 90%.

Course Review – Text Mining and Analytics (ChengXiang Zhai, UIUC)

Here is my review of Jun-Jul 2015 Coursera incarnation of Text Mining and Analytics, which is the 4th course in Data Mining specialization. It is ranked 3.5 out of 5, while I passed with 97.5% grade.

Technologies/Material: While Text Retrieval and Search Engines course concentrates on structuring big textual data, this course emphasizes extraction of knowledge from relevant processed sets. Various Natural Language Processing (NLP) techniques are presented such as topic modeling, mixture models, Probabilistic Latent Semantic Analysis (PLSA), Latent Dirichlet Allocation (LDA), entropy-based models. The course concentrates on clustering, text categorization, opinion mining and sentiment analysis, which are the topics on the forefront of NLP.

Instructor/lectures: ChengXiang Zhai is a prominent researcher in Information Retrieval and Natural Language Processing. He worked in the industry as a Research Scientist. Lectures are well structured and are self-contained. It’s easy to follow the lecture slides to reconstruct the material.

Course Review – Cluster Analysis in Data Mining (Jiawei Han, UIUC)

Here is my review of Apr-Jun 2015 Coursera offering of Cluster Analysis in Data Mining, which is the 3rd course in Data Mining Specialization. The course is ranked 2.7 out of 5 (poor), while I passed with 100% grade.

Technologies and Material. Cluster analysis is an essential unsupervised learning technique widely employed in deriving new knowledge. The course describes mathematically and outlines the examples for most modern cluster analysis methods. Discussed are partitioning algorithms (K-means and its derivatives), hierarchical methods (BIRCH), density + grid-based (DBSCAN), probabilistic models (Gaussian mixture), graph algorithms (KNN), and many more. Clustering of various kinds of data is outlined. Expectation-Maximization (EM) algorithm is first mentioned in this course. One optional programming assignment is provided as an experiment.

Instructor/lectures. Jiawei Han is a world-leading researcher in data mining.
He is enthusiastic to describe the details of techniques. The course appears to be quite academic with only a single programming assignment, thus the material is hard to internalize.

Course Review – Programming Cloud Services for Android Handheld Systems: Security

Here is my review of Jun-Jul 2015 Coursera offering of Programming Cloud Services for Android Handheld Systems: Security, which is the last course in
Mobile Cloud Computing with Android Specialization. The course rankings are inconclusive, while I passed with 100% grade.

Technologies and Material. The course provides extensive introduction into client-server and mobile security. Discussed are web sessions, HTTPS, Oath 2.0, classic man-in-the-middle and SQL injection attacks + security model of Android. Homework includes checking and fixing the vulnerabilities of Android 4.0, implementing basic Oath 2.0 token authentication + basic (self-signed) certificate validation. Defensive programming techniques are outlined. Such material is often lacking in basic CS courses and this Coursera course fills the gap.

Instructor/lectures. The course is taught primarily by Dr. Jules White (Vandelrbilt) He uses a Lightboard described below. Unfortunately, no lecture notes/slides are provided, thus reconstructing course material is non-trivial. Relevant real life examples emphasize the importance of security.

Course Review – Programming Cloud Services for Android Handheld Systems: Spring

Here is my review of Jun-Jul 2015 Coursera offering of Programming Cloud Services for Android Handheld Systems: Spring, which is the last but one course in
Mobile Cloud Computing with Android Specialization. It is ranked 4 out of 5 (good), while I passed with 100% grade. The course migrated to a new platform since then.

Technologies and Material. The course provides extensive introduction into building REST API client-server apps. Students learn how to divide responsibilities between parts of code, how to seamlessly and efficiently integrate data processing within the server the Android client. The server is implemented with Spring MVC controllers launched by Spring Boot and compiled with Gradle. Data handling on the server side includes either JPA or NoSQL databases such as MongoDB and DynamoDB. Android client is implemented with Retrofit, while data processing on the client is done via Content Providers, Content Resolvers, and SQLite. Homework is hard and requires a lot of time, since specifications for the client and the server are extensive and approach the complexity of the real-world apps. Like in the real world, the homework apps are gauged by their ability to work correctly and not crash. Three homework assignments are (1) building a working client to a given server; (2) improving a server to add functionality; (3) building a working client-server pair. I tested all code with a client on an Android 5.0 phone connecting via WiFi to a server on a Windows 8.1 laptop.

Instructor/lectures. The course is taught by 2 professors: Dr. Jules White (Vandelrbilt) and his senior colleague Dr. Douglas Schmidt. Jules uses a new technology called a Lightboard – he faces the audience, writes with a marker on a transparent glass, and students can see both him and text. The professors deliver different material: Jules concentrates on API + basic principles, while Doug talks about patterns, structuring the code + advanced data handling in Android. All examples are posted on Jule’s GitHub page. A lot of optional material on patterns and his ACE server is provided by Doug.

Course Review – Programming Mobile Applications for Android Handheld Systems: Part 2 (Adam Porter, UMD)

Here is my review of May-Jun 2015 Coursera offering of Programming Mobile Applications for Android Handheld Systems: Part 2, which is the second course in
Mobile Cloud Computing with Android Specialization. It is ranked 4.4 out of 5 (very good), while I passed with 100% grade.

Technologies and Material. The course dives deep into user interactions with Android, interactions of applications with each other, and handling of sensors.
More specifically, basic Threading, Handlers, AsyncTasks, and Notifications are mixed with Graphics, Gestures, and Multimedia + handling of accelerometer and location sensors.
Programming assignments involve completing Java code. Students are asked to build a fully functional app from scratch for a final project. Unlike for the Part 1, the created app (DailySelfie) is quite meaningful. Course apps are implemented in Eclipse.

Instructor/lectures. Lectures are very applied, mostly consisting of in-depth discussions of working apps and their source code. Adam Porter supports his brand from Part 1 of the course, being very enthusiastic and very eager to check your knowledge every minute.
The course is a lot of fun. It discusses cutting edge topics of modern applications, especially the ones dealing with retrieval/processing/presentation of data.

Course Review – Programming Mobile Applications for Android Handheld Systems: Part 1 (Adam Porter, UMD)

Here is my review of Mar-May 2015 incarnation on Coursera of Programming Mobile Applications for Android Handheld Systems: Part 1, which is the first course in
Mobile Cloud Computing with Android Specialization. It is ranked 4 out of 5 (good), while I passed with 100% grade.

Technologies: smartphones are taking over the world and most of them run Android. This course teaches Android UI + some backend + some inner workings of the operating system. Programming assignments involve completing Java code, which strongly enforces the learnt concepts. Students are asked to build a fully functional app from scratch for a final project, which brings them up to speed with creating own apps. Course apps are implemented in Eclipse.

Material: The course is aimed at beginners and includes structure of Android platform, main services, structure and inner working of Android applications. The topics include activities, fragments, intents, permissions, and UI classes. Lectures are very applied, mostly consisting of in-depth discussions of working apps and their source code.

Instructor/lectures: Adam Porter is a professor at UMD with decades of experience teaching CS. He is very enthusiastic about the subject, has great articulation and gesticulation. His lectures are extremely clear and precise. However, a huge number of in-lecture quizzes is often counterproductive for learning.