ACM Solution Manual


Today I received some questions from a student in Ahram Canadian University about ACM and how he can join and prepare himself so as a try to answer all these questions, I will write this blog in Q&A style. I hope that all these answers could help people trying to know more about ACM and problem solving in general.

I wrote before a blog about some resources that could help students looking to participate in problem solving contests like ACM, Top Coder and other programming contests so I will not repeat myself and you can check it of course before reading this blog.

So let’s start clip_image001

How could we initiate an ACM branch in our university?

Like other activities (IEEE, MSP Program, GSA Program), ACM has some rules that you need to follow until you would be able to initiate an ACM Student Chapter inside your university.

I guess you could contact with Eng. Mohamed Fouad as he is the one who could help you with this stuff as far as I know especially if you want the chapter to be an official one. However, let us say that having a chapter inside your university is a good step that would help you organize trainings and contests and raise the awareness of students of computer science and problem solving.

Should we initiate a branch inside university before being able to participate in ACM different Competitions?

I guess the answer here is NO. You can participate with any two students from the same university as long as you would be able to cover the cost of registration and transportation.

The coach can also be one of these three students.

To know more about ACM rules, check this website

How can I get the needed training to prepare myself for the competition?

Thanks to god, now many available resources should help you in your journey if you are interested in improving these skills.

1- Arabic Algorithm Series : As its creator describes it, it is “An Arabic Series in Algorithms and Data Structures from competitive programming perspective with emphasize over thinking skills.”

Dozens of videos have been prepared until now and there are more coming I guess.

2- Competitive Programming Book : In my opinion, this book covers all what you need to become a good problem solver. If we added it to the first resource, I think this would be enough at least for the start.

Download it from here if you could not buy it.

3- Offline Trainings: As I mentioned before you could organize a training inside your university if you have a branch. In addition, some trainings are usually held in universities that have branches and always participate in the different programming competitions like Alexandria, GUC and Cairo University. You should try to follow up and communicate with them to be able to attend.

When and where would the next competition be held?

I guess you can get this info through the official Facebook pages or from the official website of ACM ACPC


Ahmed Kamal


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