CS 3210 - UNIX System Programming - Project Ideas

Here's a list of example programs that you could clone / get ideas from. All of these programs should be installed on the gautama server for you to look at. Try them out by typing the boldface names at the command line. You can also view online documentation for these programs by typing man progname. Additional documentation can be found in the /usr/share/doc/progname directory.

The one project that no one is allowed to do is a UNIX shell, for two reasons: (1) the book walks you through how to make one, and (2) every UNIX programming class under the Sun makes you write a shell, I want this class to be a little different.

lftp - A nice little command-line ftp client.

nmap - The Network Mapper. A portscanner. Fun.

nethack - A fun little "storm the dungeon, kill some monsters, collect treasure" game. Warning: adictive.

angband - Another dungeon game, similar to nethack.

slrn - A newsreader.

mutt - An email program.

telnet - A remote login program.

mysql - A command-line database front-end to the MySQL database. Rather than cloning this program, you might instead create a text-based menu driven program that uses the database back-end. Examples of such a program might include an Address Book, CD collection, movie collection, checkbook, recipies, etc.

pico / nano / emacs / vim / jed / joe / ed - A text editor. If there's one thing UNIX has always been famous for, it's having an enormous buffet of text editors. You might as well write your own.

crafty / phalanx / gnuchess - A chess program. Alternatively, you might want to come up with a text-based front-end for these programs.

wget - A command-line network file retrieval program. Supports both HTTP and FTP.

lynx / w3m / links - A text-based web browser.

perl / python / tcl / awk - If there's one thing UNIX can never have enough of, it's odd little scripting languages. Writing one of your own would help you make use of the things you learned in your compiler class, too.

dict - A program that looks up the definitions of words by querrying a server on the Internet.

finger - A program that looks up user information over the 'Net.

mc - Midnight Commander. A file manager program.

epic - An IRC (Internet Relay Chat) program.

ispell / aspell - A spell-checking program.

junkbuster - An ad-blocking proxy daemon.

tetris-bsd - A text-based tetris game.

snipes - Everybody's played Snipes before, right?

nc - NetCat - The TCP/IP swiss army knife.

top - System process monitor.

pdmenu - A text-based, configurable menu program.

queso - Guess the operating system of a remote machine.

strace - Traces system calls and signals

talk - A chat program that allows two users to type messages to each other.

traceroute - Prints the route packets take to network host

whois - Client for the whois directory service