Jump to content
xisto Community
Jose Manuel

Teaching Computer Sciences Experiences on how to teach Computer Sciences

Recommended Posts

Hi there, I'm a professor at the University. I would like to open a thread about this topic: New Experiences and Methodologies to teach Computer Sciences. I am professor of several courses: Digital Systems, Computer Architecture, Assembler Languages and CPUs, Real-Time OS, and Parallel and Distributed Systems. I feel that my students are not very pleased with these subjects because they feel "they are not about programming", and sometimes it is very hard to involve students in the teaching, thus I would like ideas on how to teach those courses (or others, I don't mind, I will try to "translate" those suggestions to my field of interest). I would like you all share with me how to make my courses to be more attractive to my students, obviously, without reducing the amount and quality of the learning of the topics of these courses.I have used "Moodle" system (not sure if you have used it), it is "somewhat" like a Wiki, but highly oriented to the teaching community. However, I feel it is just like modernize the old way of "sticking notes on the bulletin board"... and sometimes it means a lot of work (for me) for a very small prize...Suggestions? Learning experiences?PS: By the way, I am Spanish. I would be very pleased to share learning experiences with other countries' University systems.

Share this post


Link to post
Share on other sites

I am currently studying Computer Science at the University of New Brunswick (in Canada). While I'm currently out on a co-op work term, I'll be returning shortly to my courses and you've got me thinking about whichc courses I enjoyed and why (not necessarily the material, workload, or professor, but just the way the class was handled). I haven't taken courses yet in all the areas you mentioned but it shouldn't matter since my suggestion is really one that can be applied to any range of topics.Personally, I feel the courses I enjoy the most are the ones where I can actually see the outcome of the lessons I've learned. Many courses tech the students a variety of skills which they use on small, specifically designed tasks to showcase the skill, and then maybe use it again for a test or final. To me this is not the best way since I don't see how it fits into the larger picture. I have always preferred courses where they bring everything together in the end or at least show how each part adds to the "big picture".For example, I took a software organization course (Take software from an idea->plan->design->implement) and instead of simply taking on each part of this task, the professor had us take a clients request (an explanation about requirements of a chess game, in this case) and proceed through each step of the process. As the classes taught us tghe theory we performed the tasks and had the process broken down into markable deliverables. Then in the end, not only had we learned everything about the process of dealing with a client and producing the product they wanted, but also had the ACTUAL design documents and final product that we could look back on.That's obviously just one example, but I guess my point is that for me, any time I can see how I could use the skills in the future makes it seem more relevant. When I was taking an intro assembler course everything seemed to be so abstract... but when we got to actually wire logic paths on a circuit board and trasnfer our programs into HC11 processor and see our results it just felt more 'real'. As well, our professor often gave real world examples of where such things could be used (such as in the processors in small robots they had on hand to show us).Personally I still enjoy most CS work whether it seems programming related or not, but I do know some people who only like the programming aspects of CS. For these people I think any way that can relate these topics to the final goal/product would help them appreciate it more. Also, explaining how the concepts relate to programming differences and things such as that.I don't know if this will be helpful or useable to you, or even if many other people would agree that this would make the courses more appealing... but its something to think about at least :( Good luck, I'm glad to see a professor taking an interest in making his courses a more enjoyable experience for his students.

Share this post


Link to post
Share on other sites

Humm, I see...I asked this same question to some of my students, and many of them agreed with your comment. They prefer the courses that have a connection to the "real world", or at least with something they would work in the future (for example, robots as you said). And that's quite easy in optional/specialized courses, but I just cannot guess how to do that in basic courses. For example, Digital Systems is a subject taught in the first year of CS degree. It is about logical operators, how to mixed them in order to produce logical systems, then how to produce arithmetical systems, etc. I can see the progression of it and how tools are shown to produce bigger and more complex systems. These systems are actually the ones we have inside our CPUs (connection to the real world)! However, my students do not "see" that approach at the beginning (most of them just quit the course when I am teaching Karnaugh maps to produce logical expressions! That's taught during the 2nd week!!!) and, thus, they don't follow the course.Well, I must say in Spain we have OVERCROWED classrooms. Last term, I taught in a classroom with 160 students! I think with just 20 students I would be able to make it much more comfortable and friendly, and probably I could follow whether the lessons are being interesting or not.

Share this post


Link to post
Share on other sites

