Project 0 Extra Credit

Maybe you already know C and have used Linux. In that case, you might have sailed through the regular Project 0 warmup. That's ok, but why let this time go to waste? There are many ways you can give yourself a leg up in this class and further improve your skill set. I'll sweeten the deal by making it worth up to an extra 2% (10 pts) of your operating systems grade if you select an extra credit module from this page.

To get the extra credit, pick a topic below that you want to learn more about. Use Google or a reference I give you below to learn more about it. (Note -- sorry, you can only get the extra credit once, even if you do multiple projects.)

  1. Learn about bash - Use this website or another resource that you tell me about to learn the basics of bash scripting. Create a bash script that does the same thing as the Project 0 C program (just in bash instead of C). Zip up the bash script and a readme.txt file telling me how to run your program, the resources you used, and any challenges you experienced.

  2. Learn a bit about vim or emacs - It is useful to be able to ssh directly into a Linux server and make edits. Sure nano is always there for you, but nano can be limited and slow. Find a good reference for vim or emacs on Google, play around, and tell me what you've picked up. Specifically, create a readme.txt (in vim or emacs!) that tells me the resources you used, what you've learned, and what you thought was extra helpful. Try to talk about more than just one or two things if you'd like to earn all the points. (What I'm looking for is that you've learned enough to actually use the editor well in class.)

  3. Set up git for yourself - Ever wish you could go back in time to a previous version of your program? Now you can using the most popular versioning sytem on the block. Using Google (and perhaps this website as a starting point, use the git command on the student server to

    • Initialize a repository

    • Add (stage) changes and commit them

    • Use the log to see your changes

    • And revert back to an old change

    Create a readme.txt document telling me how to do all these things, and take a screenshot (or multiple screenshots) of you actually doing these things on the student server. Finally, zip these up.

    Note - Publicly accessible Internet git accounts (like the free public GitHub account) cannot be used for class projects. (It makes it too easy for others to find your code.) However, you can use a free private BitBucket or GitHub account for group projects to allow both you and your partner to make commits to a single repository. You should the command line on the student server (or your own laptop) to connect to clone, push, and pull commits from/to the centralized repo.

  4. Learn more C - Go further on the lab website and complete 5 more advanced C modules. List the modules that you've completed, and take screencasts of your successful programs to convince me you've completed the modules. Compile them in a document and submit them to me.

  5. Propose something to me - Tell me what you want to do and how you want it to be evaluated. We'll have a discussion. It needs to relate mostly to the topic of operating systems.