Difference Between Class and Struct


I think many of who are learning Programming have confusion about the difference between “Class” and “Struct” concepts in C#.

One of the great explainations can be found in MSDN Library and in this post content depend on it .

Classes and structs are two of the basic constructs of the common type system in the .NET Framework. Each is essentially a data structure that encapsulates a set of data and behaviors that belong together as a logical unit. The data and behaviors are the members of the class or struct, and they include its methods, properties, and events, and so on, as listed later in this topic.

A class or struct declaration is like a blueprint that is used to create instances or objects at run time. If you define a class or struct called Person, Person is the name of the type. If you declare and initialize a variable p of type Person, p is said to be an object or instance of Person. Multiple instances of the same Person type can be created, and each instance can have different values in its properties and fields.

A class is a reference type. When an object of the class is created, the variable to which the object is assigned holds only a reference to that memory. When the object reference is assigned to a new variable, the new variable refers to the original object. Changes made through one variable are reflected in the other variable because they both refer to the same data.

A struct is a value type. When a struct is created, the variable to which the struct is assigned holds the struct’s actual data. When the struct is assigned to a new variable, it is copied. The new variable and the original variable therefore contain two separate copies of the same data. Changes made to one copy do not affect the other copy.

In general, classes are used to model more complex behavior, or data that is intended to be modified after a class object is created. Structs are best suited for small data structures that contain primarily data that is not intended to be modified after the struct is created.


Best Wishes ,

Ahmed Kamal



How to register in ACM ?


1- One of the 3 team members will register the team from this link


2- Register an account for yourself and complete your own profile (this is important)

Area Of Study :In ex :  “Engineering”

Degree Pursued :In ex : ” Bachelor” 

3- Create a team and choose “The 2012 Egyptian Collegiate Programming Contest >  CAIRO”

3- Ask the other two members to create account  too and then you can add them to the team through “Add Team member”.

4- Assign team members to your team through searching for them using their names. Be sure that the e-mail of him/her is the same as the one he/she registered with to guarantee that he/she  is the right person.

5- Click on “Register Team” button.

6- Don’t forget to make sure that the registration of all the 3 member is completed.

Congratulation 🙂 You have registered your team successfully. Don’t forget to send me the names of the members of your team so I can finish you registration at a.abdelfatah@live.com  & your mail to contact you if there was any problem.


Best Wiches 🙂

Ahmed Kamal

Resources for ACM Competition


I was asked a lot of questions about how one can start learning how to prepare himself  to be able to participate in competitions like ACM. In fact I had the same question so I asked Ahmed Mohamed Kamel. as he was the student coach of the Egyptian team in IOI this year.

He said: “There are a lot of problems varying in difficulty from the very beginning (language newbies) to very advanced in algorithms and techniques.

1- To read articles I recommend wikipedia and TopCoder editorials, also Competitive Programming book (this book has everything about what you need). You can also benefit from our training site https://sites.google.com/site/acmaast/

2- To enter online contests and be ranked over the world, join TopCoder.com, Codeforces.com, uva.onlinejudge.org and spoj.pl and practice on their problems. There are thousands of problems there.

I asked him do I need to master data structure before start solving the problems but he answered saying”I think there is no need for advanced data structures at the moment.. Just learn the basics and solve!”

I hope all of you can benefit from this post. Thanks 🙂

Ahmed Kamal

ACM Competition


في البداية لو حبينا نسأل نفسنا يا تري ايه الفرق بين جوجل من 5 سنين و النهاردة ؟ فكر كدا شوية .. هل الفرق في الشكل او في لغة البرمجة اللي بيستخدموها ؟

طيب ايه اللي خلي جوجل سيرش يتطور بالطريقة اللي وصلها النهاردة دي و ايه اللي يمنع اي حد انه يقدر بسهولة يعمل محرك بحث اقوي منه.

السر في حاجة زي كدا هي الالجورزم اللي بيشتغل بيه البحث , كل فترة الناس اللي شغالة هناك بتحاول تطور الالجورزم دا لانه هو اقوي حاجة عندهم.

عشان كدا لما بندور علي الوظائف في شركات زي جوجل , مايكروسوفت , اي بي ام او غيرها بنلاقي انهم دايما بيدوروا علي مبرمج قوي في Algorithms لان الفرق ما بين الكود اللي بيكتبه حد محترف و الكود اللي بيبكتبه حد عادي بيعتمد علي النقطة دي تحديدا و الا تخيل كدا لو البحث بيتم بكفاءة بس بتستني اربع دقايق عشان النتيجة تطلع 🙂 .

طيب احنا بقا اخبارنا ايه في الموضوع دا 🙂 .. عموما هو مش احنا بس اللي كدا تقدر تقول ان كتير من المبرمجين للاسف معندهمش مهارة عالية في الالجوريزمز والرياضيات و عشان كدا مش سهل تلاقي عندنا محرك بحث او موقع زي فيس يوك او كدا لان الحاجات دي شغالة بالجوريزمات قوية جدا و محتاجة النوعية دي من المبرمجين.

