Showing posts with label FCIS. Show all posts
Showing posts with label FCIS. Show all posts

Wednesday, August 29, 2012

Notes on my first -official- teaching experience

السلام عليكم و رحمة الله

March to June, I taught a course lab that I used to hate when I was a student in FCIS :D Well, this has changed after becoming a teaching assistant in it. I was assigned to Computer Graphics course, although I didn't choose to, but it was a good experience after all.
It wasn't my first teaching experience ever, as I used to give some voluntary math lessons to primary years students 3 years ago..

There are some aspects of my teaching experience I'd like to talk about, but before I start on that, let me say that I was extremely lucky to get some of the very unmotivated students on earth in this class :( and it's not a pleasant experience to teach a class where half of the students don't even wish to know whatever I blabber about!
We asked them to regularly fill and submit a feedback form about the sections we give, to help us evaluate how they perceive the lab materials, practical part and assignments, etc.. and also to see if they have any comments or suggestions about the TAs or the course in general. Responses were sent individually to the TA the students chooses in the form.
Believe me when I say that I only got about 10 responses in the whole 3 months of the semester! other TAs got similar small number of feedback entries too..
So how can I evaluate my work and improve it if students aren't helping me with their opinions and feedback?
Finally, I found out that they don't care to evaluate because they believe that it's a useless thing, and no one will read what they'll write anyway.. and this's what I literally call negativism! .. However, I believe that it's not their fault if they were raised in the past 19 years of their life on being negative.. It's a cumulative issue anyway.

Before the semester begins I was happy that I'm getting to do what I really like, I'm finally able to pass my knowledge to others. I remember a sentence I read long ago on my school walls saying:
"إن الله و ملائكته ليصلون على معلم الناس الخير"
and since then I wanted to be a teacher, to spread knowledge, and take this thawab :)
The experienced friends told me that this enthusiasm will vanish when I start into actual work, they said that one begins with some high expectations and hopes, and end up hating everything in the whole country :D
Well, they were partially right, I ended the semester hating just FCIS :D maybe hating the country will be the next level, which I wish I never reach.

Teaching was very very time consuming. The experienced people again told me that this will be so for the first few years (years? really? :D) In the beginning I took almost 5 to 6 hours to prepare one section. Although all materials were set a year ago but I spent most of the time reading the textbook and preparing how I should present the material, and deciding if I can make a slight change to it so it could be more interesting to students. Noran and Sara (two of those experienced friends :D) helped by a lot of nice illustrative ideas.

During the semester, I used to take notes about some observations and notices, and I learned a lot from doing this. I'd like to post them here so they can help anyone else:
  • The types of questions students asked (if they rarely did!) could be divided into 2 types. Type #1: very naive questions which can often be answer with "read the problem statement :huh", and type #2 are any other questions not in type #1 :D which can be answered happily.
  • When a student asks a question in the online group, they want the answer to be provided by a TA, if it's by another student then it's not a "good" and "trusted" answer. I tried to tell them more than one time that this's a wrong idea; knowledge isn't exclusive to TAs only, and judging the validity of information can be done by searching among many sources, and rejecting other students' answers may decrease the spirit of competition between them, which is not good at all.
    I remember that my class used to ask and answer A LOT, the question zone in each course was reaching 200 pages sometimes.
  • Students get annoyed when they're told to search for an additional point by themselves. I noticed this on their faces during the section whenever I mention the "this is a side topic, you can Google it" thing, and I once got a feedback point saying something similar to: "Please if you have info to say, say it, otherwise mat3a2adinash" !
  • Sometimes (well, a lot of times) I got that type of questions where they want the answer to be "send me ur code and I'll fix the problem for you!". I guess this's related to the previous point, *searching for the bug and fixing it by myself is not my job as a student*!
  • I don't know whether this is a normal thing or not, but I can see that 90% of the class uses a totally informal language in their questions and e-mails, they even use an incomprehensible version of franco :D I remember that I never dared to e-mail a teacher in franco!
  • Facebook groups are the worst way to communicate with students. I have witnessed the most perfect misuse of FB groups ever.
    My advise: never create one to communicate with your students, you can use Google groups, or any other forum or so.
  • I found out that the seeking for an answer process was as follows:
    1. post the question on the FB group
    2.  If you get no answer from a TA, then mention all the TAs in a comment.
    4. If a friend answers you, go to 2.
    3. If you still get no answer, send them personal messages.
    4. If they disabled accepting messages, finally think of e-mailing them!
    //and I get 100+ daily notifications for mostly useless stuff :S
Finally, I'd like to mention some mess ups while teaching and lessons I learned for the next time. Here I'd like to thank my students for being tolerant (or careless? :]).
There was a section I messed up real bad (lighting and light sources). The good thing about teaching a course, as opposed to giving a talk, is that you always get another chance. You get the next section to undo your mistakes. The mess ups were mainly because there were times during the semester when some other issues cropped up and I couldn't give enough time to preparing.
The lessons I learned are: make full notes of the section before going in for teaching. For students, discuss with them the entire course map well before the course begins. Be ready to accept your mistakes while teaching.

Read this quote which fits exactly in this context:
"One of the big misapprehensions about science that we perpetrate in our classrooms is that the teacher always seems to know the answer to any problem that is discussed. This gives students the idea that there
is a book somewhere with all the right answers to all of the interesting questions, and that teachers know those answers. And if one could get hold of the book, one would have everything settled. That’s so unlike the true nature of science."
--Leon Henkin

Monday, September 12, 2011

To FCIS'12, Concerning Graduation Projects

السلام عليكم و رحمة الله

A year ago I was there, searching for an idea for the graduation project. I remember that our team was the best team on earth to prepare long lists of GP ideas and topics to search for, but worst one to choose a single idea from them!
The million-ideas-list we made was full of repeated topics like speech recognition, OCR, some mobile applications, some killed-in-research computer vision ideas, ...
I won't list them here, and if you want to take a look you can contact me to send them.

I was VERY interested in only 2 ideas: an online IDE, and something like Teddy (discussed later).
If I was the only member in my team, I would have worked on the Teddy one, that's why it's important to choose team members who have common interests with you.

Before I talk about Teddy, you may want to take a look here, and here, for some useful points, or see this if you want your project to be part of a bigger theme or topic. This post also contains some useful advices.

Now, what is Teddy?
Teddy is a sketch-based 3D modeling software. You can make interesting 3D models just by drawing freeform strokes. See this video demonstrating the idea, or try its applet on your browser.
A newer version of Teddy is SmoothTeddy which added texture painting feature and smoother surfaces construction instead of rough meshes constructed by its ancestor Teddy.

Interesting, right? :)
If you found yourself interested in working on a project similar to Teddy or SmoothTeddy, let me know please.

Wednesday, July 27, 2011

Scientific Computing Department (2/2)

السلام عليكم و رحمة الله 

and here's part 2 of that post, where I'll talk about second term in SC.

Second term courses:

1. Computational Geometry
One of my favorites. The course book was an amaaaazing one.
It talks about some Geometry algorithms and how to implement them, like lines intersections detection, polygon triangulation, Voronoi diagrams, space partitioning, ... etc.
Practical part was the most interesting thing. Here's the package we made at the end of the course.
Mid term exam was optional, the doctor left it up to us to choose whether to take a written exam or to pick a topic from the book and explain it to other students in the department. If they understand what you'll teach them, you take the marks, otherwise, you take nothing :D
Final exam was very easy and -surprisingly- doesn't depend on how much you memorize! سبحان الله !! it was the second time for me to see such an exam in FCIS, after the Data Structures exam.

2. Environmental and Global Changes
I didn't realize how exactly should this course be useful for us until we had reached the mid-terms. At the first weeks, we were solving some equations that model how population increases,  energy balance, and some other environmental topics..
At the end, we were able to model some water pollution problems.. and that wasn't interesting..
Exams were very expected, and the practical part was almost nothing! some Matlab tasks..


3. Distributed Computing
It was supposed to be a distributed computing course, but we ended up with a very weak networks course :S anyway its practical part was the only useful thing. Some MPI, openMP and openCL tasks. It was like an extension to the HPC course of the first term..


