3 min read
ICshell

This is a custom shell written as an extension to the Imperial College Computing first-year C group project.1

ICshell supports:

  • Command execution with arguments from relative and absolute paths as well as from the PATH variable.
  • File redirections, including here-documents.
  • Pipes
  • Setting and expansion of environment variables, including the exit status $? and some other special variables.
  • Basic signal handling (SIGINT and SIGQUIT)

Reflecting on the project

As the member with the most experience in C, I assumed the role of group leader. This was a role that I was comfortable with and I’m happy with how I handled it. I directed my group mates to tasks they could work on, and reviewed their contributions, doing my best to explain their errors and show them the best practices (that I know, at least!).

However, I think that sometimes I may have been nitpicking during code reviews, which could have harmed my peers’ learning experience. Also, it may have led them to downplay the more important comments which were clouded by nitpicks. To avoid this, in the future I will try to incorporate automatic style reviews using linters, and let go of small quirks that do not present a problem to the code logic. I assume this would also speed up the review process.

This project was thoroughly enjoyable, and it has convinced me that I would actually enjoy being a software engineer. Sometimes, I got so absorbed in the project, that I put off eating lunch until far too late, or stayed up late working on the code. I should be more careful to balance work and life properly in order to avoid negatively affecting my health, or burning out. I think the fact that I can get so invested in my work, when I enjoy it, is overall a positive trait nonetheless.

Footnotes

  1. The main part of the project is to create an ARM emulator and assembler, but as the project is repeated every year, I will not publish the code that would be relevant to any future first-year students, in order to prevent plagiarism. If you would like to see this code, please contact me.