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 2 – 5.30 PM @ Thursdays (A01-109)
112313001 Arishmita Biswas 2 – 5.30 PM @ Thursdays (A01-109)
  Praseed (CSE Staff) 3 – 5.30 PM @ Thursdays (A01-109)

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 07 Git setup; Shell+Git exercises Summary 02 Readings 02 Practise 02
03 Aug 14 Advanced shell scripting; Pipes; Coreutils Summary 03 Readings 03 Practise 03
04 Aug 21 Git branching; Basics of C programming Summary 04 Readings 04 Practise 04
05 Aug 28 Solving problems via C programming Summary 05 Readings 05 Practise 05
06 Sep 04 Arrays, Pointers and Strings Summary 06 Readings 06 Practise 06
  Sep 11 Mock test 1 + Buffer Lab session (for pending exercises)  
07 Sep 15 Lab test 1 (R1 slot) 👩🏻‍💻💡 (Labs 01 – 06)  
08 Sep 18 Functions, Recursion, User defined types, Dynamic memory allocation Summary 08 Readings 08 Practise 08
09 Sep 25 Files; Linked lists; Debugging (gdb); Handling memory leaks (valgrind) Summary 09 Readings 09 Practise 09
  Oct 02 Holiday due to Gandhi Jayanti  
10 Oct 10 Coding across multiple files; make and Makefile; Unit testing Summary 10 Readings 10 Practise 10
  Oct 16 Buffer Lab session (for pending exercises)  
11 Oct 23 Assembly and Disassembly; Bomb lab Summary 11 Readings 11 Practise 11
12 Oct 27 Lab test 2 (R1 slot) 👩🏻‍💻💡 (Labs 05 – 10)  
13 Oct 30 More on Makefiles, Solving Test 1 questions Same as Lab 10
14 Nov 06 C Structure packing, Makefiles via prerequisites, Solving Test 2 questions Same as Lab 10
  Nov 13 Buffer Lab session (for pending exercises)  
  Nov 25 End Semester Examination (Labs 01 – 14)  
Learning C++ !

In this offering of the course, we will stick only to the C language.

However, if you are curious and want to learn C++, here is an online book (or a "playbook", as it is called) that teaches you C++ by Mark Mahoney. The website teaches it via interactive slides and live code which can be played back ! You can also create an account and track your progress if needed.

While completing the first 10 chapters of the book, you can parallely work through this (challenging) series on Ray tracing by Peter Shirley, Trevor David Black and Steve Hollasch to build your understanding further by writing some really non-trivial C++ programs !

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% Sep 15, 2025 (Monday), R1 slot (5-6 PM)
Lab test 2 15% Oct 27, 2025 (Monday), R1 slot (5-6 PM)
Lab end exam 40% Nov 25, 2025 (Tuesday), 2.00 PM - 5.30 PM

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