CSC209 – Software Tools & Systems Programming

Project Summary
Software techniques in a Unix-style environment, using scripting languages and a machine-oriented programming language (typically C). What goes on in the operating system when programs are executed. Core topics: creating and using software tools, pipes and filters, file processing, shell programming, processes, system calls, signals, basic network programming

Technologies Used
In this course, we use Subversion for repository control. C is the programming language of choice for systems programming due to its low-level nature. Bash/Shell Scripting is used to provide interaction with batch files. Eclipse is the IDE of choice for C due to it being open-source and its wide adoption by UofT.

Responsibilites/Roles
This course focuses on several aspects of computer programming. Being able to fork different pipes, use different pipes for I/O, opening and closing sockets for exchanging of information, learning about system calls and different signal handlers and process threads.
My responsibilities therefore, was to gain an adept understanding of how all these concepts worked.

Project details
The last assignment of the course was to implement a low-level, functioning version of a basic chat server.
The chat server supported four basic commands:
L – to login as the user
S – to set your status
B – to broadcast a message
M – to PM another user

This project was designed for CSC209 and incorporated the use of sockets and pipes to create a chat-server limited to a basic four commands.
This project was designed for CSC209 and incorporated the use of sockets and pipes to create a chat-server limited to a basic four commands.


Source/repos
Github Repo