Computer Systems and Professional Practice
Coursework Assignment 2024-25
Assignment
Technical professionals invariably work in teams to produce complex deliverables. For this assignment you will work in an assigned team to complete a series of technical challenges.
Deadline and Submission
The coursework carries 20% module credit.
You should submit a joint PDF report of no more than eight pages and a set of C source files. Every student in the team must submit an identical copy of the joint report and C source files.
The first page of your report must be a completed contribution form. The contribution form can be found on the module Canvas page and does not count towards the page limit.
The submission deadline is 5pm on Thursday of Week 10, Term 1. Submission is via Canvas.
Marking Criteria
All submissions will be evaluated with regard to correctness, documented understanding, presentation, and research quality.
Hints and Advice
The objective of the coursework is to assess your understanding and application. It is in your interest to answer each question as fully as possible. If you aren’t able to answer a question completely, it is a good idea to do as much as you can.
Credit will be awarded for correctness and understanding, as well as presentation and research. As such, you should try to be as thorough as possible in your methods, explanations and documentation.
Teamwork and coordination will be required to ensure everyone is afforded the opportunity to contribute and the submission is as strong as it can be.
1. Consider an active-low 8-to-3 encoder.
(a) Provide the truth table for the encoder. Use appropriate labels for all inputs and outputs.
(b) Express the function of the encoder using Boolean expressions.
(c) Design a logic circuit to implement the encoder using only NOR gates. You should explain how you arrived at your design and how it can be tested. [25%]
2. We study shift registers in the context of sequential logic circuits. A bidirectional shift register is one in which data can be shifted left or right on the basis of a control input.
(a) Design a 4-bit bidirectional shift register. Your design should be serial-in serial-out. Use appropriate labels for all inputs and outputs.
(b) Write an explanation of your design, detailing how it allows data to be shifted and discussing any assumptions. You should use example inputs to illustrate circuit operation.
(c) Outline how your design could be adapted to form. an N-bit bidirectional shift register that is parallel-in parallel-out. [25%]
3. Assume a function F = A.B + A.B. ¯ C.D¯ + A.B.C.D ¯ + A.B. ¯ C. ¯ D¯.
(a) Reduce F to its simplest form. using a Karnaugh map. You should show all working done to achieve your simplification.
(b) Reduce F to its simplest form. using Boolean algebra. You should show all working done to achieve your simplification.
(c) Design a logic circuit that implements your simplification using only 2-input NAND gates. [25%]
4. The C programming language allows for us to work with files. In this question you will implement a command-line editor that is capable of creating, displaying, and manipulating text files. You have freedom in how you implement your solution, but you will need to make informed design decisions and provide justifications for these choices.
(a) Write C software that allows a user to perform the operations listed below on text files.
FILE OPERATIONS:
Create File - Create a new file with a specified name.
Copy File - Create a new file with a specified name and identical contents to an existing file. Delete File - Delete an existing file with a specified name.
Show File - Display the contents of an existing file with a specified name.
LINE OPERATIONS:
Append Line - Create a new line of content at the end of a specified file.
Delete Line - Delete a line of content at a particular line number in a specified file.
Insert Line - Create a new line of content at a particular line number in a specified file. Show Line - Display the contents of a file at a particular line number in a specified file.
GENERAL OPERATIONS:
Show Change Log - Display the sequence of operations performed on all files created by your program, including the number of lines following each operation.
Show Number of Lines - Show the number of lines in a specified file.
You software must be operated by the command-line and operate on files in your current working directory but, apart from these requirements, you may implement the program in any way. You should document all design decisions not covered above, e.g., how a user specifies the operation they want to perform.
(b) Implement two additional operations or extensions to the operations listed above. You should provide justifications for the usefulness of the functionalities you introduce.
(c) Provide an explanation of your C software. You may incorporate the explanation as detailed code comments, annotations and/or separate written documentation.