4. Theory of Computation
It was all about "prove the proven" :D
I was waiting for this course since I was in the second year! I found a book talking about theory of computations in my brother's stuff and read some chapters in it. In the fourth year, it wasn't as I expected it to be, and that was disappointing for me. Anyway I'm happy that I passed its exam at least..
Practical part was somehow interesting. We implemented a universal Turing machine.
Theory of Computations is a common course between SC and CS.


5. ITI Selected Topic
Mine was Microsoft CRM. I didn't choose it by my own will :D so I didn't like it at all, and considered it as a waste of time..
I think next year they should use a better way to assign students to tracks..


Those were second term courses, I hope these 2 parts summary would help new comers to SC إن شاء الله, or help new 4th year students in deciding for the department.  

Tuesday, July 12, 2011

Computational Geometry Package

السلام عليكم و رحمة الله

In the Computational Geometry course, we were required to deliver a package containing some algorithms implementations, like:
- Line intersections tester, with the naive way and sweep line algorithms:

- Convex polygon constructor, also with naive and Graham Hull algorithms:

- Polygon triangulation algorithm:
I liked this one a lot, I made it in the package delivery day morning :D me and Eman used to draw some polygons on my laptop for tracing :D


- and finally, the DCEL (Doubly Connected Edge List) data structure.
I built the data structure itself, tested its functions, and didn't know what to do with it :D so delivered it as it is! 

You can try them from here.

Saturday, July 9, 2011

Scientific Computing Department (1/2)

السلام عليكم و رحمة الله

As an SC graduate, it's time to share what I've learnt from SC, so the new comers to this department can know more about it..
First, I want to mention that we were 27 students in this department, about 12 of us chose it to be their first choice (including me :D)

It's a good thing to be in a small department, we used to study together, help each other, take some decisions regarding cancelling a lecture or an exam (6) :D, anyone understands anything can explain it to others, I felt like it was a small family..

Why SC?
For me, because of Visualization, Mathematical Programming, and Geometry. These courses are SC exclusive.

About first term courses:

1. Scientific Visualization
Was one of the courses I enjoyed studying. It was mainly about how to convert some numeric data to visual scenes so it can be easily understood, and assign colors to some types of data. Like coloring the hot areas in a plane's 3D model with red, and cold areas with blue..
It's practical part is to make a package able to building mesh models from data files and color the model according to the color map you'll make.
Here is a sample of what the package should do :)
The instructor was good, and his final exam was very easy, some MCQ and T/F questions! I remember he gave us some topics to search for and discuss the results with him instead of having a mid-term exam :D

2. High Performance Computing - known as HPC
Dr. Hossam Faheem's course :D the very special course in FCIS :D special in everything .. lectures, concepts, exams, labs, ... everything :D
This course talks about some parallel computing techniques and how to run your code on more than 1 processor in a parallel way.. 
It's practical part was about MPI and openMP, and our final task was to deliver some programs able to make parallel matrix multiplication and parallel LCS finding problem using MPI and openMP..
The final exam was an open-everything exam :D use whatever you can use: books, papers, lecture notes, Google, Wikipedia, ... and the most important thing: your brain :D and start thinking of different ways to solve the questions. 
HPC was a common course between SC and CSys.

3. Mathematical Programming
Do you know Dijkstra, Max-flow,  graph coloring, and connected components algorithms, and some other graph algorithms? then you can enter mathematical programming final exam and have high marks without much studying :D
I didn't like our instructor's lectures, but the practical part was very interesting.
Here's my Graph Editor, the final package for this course.

4. Finite Element Methods
Solve differential equations until death :D 
It's a veryyyy easy course -from my point of view- although I didn't enjoy it a lot, but I liked the different methods used to solve mathematical problems..
No practical for this course. 

5. Simulation and Modelling
Common between SC and CS, talks about how to simulate some real life processes to be able to take some decisions according to the simulation results. Example: Simulate how customers arrive to a barber's shop and how long will they wait in a queue to be served, then decide weather to increase the number of barbers or not ..
It's practical part is to deliver some programs able to simulate some real systems, like banks, supermarkets, etc... and take some decisions to save resources and increase profit..
The instructor was excellent, and so was the mid-term and final exams :D

That was our first term courses in SC. Will talk about second term later إن شاء الله :)