29/10/2016

Computer Science and Software Engineering Solutions.




Click the text links below to read and download
  1. Various types of restructuring techniques and how restructuring help in maintaining a program
  2. Dynamic testing tools and the functions that they must support
  3. Object Oriented Programming Concepts 
  4. Multiplication Table using Two Dimensional Array in C++
  5. Routers, Bridges, Repeaters, and Gateways
  6. Computer Memory
  7. How to use Java Methods
  8. Data Structures and Functional Programming Preliminary Exam Solutions
  9. Network Protocols
  10. Polymorphism
  11. Signals and Systems
  12. Common coupling, Communicational cohesion, Class diagram, Structure chart
  13. Java AWT Graphics
  14. Yahtzee Game
  15. 2-3 Trees Sequence
  16. Allegro in C++
  17. Computer Architecture
  18. Asynchronous Inputs
  19. Beginner Game Programming With C
  20. Boolean Search
  21. Merge Sort Program in Java
  22. Checker Board in C++
  23. Chord
  24. Crossword Puzzle in C++
  25. Customer Account Program C++
  26. Database Planning Workbook
  27. Distributed process management – Distributed deadlock
  28. Drawing & Animation in JavaScript
  29. Employee Account C++ Program
  30. Finite State Machines
  31. FIR Filters
  32. Hashing
  33. Homework help in Java
  34. Hotel Management System C++
  35. Hotel reservation database
  36. How to Create a C++ Graphics Application
  37. Inference Rules Proof Methods
  38. Introduction to SQL
  39. Tic-Tac-Tac Game
  40. Java 3D
  41. Kruskal's and Prim's algorithm
  42. Median for Grouped Data
  43. Network Design and Implementation
  44. Network Topologies
  45. Cyclic Redundancy Check
  46. Enqueue() and Dequeue() C++ program
  47. Networking Lab Manual
  48. Nondeterministic Finite Automata (NFA)
  49. Nondeterministic finite automaton
  50. Outlier Concepts and Techniques
  51. Packet Tracer
  52. Prime numbers program
  53. Programming Questions and Answers
  54. Using the remove item in Java
  55. The Sleeping-Barber Solution
  56. What is Allegro
  57. C++ Graphics
  58. Optimum location of point to minimize total distance
  59. DrJava Turtle Graphics
  60. Cyclomatic complexity in program test, sequence of testing and software testability
  61. Karger's Algorithm
  62. TWILKINS
  63. 4-Gates and Circuits_solved
  64. Computer Science Theory
  65. Operating Systems
  66. Difference between throw-away prototyping and evolutionary prototyping
_________________________________________________________________________
Advantages and disadvantages of Modular Programming
The advantages of using modular programming:
1.      Fewer bug because each set of programming commands is shorter
2.      Algorithm is more easily understood
3.      Many programmers can be employed, one on each of the modules
4.      Programmers can use their expertise on particular techniques
5.      Testing can be more thorough on each of the modules
6.      Allows library programs to be inserted
7.      All of which saves time and means the finished program can be completed more quickly

The disadvantages of using modular programming:
1.      Can lead to problems with variable names
2.      Means documentation of modules must be thorough
3.      Can lead to problems when modules are linked because link must thoroughly tested

___________________________________________________________________________________
What is a software process? How do software myths affect a software process?

Software process is a Coherent set of activities for specifying, designing, implementing and testing software systems.

Software myths propagate misinformation and confusion. Software myths had a no of attributes. For instance, they appeared to be reasonable statements of fact, they had an intuitive feel, and they were often promulgated by experienced practitioners who “know the score”.

___________________________________________________________________________________

Advantages of using prototype software development model instead of waterfall model and the effect of defining a prototype on the overall cost of the software project.

1. The waterfall model: This is the classic SDLC model, with a linear and sequential method that has goals for each development phase. The waterfall model simplifies task scheduling, because there are no iterative or overlapping steps. One drawback of the waterfall is that it does not allow for much revision.

2. The prototyping model: In this model, a prototype (an early approximation of a final system or product) is built, tested, and then reworked as necessary until an acceptable prototype is finally achieved from which the complete system or product can now be developed.

___________________________________________________________________________________
Modular system and properties of a modular system
A modular system consists of well defined manageable units to well defined interfaces among them. Desirable properties are
1.     Each module is a well defined subsystem useful to others.
2.     Each module has a well defined single purpose.
3.     Modules can be separately compiled and stored in library.
4.     Modules can use other modules.
5.     Modules should be easier to use than build.
6.     Modules should have a simple interface.

