Presentation Guidelines By Mr. Ayman Ezzat
DO:
- Strict by 8 ~ 12 lines per each slide.
- Strict to allowed presentation time,40 — 60 seconds per slide is the standard. If you are allowed 20 minutes, prepare 20 — 30 slides.
- Look to presentation audience instead of continuous reading from pc screen, Knowing that
- Looking presentation audiences …. Excellent!
- Looking screen ….. Fine!
- Looking PC screen …. Bad!
- Start presentation by clear self introduction “My name is …., today i would like to talk about ……..”.
- First 2–3 slides… speak clearly and slowly, Name should be pronounced slowly. Title should be pronounced clearly.
- Whenever you refer to previous work or used technique you must put a reference in your presentation and link to it.
- When you specify some technique to use it is good to state merit of this techniques and purpose of usage.
- Record and memorize every question you get during the presentation from the audience, it is better to do it immediately.
- Always make the answers to audience questions consistent with you presentations slides.
It is good to prepare set of questions to present in case no one has something to ask and also specially when you are chairing a session. - Define problem well and introduce proposed solution in a very clear way.
Provide you presentations with simple and clear pictures. - Graphical notations are powerful than texture notes.
- If you give an example about your work try to be general and don’t go in very detailed things, overall summarized example is good.
- If presentation is chapters then try to put published work of each chapter.
Avoid:
- Low voice.
- Confusion between a reference work and your own opinion work.
- Emphasize your original points. Distinguish:
General background, general explanation, your own view/approach for the problem, and your own work. - Using first letter capital of each word inside the content of the presentation.
- Negative answers and poor unreasonable answers.
- Giving a smile of impoliteness.
- Spelling Mistakes and grammar errors.
- Answering things that you don’t hear well, If you do not understand the question, you should
- ask to the questioner. Prepare several ways to ask the meaning of the questions.
- Motivations cant be on general topics.
- Contributions must not be general things and originality points must be clear and focused.
- Long introductions are not preferred by attendees.
- Many drawbacks in a single presentation means the thesis is weak.
- Avoid general drawbacks that are not direct related to your work.
- If your presentation is divided to chapters do not put related work for each chapter separately it is confusing.
- When divide presentation to sections avoid overlapping it makes attendees lost.
- Avoid mixing general topics and emphasized parts.
- Font color must be Black, avoid pale colors.
Published by Mr. Ayman Ezzat: view
What’s New in C# 2.0 ? Part 2
In the name of ALLAH
Welcome in Part2 (Sorry it will be Long Post Coz it Will be the Final Part )
Iterators allow you to easily create enumerable classes, classes that allow you to iterate through their collection of values through a foreach loop. Classes that implement the IEnumerable interface allow you to use foreach loop.
To use IEnumerable interface we must implement GetEmumerator Method which return IEnumerator object which, this object allow foreach loop to work the way it does.
The new iterator pattern makes use of the yield keyword , from this moment we don’t have to create and implement an IEnumerable object , yield does all of this.
Example : -
If we tried to Store 100 000 string in array of string then we tried to retrieve the array’s values using foreach loop one by the old way and the second with the Yield Key word.
Here is the difference with Yield it will take 93 milliseconds and with the Old Way 343 milliseconds.
Syntax:-
yield keyword in foreach loop
Yield Var;
the Advantages :-
Good Running Time
Save Code and increases its readability
Nullable Types
The Nullable Type Can Represent the Range of Value for any type plus it can hold the value null
Example : –
Nullable can Hold Values in this Range from -2147483648 to 2147483647 in addition to Null Value
another Example : - Nullable can hold The Value True or False ( false set as default in the normal Bool ) in addition to Null Value .
but what is its importance ?
assume you are working in database application
a Boolean field in a database can store the values true or false, or it may be undefined.
Syntax: -
int? x = 10; or double? d = 4.108; ….. and so on
the most important Properties in nullable variables : –
The HasValue property returns true if the variable contains a value, or false if it is null.
The Value property returns a value if one is assigned, otherwise
a System.InvalidOperationException is thrown.
The last Thing to say about nullable Type that it can work on Value and Ref. Type.
Static Class
Static class was developed in c# 2.0 to prevent the problem of working with The classes which have Private constructors by using Reflection.
Use The Keyword static in the declaration of the class to prevent the class instantiation by Reflection
Syntax :-
static class Class1
Anonymous Methods
Hint :- To understand Anonymous Methods you must understand Delegates Very Good. I will depend here that you Can use Delegates.
Earlier( in previous versions of C# ) we were handling the events like this
myButton.Click += new EventHandler(MyButton_OnClick);
public void MyButton_OnClick(object sender, EventArgs e)
{
// do something
}
Here we first added a delegate to myButton’s Click event. The delegate is made to reference the MyButton_OnClick() method which is defined earlier.
Anonymous methods allow you to define un-named methods ( any block of code )
Like this
this.myButton.Click += delegate(object sender, EventArgs e)
{
MessageBox.Show(“yes”);
};
The Advantages: -
Anonymous methods can be useful when we only want to use our event handler to point to only one method. It can save code size and make it more readable if used appropriately.
mmm i reached the End Of This Post .. but i will be back Soon isA with C# 3.0 .. So Keep Waiting
Today Exclusive: Gates & Microsoft Launch Vista

Gates on Vista softwareJan. 29: Microsoft chairman Bill Gates talks with TODAY host Meredith Vieira about the launch of Windows Vista, the company’s newest operating system, which hits stores Tuesday.
What’s New in C# 2.0 ? Part 1
in the name of ALLAH
Hope all be Fine ..
as we know that Microsoft announced for C# 3.0 , So I decided to write My Articles about the enhancements in this Language, but before I begin C# 3.0 lets know first the new Adds in
C# 2.0 which was released with Visual Studio 2005 then we will speak about C# 3.0 .
First i will begin with Generics.
Generics are a new feature in version 2.0 of the C# language and the common language runtime (CLR). Generics introduce to the .NET Framework the concept of type parameters, which make it possible to design classes and methods that defer the specification of one or more types until the class or method is declared and instantiated by client code.
to use Generics we must use this name space System.Collections.Generic
Example ..
// Declare a list of type int
GenericList list1 = new GenericList();
If you fell that this is not clear look to this problem
Imagine you want to create a class template that supports any type. When you instantiate that class, you specify the type you want to use, and from that point on, your object is “locked in” to the type you chose. How Can you Do this ??
Generic can do this look at the following Example : -
public class ObjectList : CollectionBase
{
private ArrayList list = new ArrayList();
public int Add(ItemType value)
{
return list.Add(value);
}
public void Remove(ItemType value)
{
list.Remove(value);
}
}
Second Partial Classes
Partial classes give you the ability to split a single class into more than one source code (.cs) file. Like This
public partial class MyClass
{
public MethodA()
{…}
}
public partial class MyClass
{
public MethodB()
{…}
}
When you build the application, Visual Studio .NET tracks down each piece of MyClass and assembles it into a complete, compiled class with two methods, MethodA() and MethodB().
In my opinion partial is not Very important for Small projects but it will be great in large projects.
The Second Part Will be about
Iterators
Anonymous Methods
Nullable
OpenCV
-
OpenCV is Intel® Open Source Computer Vision Library. It is a collection of C functions and a few C++ classes that implement some popular Image Processing and Computer Vision algorithms.
-
If you want to gain the great performance of C without being involved in the tiny details (like creating your own data structures & customized functions, etc) in the same way you used to on Mat-lab, OpenCV is your best choice. Yet, other stuff not related to image processing & computer vision directly (like neural networks, etc) won’t be provided through OpenCV (yet you can find them available on the Internet in C, also).
-
For example, the above image was captured by a web-cam, segmented, masked with the original image from the web-cam again, & finally saved on disk with a few lines of code.
-
The key features : OpenCV has cross-platform middle-to-high level API that consists of a few hundreds (>300) C functions. It does not rely on external libraries, though it can use some when it is possible.
OpenCV is free for both non-commercial and commercial use (see the license for details).
OpenCV provides transparent interface to Intel® Integrated Performance Primitives (IPP). That is, it loads automatically IPP libraries optimized for specific processor at runtime, if they are available. That grantees even faster execution (C is already fast on modest hardware) for usually complex image processing operations, making use of the available hardware (if it’s Intel®’s). More information about IPP can be retrieved @ http://www.intel.com/software/products/ipp/index.htm
For more information about OpenCV :
- Intel’s pages : http://www.intel.com/technology/computing/opencv/
- Yahoo!Groups : http://groups.yahoo.com/group/OpenCV/
- SourceForge : http://sourceforge.net/projects/opencvlibrary [u can download z lib here]
Explore the java platform- part1 – what is java?
1.1 Introduction
This part aims at getting the reader familiar with Java as fast and simple as possible as we will see a simple overview of the Java platform to help us getting through the rest of the parts in a non complex flow.
As a personal point of view, talking about Java is endless. Java is more than a platform; you can treat Java as a person, really! Sometimes you love and miss Java, and sometimes you reach the point of no going back, sometimes you say poems about the great technology, and sometimes you call it a peace of garbage.
That what makes Java very special, when you use it you feel the human thinking in every thing, you have the chance to understand every single step you do to develop an application.
Personally, I am a great fan of Java, not to be different, but because I dealt with other technologies which are mainly from Microsoft, for example; when you learn .NET, you know the steps to accomplish some tasks without knowing why, you just click here and there and write some code (IF YOU DO SO!!!) because they told you that.
Dealing with Java is very much different, as you can get to know every single detail concerning every thing, including the Java platform source code itself.
1.2 What is Java?
Java is an object-oriented programming language developed by Sun Microsystems in the early 1990s. Java applications are often compiled to bytecode, which may be compiled to native machine code at runtime.
The language itself borrows much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities.
1.2.1 History
Java was started as a project called “Oak” by James Gosling in June 1991, the goal of this project was to build a virtual machine and a language that accomplish “Write Once Run Anywhere” (WORA) concept, where you can write an application and run it on any platform without any runtime costs.
Java as a programming language passed over many levels of enhancements, now, the standard Java language is known as ‘Java2’.
Primary Goals:
It should use the object-oriented programming methodology.
It should allow the same program to be executed on multiple operating systems.
It should contain built-in support for using computer networks.
It should be designed to execute code from remote sources securely.
It should be easy to use by selecting what was considered the good parts of other object-oriented languages.
Platform independence
One characteristic, platform independence, means that programs written in the Java language must run similarly on any supported hardware/operating-system platform. One should be able to write a program once, compile it once, and run it anywhere.
This is achieved by most Java compilers by compiling the Java language code “halfway” to bytecode (specifically Java bytecode)—simplified machine instructions specific to the Java platform. The code is then run on a virtual machine (VM), a program written in native code on the host hardware that interprets and executes generic Java bytecode
Automatic Garbage Collection
One idea behind Java’s automatic memory management model is that programmers should be spared the burden of having to perform manual memory management. In some languages the programmer allocates memory to create any object stored on the heap and is responsible for later manually deallocating that memory to delete any such objects. If a programmer forgets to deallocate memory or writes code that fails to do so in a timely fashion, a memory leak can occur.
In Java, this potential problem is avoided by automatic garbage collection. The programmer determines when objects are created, and the Java runtime is responsible for managing when to remove this object from memory.
1.2.3 Syntax
Java’s syntax shares a great deal of C++ syntax, however, C++ can not be considered a fully Object Oriented language rather than a hybrid language because it combines the properties of structured, generic, and OOP. For example; In C++, the program is executing inside the main function which is not a member of any object.
Java was built from the ground up as an object oriented language. As a result, almost everything is an object and all code is written inside a class. The exceptions are the intrinsic data types (ordinal and real numbers, Boolean values, and characters), which are not classes for performance reasons.
As you can see in the hello world example, a main method is defined as a member method of the class Hello. Any class can have a main method as long as it has a signature similar to the hello world class, however, if you have an application with many classes containing main methods, only one main method will execute at runtime.
1.2.4 Criticism
Performance
Java can be perceived as significantly slower and more memory-consuming than natively compiled languages such as C or C++.
In general, interpreted languages require additional instructions to execute, and can potentially run several times slower than directly compiled machine code. There also is a significant overhead in both time and space, since many Java interpreters and runtimes take up many megabytes and take many seconds to start up. This arguably makes small Java utility programs uncompetitive with programs compiled in other compiled languages. To be fair, several tests have indicated that the Java overhead is less noticeable for sophisticated or large Java programs.
Java’s performance has increased substantially since the early versions, and performance of JIT compilers relative to native compilers has in some tests been shown to be quite similar.The performance of the compilers does not necessarily indicate the performance of the compiled code; only careful testing can reveal the true performance issues in any system.
Lack of OO purity
Java’s primitive types are not objects. Primitive types hold their values in the stack rather than being references to values. This was a conscious decision by Java’s designers for performance reasons. Because of this, Java is not considered to be a pure object-oriented programming language. However, as of Java 5.0, autoboxing enables programmers to write as if primitive types are their wrapper classes, and freely interchange between them for improved flexibility.
1.3 Why Java?
Well, we have seen that there is a good language called java, so what? Why bothering ourselves with learning a new language as long as there are already languages that satisfy our needs and easy to use and learn?
First of all, we must confess that we as Egyptians were invaded by Microsoft from quite long time. Any normal computer user believes that the only thing that can operate a PC is of course windows; most of developers now see that the .NET is the ultimate magician that can do any thing. Unfortunately, that is not the case; the case is that we did not see any other technologies to judge the products we are using in a right way. I don’t say that we don’t use Microsoft technologies,(I use windows) but we have to move on to see the wide space full of technologies out there, we have to see and try to judge fairly, and believe me the result will be very surprising.
For example; the most popular language now in Egypt is C# which is considered to be very easy and very powerful for us as Egyptians. The reason of this is that we still have a relatively small and weak software industry. C# is a good and easy language, but at small scale projects.
Talking frankly, we can say that more than 85% of the .NET concepts are taken exactly from Java.
Java platform is a very powerful and stable language with a very wide collection of technologies utilizing the language. According to statistics stated at the JDC, java is now considered the number 1(C# as number 7!!). European SW industry is now heading towards using java especially at enterprise applications level.
Last but not least, java is an open source platform. The concept of open source applications will dominate within the next few years leaving no chance for closed source applications to exist, this concept ensures maximum efforts from providers to keep their products alive and also gaining money is ensured, but this is another topic which needs a whole article.
1.4 Summary
This article was a kind of seeing a small overview of java, in next articles we will get to talk about specific technologies of java hoping to really show the power of that platform
Advanced C++ part 6 : Advanced Memory Management part 2 : malloc and new, what’s the difference?
In the days of C, dynamic memory allocation was performed through the malloc() function. You just specify the number of bytes, and it returns a pointer to the allocated memory. If the memory allocation fails it will return NULL. malloc might not initialize the allocated memory.
As C++ introduced objects, there were different requirements for dynamic allocation. In old C, you usually allocate space for homogeneous arrays of the same primitive types. Even for arrays of structs, you would usually initialize them with default values, not values dependant a result of some sort of computations. In C++, constructors added the encapsulation of the initialization logic. malloc won’t call any constructors, it just allocates plain bytes.
Operator new, has more information that available to malloc. It knows the type. Which enables that operator to know the size of a single objects, thus releasing you from the burden of calculating how many bytes per object you need to allocate; you just use the number of objects you need. It also makes new able to call the constructor of that type on the newly allocated memory.
In malloc you’d have to check every pointer returned by it against NULL to know if the allocation have succeeded. But in new, it does throw an exception (you can make it return NULL instead)[1]. Example:
try{MyClass* m = new MyClass();}catch(bad_alloc x){// report an error}
or you can simply do the following to prevent exception being thrown:
MyClass* m = new (std::nothrow) MyClass();if(m == NULL)// report an error
[1]: Microsoft implementation of new doesn’t throw an exception as opposed to the standard. It does return NULL.
There is another thing you can do to handle failed allocations. There is a function that new calls when it fails to allocate. It’s type [2] is new_handler; which is defined as a function that takes no parameters and returns void. The default new_handler is the one that throws the bad_alloc exception. (Thus you can modify that behaviour). To set your new_handler as the one used, you can set_new_hanlder( your_new_handler ). This function returns the old new_handler. Your new_handler is expected to do one of 3 things:
- Call abort() or exit()
- Throw bad_alloc or a type inherited from it
- Make more memory available for allocation by some means
[2]: function pointer type
Operator new and delete automatically call the constructor and the destructor, respectively. We will talk in a forthcoming article about some variants where you must call the destructor yourself or where you can prevent new from automatically calling the constructor so you can call it manually as an optimization in case of very large arrays.
Note: we will take later about details of exceptions and namespaces, just take it now “as is” or read about it in some reference.
Next article in this sub-series isA will talk about overriding new and delete and the reasons why you might need that practically.
References:
http://h30097.www3.hp.com/cplus/new_handler_3c__std.htm
Oracle Technology Day
Join Us for an Oracle Technology Day Focusing on Oracle¿s Content Management Solutions
Agenda
9:00 Registration
10:00 Welcome and Introduction
10:05 Keynote: Managing Content in the Enterprise Database
11:00 Break
11:15 Technical Session 1:
12:15 Technical Session 2:
13:15 Wrap-up and Raffle
Microsoft extends life of Windows XP
Microsoft announced on Wednesday that it was extending technical support for home Windows XP operating systems, a signal that it was not abandoning them for Vista software launching next week.
The Redmond, Washington software giant said the “support life cycle” for Windows XP Home Edition and Windows XP Media Center Edition would be stretched to April 2009.
Similar support would be provided for users of Windows XP Professional, according to Microsoft.
Microsoft’s next-generation Vista operating system made its business debut in November and home-computer versions will be launched on January 30. Vista is Microsoft’s first revamped operating system in five years.
the sourse : http://www.dnaindia.com/report.asp?NewsID=1076264

