Introduction
This page contains my documents related to computing. Most are from past lectures I have given or tutorials that I have created.
Distributed Computing
- A taxonomy of distributed systems
- Client-server communication
- Remote Procedure Calls
- Clock synchronization
- Assigning Lamport & vector timestamps
- Group communication
- Mutual exclusion and election algorithms
- Naming and binding
- Consensus
- Distributed Transactions
- Concurrency Control
- Distributed Deadlock
- Network Attached Storage
- Distributed File Systems
- Bigtable
- MapReduce
- Apache Spark
- Fault Tolerance
- Distributed Hash Tables (Distributed Lookup)
- Quality of Service
- Distributed shared memory
- Clusters
- Virtualization
- OpenID
- Process migration
Computer Security
- Intro to Cryptography
- Cryptography and secure communication
- Authentication protocols
- Secure communication protocols
- Firewalls
- Firewalls and Virtual Private Networks
- Steganography
- Sandboxing and signed software
C/UNIX Quick Programming HOWTOs
- Use getpid to get your process' ID
- Use getppid to get a parent process' ID
- Use fork to create processes
- Use exec to run another program
- Use fork and exec to create a new process and run a program
- Use wait to wait for a child to exit
- Use signal to be alerted that a child process terminated
- I/O redirection with the dup2
- Interprocess communication with the pipe
C Essential Programming HOWTOs
- C Programming Style
- Parsing command-line options with getopt.
- Using strtok to parse words (tokens) in a string.
- How to create and use a simple linked list