Data Structures: Arrays, Linked Lists, Stacks, Queues, Trees.; Algorithms: Sorting, Searching, Tree algorithms, Graph algorithms.; Operating System Concepts: Processes, Threads, Memory management.; Software Engineering: Practical introduction to the program lifecycle consisting of function specification, code design and testing.; Parallel Programming: Concurrency, Mutual Exclusion, Pthreads, MPI.; Case studies illustrating the concepts taught in the course.
Algorithms in C++, Robert Sedgewick, 3rd Edition.
Operating System Concepts, Abraham Silberschatz, Peter B.