في العالم كله الشركات دايما بتدور علي النوع دا من المبرمجين عشان كدا في مسابقات كتيير بتتعمل علي مستوي العالم بين الطلبة و غير الطلبة برضه عشان الناس تتنافس علي حل المشكلات البرمجية دي بحلول متميزة من ناحية السرعة و الكفاءة.

Google Code Jam


IEEE Extreme

في الحقيقة المسابقات دي مشهورة جدا و في فرق من جامعات مصرية بتشترك فيها باستمرار و بتوصل للمراحل النهائية فيها كمان.


كمان في منها مسابقات بتبقي عن طريق الانترنت من خلال مواقع زي


و اللي حتلاحظه من المسابقات دي ان الاوائل فيها من مصر بيبقوا شغالين في شركات كبيرة زي جوجل و مايكروسوفت و غيرها و منهم احمد علي (الاول علي مصر) اللي شغال حاليا في جوجل .

في الملف دا احمد علي و بيشرح برضه شوية عن احد المسابقات دي


احنا بقالنا فترة بنحاول ندخل الموضوع دا عندنا هنا في الكلية بس الدنيا حلوة طبعا 🙂 بس الحمد لله لقينا طريقة كويسة نقدر نشترك من خلالها بحيث نبدأ نجهز فرق تشارك في المسابقة و تاخد تدريبات و تطور مهاراتها عشان تنافس و كدا

احنا محتاجين من كل حد مهتم بالموضوع دا انه يشارك في المسابقة المحلية اللي بتبقي في مصر ان شاء الله

بس لازم علي الاقل يكون عارف برمجة بس مش شرط يكون متميز في الالجوريزمات

لو عايز تعرف اكتر عن المسابقة من خلال اللنك دا


و عشان تعرف القواعد بتاعتها من خلال


و لو عايز تشارك في المسابقة


الناس لازم تسجل علي الاقصي قبل يوم السبت و الاسبقية للي يسجل الاول طبعا

  • محدش يقلق من معاد التسجيل المكتوب او معاد المسابقة لانه اتعدل برضه
  • يا ريت كل البيانات تكون كاملة  و كمان تبعت اميل بعد ما تسجل باسماء التيم علي a.abdelfatah@live.com
  • كل فريق بيبقي حوالي 3 من الطلبة و بيبقي فيه كوتش سواء واحد من التلاتة دول او حد من برا
  •  Coach دا ممكن يكون طالب عادي جدا فياريت اي حد من الفريق يبقي  Coach
  • هو ملوش مميزات الا انه بينظم موضوع الاتصالات و كدا Coach
  • الفرق اللي حتسجل في المرحلة دي هي اللي حنشتغل معاها في الفترة الجاية ان شاء الله

الاسئلة :

انا حضيف الاسئلة اللي حتوصلني و ححاول اجاوب عليها هنا

1- انا اللي حختار الفريق بتاعي و لا هما اللي حيختارونا ؟

لا في البداية بس احنا بنختار بعض بس بعد كدا الموضوع حيبقي فيه مسابقة و كدا و نختار الافضل فقط

2- ايه اللي حيحصل بعد ما نسجل ؟

احنا حنحاول نوفر سيشن او اكتر قبل المسابقة المحلية لانها قريبة جدا بس بعد ما تخلص حيبقي في تدريب اكبر للناس دي عشان يستعدوا للمسابقات اللي بعد كدا و حيبقي في تصفيات ما بينهم و هكذا

3- ازاي ممكن اسجل ؟

البوست دا حيشرحلك كل حاجة بالتفصيل  https://a7medkamal.wordpress.com/2012/10/18/how-to-register-in-acm/

4- ايه لغات البرمجة اللي ممكن نستخدمها ؟

انت قدامك 3 اختيارات سي بلس بلس او جافا او سي

5- هي المسابقة دي تبع مين ؟

هو عامة الموضوع مش متعلق بمسابقة معينة ان شاء الله بس دي اقوي واحدة موجودة

ACM is like IEEE .. it is an worldwide organization
competition sponsered by IBM

6- هل ينفع يكون اي اعضاء الفريق (3 اعضاء) من خارج جامعة طنطا ؟

لا للاسف بالنسية لينا مش ينفع بس هو ممكن يشوف ايه النظام في جامعته

7- انا عايز اشوف اسئلة شبه الاسئلة اللي بتبقي في المسابقة اعمل ايه ؟

اسئلة ACM مشهورة و موجود علي الانترنت الاسئلة الخاصة بالسنين اللي فاتت كمان تجرب تشوف موقع زي TopCoder او UVA

لو عندك اي استفسارات ممكن تبعتها علي a.abdelfatah@live.com