Skip to content

Exercises in the C programming language with an emphasis on systems.

Notifications You must be signed in to change notification settings

heracliteanflux/systems-programming

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Systems Programming in C

Exercises in the C programming language with an emphasis on systems.

Resources

  • [ H ][ W ] Berkeley Packet Filter (BPF)
  • [ H ][ W ] Clang
  • [ H ][ W ] GCC
  • [ H ][ W ] GDB
  • [ H ][ W ] Valgrind
  • [ H ] VirtualBox

freeCodeCamp

  • [ Y ] freeCodeCamp. (15 Aug 2018). "C Programming Tutorial for Beginners". YouTube.
  • [ Y ] freeCodeCamp. (23 Feb 2023). "Introduction to Linux – Full Course for Beginners". YouTube.

Texts

C

  • Amini, Kamran. (2019). Extreme C: Taking you to the limit in Concurrency, OOP, and the most advanced capabilities of C. Packt.
  • [ H ] Bryant, Randal E. & David R. O'Hallaron. (2015). Computer Systems: A Programmer's Perspective.
  • Gustedt, Jens. (2019). Modern C. Manning.
  • Hanson, David R. (1996). C Interfaces and Implementations: Techniques for Creating Reusable Software. Addison-Wesley Professional.
  • Harwani, B. M. (2020). Practical C Programming: Solutions for modern C developers to create efficient and well-structured programs. Packt.
  • Kernighan, Brian W. & Dennis M. Ritchie. (1988). C Programming Language. 2nd Ed. Pearson.
  • Klemens, Ben. (2014). 21st Century C: C Tips from the New School. 2nd Ed. O’Reilly.
  • Loudon, Kyle. (1999). Mastering Algorithms with C: Useful Techniques from Sorting to Encryption. O’Reilly.
  • Loy, Marc. (2021). Smaller C: Learn Code for Small Machines. O'Reilly.
  • Oualline, Stephen. (2022). Bare Metal C: Embedded Programming for the Real World. No Starch Press.
  • Preschern, Christopher. (2022). Fluent C: Principles, Practices, and Patters. O'Reilly.
  • Reese, Richard M. (2013). Understanding and Using C Pointers: Core Techniques for Memory Management. O’Reilly.
  • Sandler, Nora. (2023). Writing a C Compiler: Build a Real Programming Language from Scratch. No Starch Press.
  • Seacord, Robert C. (2020). Effective C: An Introduction to Professional C Programming. No Starch Press.
  • Szuhay, Jeff. (2020). Learn C Programming: A beginner’s guide to learning C programming the easy and disciplined way. Packt.
  • Van Der Linden, Peter. (1994). Expert C Programming: Deep C Secrets. Pearson.
  • Van Winkle, Lewis. (2019). Hands-On Network Programming with C: Learn socket programming in C and write secure and optimized network code. Packt.

Linux

  • [ H ][ G ] Barrett, Daniel J. (2022). Efficient Linux at the Command Line: Boost Your Command-Line Skills. O'Reilly.
  • [ H ][ G ] Hausenblas, Michael. (2022). Learning Modern Linux: A Handbook for the Cloud Native Practitioner. O'Reilly.
  • [ H ][ G ] Hess, Kenneth. (2023). Practical Linux System Administration: A Guide to Installation, Configuration, and Management. O'Reilly.
  • [ H ] Kerrisk, Michael. (2010). The Linux Programming Interface: A Linux and UNIX System Programming Handbook. No Starch Press.
  • Nemeth et al. (2010). Unix and Linux System Administration Handbook. 4th Ed. Pearson.
  • Nikkel, Bruce. (2021). Practical Linux Forensics: A Guide for Digital Investigators. No Starch Press.
  • OccupyTheWeb. (2018). Linux Basics for Hackers: Getting Started with Networking, Scripting, and Security in Kali. No Starch Press.
  • Schroder, Carla. (2021). Linux Cookbook: Essential Skills for Linux Users and System & Network Administrators. O'Reilly.
  • Shotts, William E. (2019). The Linux Command Line: A Complete Introduction. No Starch Press.
  • Ward, Brian. (2021). How Linux Works: What Every Superuser Should Know. No Starch Press.

Unix

  • [ H ][ W ] Stevens, W. Richard & Stephen A. Rago. (2013). Advanced Programming in the UNIX Environment. Addison-Wesley Professional.
  • Stevens, W. Richard; Bill Fenner; & Andrew M. Rudoff. (2003). The Sockets Networking API: UNIX Network Programming Vol. I. 3rd Ed. Addison-Wesley Professional.

Bash

  • [ G ] Albing, Carl & JP Vossen. (2022). Bash Idioms: Write Powerful, Flexible, Readable Shell Scripts. O'Reilly.

Systems

  • [ H ] Arpaci-Dusseau, Remzi H. & Andrea C. Arpaci-Dusseau. Operating Systems: Three Easy Pieces.
  • Gregg, Brendan. (2020). Systems Performance: Enterprise and the Cloud. 2nd Ed. Pearson.
  • Matthews, Suzanne J.; Tia Newhall, & Kevin C. Webb. (2022). Dive Into Systems: A Gentle Introduction to Computer Systems. No Starch Press.

