I think one of the most important parts about studying computer science or software engineering at university is that it gives you the ability to slowly build a portfolio of small pieces of code which can demonstrate what you are capable of. I have embarked on a project over the last month to collate all of my significant university programming assignments. This is a general snapshot of what you learn in a CS degree these. If you are a student – don’t plagiarise my code for your assignments, you’ll get caught and lose your marks. It also violates the license on the code (GPL v2.0) where you must reference the author. If you’re a lecturer – I hope this doesn’t bother you, you should really be changing the assignments every semester anyway to allow for things like this :).
The projects are listed below. I haven’t included all projects as many were fairly trivial and not all computing units assess with programming assignments (much to my annoyance). The code has not been updated since it was first written, so please take note that generally my style of coding has evolved since first learning 4 years ago:
First Year
- Data Structures and Analysis: A choose your own adventure program written in Java. Reads ‘pages’ from text files using a .csv directory
- Unix and C Programming: A ‘turtle’ terminal drawing program, written in C. Reads instructions from a text file and uses it to draw pictures in the terminal using ASCII characters.
Second Year
- Computer Graphics: A program that renders a scene using OpenGL and plays an animation written in C using GLUT.
- Fundamental Concepts of Cryptography:
- An implementation of Simple-DES (S-DES) in C. S-DES is a simplified version of DES encryption used for learning about DES-style encryption methods.
- An implementation of the affine cipher in C.
- An implementation of basic RSA encryption in C. This is in no way a secure version of RSA and should not be used for anything except learning purposes!
- Operating Systems: A fake (simulated) CPU/IO scheduler using C and pthreads.
- Computer Communications: A stop-and-wait protocol simulator written in C using cnet.
Third Year
- Artificial Machine Intelligence: A search program that implements Branch and Bound (with Dynamic Programming), A* and Stochastic Hill Local search written in C.
- Design and Analysis of Algorithms: A GUI program which compresses and decompresses data using Huffman coding written in C#.
- Software Components: A multi-tiered, distributed airport traffic control simulator in C# that utilises .NET WCF.