Faculty of Science and Information Technology > Software Engineering

Multiple Programming Languages or Problem Solving

(1/7) > >>

motiur.swe:
First of all, I like to say that "Programming language is nothing just syntax and set of rules but logical thinking and problem solving capacity should be our goal."

I suggest my students who come to me for advice from career perspective (as I have industry experience),I suggest them to start with C from any book(hard copy not soft copy), not from online first. Cause from the beginning if students started searching from web then they will get confused. They can't set their start point like from where they should start.

So, my suggestion is to encourage students to develop logic using C from any good bangla book rather than internet. After successfully completion of book then they will start to solve problem from ad hoc to complex step by step.

From our department, we need to develop a lab facility where students can work to develop their skills under a proper guidance. Even also as the last meeting discussion, we need to ensure that all of the advisor encourages their students to develop logical thinking capacity using C.

I believe that who can develop their problem solving capacity using C, they can easily move any language when need cause programming language is just syntax. So, at first , need to develop problem solving mentality and capacity among the students which is most important part as a student of software engineering.

Want opinion from experts.

Thanks.

Dipto_Paul:
I just want to tell a short story. Once a friend of mine was learning C from a book. He quickly finished the first chapter and went to exercises. The first chapter doesn't cover anything of loop but tells the reader to print a pyramid. Without having any concept of loop he printed a star pyramid. One day he showed me his code :

printf("*");
printf("**");
printf("***");
printf("****");
printf("*****");

So it is also very important that the resources you follow are good enough to guide you and not send you on the wrong track.

motiur.swe:
@Dipto_Paul , great observation and your story also inspireable to new students. Please try to share your story and thoughts to your juniors so that they can get right way to start their journey as a student of software engineering.

Let's work for "Self Development" through sharing our thoughts to each other and help each other to take proper decision.

Dipto_Paul:
I think everyone has a favorite programming language, the one that he feels comfortable with. I always see posters workshop on this , training on that... The fact is that students practice those things only while the training/workshop is on as a result some months later they forget most of the things they learn. Had there been a club that deals with only one programming language like only C or only Java or only Python the students who were in that club would be on the run and could stay updated about it. I may be wrong but I as far as I know there is no such club.

If I open a workshop titled "Java For Beginners", only those people who have little or no knowledge of Java would join it. Who have done high level programming in Java would not go near it.

If I open a workshop titled "High Level Programming In Ruby" most people could not join it because it requires basic Ruby knowledge which they don't have.

But as club is not for a limited time like 1 month and not for any particular level of programmers like beginner or advanced, people of all levels who are passionate about it would join , teach and learn.

Razu_Ahmed:
Before I join the discussion I wanna say first three years should be fixed for problem-solving as a computer science student. I think I may answer this question although I started programming when I was in the first-year student. I think you know how much hard work is needed if you want to qualify for world finals or a googler. There are many strong teams/students from different universities. And they all practice very hard for this. Qualifying for world finals/code jam would be a dream come true for each contestant.
 
So let's make a plan for qualifying to world finals/code jam. In the very first year of study, one should learn the language in the first 2-3 months. You need to choose a language between C++ or python. I will recommend C++ as it is better suited for the programming contest. And make sure that your language skill is good by this time(i.e. you can code whatever you are thinking). After that, you are gonna need to finish the following works by the end of the first year.
Open account in UVa, Codeforces, LightOJ, Topcoder, SPOJ, and USACO.
Solve 200+ ad-hock problems in UVa.
Learn basic DP and solve some classical problems.
Learn to use stack, queue, priority queue, lists and solve problems with them.
Learn basic graph algorithms like DFS, BFS, Dijkstra, Floyd-Warshall, MST.
Solve some problems that require the greedy solution.
Learn basic number theories and geometry.
Solve 500+ problems overall.
Participate in national contests, codeforces and topcoder contests.
So that pretty much finishes the first year. There are also several topics I didn't mention(like sorting/searching), these are so basic topic and should be covered when solving the ad-hock problem. After this your rating should be blue in codeforces and green in topcoder(make this the achievement).
 
So for the second year, you are going to learn some advanced algorithms. We can make another list for it.
Advanced data structures, segment tree, and variations(solve at-least 50 problems on it), HLD(solve the QTREE's and you are good to go).
Solve some advanced DP problems. LightOJ has some great problems and they should be solved as much as possible,
Solve some hard problems on the graph.
Learn game theory, combinatorics, probability and pretty much cover every topic that is written on LightOJ problem categories.
Solve another 500+ problems in this year. Complete USACO training system. Do not waste your time-solving ad-hocks anymore. The problems should at-least be div2 C(on codeofrces scale) difficulty. And don't waste too many time-solving problems that are way out of hand. But thinking about hard problems is actually great.
Learn some advanced number theory and geometry topics and solve a lot of problem on these.
Try to attend every contest possible.
Get better at your coding skills.
After this year your rating would be blue in topcoder and purple in core forces. In national contests, you will get around 15-20 place.
 
For the third year, there is only one practice plan. Solve 1000+ problems. They all should div2 D difficulty. By this time you will learn to solve d1 D. Your rating should be orange in CF and yellow on TC. But the most important thing is solving(solve the problems after the contest excluding the stopper one). Solve past Dhaka regional and different onsite contests in Bangladesh. UVa has got a lot of it. You just need to search for them. Also, take part in USACO monthly contests. You will probably end up finishing top 10 in the national contest. If you are lucky you may even qualify for WF/code jam.
 
Dedicate the 4th year for more programming. Happy coding.

Navigation

[0] Message Index

[#] Next page

Go to full version