The course covers principles of compiler design. It provides an overview of a compiler followed by an in-depth study of various phases and components of compilers, including lexical analysis, syntax analysis, semantic analysis, intermediate code generation, run time environment, machine code generation, and optimizations. The student will write different compiler components through intensive lab assignments and will be exposed to some advanced topics in compilers.
Distributed processing frameworks have emerged as a feasible and cost effective way of analyzing the increasing volume of data. This course provides an understanding of most popular distributed processing frameworks – Hadoop, Spark and Giraph. Example Applications will include Graph Analysis algorithms such as BFS, Page Rank, Finding Graph Patterns; Finding Similar Items, Mining Algorithms such as Clustering, Frequent Itemsets, Data Streams. Hands-on exercises will prepare those taking this course to be able to apply these frameworks in practice.