CS 242 Fall 2011 : Notebook

This page last changed on Aug 08, 2011 by conadmin.

Week 1 – Designing and building a library for encryption

For this week of the assignment, students will have to design and build a library that supports encryption of data. Their library should have the ability to encrypt and decrypt data using each of the encryption ciphers that are given in the assignment with an api similar to:

each Cipher would have whatever is necessary for it to work properly, this would be a good place for inheritance.

The API here is written such that a user writes data into a magical buffer, which can then be encrypted or decrypted using the proper functions. Once it has been encrypted or decrypted, it can be read back out from the buffer using the read functions. The reasoning for an api like this is that it makes it harder for students to use existing code out on the internet to complete the assignment, since this is an unusual design for an encryption library, it would not be easy to adapt existing code to it.

I was thinking that we should expect the students to be able to code up the following ciphers:

  • DES – we will give them the sboxes, the algorithm itself is not hard, but takes patience to get right, especially since DES operates on 64 bit blocks, some mojo will need to be done to ensure that the data in the buffer is in 64 bit blocks
  • Triple DES – an easy extension once DES is complete

Week 2 – Building a notebook application

For this week, students will have to build a GUI application that allows the user to take notes, something like notepad would suffice. Minimally, the application should be able to:

  • create new notes
  • save written notes
  • open notes
  • support copy/cut/paste

Week 3 – Bringing together week 1 and week 2

For this week, students will have to enhance their notebook application to support encryption and decryption of notes. Students should have something like a “save note encrypted” and “open encrypted note” options in their programs. The application should prompt the user for the type of encryption to use as well as any parameters necessary for the operation. In addition, students should implement 1-2 of the following extra features (maybe more for extra credit?):

  • Allowing changing of font face, size, style, etc
  • Printing support
  • Syntax highlighting of code (if enabled by user)
  • inserting images into notes
  • adjust styles like text alignment
  • allow for insertion of bulleted and numbered lists
  • etc…
Document generated by Confluence on Feb 22, 2012 18:09

  1. No comments yet.

  1. No trackbacks yet.