“tessenger” is my unsw networks assignment: a multi-client chat server in raw c — server.c (583 lines) and client.c (253), no libraries beyond pthreads and the bsd socket api (Kernighan, Brian W. and Ritchie, Dennis M., 1988). it does authentication with timed lockout, private and group messaging, presence, audit logs, and a udp side channel for peer-to-peer file transfer. this page walks the architecture, weaves in the socket theory the assignment was designed to teach, and then does something the assignment never required: an honest concurrency audit of my own submission, with the bugs demonstrated live.
𐃏
Networks
The content here-in has been influenced by Mung Chiang’s Networked Life and Introduction to Algorithms by CLRS.
Here are my distillations of Matt’s seminal blog post: What CS Majors Ought to Know.
I have removed the imperative matter, and left the declarative material; marking off that which I have completed.
What should every student know to get a good job?
What should every student know to maintain lifelong employment?
What should every student know to enter graduate school?
What should every student know to benefit society?
Portfolio versus resume
- Every computer science major should build a portfolio.
- Contributions to open source should be linked and documented.
Technical communication
Specific recommendations
- Master a presentation tool.
Recommended reading
Writing for Computer Science by Zobel.
Backlinks (2)
1. Wiki /wiki/
Knowledge is a paradox. The more one understand, the more one realises the vastness of his ignorance.