Introduction to Unix and Linux
Overview
In this first week, we establish the foundation for system programming. Students will explore what an operating system is, how kernels are structured, and how Linux fits into the broader family of operating systems. We also introduce GNU/Linux distributions, the concept of free and open-source software, and the shell as the main interface to the system.
By the end of this week, students will have a working Linux environment, a basic understanding of the command line, and an introduction to version control with Git and GitHub.
Key Concepts
- What is an operating system? Roles and responsibilities
- Kernel vs. user space; system calls as the bridge
- Kernel architectures: monolithic, microkernel, hybrid
- Unix lineage and Linux history (vs. Windows, macOS, BSD)
- GNU/Linux ecosystem: distributions and package managers
- The shell: prompt, commands, redirection, and pipelines
Practice / Lab
- Set up a Virtual Machine: Install Ubuntu (or another Linux distribution) on VirtualBox/VMware.
- Command Line Basics:
- Run and understand
ls,cd,pwd,man,echo,cat - Try redirection (
>,>>) and pipelines (|) - Install software with
aptor your distro’s package manager
- Run and understand
- Development Environment Setup: Install and test
gcc,g++,make, andgit. Configure an editor (e.g., VS Code or Vim). - Git & GitHub Essentials: Initialize a local repo, make a commit, and push to GitHub.
- Exploring Distributions: Find your kernel version (
uname -a) and distro info (lsb_release -a). Compare Ubuntu, Fedora, Arch, Debian.
Homework
- Complete task: ENV-1: Setup GNU/Linux Environment
References & Resources
Required
Optional / Enrichment
- What is Kernel (Video)
- Microkernel vs Monolithic Kernel (Video)
- Linux Distribution Timeline (Diagram)
- Эволюция вычислительных систем (RUS)
Tools
- Download VirtualBox
- Download Ubuntu
- Install Ubuntu in VirtualBox (Video)
- Git and GitHub Basics (Video)
Quiz (Self-check)
- What is the difference between the kernel and user space?
- Name two major differences between Linux and Windows.
- Which shell command is used to find your current directory?
- What is the purpose of a package manager in Linux?