___________________________________________________________________________________
Reverse Engineering and the main objectives of reverse engineering.
The reverse engineering is the process of generating representations that are implementation independent, starting from code. It is opposite of normal forward engineering process.
The main objectives of the reverse engineering process are:
1.    It helps the companies to understand the complexities of the system.
2.    Helps the analyst to generate useful lost information about legacy systems.
3.    Can be used to identify reusable components for analysis and future use.
4.    Helps in generating graphical representation of the system from different perspectives e.g. ER diagram, DFD, class diagram etc.
5.    Can be used as a part of Re-engineering process.
6.    Over a period of time modifications made to the software also result into unexpected problems. The anomalies can be detected using reverse engineering techniques.
More on reverse engineering here

Bottom-Up, Top-Down and Hybrid Design Concepts
Bottom up design- This approach leads to a style of design where we decide how to combine these modules to provide larger ones; to combine those to provide even larger ones, and so on, till we arrive at one big module which is the whole of the desired program.
Since the design progressed from bottom layer upwards, the method is called bottom up design. The main argument for this design is that if we start coding a module soon after its design, the chances of recoding is high; but the coded module can be tested and design can be validated sooner than a module whose sub modules have not yet been designed.

Top down design- A top down design approach starts by identifying the major modules of the system, decomposing them into their lower level modules and iterating until the desired level of details is achieved. This is stepwise refinement; starting from an abstract design, in each step the design is refined to a more concrete level, until we reach a level where no more refinement is needed and the design can be implemented directly.

Hybrid design- Pure top-down or pure bottom up approaches are often not practical therefore hybrid approach which combines the above two approaches is often used.

___________________________________________________________________________________
How the network layer in a connection-oriented packet-switching network differ from the network layer in a connectionless packet-switching network.

The network layer in connection-oriented networks maintains state information about every connection. It can allocate resources at the switches through admission control. The network layer in connectionless networks has no knowledge of "connections", and instead deals independently with each packet.

The network layer in connection-oriented networks performs routing on a per connection basis. Each packet is routed based on a connection identifier of some sort and packets of the same connection have the same identifier value. In a connectionless network, routing is performed on per packet basis; each packet is routed independently based on information carried in the packet header, for example, the destination address.

In connection-oriented networks, the network layer forwarding table is set up by a signaling procedure during the connection establishment. In connectionless networks, the routers may execute a distributed algorithm to share network state information and dynamically calculate the routing table continuously.

In case of failure, the connection must be re-established in connection-oriented networks, whereas in connectionless networks, the packets are re-routed. The network layer in connectionless networks is more robust against failures.

Summary of differences
Connection-oriented
Connectionless
Maintain state information about every connection
No knowledge of the "connection"
Allocate resources to connections at switches
No resource allocation
Admission control
No admission control
Per connection routing
Per packet routing
Route packet based on identifier
Route packet based on destination address.
Forwarding table specifies the output port and outgoing identifier value as function of the incoming identifier value
Routing table specifies the output port depending on the destination address
Forwarding table set up by signaling during connection establishment.
Router executes distributed algorithm to share network state information and dynamically calculate the routing table
Connection must be re-established in cases of failure
Packets are rerouted around failures, robust against failures


IPv4 and IPv6
Up until 2013, IPv4 had been used, however the world’s supply of IPv4 addresses have been depleted; IPv6 succeeds IPv4 web addresses.

The main limitations of IPv4 are listed below.
1. Scarcity of IPv4 Addresses.
2. Security Related Issues.
3. Address configuration related issues.
4. Quality of service (QoS).

What Are the IPv6 Advantages
1. Increased Capacity: of address space—resources are efficiently allocated to accommodate additional web addresses.
2. Efficient Routing: allows for easy aggregation of prefixes assigned to IP networks.
3. Efficient Data Flow: enables large data packets to be sent simultaneously helping to conserve bandwidth.
4. Security: is improved due in part to improved authentication methods built into network firewalls. 

What Are the Disadvantages of IPv6
1. Conversion: IPv4 is still widely used and the world is slow to convert to IPv6.
2. Communication: IPv4 and IPv6 machines cannot communicate directly to each other, in the very rare circumstance that they would need to.
3. Transition: The process of making the switch to IPv6 from IPv4 is slow and tedious.
4. Readability: Understanding IPv6 subnetting can be difficult on its own, let alone trying to remember/memorize your IPv6 address.