B-Pro
Compendium for Spiral Bilingual Programming

Syllabus

The detailed syllabus used for this course is shown below. Different parts of the syllabus can be viewed by clicking on the appropriate tabs.

Tentative Schedule:
Below is a tentative list of topics for this course. I will suitably pace the course as the semester progresses:
  1. Week 1: Introduction
    1. Introduction to class room environment and policies.
    2. Basics of Operating Systems
    3. Introduction to Linux environment.

  2. Week 2: Programming under Linux
    1. Review of C/C++
    2. Programming and debugging under Linux

  3. Week 3: Processes
    1. Concurrency and processes
    2. Process life cycles and hierarchies
    3. Creating processes in Linux

  4. Week 4: Inter-Process Communication (IPC)
    1. Process execution
    2. Using pipes for IPC

  5. Week 5: IPC (Contd.) & Scheduling
    1. Using shared memory for IPC
    2. CPU Scheduling

  6. Week 6: Process Synchronization
    1. Synchronization issues
    2. Critical sections
    3. Semaphores
    4. Exam 1 (Thursday, September 25)

  7. Week 7: Deadlocks
    1. Deadlock Characterization
    2. Deadlock Prevention
    3. Deadlock avoidance
    4. Deadlock detection and recovery

  8. Week 8: Threads
    1. Multi-threading models and pthreads standard
    2. Mutexes

  9. Week 9: Threads (Contd.)
    1. Synchronizing concurrent threads
    2. Atomic operations

  10. Week 10: Threads (Contd.) and Memory Management
    1. Paging
    2. Segmentation
    3. Virtual memory

  11. Week 11: Memory Management (Contd.)
    1. Page Replacement
    2. Thrashing

  12. Week 12: File-System Interface
    1. File Concept
    2. File sharing and Protection
    3. Exam 2 (Thursday November 8)

  13. Week 13: Scripting
    1. Introduction to bash shell scripts
    2. Introduction to Windows batch scripts

  14. Week 14: Scripting (Contd.)
    1. Windows batch scripts (Contd.)
    2. No class on Thursday & Friday (Thanksgiving)

  15. Week 15: Distributed Systems
    1. Distributed System Structures
    2. Distributed File Systems
    3. Real-Time Systems
    4. Introduction to cluster computing

  16. Week 16: Security
    1. System and Network Threats
    2. Implementing Security Defenses
    3. Review