Introduction to Programming in ML/Haskell/Scheme: Functional programming paradigm, evaluation, type and type checking, data types, higher order functions. Introduction to Programming in Prolog: Logic programming paradigm, unification and resolution, data structures in Prolog, cuts. Concurrent Programming: Threads, processes, synchronization monitors, concurrent objects, concurrent programming in Java/MPI/CILK.
1.R. Sethi and K.V. Vishwanatha, Programming Languages: Concepts and Constructs, 2nd Ed., Pearson Education, 2007
2.R. W. Sebesta,Concepts of Programming Languages, 8th Ed., Pearson Education, 2008.
1.J. D. Ullman, Elements of ML Programming, Prentice Hall-Gale, 1994
2.W. F. Clocksin and C. S. Mellish, Programming in Prolog, 5th Ed. , Springer, 2004
3.M. Herlihy and N.Shavit, Art Of Multiprocessor Programming, Elsevier, 2009
4.C. Hughes and T. Hughes, Parallel and Distributed Programming using C++, Addison-Wesley, 2008