Learning Objective

  • Equip students with system tools that improve productivity.
  • Exposure to advanced programming constructs.
  • Equip students to work on cluster/remote-machines using command line (bash/csh).
  • Exposure on proper usage of hardware resources like CPU cores, memory in programs.

Learning Outcome

  • Familiarity to work on open source systems from source code compilation.
  • Familiarity to work on group projects with proper version control.
  • Parallel programming skills for multi-core CPU clusters.
  • Familiarity on how processes are mapped to machines.

Course contents

Linux basics, version control, coding styles, (4 hours)

Coding conventions, debugger, and build system such as Makefiles (8 hours)

Scripting: Python, Shell (Bash,Csh), Tcl (12 hours)

Processes,Linker, Loader, Memory Layout, Static and Dynamic Linking (12 hours)

Multi-Processing: Shared and distributed systems overview. Parallel Programming with Pthreads, OpenMP and MPI (16 hours)

Text Books

  1. Linux Command Line and Shell Scripting Bible. Author: Richard Blum. Publisher: Wiley Publishing. ISBN-10: 111898384X, ISBN-13: 978-1118983843
  2. Parallel Programming in C with MPI and Openmp, Author: Michael Quinn. Publisher: McGraw-Hill Education. ISBN-10: 0071232656, ISBN-13: 978-0071232654.

Reference Books

  1. The Unix Programming Environment, Authors: Brian W Kernighan and Rob Pike. Publisher: Pearson. ISBN-10: 9332550255, ISBN-13: 978-9332550254.
  2. An Introduction to Parallel Programming. Author: Peter Pacheco. Publisher: Morgan Kaufmann Publishers. ISBN-13: 978-0-12-374260-5

Metadata

Proposing Faculty: Dr. Unnikrishnan Department: Computer Science and Engineering Programme: B.Tech Proposing date: Approved date: Proposal type: Offerings: