Wednesday, February 15, 2012

Just a note that I am abandoning this blog and from now on , I will only have my posts on


Monday, February 22, 2010

This was a good meeting!

Today I was on the #seneca-oop344 channel on freenode and noticed Code junkies team having a meeting so I sat and watched. I was amazed to see how nicely this group managed an IRC meeting and used the SVN repository to work on their project concurrently and debug their code.

Few weeks ago these students had no idea what IRC or a code repository is but now take a look:

Good job!

Other OOP344 teams should take a look and follow....

Friday, February 19, 2010

I have a problem with eclipse

I want to use eclipse (C/C++) on Fedora for my OOP344 introduction to open source class and I have a problem preventing me to do so.

The project we are doing is a multi platform text editor in text mode and I need to run and debug the program in a shell window of its own.

In windows, Visual Studio, that is exactly what is happening. I can run and debug the program and walk through each line while the text editor is running in a separate text window. Like this I can demonstrate the execution steps for the students.
In eclipse however, the output of the program is redirected into a console tab within the IDE!!!
That completely ruins the purpose of using an IDE to show the students how the program is running. Of course I can build the project then run the program from a shell window, but then what is the difference between eclipse and a syntax highlighting text editor?

Does anyone know how to have eclipse run the program in a separate shell of its own?

Feedback is greatly appreciated...

Tuesday, February 9, 2010

OOP344 - Object Oriented Programing Using C++ and an introduction to Open Source

First semester of trying open source on OOP344 is passed with some interesting results;

By changing the subject to an open source format;
  • Students Understood the material better and could get help much easier by having the concept of collaboration as one of the bases of their work.
  • I covered the material much faster but also did it more effectively so I actually had a week of extra time to review and re-touch the complex aspects of C++ language and OOP.
  • Students not only learnt what they were supposed to, with respect to object orientation and complex programming, but also learnt how to do this in groups using open source concepts and effectively boost each other's strengths and make up for each other's weaknesses.
  • Students became aware of "Open Source" !!!
  • Students lost the fear of getting involve in programs with huge source code.
Future results:
  • I am hoping that this will attract the students, to pick our (Seneca) Open Source subjects in future.
  • Lots of time will be saved in open source subjects in future, by skipping lectures about IRC, wiki, code repositories, and other open source collaborative tools.

I only had one problem; I did not have enough time to make the students comfortable with the "unusualness" of open source and just as they became used to the idea, the semester was over.
By "unusualness" of open source, I mean to reward sharing instead of penalizing it, to learn to work in a community rather than behind closed doors and to gain by giving.

To overcome the lack of time, this semester, I started the open concept from the very first day; I started the use of wiki, blogging, IRC, and code repositories from day one.

I am hoping that by doing this, by the time we get to complex coding, (in mid semester) the students can think about how to code rather than how to commit the code to svn!

This, (introduction to open source) I hope, will pave the way for the student to participate more easily in real open source subjects and communities in Seneca like, Mozilla, Fedora, etc...

Saturday, November 7, 2009

What should I #include, where do I #include, not to have circular include error

Well, I was talking to Carl about what to include in my code and where to include them, not to have circular includes in my code, and I thought this could be useful to others too:

There are two things you should consider when you have lots of classes and header files in you project;
1- in header files, try not to include other header files, instead try forward declaration, or better to say, first use forward declaration, if not possible, use include.
2 - do all necessary includes in your ".C" and ".CPP" files instead.

How to "know" if you can use forward declaration? The answer is easy;
If all you have in your class header file, are references and pointers to a class, then only use forward declaration for that class.
On the other hand, if an instance of a class is created in the header file, or if you are inheriting a class from another, then the class header file must be included. To prevent this, try passing object by reference and pointers as much as possible...

For more detail, check the IRC conversation logs between me (fardad) and [Carl89] from [14:54] to [15:05] here , and also Carl's blog on this.

Friday, November 6, 2009

The New OOP344 - Intro to Open Source continued!

As I mentioned in my last blog about this, (to attract and familiarize students to open source subjects in Seneca) I converted one of the prerequisite courses of these subject to a semi-open source format. The prerequisite course is OOP344. I did not change or remove any of the content. I just changed the tools and mothods of the student activity. I am using SVN, for assignment development in groups, Wiki for documentation, IRC for student help and blogs + wiki + IRC for student participation. The result isthe new OOP344.

What I intended was to keep the first part of the semester "closed", so students write few libraries by themselves and then use it for the second part in open format. But to my surprise, even though the fist assignment was "closed", students started helping each other to understand the concept and do their work.

I also, gave challenges in class and asked the students to blog the answer. The reward was marks for first two solutions and first two most efficient solutions.

Students started to actively blog about their work, and more to that, they took each others work and perfected it and made it their own.

So far, it has been an amazing experience. The opensource part of the semester is just started and students are diving into coding and finding themselves in a project in much larger scale than they ever encountered.

I am hoping this works to both students and open source subjects benefit in Seneca.

Our IRC channels are #seneca and #seneca-oop344 on freenode server

Monday, October 5, 2009

OOP344 tester program V 0.9 for assignment one is released

Just letting all OOP344 students know that as1test.c is released.
It is 0.9 release. Few of the tests for io_edit() is not implemented yet, but you can start testing your functions while I am implementing the rest of the tests.

Since this is not the final release there may be bugs. If you find any, I'll appreciate if you blog about it here and also send an email to me. (But if you find a bug, make sure it is a bug and not a problem with your assignment)

Happy testing :)