Notes and assignments:

- Midterm and final exams.
- Programming assignment 2: Parsing TSLANG.
- Assignment: Parsing #2.
- Assignment: Parsing #1.
- You can read about Operator Precedence Parsing here (not covered in this course).
- Programming assignment 1: Tokenizing TSLANG.
- TSLANG Introduction.
- TSIR (TSLANG IR) Introduction and TSVM (TSIR Virtual Machine).
- We Love Compilers!
- Course overview.

Resources:

- A. V. Aho, M. S. Lam, R. Sethi, J. D. Ullman, Compilers: Principles, Techniques, and Tools, 2nd Edition, Addison Wesley, 2007.
- K. D. Cooper, L. Torczon, Engineering a Compiler, 2nd Edition, Morgan Kaufmann, 2012.
- A. W. Appel, Modern Compiler Implementation in C, Cambridge University Press, 1998.

Notes and assignments:

- Midterm and final exams.
- Programming Assignments.
- Course overview.

Resources:

- A. Silberschatz, P. B. Galvin, G. Gagne, Operating System Concepts, 9th Edition, John Wiley & Sons, 2013.
- T. Anderson, M. Dahlin, Operating Systems: Principles and Practice, 2nd Edition, Recursive Books, 2012.
- R. Cox, F. Kaashoek, R. Morris, xv6: a simple, Unix-like teaching operating system, Draft available here.

Laboratory assignments: #1, #2, #3, #4, #5, #6, #7, #8, #9; Final exams.

Notes and assignments:

- Midterm and final exams.
- An implementation of Fenwick tree (Binary Index Tree); you can use it in PC08.
- The eighth Wednesday.
- New assignments are added to the assignments page.
- The seventh Wednesday.
- You can read about segment trees in section 10.3 of this book.
- Assignments.
- The sixth Wednesday.
- Answering RMQs in O(1) with O(n) preprocessing complexity: The LCA Problem Revisited.
- Simple games can be very complex! Check out "Winning Ways for Your Mathematical Plays" by E. R. Berlekamp, J. H. Conway, and R. K. Guy.
- Course overview.

Resources:

- Stanford CS 97SI and its resources.
- S. S. Skiena, M. A. Revilla, Programming Challenges, Springer, 2002.

Notes:

- Final exam grades.
- Presentations start at 1397/4/26 at 9:00.
- Midterm and final exams.
- Assignment #4 from Jájá: 2.10, 2.13, 2.40.
- Assignment #3 from Jájá: 2.8, 2.24, 2.28.
- Assignment #2 from Jájá: 2.2, 2.3, 2.6.
- Assignment #1 from Jájá: 1.4, 1.8, 1.17, and one of 1.9, 1.13, or 1.14.
- Suggestions for programming assignments and presentations.
- Course overview.

Resources:

- A. Grama, A. Gupta, G. Karypis, V. Kumar, Introduction to Parallel Computing, 2nd Edition, Pearson, 2003.
- J. Jájá, An Introduction to Parallel Algorithms, Addison-Wesley, 1992.
- D. Culler, J. P. Singh, A. Gupta, Parallel Computer Architecture: A Hardware/Software Approach, Morgan Kaufmann, 1998.