Computer science: it is not programming but problem solving

I have had the pleasure and the opportunity to do one of my favorite hobbies in the last two years, and that is teaching. I’ve had the opportunity to teach a number of different subjects in the field of computer science, from introductory courses to upper division courses, and I’ve seen a pattern among students that has been a puzzle to me, especially in upper division classes.

One of the main surprising facts that I have noticed is that most students have little to no hands-on experience in software development, especially in upper division classes. That is, they haven’t been given enough opportunity to do hands-on projects to improve and hone their programming skills in lower division classes, and when they take courses like Software Engineering, most of them don’t have the ability to create a system. fully functional from scratch.

Now I can understand if this is the first year for the student and they are just starting and getting to know their first computer language and all the tools and environments that are available to them. And it is also understandable that there are different levels of students with different levels of skills and motivation. But being in an upper division course and still uncomfortable with the basics scares me a little.

What I also noticed, and was honestly surprised, is that most students who are just starting out in the computer science curriculum have no idea what computer science is all about. Now, maybe this is an unfair statement, you can argue that they’re still unsure or undecided, but I think that’s not the case. If you are in a science or engineering curriculum then there are certain things that are critical for the student to know, such as a good foundation is math and physics.

Perhaps again, the issue is how we prepare our youth in their first years of life.

For example, as part of the computer science curriculum, students are required to take a Software Engineering course. I’m not going to discuss what software engineering is, but to illustrate, here’s a description from Wikipedia: Software engineering (SE) is the application of a systematic, disciplined, and quantifiable approach to the design, development, operation, and maintenance of software and the study of these approaches; that is, the application of engineering to software. The term software engineering first appeared at the 1968 NATO Software Engineering Conference and was meant to provoke thought about the perceived “software crisis” at the time. Software development, a widely used and more generic term, does not necessarily include the engineering paradigm.

In such a class, students are expected to have a good understanding of at least one programming language such as JAVA, C#, C++, etc., as well as a good understanding of Object Oriented Design and Methodology. In addition to programming skills, the student must have a good understanding of data structures and algorithms. Don’t forget, a program = data structures + algorithms! It would also help if students have knowledge of databases and etc…

These are just some of the technical skills they should have and keep sharp on a daily basis. The most important aspect of computing has nothing to do with JAVA or C# programming or anything like that. It has to do with the ability to ANALYZE and SOLVE PROBLEMS!

In my last class, I had created six different teams made up of three members each. Each group had the option of coming up with their own project to design and develop throughout the course, and if they couldn’t do it, I was going to assign them a project.

The students were very good at defining their own projects. We had a good variety of projects, from Hospital Management System to Hotel Management System, iPAD app for retail purchases and inventory, Android app for a simple 2D game, a Web Learning Management System and an app based on Windows that creates personalized MIMOS.

Now it was time to start the real deal! Let’s start designing our product!

Throughout the course, students were responsible for defining: the requirements and specifications, the design and implementation, and finally the testing and release (demo) of their software project.

What was amazing to me was that most of the students didn’t know where to start! Given a particular problem, how could one take it and dissect it into smaller parts in order to solve it in smaller pieces and arrive at final solutions by divide and conquer?

As mentioned, some teams did a very good job at each and every step, and others started weak and then increased their efforts and effectiveness throughout the course. As you can see, the projects themselves are somewhat complex for students, and all of them require knowledge of good user interface design, object-oriented design, database design, and for most, some form of communication! in network!

Some students didn’t even know programming and actually didn’t care much about spending the time to learn it! Relying mainly on their peers for the technical aspects of the project! Now, we shouldn’t expect all people to be gurus, but they should at least show some interest and have some self-motivation to learn on their own.

In general, most of the students in the class were very hard-working and really put a lot of time and effort into their respective projects. Most of them wanted to learn and be challenged. They simply lacked the proper skills that were necessary before taking this class.

There was a lot to do with the students in this particular class, and this put a lot of pressure on the students to push themselves and motivate themselves and have their own initiative. And that was exactly my goal not only in this class but in all of my classes. I want my students to push harder and think bigger and explore more areas and ideas because this is the only way to grow and be competitive later in their careers.

I myself am learning better ways and methods of lecturing and interacting with students with each passing term. I hope that the students are also making the necessary effort to expand their horizons not only during class, but also outside of the classroom!

Leave a Reply

Your email address will not be published. Required fields are marked *