Professional Documents
Culture Documents
Dimploma Open Questions
Dimploma Open Questions
Dimploma Open Questions
MATHS 4
01. The definite and indefinite integrals: application and calculating
techniques. 4
02. Taylor polynomial and series. 4
03. Methods of solving systems of linear equations and the number of
solutions. 4
04. Eigenvalues of matrix or linear transformation and their applications in IT.
4
05. Graphs and their types. Methods of representing graphs. 4
06. Binary relations, properties and methods of representation. 4
07. The principle of mathematical induction. 4
08. Bayes’ theorem. 4
09. Statistical hypothesis testing. 4
10. Determination of confidence intervals. 4
DATABASES 5
11. Essential features of relational databases. 5
12. Essential elements and importance of entity relation diagrams and
principles of accurate database schema design. 5
13. A concurrency mechanism of multiple users work in the database
management system. 5
14. Basic objects, constructs and applications of SQL. 5
15. Basic principles of query optimization, including the types and importance
of indexes in databases. 5
COMPUTER TECHNIQUES AND ARCHITECTURE 6
16. Neumann’s architectural model vs. Turing’s machine computational model,
and their role in IT.
17. Boolean logic and its application in computer hardware. 6
18. Binary notation of integers, floating- point notation of real numbers,
computer arithmetic. 6
19. Computational efficiency measures of processors, computer memory and
computing systems. 6
20. Moore’s Law and its implications in the context of hardware development. 6
ALGORITHMS AND DATA STRUCTURES 7
21. Estimation of algorithmic complexity and complexity class of algorithmic
problems. 7
22. Major types of search and sorting algorithms: review and applications. 7
23. Characteristics and applications of the basic data structures: stack, queue,
priority queue, Find-Union structure, dictionary. 7
24. Binary and n-ary trees in algorithmics. Characteristics, implementation
methods and applications. 7
25. Recursive algorithms vs. iterative algorithms: comparison and the outline
of essential design objectives. 7
PROGRAMMING METHODS, KEY ISSUES 8
26. Object-oriented design and operating memory management in Java and
C++. 8
27. The role of classes, interfaces and mixins in programming on the basis of
Java. 8
28. The concept of inheritance on the basis of Java and C++. 8
29. The essence and application of polymorphism on the basis of Java and C+
+ 8
30. The use of arrays and other data structures in Java and C++. Java
Collections Framework. 8
31. Concurrent programming: mechanisms and tools on the basis of Java and
C++. 8
32. Parameterized types and methods (generics) in Java. Templates in C++. 8
33. Lambda expressions and functional interfaces in Java. 8
34. Stream processing in Java (on the basis of java.util.stream package). 8
35. Tools for the input/output operation programming in Java. 8
SOFTWARE ENGINEERING 9
36. Software development project management - types of activities, the choice
of methodology and non-technical context. 9
37. UML (Unified Modeling Language) - its features and its support for various
data models. 9
38. Design patterns and programming frameworks - characteristics, examples
and applications. 9
39. Software quality assurance and software testing - standards, methods and
criteria. 9
40. Software requirements - their kinds, their specification methods and their
role in the software development process. 9
COMPUTER NETWORKS 10
41. Application layer services and protocols on the basis of the HTTP. 10
42. Transport layer services on the basis of the TCP. 10
43. Network layer routing protocols on the basis of the OSPF protocol. 10
44. Data link layer services on the basis of the Ethernet or the 802.11 protocol
family (WiFi). 10
45. Information security methods in e-Banking. 10
MULTIMEDIA 11
46. Colour models. 11
47. Shaders. 12
48. Compression techniques in MPEG standards. 12
49. Aliasing. How to avoid aliasing? Aliasing vs. sampling rate. 13
50. Human-Computer Interaction (HCI): Nielsen-Molich heuristics. 14
FUNDAMENTALS OF ELECTRONICS AND DIGITAL TECHNOLOGY 15
51. Basic passive element implementations (resistors, capacitors, coils) 15
52. RC low-pass filter. Filter’s cut-off frequency and bandwidth. 16
53. Harvard architecture vs von Neuman architecture. 16
54. Methods of event handling in a microcontroller. 16
55. Common communication interfaces in a microcontroller. 16
OPERATING SYSTEMS 17
56. Classification of operating systems. 17
57. Process and thread scheduling in operating systems. 18
58. Process and thread synchronization in computer programs and its support
by computer systems and operating systems. 19
59. Operating memory management mechanisms used in operating systems.
19
60. Virtual memory mechanism: pros and cons. 20
Questions completed
1 MATHS V 21 ASD P 41 SKJ V
2 P 22 Misha 42 V
3 V 23 P 43 V
4 V 24 P 44 V
5 V 25 P 45 V
6 V 26 Misha 46 MUL P
Java/C++
7 V 27 Misha 47 P
8 V 28 Misha 48 P
9 P 29 Misha 49 P
10 P 30 Misha 50 P
12 Misha 32 Misha 52 P
13 Misha 33 Misha 53 V
14 Misha 34 Misha 54 P
15 Misha 35 Misha 55 P
17 Misha 37 V 57 P
18 Misha 38 V 58 P
19 Misha 39 V 59 P
20 Misha 40 V 60 P
MATHS
01. The definite and indefinite integrals: application and calculating techniques.
A general rule is to first choose dv as the most complicated part of the integrand that can be
easily integrated to find v. The u function will be the remaining part of the integrand that will
be differentiated to find du. The goal of this technique is to find an integral, ∫ v du, which is
easier to evaluate than the original integral.
where f(n)(a) denotes the nth derivative of f evaluated at the point a. (The derivative of order
zero of f is defined to be f itself and (x − a)^0 and 0! are both defined to be 1.)
Case 1 - If the lines intersect at a point, then the given system has a
unique solution given by the coordinates of the point of intersection.
Case 2 - If the lines are parallel, then the given system of equations is
inconsistent i.e., it has no solution.
Case 3 - If the lines are coincident, then the system is consistent and has
infinitely many solutions. In this case, every solution of one of the
equations is a solution of the system.
Elimination Method (3 solutions) - you either add or subtract the
equations to get an equation in one variable.
- When the coefficients of one variable are opposites - you add the
equations to eliminate a variable;
- when the coefficients of one variable are equal - you subtract the
equations to eliminate a variable.
Substitution Method (3 solutions) - works by solving one of the
equations (you choose which one) for one of the variables (you choose
which one), and then plugging this back into the other equation,
"substituting" for the chosen variable and solving for the other.
Step 2 : Then substitute that expression for y in the other linear equation.
You'll get an equation in x.
Step 3 : Solve this, and you have the x -coordinate of the intersection.
A·v=λ·v
A·v-λ·v=0
A·v-λ·I·v=0
(A-λ·I)·v=0
We say that λ is an eigenvalue of T if there exists a nonzero vector v∈V such that T(v)=λv.
Null graph (also called an empty graph) - a graph in which there are no
edges between any of its vertices.
Undirected graph: A graph whose edges are not directed. Mary's graph
is an undirected graph, because the routes between cities go both ways.
Bipartite graph: A graph that can be split into two sets of vertices such
that edges only go between sets, not within them.
Multi-graph: A graph in which there are multiple edges between any pair
of vertices or there are edges from a vertex to itself, also called a loop.
Planar graph: A graph that can be drawn so that all of the edges of the
graph do not cross each other.
cells are marked with edge weights instead of ones. The weight assigned
to the edge connecting nodes B and D is 3. Hence, the corresponding cells
in the adjacency matrix i.e. row B column D and row D column B are
marked 3.
Adjacency set - is quite similar to adjacency list except for the difference
that instead of a linked list; a set of adjacent vertices is provided.
Adjacency list and set are often used for sparse graphs with few
connections between nodes. Contrarily, adjacency matrix works well for
well-connected graphs comprising many nodes.
A could mean the event “Patient has liver disease.” Past data tells you
that 10% of patients entering your clinic have liver disease. P(A) = 0.10.
B could mean the litmus test that “Patient is an alcoholic.” Five percent of
the clinic’s patients are alcoholics. P(B) = 0.05.
You might also know that among those patients diagnosed with liver
disease, 7% are alcoholics. This is your B|A: the probability that a patient
is alcoholic, given that they have liver disease, is 7%.
#5: Perform a test whether the required values fall into the null
hypothesis or alternative
The value obtained in the 3rd point is checked whether it falls into
the interval which is determined by the initial data and the method
we chose to solve the problem. Mostly we obtain such an interval
(i.e. {3.38;inf)) that in case the value does not fit in, we reject the
null hypothesis.
10. Determination of confidence intervals.
Types:
How to calculate:
#3: calculate the standard deviation for sample (better to calculate for
the whole population)
#4: decide the confidence interval that will be used (i.e. 95%)
#5: using the Z-table find the Z-value for the confidence interval
where:
CI = confidence interval
x = sample mean
n = sample size
. DATABASES
11. Essential features of relational databases.
Relational databases need ACID characteristics.
ACID refers to four essential properties: Atomicity, Consistency, Isolation,
and Durability.
These features are the key difference between a relational database and a
non-relational database.
Atomicity
Atomicity keeps data accurate. It makes sure all data is compliant with
the rules, regulations, and policies of the business.
It also requires all tasks to succeed, or the transaction will roll back.
Atomicity defines all the elements in a complete database transaction.
Consistency
The state of the database must remain consistent throughout the
transaction.
Consistency defines the rules for maintaining data points. This ensures
they remain in a correct state after a transaction.
Relational databases have data consistency because the information is
updated across applications and database copies (also known as
‘instances’). This means multiple instances always have the same data.
Isolation
With a relational database, each transaction is separate and not
dependent on others. This is made possible by isolation.
Isolation keeps the effect of a transaction invisible until it is committed.
This reduces the risk of confusion.
Durability
Durability means that you can recover data from a failed transaction.
It also ensures that data changes are permanent.
12. Essential elements and importance of entity relation diagrams and
principles of accurate database schema design.
This will be the most accurate potrait of your database and will require no
drawing on your part.
1. Make sure that each entity only appears once per diagram.
2. Name every entity, relationship, and attribute on your diagram.
3. Examine relationships between entities closely. Are they necessary?
Are there any relationships missing? Eliminate any redundant
relationships. Don't connect relationships to each other.
4. Use colors to highlight important portions of your diagram
Uses
Here, are some issues which you will likely to face while using the DBMS
Concurrency Control method:
● Lost Updates occur when multiple transactions select the same
row and update the row based on the value selected
● Uncommitted dependency issues occur when the second transaction
selects a row which is updated by another transaction (dirty read)
● Non-Repeatable Read occurs when a second transaction is trying
to access the same row several times and reads different data each
time.
● Incorrect Summary issue occurs when one transaction takes
summary over the value of all the instances of a repeated data-
item, and second transaction update few instances of that specific
data-item. In that situation, the resulting summary does not reflect
a correct result.
14. Basic objects, constructs and applications of SQL.
Basic objects
Constructs of SQL
Uses SQL
Nowadays all databases have their own query optimizer, and offers a way
for users to understand how a query is executed. For example, which
index from which table is being used to execute the query? The first step
to query optimization is understanding what the database is doing.
Different databases have different commands for this. For example, in
MySQL, one can use "EXPLAIN [SQL Query]" keyword to see the query
plan. In Oracle, one can use "EXPLAIN PLAN FOR [SQL Query]" to see the
query plan.
The more data returned from the query, the more resources the database
needs to expand to process and store these data. So for example, if you
only need to retrieve one column from a table, do not use 'SELECT *'.
● Use Index
● Aggregate Table
● Vertical Partitioning.
● Horizontal Partitioning
Partition the table by data value, most often time. This strategy
decreases the amount of data a SQL query needs to process.
● Denormalization
● Server Tuning
Each server has its own parameters, and often tuning server
parameters so that it can fully take advantage of the hardware
resources can significantly speed up query performance.
COMPUTER TECHNIQUES AND ARCHITECTURE
16. Neumann’s architectural model vs. Turing’s machine
computational model, and their role in IT.
The Boolean operator “OR” is used to express that as long as one of two
or more conditions are met, the value of a specified query is true.
The use of the “AND” operator means that a user must meet ALL of the
specified criteria to be included in the audience; users who merely like
Fishing or like only Fishing and History (etc.) will be excluded from this
audience definition.
or
8610 = 1* 26 + 0* 25 + 1* 24 + 0* 23 + 1* 22 + 1* 21 + 0* 20
or
8610 = 1010110 2
Floating point
ii) Exponent
iii) Mantissa
● Sign bit is the first bit of the binary representation. ‘1’ implies
negative number and ‘0’ implies positive number.
Thus
Example: 01000001110100000000000000000000
10000011 = (131)10
131-127 = 4
Example:
01000001110100000000000000000000
i) Sign (MSB)
● Sign bit is the first bit of the binary representation. ‘1’ implies
negative number and ‘0’ implies positive number.
Move the binary point so that there is only one bit from the
left. Adjust the exponent of 2 so that the value does not
change. This is normalizing the number. 1.0001 x 24. Now,
consider the fractional part and represented as 23 bits by
adding zeros.
00010000000000000000000
Memory
Computer memory is the storage space in the computer, where data is to
be processed and instructions required for processing are stored. The
memory is divided into large number of small parts called cells. Each
location or cell has a unique address, which varies from zero to memory
size minus one. For example, if the computer has 64k words, then this
memory unit has 64 * 1024 = 65536 memory locations. The address of
these locations varies from 0 to 65535.
Memory is primarily of three types −
● Cache Memory
● Primary Memory/Main Memory
● Secondary Memory
Cache Memory
Cache memory is a very high speed semiconductor memory which can
speed up the CPU. It acts as a buffer between the CPU and the main
memory. It is used to hold those parts of data and program which are
most frequently used by the CPU. The parts of data and programs are
transferred from the disk to cache memory by the operating system,
from where the CPU can access them.
Advantages
The advantages of cache memory are as follows −
● Cache memory is faster than main memory.
● It consumes less access time as compared to main memory.
● It stores the program that can be executed within a short period of
time.
● It stores data for temporary use.
Disadvantages
The disadvantages of cache memory are as follows −
● Cache memory has limited capacity.
● It is very expensive.
Secondary Memory
This type of memory is also known as external memory or non-volatile. It
is slower than the main memory. These are used for storing
data/information permanently. CPU directly does not access these
memories, instead they are accessed via input-output routines. The
contents of secondary memories are first transferred to the main
memory, and then the CPU can access it. For example, disk, CD-ROM,
DVD, etc.
Computing
Electronics
Experts agree that computers should reach the physical limits of Moore's
Law at some point in the 2020s.3 The high temperatures of transistors
eventually would make it impossible to create smaller circuits. This is
because cooling down the transistors takes more energy than the amount
of energy that already passes through the transistors.4 In a 2007
interview, Moore himself admitted that "...the fact that materials are
made of atoms is the fundamental limitation and it's not that far
away...We're pushing up against some fairly fundamental limits so one of
these days we're going to have to stop making things smaller." 5
. ALGORITHMS AND DATA STRUCTURES
21. Estimation of algorithmic complexity and complexity class of
algorithmic problems.
Notations:
Quick Sort
Bubble Sort
Merge Sort
● Merge Sort is useful for sorting linked lists in O(n Log n) time.
● Merge sort can be implemented without extra space for linked
lists.
● Merge sort is used for counting inversions in a list.
● Merge sort is used in external sorting.
Insertion Sort
Selection Sort
The idea behind this algorithm is pretty simple. We divide the array into
two parts: sorted and unsorted. The left part is sorted subarray and the
right part is unsorted subarray. Initially, sorted subarray is empty and
unsorted array is the complete given array.
We perform the steps given below until the unsorted subarray becomes
empty:
Uses
Heap Sort
Radix Sort
The idea of Radix Sort is to do digit by digit sort starting from least
significant digit to most significant digit. Radix sort uses counting
sort as a subroutine to sort.
Array
Linked list
Each element in a linked list is called a “node,” and each node contains a
key and a pointer. The pointer directs you to the next node, called a
“next.” The sequence starts with a “head,” which directs you to the first
element within the list. The last element of this list is known as the “tail.”
You can create a singly linked list, which lets you traverse each item in a
forward direction from the head to the tail. Similarly, you can create a
doubly-linked list, which can be traversed both forward and backward.
And finally, you can create a circular linked list in which the next pointer
of the tail points to the head and vice versa, forming a circle.
Linked lists are used for symbol table management in switching between
programs using Alt + Tab (On a PC).
Stack
Stacks are known as LIFO (Last In First Out) structures. This means the
element placed last can be accessed first. You can “push” a new element
onto the top of the stack, or you can “pop,” deleting the element inserted
last which is at the top of the stack.
Queue
You can enqueue an element in this structure, which means inserting the
element to the end of the queue. You can also dequeue an element, which
means deleting an element from the beginning of the queue.
Queues are often used to manage threads in multithreading, and they are
(not surprisingly) used to implement priority queuing systems.
Priority queue
Applications:
Tree
A tree is a structure similar to a linked list because each item is linked.
But in a tree items are linked in a hierarchal fashion, just like you might
see in a visual representation of someone’s family tree. There are various
types of trees, each suited to different applications.
For example, a binary search tree (BST) stores data in sorted order with
every node in the binary comprised of the following attributes:
Heap
Similarly, a heap is a type of binary tree in which the parent nodes are
compared to their children. This allows the values within the nodes to be
arranged accordingly. Heaps can be represented as trees, but they can
also be represented as binary arrays.
There are two types of heaps. In a min heap, the parent’s key is less than
or equal to the keys of its children. In a max heap, the parent’s key is
greater than or equal to the keys of its children.
Heaps are often used in algorithms to create priority queues, and to find
the smallest or largest value in an array.
Graph
Find-Union structure
Dictionary
The two major solutions to the dictionary problem are hash tables and
search trees.
Binary tree:
Implementation:
● Data
● Pointer to left child
● Pointer to right child
Applications:
N-ary tree
N-ary trees are tree data structures that allow us to have up to n children
nodes for each of the nodes, differing from the standard binary trees
which allow only up to 2 children nodes for each node.
● Data
● Pointers to children (preferably collections with dynamic sizes as the
number of trees may not be known)
Applications:
Iterative Recursive
Repeats the loop body until the Repeats calling the body until the
continuation requirement is not base case is found
met
Multiple Inheritance
Although there are problems arising from multiple inheritances, C++ uses
the virtual keyword to resolve the problems.
Overloading
Library Interface
C++ allows direct calls to the native system libraries. Hence it is more
suited for system-level programming. Java has no direct call support to its
native libraries. We can call the libraries through Java Native Interface or
Java Native Access.
C++ has a flexible model for objects with access specifiers controlling the
access and strong encapsulation ensuring protection. Java has a
comparatively cumbersome object model with weak encapsulation.
Object Management
Memory management
Memory management is basic for all languages because it is the important
factor to determine the efficiency of the language. Language like Java
have own garbage collector hence the programmer no need to do
memory management. But in C++ the programmer has to release the
memory through new and delete functions. In this paper, we are going to
discuss how the memory is managed in both the languages and what are
all the issues are there in memory in both the languages.
27. The role of classes, interfaces and mixins in programming on the
basis of Java.
Interface
Class
Mixin
Mixin is a type that a class can implement in addition to its "primary type"
to declare that it provides some optional behaviour
Java
C++
Java
Difference
A Java array is aware of its size while a C++ array is not. Java detects
and notifies a programmer when an array is indexed out of bounds C++
does not. In C++ it is possible to create an array of fully constructed
objects in a single operation; Java requires multiple operations to create
an array of objects.
31. Concurrent programming: mechanisms and tools on the basis of
Java and C++.
Java
Processes
Threads
Threads exist within a process — every process has at least one. Threads
share the process's resources, including memory and open files. This
makes for efficient, but potentially problematic, communication.
Not only does this take advantage of multiple CPU cores, but it
also allows the developer to control the number of tasks taken on
by manipulating the thread pool size. The program can then use
the computer resources efficiently without overloading becoming
overloaded.
Once these tasks are completed, the bees return to the queen for
further instruction. At any one time, there is a set number of
these workers being commanded by the queen, enough to utilize
all of its hive space without overcrowding it.
C++ Parallelism
Creating different threads is typically expensive in terms of both time and
memory overhead for the program. Multithreading can therefore be
wasteful when dealing with short simpler functions.
For times like these, developers can instead use parallel execution policy
annotations, a way of marking certain functions as candidates for
concurrency without creating threads explicitly.
At its most basic, there are two marks that can be encoded into a
function. The first is parallel, which suggests to the compiler that the
function be completed concurrently with other parallel functions. The
other is sequential, meaning that the function must be completed
individually.
However, it is best saved for functions that have little interaction with
other functions using dependencies or data editing. This is because while
they are worked on concurrently, there is no way to know which will
complete first, meaning the result is unpredictable unless synchronization
such as mutex or condition variables are used.
32. Parameterized types and methods (generics) in Java. Templates in C++.
Java
The idea is to allow type (Integer, String, … etc, and user-defined types)
to be a parameter to methods, classes, and interfaces. Using Generics, it
is possible to create classes that work with different data types.
Generic Class
Like C++, we use <> to specify parameter types in generic class creation.
To create objects of a generic class, we use the following syntax.
Generic Functions:
We can also write generic functions that can be called with different types
of arguments based on the type of arguments passed to the generic
method, the compiler handles each method.
Generics work only with Reference Types:
But primitive type array can be passed to the type parameter because
arrays are reference type.
Advantages of Generics:
Programs that use Generics has got many benefits over non-generic code.
C++
Function Templates
We write a generic function that can be used for different data types.
Examples of function templates are sort(), max(), min(), printArray().
Class Templates
Like function templates, class templates are useful when a class defines
something that is independent of the data type. Can be useful for classes
like LinkedList, BinaryTree, Stack, Queue, Array, etc.
Yes, like normal parameters, we can pass more than one data types as
arguments to templates. The following example demonstrates the same.
Intermediate Operations:
Terminal Operations:
1. collect: The collect method is used to return the result of the
intermediate operations performed on the stream.
number.stream().map(x->x*x).forEach(y->System.out.println(y));
Important Points/Observations:
Java brings various Streams with its I/O package that helps the user to
perform all the input-output operations. These streams support all the
types of objects, data-types, characters, files etc to fully execute the I/O
operations.
Standart
1. Input Stream: These streams are used to read data that must be
taken as an input from a source array or file or any peripheral
device. For eg., FileInputStream, BufferedInputStream,
ByteArrayInputStream etc.
2. Output Stream: These streams are used to write data as outputs
into an array or file or any output peripheral device. For eg.,
FileOutputStream, BufferedOutputStream, ByteArrayOutputStream
etc.
Depending on the types of file, Streams can be divided into two primary
classes which can be further divided into other classes
project deliverables - the items the project will deliver, which could
range from new software products to patches. It’s common for
software projects to have multiple deliverables.
Team size
Flexibility
Timeline
Agile - one of the most common project management processes. Agile is:
collaborative, fast and effective, iterative and data-backed. The Agile
framework can be used for just about any team, because the principle
behind it is rather universal.
Scrum - involves short “sprints” that are used to create project cycles.
These cycles span 1 to 2 weeks at a time and are organized with teams of
10 or less. As sprints are divided into small teams, this approach can
work for both small and large teams. Scrum is most commonly associated
with an Agile framework, because they share similar principles, such as
collaboration and valuing individuals over processes.
Non-technical context:
Also, a project manager may not have great technical skills, unless he
wants to build those skills as part of preparing to lead the project.
Managers can have a project with well-defined goals, an adequate
schedule, technically skilled people and all the necessary tools, but if the
project team members cannot communicate and collaborate effectively
with each other and with end users, then project success is at risk.
Common problems with non-technical skills include dysfunctional
communication, negative attitudes, uncooperativeness, mistrust,
avoidance, and ineffective negotiations between team members and
users. Such problems must be identified and addressed to improve
individual and team performance. There are tools available that assist in
measuring the effectiveness of the technical skills and processes that
teams use to execute projects, but there are no proven tools to effectively
measure the non-technical skills of software developers.
37. UML (Unified Modeling Language) - its features and its support for various data
models.
Class Diagram – The most widely used. It is the building block of all
object oriented software systems. Used to depict the static structure of a
system by showing system’s classes, their methods and attributes. Class
diagrams also help to identify relationships between different classes or
objects.
Package Diagram – used to depict how packages and their elements have
been organized. A package diagram simply shows us the dependencies
between different packages and internal composition of packages.
Packages help us to organise UML diagrams into meaningful groups and
make the diagram easy to understand. They are primarily used to
organise class and use case diagrams.
Behavior Diagrams –
- Reusing design patterns helps to prevent subtle issues that can cause
major problems and improves code readability for coders and architects
familiar with the patterns.
Factory Method Pattern - is one of the best known design patterns. Its
task is to hide details of creating objects from clients and, at the same
time, to provide interface to generate them. Classes implementing
interface decide about class of creating object. A client expects a secured
implementation of an interface or abstract class, but is not interested in a
specific implementation. However, a programmer can easily expand the
portfolio of a factory with additional object classes. When designing your
application it is worth considering whether and application actually needs
the objectives factory. If a product has many classes with a similar base
class and you manipulate objects in the interface or abstract class, then
Factory Method Pattern would definitely be useful.
ISO 9000 - defines a family of standards, with the ISO 9000 and ISO
9001 being standards within the family. The International Organization for
Standardization (ISO) first published the ISO 9000 family in 1987. For the
ISO 9000, there are several principles that put significant focus on a
software product’s ability to meet customers’ needs.
- Customer focus
- Leadership
- Engagement of people
- Process Approach
- Improvement
- Evidence-based decision making
- Relationship management
Currently, the ISO 9000 is one of the more widely used criteria for quality
management systems (QMS). More than a million businesses and
organizations across the world in 170 countries have an ISO 9001
certification.
Defined: The set of processes have been defined, documented, and are
subject to improvement.
- Initial
- Managed (Test Policy & Strategy, Test Planning, Test Monitoring and
Control, Test Design & Execution, Test Environment)
- Defined (Test Organization, Test Training Program, Test Lifecycle &
Integration, Non-Functional Testing, Peer Reviews)
- Measured (Test Measurement , Product Quality Evaluation,
Advanced Reviews)
- Optimization (Defect Prevention, Test Process Optimization, Quality
Control)
help developers deal with different types of bugs (bugs may range from a
missing semicolon to a critical business requirement). Thus, software
testing is an essential part of a test driven development environment.
Static Analysis - examines all possible behaviors that might arise during
run time. The traditional static analysis includes: code review, code
inspection, algorithm analysis, proof of correctness. Example is compiler
optimization. Software testers perform static analysis through an
examination of documents. These documents include specification
requirements, models, design architecture, and legacy codes (when
upgrading an application).
Black Box - testers perform testing without knowing the overall content of
the software. They know what are the necessary inputs and expected
outputs, but not the process. The black box testing method tests the
functionality of an application based on the requirement specification. It
does not focus on the internal structure or code of the application. Black
box techniques include: Boundary Value analysis, Equivalence
Partitioning, Decision Tables, Domain Tests, State Models.
White Box - this testing technique is used in development to examine the
program structure and business logic. Testers perform validation of the
entire code structure of an application. White Box Testing Techniques
include:
Exploratory - this is where testers have full autonomy to work around the
software application based on their instinct. This method is perfect for
finding hidden risks or errors. For example, a redundant button that may
confuse the users. Exploratory testing understands how actual users
navigate the application. On the other hand, scripted testing ensures that
the software is ready for deployment. Hence, software testers and
product owners always use these two methods in parallel.
Automated - uses scripts and tools, which makes this method more
reliable as the test runs automatically. As a result, it finds more bugs
compared to a human tester. Also, testers are allowed to record the
automation process, allowing them to reuse and execute the same kind of
testing operations. However, the tools used to run automation testing are
expensive and have its limitations, which reduces the scope of
automation. Therefore, most testers prefer to use both automation and
manual testing. These methods provide fast bug identification while
delving into UI’s visual aspects (e.g., colors, font, sizes, contrast, button
sizes, etc).
Agile - methodology, where the entire project team participates in all the
activities. The requirements evolve as the iterations progress, through
collaboration between the customer and the self-organizing teams. As
Coding and Testing are done interactively and incrementally, during the
course of development, the end-product would be of quality and ensures
customer requirements.
testing at scale - as scale and scope of testing often expands over time,
software testing partners must be able to scale along with the digital
products and to allocate sufficient resources to the products, on both the
management and tester sides. The software testing partner must be able
to keep up with your ongoing needs. For example, you might require new
testers to meet increased delivery demands or deliver a fresh perspective
of a new feature.
Test coverage for devices and platforms - as there are more devices and
platforms every year, it is nearly impossible to test all the changes of
devices - their operational systems, platforms and networks, but you
must validate as many as possible, especially the ones your customers
use. Software testing partners should expand test coverage for devices
and platforms that are outside the scope of testability for many
organizations. Every year, there are new iOS and Android devices and
their OS versions, not to mention more feature-rich connected devices,
such as automobiles, refrigerators, plugs and in-home voice assistants. A
quality software testing partner should provide resources that enable you
to expand test coverage for all the necessary devices. Also, as alternative
platforms like virtual reality are becoming more popular, there is a need
for a QA partner who can keep up and use testers all around the world to
validate functionality and services, and keep the revenue stream rolling
in.
Ability to find the right testers - not everyone can test a product well. QA
partner must be able to provide testers that meet your needs. testers for
one app might be the wrong fit for another. For example, there is a new
customer rewards feature launching in selected markets. The retailer
might require testers who: live in the areas where you’ll launch; likely or
already shop at the retailer; pay with specific payment methods; are
willing to visit a store to test out the rewards card; have a track record of
success testing retail apps or reward programs; will agree to a strict non-
disclosure agreement. You can’t effectively meet your test objectives
without the right testers. A software testing partner should give you the
ability to select testers for future participation.
Culture - when you fail to understand your users, it can be easy to offend
them. It can be not only simple words or phrases, but also images, which
users might find distasteful. Localized testing experts and users can help
deliver an app that engages — and doesn’t offend — users.
Ease of use - work with a QA partner must be intuitive and clear. The QA
partner should provide all the evidence needed to resolve a bug, including
reproduction steps, tester screenshots and video recordings to help you
easily triage and remediate defects, not waste time with out-of-scope
bugs and unclear results.
40. Software requirements - their kinds, their specification methods and their role in
the software development process.
- Interface constraints
- Performance constraints: response time, security, storage space,
etc.
- Operating constraints
- Life cycle constraints: maintainability, portability, etc.
- Economic constraints
DNS: DNS stands for Domain Name System. The DNS service translates
the domain name (selected by user) into the corresponding IP address.
For example- If you choose the domain name as www.abcd.com, then
DNS must translate it as 192.36.20.8 (random IP address written just for
understanding purposes). DNS protocol uses the port number 53.
HTTP: HTTP stands for Hyper Text Transfer Protocol. It is the foundation
of the World Wide Web (WWW). HTTP works on the client server model.
This protocol is used for transmitting hypermedia documents like HTML.
This protocol was designed particularly for the communications between
the web browsers and web servers, but this protocol can also be used for
several other purposes. HTTP is a stateless protocol (network protocol in
which a client sends requests to server and server responses back as per
the given state), which means the server is not responsible for
maintaining the previous client’s requests. HTTP uses port number 80.
NFS: NFS stands for Network File System. This protocol allows remote
hosts to mount files over a network and interact with those file systems
as though they are mounted locally. NFS uses the port number 2049.
regular data transfer - user can request to transfer user data with any
integral number of octets (units of digital information in computing). This
transfer is transparent, i.e., user data boundaries are preserved during
the transfer, and there are no constraints on the content and number of
octets. The mode of data transfer can be done in two ways
simultaneously.
expedited data transfer - has a distinct control flow, and can pass all the
data queue with maximum priority for delivery. It is a user optional or
optional provider service. Maximum octets are 16.
Error Recovery - the errors at this level can be introduced due to TPDU
errors, protocol errors or signal failure conditions of network connections,
i.e., reset or release of network connections. Such errors occurring at
layer 3 are reported to the transport layer. The TPDU errors can be in the
form of lost TPDU, duplicated TPDU, re-ordering of sequence, or content
errors. The duplicate TPDUs are discarded, lost are acknowledged to
resend. In the recording, they are re-sequenced, and content errors are
detected by incorporating error detection bytes in TPDUs by the transport
entity. Such TPDUs with content errors are discarded and treated as lost,
and hence they are also acknowledged. In the case of protocol errors, the
connection is released, and in the case of signal failure errors,
reassignment of network connection and resynchronization is done.
Link state protocols (LSP) - advertise routing updates only when they
occur, which uses bandwidth more effectively. Routers don’t advertise the
routing table which makes convergence faster. The routing protocol will
flood the network with link state advertisements to all neighbor routers
per area in an attempt to converge the network with new route
information. LSP uses variable length subnet masks, which are scalable
and use addressing more efficiently.
Automatic logout - many banks automatically log their users out of the
secure session after a period of inactivity to help prevent others from
seeing or using their online accounts.
[ R G B ] =[ 1 11 ] −[ C M Y ][ C M Y ] =[ 11 1 ] −[ R G B ]
● HSV: The image consists of three channels. Hue, Saturation and Value
are three channels. This colour model does not use primary colours
directly. It uses colour in the way humans perceive them. HSV colour
when is represented by a cone.
Hue is a colour component. Since the cone represents the HSV model, the
hue represents different colours in different angle ranges.
Saturation as the name suggest
describes the percentage of the colour.
Sometimes this value lies in the 0 to 1
range. 0 being the grey and 1 being
the primary colour. Saturation
describes the grey colour.
The value represents the intensity of
the colour chosen. Its value lies in
percentage from 0 to 100. 0 is black
and 1 is the brightest and reveals the
colour.
HSV model is used in histogram equalization and converting grayscale
images to RGB colour images.
● YIQ: YIQ is the most widely colour model used in Television broadcasting.
Y stands for luminance part and IQ stands for chrominance part. In the
black and white television, only the luminance part (Y) was broadcast. The
Y value is similar to the grayscale part. The colour information is
represented by the IQ part. There exist a formula to convert RGB into YIQ
and vice-versa.
YIQ model is used in the conversion of grayscale images to RGB colour
images.
47. Shaders.
A shader is simply a program that runs in the graphics pipeline and tells
the computer how to render each pixel. These programs are called
shaders because they're often used to control lighting and shading
effects, but there's no reason they can't handle other special effects.
Shaders are written in a special shading language. They are mostly run on
GPU.
Methods of AntiAliasing
● Using high-resolution display: One way to reduce aliasing effect and
increase sampling rate is to simply display objects at a higher resolution.
Using high resolution, the jaggies become so small that they become
indistinguishable by the human eye. Hence, jagged edges get blurred out
and edges appear smooth. Practical applications: Apple devices, OLED
displays.
● Post filtering (Supersampling): In this method, we are increasing the
sampling resolution by treating the screen as if it’s made of a much more
fine grid, due to which the effective pixel size is reduced. But the screen
resolution remains the same. Now, intensity from each subpixel is
calculated and average intensity of the pixel is found from the average of
intensities of subpixels. Thus we do sampling at higher resolution and
display the image at lower resolution or resolution of the screen, hence
this technique is called supersampling. This method is also known as post
filtration as this procedure is done after generating the rasterized image.
Practical applications: In gaming, SSAA (Supersample Antialiasing) or
FSAA (full-scene antialiasing) is used to create best image quality. It is
often called the pure AA and hence is very slow and has a very high
computational cost. This technique was widely used in early days when
better AA techniques were not available. Different modes of SSAA
available are: 2X, 4X, 8X, etc. denoting that sampling is done x times
(more than) the current resolution. A better style of AA is MSAA
(multisampling Antialiasing) which is a faster and approximate style of
supersampling AA.
● Pre-filtering (Area Sampling): In area sampling, pixel intensities are
calculated proportional to areas of overlap of each pixel with objects to be
displayed. Here pixel colour is computed based on the overlap of scene’s
objects with a pixel area. For example: Suppose, a line passes through
two pixels. If pixel area overlaps with different colour areas, then the
final pixel colour is taken as an average of colours of the overlap area.
This method is also known as pre-filtering as this procedure is done
BEFORE generating the rasterized image.
● Pixel phasing: It’s a technique to remove aliasing. Here pixel positions
are shifted to nearly approximate positions near object geometry. Some
systems allow the size of individual pixels to be adjusted for distributing
intensities which is helpful in pixel phasing.
50. Human-Computer Interaction (HCI): Nielsen-Molich heuristics.
In other words they “filter-out” unwanted signals and an ideal filter will
separate and pass sinusoidal input signals based upon their frequency. In
low frequency applications (up to 100kHz), passive filters are generally
constructed using simple RC (Resistor-Capacitor) networks, while
higher frequency filters (above 100kHz) are usually made from RLC
(Resistor-Inductor-Capacitor) components.
Differences:
USB hosts, also known as master devices, initiate all the communication
that occurs over the USB bus. Typically, a computer or other controllers
are considered to be the master, only responding to other devices if
requesting certain information. The host and slave devices are connected.
The slave device is programmed in such a way that it provides the host
device with the information it needs to operate. Typically, slave devices
include USB flash drives, keyboards, and other such devices. It is
important for host and slave devices to be able to effectively
communicate with each other. If either one is not able to perform its job
function, the communication between the two devices would be
interrupted.
. OPERATING SYSTEMS
56. Classification of operating systems.
● Multiuser OS: In a multiuser OS, more than one user can use the same
system at a same time through the multi I/O terminal or through the
network. For example: windows, Linux, Mac, etc. A multiuser OS uses
timesharing to support multiple users.
● Multiprocessing OS: A multiprocessing OS can support the execution of
multiple processes at the same time. It uses multiple number of CPU. It is
expensive in cost however, the processing speed will be faster. It is
complex in its execution. Operating system like Unix, 64 bit edition of
windows, server edition of windows, etc. are multiprocessing.
● Multiprogramming OS: In a multiprogramming OS more than one
programs can be used at the same time. It may or may not be
multiprocessing. In a single CPU system , multiple program are executed
one after another by dividing the CPU into small time slice. example:
Windows, Mac, Linux, etc.
● Multitasking OS: In a multitasking system more than one task can be
performed at the same time but they are executed one after another
through a single CPU by time sharing. For example: Windows, Linux, Mac,
Unix, etc.
For every system call to access the kernel resources, a Kernel Level thread is
created and associated to separate LWP by the system scheduler.
58. Process and thread synchronization in computer programs and its support by
computer systems and operating systems.