Intensive Programming in Linux

This comprehensive program is designed to provide students with a strong foundation in programming concepts and practical skills within the Linux environment.

Instructor: Prof. Mohit Dale

Term: Spring

Course Overview

  • Have a solid understanding of the Linux command line interface + Bash scripting and be able to navigate, manipulate files, and execute commands efficiently.
  • Be proficient in using Regular Expressions for pattern matching and text processing in Linux.
  • Debug C programs effectively, employing various debugging techniques to identify and fix issues in your code.
  • Understand the binary representation of data and be able to perform bitwise operations.
  • Learn radix-sort, a powerful sorting algorithm.
  • C pointers and dynamic multi-dimensional arrays, essential for managing memory and manipulating complex data structures.
  • Explore self-referential structures and linked lists, fundamental concepts in data structures and algorithms, and gain the ability to implement them in C.
  • Learn A* search, a widely used algorithm for pathfinding.
  • Develop proficiency in Linux file operations and directory operations, allowing you to create, modify, and manage files and directories programmatically.
  • Learn how to write programs with multiple threads, enabling you to leverage parallelism and concurrency in your applications.
  • Gain insight into parallel computing with MPI (Message Passing Interface).
  • Explore web scraping, learning how to extract data from websites programmatically.

Textbooks

  • “The C Programming Language” by Brian W. Kernighan and Dennis M. Ritchie

Schedule

Week Date Topic Materials
1 Introduction to Linux Environment (CLI)
2 Introduction to Bash Shell Scripting
3 Pattern Matching with Regular Expressions
4 Midterm Exam - 1
5 Multiple topics
  • Debugging in C (GDB Tutorial)
  • Binary representation of data
  • Bitwise operators
6 Multiple topics
  • Radix-sort
  • C Pointer variables and Memory Addresses
7 C Pointer variables (Pointer-to-Pointer) and (Dynamic) multidimensional arrays
8 Midterm Exam - 2
10 Multiple topics
  • Structures and Linked list
  • A* Search and State Space Search
11 Programs with multiple threads
12 Parallel computing with MPI
13 Web Scraping