(a) The internet era has given rise to the problem of cybercrimes. Given the need to maintain privacy which is an ethical responsibility of the government, what technical means would you suggest to curb this problem?
(b) Describe the difference between Harvard and Von-Neumann architectures of computers. Also discuss their traits in the light of their capabilities.
(c) Virtual memory is used by the computer to support the running of heavy applications. Describe the functioning of virtual memory in the computer. Also comment on the management of virtual and physical memory by an operating system.
(a) Three types of languages exist for use in programming of computers, Machine, Low Level and High Level languages. Elucidate on these three types, giving details of the conversion process between Low Level and High Level language into Machine language.
(b) Write a function that calculates the quadratic equation in . You may use the math library for this purpose. The program should ask the user to enter values of a, b and c and should print the result. A sample execution of the program is shown below:
Enter value of a: 1
Enter value of b: 2
Enter value of c: 1
The values of x are -1, -1
(c) Consider that you are required to create a program for a supermarket checkout machine. The machine has a database of the items available in the supermarket which consists of the items name, code and price. Make a program that requires the cashier (user) to enter the code or name of the product and the quantity that has been bought. It should allow for multiple entries to be made. Once all the entries have been made. The program prints the total amount to be charged on the screen. A sample execution is shown below:
Enter product name or code: 1
Enter quantity: 1
Do you have more products to add (Y/N): N
The total amount is 500
You may construct the database as a structure.
(a) What factors should be considered when choosing particularly between evolutionary and incremental models? Elucidate the characteristics of Rapid Application Development, Joint Application Development and Agile Software Engineering.
(b) Differentiate between Software Validation and Verification. Discuss some of the techniques used for empirical software evaluation.
(c) Discuss the importance of Requirements Engineering in the success of a software project. Explain in detail the process of ‘Requirements Sign-off’.
(a) Draw and build a Red-black tree for the following keys (50, 60, 70, 80, 90) and (50, 40, 30, 20, 10). Would a binary tree be suitable for the insertion of these keys?
(b) Hash tables enable for fast insertion and searching within the database. Describe the process of hashing with a suitable example.
(c) Describe the process of Bubble Sorting. Write down the output after each pass of the Bubble Sort algorithm for sorting the sequence (3, 8, 2, 6, 1, 10).
(a) The design methodologies of programs can have multiple approaches including the Big Bang, Code and Fix, Water Fall and the Spiral Model. Consider a test application and describe the development of the application while following each of these four approaches.
(b) Discuss the design issues of Task Partitioning and Task Allocation in Distributed Software Engineering tasks.
(c) Explain the importance of Design Patterns under the umbrella of Agile software design and programming. Explain Software Testing and different methodologies.
(a) The handling of syntax errors involves the use of parser and the lexical analyzer. Comment on its functioning.
(b) Using a suitable example, compare the operation of a top-down and a bottom-up Parser based compiler.
(c) Explain the two different methods of code optimization that is Loop optimization and Peephole optimization by giving a suitable example.
Q.8. Write short notes on any FOUR of the following: (5 each)
(a) Global, Local and shared variables for nested function access
(b) Protecting IP rights in the digital domain
(c) Parallel processing and the use of pipelining for this purpose
(d) Resource allocation during runtime processes
(e) Intermediate Code Generation
(f) Searching Algorithms