Programming Assignment: Encryption Task
Programming Assignment: Encryption Task
The encryption algorithm requires students to implement an encryptor and decryptor process. The encryptor process is initiated with a key and filename, and it reads the file to perform encryption using the following steps: (1) The letter at the position of the key or a multiple of the key is interchanged with the next letter, ignoring spaces and special characters. If the letter is the last one, no interchange is performed. (2) Letters in words not changed in step 1 are mirrored (A with Z, B with Y, etc.). The encrypted text is output to a standard and saved as encFilename. Transfer of the encrypted file to the decryptor process is done via IPC mechanism .
The decryptor process in the programming assignment receives data via Inter-Process Communication (IPC) from the encryptor process. Its purpose is to take this input of encrypted data, decrypt it to obtain the original content, and output both the received encrypted and decrypted data. Specifically, the decryptor uses the key to reverse the encryption procedure applied by the encryptor and outputs the decrypted data as decFilename .
The evaluation criteria ensure a comprehensive assessment by focusing on several critical aspects: (1) Design Approach - assessing the student's ability to make assumptions and meaningful considerations; (2) Implementation - includes functional completeness, in-code documentation, and optimization skills; (3) Testing and Debugging - evaluating the student's capability to create unit tests, approach debugging effectively, and document results comprehensively. This multi-faceted evaluation captures the depth and breadth of the student's software development and problem-solving abilities .
A mirrored letter encryption scheme simplifies cryptographic concepts by providing a straightforward example of substitution cipher—where each letter is replaced by its counterpart from the opposite end of the alphabet (A with Z, B with Y, etc.). This tangible and visual method allows students to understand how encryption obscures text, making it accessible to beginners who can easily grasp the basic principle of altering data to secure it against unauthorized access .
Students might face challenges related to understanding the encryption logic, implementing robust inter-process communication, and ensuring the functionality of their algorithm. To address these, they can utilize the open book nature of the assignment to reference books and online resources. The guidelines suggest that students prepare individually and have distinct implementations, providing ample room to solve problems and learn from any mistakes by cross-referencing and consulting external materials .
In-code documentation is a crucial part of the evaluation as it provides transparency and understanding of the code's functionality. It is important because it allows other developers (or evaluators) to follow the logic and reasoning behind the code easily. Good documentation articulates the purpose of code sections, explains complex logic, and illustrates how components interconnect, enhancing both collaborative efforts and long-term maintainability of the software .
The open book nature of the assignment is advantageous because it allows students to leverage external resources to bolster their understanding and explore examples or theories that reinforce their knowledge. However, it can also be challenging as it requires the ability to critically assess and synthesize information from various sources quickly and efficiently. Students must balance thorough research without becoming overwhelmed or relying too heavily on external aids, maintaining original thought and individual implementation .
Students should employ strategic approaches towards debugging as outlined in the evaluation criteria. This involves developing unit tests to isolate and test specific portions of code for defects, systematically examining and fixing issues revealed during program testing, and thoroughly documenting any issues encountered and their solutions. This comprehensive approach helps ensure that bugs do not propagate unnoticed and that the integrity of the encryption and decryption processes is maintained .
The primary objectives of the programming assignment are to provide students with an opportunity to demonstrate their understanding of software development skills that extend beyond Multiple Choice Questions. It specifically focuses on their ability to design an encryption algorithm for secure file transfer, evaluate programming skills through implementation, and testing and debugging of their solution. This holistic approach ensures that students are evaluated on their design approach, functional completeness, in-code documentation, and optimization, as well as how they test and debug their code .
Requiring individual implementation for the programming assignment significantly impacts learning outcomes by encouraging independent problem-solving and critical thinking. This requirement ensures that each student actively engages with the material and internalizes key concepts, fostering deeper understanding and ownership of their work. It also promotes fairness, as it prevents plagiarism and ensures that students are genuinely assessed on their own capabilities and grasp of software development principles .