CS2013 Systems Programming

Offered during July-Nov 2025

Department of Computer Science and Engineering @ IIT Palakkad, Kerala, India

This is a webpage for the course CS2013 Systems Programming offered in July-Nov 2025 at the Department of Computer Science and Engineering at IIT Palakkad.

Administrative information

Course TAs

Roll no Name Contact hours
152402002 Anna Merry Cheriyan TBD
112504001 Chikkala Kiran Babu TBD
  Junior TA TBD

For email, add @iitpkd.ac.in to the roll numbers.

Schedule

# Day Topic Class materials
01 July 31 Overview; Using git; Basic shell scripting Summary 01 Readings 01 Practise 01
02 Aug 02 Advanced shell scripting; Version control git  
03 Aug 07 Basics of C programming; Pointers  
  Aug 14 Solving problems via C programming - I  
04 Aug 21 Solving problems via C programming - II  
05 Aug 28 Advanced C programming  
06 Sep 04 Functions; Calling conventions; Recursion  
07 Sep 11 Lab test 1 👩🏻‍💻💡 (Labs 01 – 05)  
08 Sep 18 User defined types and its use  
09 Sep 25 Debugging (gdb) and handling memory leaks (valgrind)  
  Oct 02 Holiday due to Gandhi Jayanti  
10 Oct 09 Coding across multiple files; Makefile  
11 Oct 16 Lab test 2 👩🏻‍💻💡 (Labs 06 – 09)  
12 Oct 23 Coding across multiple files; Testing  
13 Oct 30 Basics of C++ ; OOP ; Overloading  
14 Nov 06 Templates; STL in C++  
15 Nov 13 Multithreading in C; Profilers (gprof) / Buffer session  

Evaluation

Following is the tentative evaluation policy

Evaluation Item Weight Remarks
Continuous
Weekly labs 25% See the schedule
Weekly lab quiz 5% During the first 15 minutes of each session
Terminal

Lab test 1 15% Likely ~ Sep 11, 2025 (Thur)
Lab test 2 15% Likely ~ Oct 16, 2025 (Thur)
Lab end exam 40% Likely ~ Nov 15 - 17, 2025

All activities related to this course (classes, evaluations and exams) will happen in A01-109, first floor computer lab of the Saraswati academic building, Sahyadri Campus, IIT Palakkad.

About

The key objective of this course is to familiarise the students in fundamental and time tested tools that help in improving their productivity. A secondary objective is to gain a deeper understanding of computing principles, basics of programming, algorithms and basic data structures using C/C++. The understanding gained is meant to equip the students to handle subsequent courses in Data structures, Compilers, Operating systems and Networking.

Upon completing the course successfully, the students will be able to:

  1. Use command line tools in navigating and managing a linux machine - processes, file systems and related resources.

  2. Maintain a large code base using version control and using it along with development tools to build test cases as well as debug programs.

  3. Write shell scripts to automate repetitive tasks using common Unix commands and processing large text data using regular expressions.

  4. Build and debug C programs that uses systems libraries or system calls and making them performant.

References