To put theory into practice, the professors have designed eight assignments for this course (based on Java). These assignments cover the core concepts of the course. More importantly, they have also set up an Online Judge where you can submit your code and get instant feedback (note: the OJ is currently open only to users with educational email addresses).
These assignments are exceptionally well-crafted, featuring a clever, progressive structure. The entire learning path is like a well-designed “skill tree”:
- The Constant Propagation algorithm you implement in Assignment 2 becomes the foundation for Dead Code Detection in Assignment 3.
- Assignment 4 builds on this, challenging you with the more complex Interprocedural Constant Propagation, where you begin to analyze real-world method calls.
- Next, Assignments 5 and 6 guide you through implementing two different precisions of Pointer Analysis — one of the core challenges in the field.
- Finally, in Assignment 7, you will use the algorithm from Assignment 6 to improve the precision of your earlier constant propagation analysis.
rand_num_gen•1h ago
These assignments are exceptionally well-crafted, featuring a clever, progressive structure. The entire learning path is like a well-designed “skill tree”:
- The Constant Propagation algorithm you implement in Assignment 2 becomes the foundation for Dead Code Detection in Assignment 3.
- Assignment 4 builds on this, challenging you with the more complex Interprocedural Constant Propagation, where you begin to analyze real-world method calls.
- Next, Assignments 5 and 6 guide you through implementing two different precisions of Pointer Analysis — one of the core challenges in the field.
- Finally, in Assignment 7, you will use the algorithm from Assignment 6 to improve the precision of your earlier constant propagation analysis.