Design of Algorithms
Writing assignments and notes:
- Assignment #1 (deadline 1394/7/15): review and warm-up.
- Assignment #2 (deadline 1394/8/6): designing algorithms
by induction and divide and conquer (hints included).
- Assignment #3 (deadline 1394/8/20):
dynamic programming and greedy algorithms (hints included).
- Midterm preparation.
- Assignment #4 (deadline 1394/9/2):
graph algorithms and network flow (hints included).
- Covered topics.
- Midterm and final exams.
Programming assignments:
- Assignment #1
(only the second problem; deadline 1394/9/2);
Hint: Divide the numbers into two sets based on the remainder of
their division by two.
- Assignment #2
(only the second problem; deadline 1394/9/25);
note that the first example is wrong.
Hint: Sort the squares based on their resistance increasingly.
- Hints for programming assignments.
Main text:
- T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein,
Introduction to Algorithms, 3rd edition, MIT Press, 2009.
Supplementary resources:
- J. Kleinberg, E. Tardos,
Algorithm Design, Addison Wesley, 2005.
- U. Manber,
Introduction to Algorithms: A Creative Approach,
Addison Wesley, 1989.
Compilers
Writing assignments:
Programming assignments:
- TSLNCC: introduces
"The Simple Language of NIT Compiler Course".
- Statement: describes methods of
performing the assignment and the grading policy.
- Mapping
high-level languages LLVM.
- Some of the tests, using which the assignments are evaluated.
Main text:
- A.V. Aho, M.S. Lam, R. Sethi, J.D. Ullman,
Compilers: Principles, Techniques, and Tools, 2nd edition,
Addison Wesley, 2007.
Supplementary resources:
- A.W. Appel, Modern Compiler Implementation in C,
Cambridge University Press, 1998.
Operating Systems
Writing assignments and notes:
- Assignment #1 (deadline 1394/8/17):
exercises 3.8, 3.9, 3.12, 3.14, 3.15, 4.7, 4.8, 4.9, 4.11, 4.17 from the main text.
- Assignment #2 (deadline 1394/8/24):
exercises 5.2, 5.7, 5.9, 5.15, 5.19, 5.20, 5.29, 5.31, 5.37, 5.38 from the main text.
- Assignment #3 (deadline 1394/9/7):
exercises 6.10, 6.13, 6.15, 6.16, 6.23, 6.24, 7.16, 7.18, 7.22, 7.23 from the main text.
- Midterm preparation.
- Assignment #4 (deadline 1394/10/8):
exercises 8.13, 8.20, 8.23, 8.28, 9.3, 9.19, 9.21,
10.2, 10.8, 10.10, 10.11 from the main text.
- Comments about RAID levels.
- Midterm (solutions) and final exams.
Laboratory: assignments
#1,
#2,
#3,
#4,
#5,
#6 (ex6.c),
#7,
#8 (ex8.c);
final exam #1, #2, #3,
samples; project suggestions (taskpool.h).
Main text:
- A. Silberschatz, P.B. Galvin, G. Gagne,
Operating System Concepts, 9th edition,
John Wiley & Sons, 2013.
Supplementary resources:
- A.S. Tanenbaum, H. Bos,
Modern Operating Systems, 4th edition,
Pearson Prentice Hall, 2015.
- R. Cox, F. Kaashoek, R. Morris,
XV6: a simple, Unix-like teaching operating system,
Draft available here.