Ah yea, larger classes make the more abstract ideas a bit harder to enjoy. I know my intro to karnaugh maps was somewhere in between (about 80 students) but we had smaller lab groups (about 20) that helped alot. For the example of logical systems we got to use actual physical chips that were AND, OR, NOR, etc gates to create paths and could then create adders and whatnot that lit up LED's based on our input choices. It's nothing amazing, but it showed us how, say, old calculators could have been set up to handle basic mathematical equations.I do agree though that ALOT of the more abstract things would be hard to show real world connections with. Sometimes you just need abstract ideas to make a foundation before you can move onto the more concrete concepts :(Oh, and don't worry about people dropping your course early on heh, almost all my courses (CS and non CS) have a dramatic drop in students throughout the first 3 weeks or so usually. Some students are just too picky :(

Share this post


Link to post
Share on other sites

OK. I have neither been a student of Computer Science, nor a full blown teacher in the Subject. But I have had some parallel experiences on the topic. Firstly, I was a student of Electronics And Communication, and that involved a lot of subjects that Jose mentioned: Digital Systems, Assembly Languages (8086/88 series, and 8051), and Computer Architecture. The other topics, I have studied on my own interest. Now, as for teaching experience, I cannot say it was a full time effort. But I did take classes on 'Programming in C' to a handful of students.This I say, to put whatever I say in the right perspective.Now, here is what has inspired me to study more and also have seen in most of the students that I have taught. It is to make them see the details and the big picture in the same period of one class. One of my students asked how one particular function worked in C language. I explained him the the basics of compiler construction, and the resulting machine code. Leading the chain of his reasoning, I further explained him, how the machine codes triggered the gates in the digital circuits of the Arithmetic and Logic Unit. Then, on explanation of how transistors were used to make those gates, and how the electrons acted in those transistors, he was awed by the details of everything and also how it all summed up to give a C language function that most of us take for granted. It is this inspiration and sense of awe that we need to kindle - once I did that in the student, it was a breeze to teach them the rest of the language. I could teach them all of the course syllabus, and they even ventured to the advanced topics.I know, what I stated above has not been written to tell the principle, but I cannot quite place it. So, I have given what happened as I had been teaching to those students. I think, as a teacher, it becomes our responsibility to create the sense of awe and the hunger for more in the students. Then, we just need to get the horse to the pond - the horse drinks at its own will.

Share this post


Link to post
Share on other sites

Don't worry about students dropping off from those beginning classes. Like jeigh said, it always happened. If those students are interested in Computer Science, then I guess they have to take those courses anyway. Those courses are mandatory, right? I'm not a graduate from Spain.I would agree with Jeight about linking what students are learning to real world problems. Otherwise, there is no interest whatsoever in the subject being taught. And if a student is not aiming solely for A but a good grade would do, such as B+, then there isn't going to be much enthusiasm on the part of the student.Of course, as mentioned in earlier posts, it is hard to make a connection to the real world problems in introductory courses. My view on this is that a CS degree teaches much more stuff than what a student might be interested in. If a student just like software application programming, those hardware stuff would quite likely bored him/her. It definitely bores me. Hehe.... :(So, i guess the approach that I would suggest is to talk to a few former students of the course, possibly those with better grades. Ask them what they like in the course, their dislikes and more importantly, what approach they would like to be introduced. It would be good to do this face to face. My experience tells me that A students get their A's because they are more determined/disciplined. If they found some parts ultra boring or need better explanation/connection, then i would say quite a lot of students would feel the same too.

Share this post


Link to post
Share on other sites

Don't worry about students dropping off from those beginning classes. Like jeigh said, it always happened. If those students are interested in Computer Science, then I guess they have to take those courses anyway. Those courses are mandatory, right? I'm not a graduate from Spain.


Some courses are mandatory, others are optional. Even the courses are mandatory, I do not check whether the students come or not, I don't like to feel that I am a jailer!!! If the students feel they don't need me to teach them, they don't need to come to my lessons. I will check if they have acquired the mandatory topics of the subject in the final tests/examinations/etc.

Of course, as mentioned in earlier posts, it is hard to make a connection to the real world problems in introductory courses. My view on this is that a CS degree teaches much more stuff than what a student might be interested in. If a student just like software application programming, those hardware stuff would quite likely bored him/her. It definitely bores me. Hehe.... :(


Well, that's an interesting point of view, but I think it is a bit narrow-minded... because no one knows in which job/company would you work in the future. Just let me explain my experience, during my CS I tried to get specialization in AI. When I finished my grade, I bI liked egan to work in a programming company and I noticed that I don't like so much programming as I supposed. I started my Ph.D. and they suggested me to do it in Computer Architecture Department, and now I like these topics very much, who would have told me this when I was a student! :-D

So, i guess the approach that I would suggest is to talk to a few former students of the course, possibly those with better grades. Ask them what they like in the course, their dislikes and more importantly, what approach they would like to be introduced. It would be good to do this face to face. My experience tells me that A students get their A's because they are more determined/disciplined. If they found some parts ultra boring or need better explanation/connection, then i would say quite a lot of students would feel the same too.


Humm, nice idea! I will ask some students about those points you mention... THANKS! :-)

Share this post


Link to post
Share on other sites

Hi again, now I ask you about final examinations...I started as a professor almost 7 years ago... I began with practices in computer lab. We did simulations on digital circuits and things like that. Usually, we proposed from 7 to 9 different practices to our 160 students. I admitted the practices to be done by groups upto three persons. Obviously, the aggroupation reduced the total amount of practices to be check to 1/3 (that's about 50 groups x 8 practices = 400 documents/simulations!!!!) That was almost impossible to follow and after one year I noticed when the "difficult" practices started, there were just 10 diferent ones, all of the rest were simple copies!!! And even, some students told me that they have too many practices for every subject in the course... In 1st course, they usually take 14 subjects...Then one year I decided to make a final examination... students could go to the lessons or not, I didn't check their presence. At the end of the semester they were asked to make a digital design and a simulation on the computer within 2:30 hours. People who were able to solve the problem, pass the lab practices. Just one day for me, and much more free time along the semester for them to take other subjects and distribute properly their time.As an experience and conclusion, the amount of people who passes the lab practices before the examination dropped drastically (before, 80% passes; after the examination dropped to 20%) But I think it is worth... for me and also for the students.Sometimes, the best solution is a "traditional" examination instead of works, documents, etc. What do you think?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

Terms of Use | Privacy Policy | Guidelines | We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.