Networks

  • Chou, Eric. (2020). Mastering Python Networking. 3rd Ed. Packt.
  • [ G ][ G ] Collins, Michael. (2017). Network Security Through Data Analysis: From Data to Action. 2nd Ed. O'Reilly.
  • Fall, Kevin R. & W. Richard Stevens. (2011). TCP/IP Illustrated Vol I: The Protocols. 2nd Ed. Addison-Wesley Professional.
  • Fettig, Abe & Jessica McKellar. (2013). Twisted Network Programming Essentials: Event-Driven Network Programming with Python. 2nd Ed. O'Reilly.
  • Gilman, Evan & Doug Barth. (2017). Zero Trust Networks: Building Secure Systems in Untrusted Networks. O'Reilly.
  • Keshav, Srinivasan. (2012). Mathematical Foundations of Computer Networking. Addison-Wesley Professional.
  • Kozierok, Charles M. (2005). TCP/IP Guide: A Comprehensive, Illustrated Internet Protocols Reference. No Starch Press.
  • [ H ] Kurose, James & Keith Ross. (2016). Computer Networking: A Top-Down Approach. 8th Ed. Pearson.
  • Liu, Cricket & Paul Albitz. DNS and Bind: Help for System Administrators. 5th Ed. O'Reilly.
  • Nadeau, Thomas D. & Ken Gray. (2013). SDN Software Defined Networks: An Authoritative Review of Network Programmability Technologies. O'Reilly.
  • [ G ] Oswalt et al. (2023). Network Programmability and Automation: Skills for the Next-Generation Network Engineer. 2nd Ed. O'Reilly.
  • [ H ][ D ][ G ] Peterson, Larry & Bruce Davie. (2021). Computer Networks: A Systems Approach. The Morgan Kaufmann Series in Networking.
  • [ H ][ D ][ G ] Peterson, Larry et al. Software-Defined Networks: A Systems Approach.
  • Sanders, Chris. (2017). Practical Packet Analysis: Using Wireshark to Solve Real-World Network Problems. 3rd Ed. No Starch Press.
  • Tanenbaum, Andrew S.; Nick Feamster; & David Wehterall. (2021). Computer Networks. 6th Ed. Pearson.
  • White, Russ & Ethan Banks. (2017). Computer Networking Problems and Solutions: An Innovative Approach to Building Resilient, Modern Networks. Pearson.

Terms

  • ACK Acknowledgement Wiki
  • Checksum Wiki
  • Ethernet Flow Control Wiki
  • Header Wiki
  • NAK Negative Acknowledgement Wiki
  • Payload Wiki

AXT Alien Crosstalk
ADC Analog-to-Digital Converter Wiki
Bandwidth
BER Bit Error Rate
Bluetooth 5.0, 5.1, 5.2
BLE Bluetooth Low Energy
Bonjour
BGP Border Gateway Protocol
CMP Communications Multipurpose Plenum
CMR Communications Multipurpose Riser
Crosstalk
CRC Cyclic Redundancy Check
DAC Digital-to-Analog Converter Wiki
DNS Domain Name System
DHCP Dynamic Host Configuration Protocol
DNS Sinkhole Wiki
EMI Electromagnetic Interference
ELFEXT Equal Level FEXT
Ethernet
FEXT Far-End Crosstalk
FCS Frame Check Sequence
Gain Wiki
Higher-Order Modulation (1024-QAM)
Hosts File Wiki
IF Intermediate Frequency Wiki
IP Internet Protocol
ISP Internet Service Provider
LAN Local Area Network (e.g., home or small business)
LTE Long Term Evolution
MCS Modulation and Coding Scheme
MU-MIMO Multi-User Multi-Input Multi-Output
mDNS Multicast DNS
NEXT Near-End Crosstalk [dB per foot]
NFC Near Field Communication
NAS Network-Attached Storage Synology Wiki
Nyquist Frequency Wiki
Nyquist-Shannon Sampling Theorem Wiki
OFDMA Orthogonal Frequency-Division Multiple Access
PCI Peripheral Component Interconnect Wiki
PAN Personal Area Network (e.g., Mobile Hotspot)
Personal Cloud Wiki
PVC Polyvinyl Chloride
PSNEXT Power Sum NEXT
QoS Quality of Service
RF Radio Frequency
RSSI Received Signal Strength Indicator Wiki
Receiver
RFID
RJ Registered Jack
RPS Redundant Power Supply
Sampling Wiki
Shannon-Hartley Theorem Wiki
STP Shielded Twisted Pair
SNR Signal-to-Noise Ratio
SFP Small Form-Factor Pluggable Wiki
SDN Software-Defined Networking
SAN Storage-Area Network Wiki
TCP/IP (IP Suite)
Throughput
Transceiver
TCP Transmission Control Protocol
Transmitter
TWT Target Wake Time
Ultra Wideband
UPS Uninterruptible Power Supply Wiki
UPnP Universal Plug and Play
USB Universal Serial Bus Wiki
UDP User Datagram Protocol
UTP Unshielded Twisted Pair
VLAN Virtual LAN
WAN Wide Area Network (e.g., the Internet)
WAN Failover
WiFi Wireless Fidelity
WiFi 6 (802.11ax)
WiFi 6E
WPA WiFi Protected Access
WSN Wireless Sensor Network Wiki
Z-Wave
Zero-Configuration Networking
Zigbee

About

Exercises in the C programming language with an emphasis on systems.

Topics

Resources

Stars

Watchers

Forks