4
$\begingroup$

I'm a computer engineering student. I definitely have my strengths and weaknesses like any other student. And, I would like to improve upon areas that I'm either struggling in or completely missed in my fundamental intro courses.

This year I realized that there are few gaps in my knowledge specifically when it comes to programming. I understand most concepts, but sometimes I notice that I can't implement some concepts into code on my own.

This is due to gaps in my knowledge. There were couple times when teachers in my intro programming classes didn't have time to cover all the fundamental materials so they skipped content. I didn't realize how big of a problem this is, until now, when I'm in higher classes.

I'm still doing fine, but I'm scared this will grow into a bigger problem. I frankly have so much homework and studies and I can't dedicate time to go and start from zero again, especially because I know most things but missed on few important concepts. The problem is, I'm not exactly sure what all the concepts that I missed on are.

How can I fill the gaps in my knowledge in timely and efficient way? I would like to take your advice and study old content during winter break.

I learn better by practicing problems and reading books, and I don't learn well from coding websites. Are there any work books that I can buy and practice with, preferably workbooks that cover solutions so I can compare my answers?

In particular, I have troubles converting algorithms from the textbook to source code in C++ and Java. Sometimes I struggle in implementing data structures such as queues/and stacks into C/C++ or java. I understand iterative programming, and I need to improve my understanding of recursive and dynamic programming techniques.

$\endgroup$
14
  • 2
    $\begingroup$ I absolutely applaud your desire to fill in gaps in your knowledge before it all snowballs, but it's hard to even begin to give guidance without something to go on. Could you give us a hint about a thing that you've had trouble with? $\endgroup$
    – Ben I.
    Nov 5, 2017 at 4:34
  • $\begingroup$ I second Ben’s comment. Is there a particular language with which you have some facility? Are there things you have done with programming that you can build upon? More information as to what you can do will help us point you in the right direction. $\endgroup$
    – Peter
    Nov 5, 2017 at 4:37
  • $\begingroup$ Thank you for wanting to help me! I have troubles converting algorithms from the textbook to source code in C++ and Java. Sometimes I struggle in implementing data structures such as queues/and stacks into C/C++ or java. I understand iterative programming, and i need to improve my understanding of recursive and dynamic programming techniques. $\endgroup$
    – Farah
    Nov 5, 2017 at 6:04
  • 1
    $\begingroup$ With regards to programming, Java and especially C++ are hard languages to learn. And even harder to learn, when you are learning to program. Eiffel is a good language to learn Object Orientation.We had a question on here a short time ago about first languages. Another on books to read. I will but together some ideas when I get back. Can you tell us what your background is; What you have learnt so far; What you struggle with; what you are good at; what you enjoy. $\endgroup$ Nov 5, 2017 at 9:49
  • 1
    $\begingroup$ How did everything work out? Are you feeling better? $\endgroup$
    – Ben I.
    May 21, 2018 at 14:17

1 Answer 1

2
$\begingroup$

The obvious answer is to get a good textbook on Java data structures. Some are better than others and a few will mislead you. I find John Lewis to be trustworthy (and inexpensive as well).

What you are probably missing is the notion of encapsulation of things in classes and specification by interfaces, both essential to Java and specifically to your quest on algorithms. Some understanding of generics will also help you progress, but that is secondary to encapsulation and the idea of separating interface from implementation.

There are more advanced books on Algorithms, but the grounding, first, in building data structures and reaching the point where you can understand the java.util library is your current optimal path.

I would suggest using Java first, rather than C++ as it has fewer traps for the unwary. Java is built at a somewhat more abstract level than C++ and so provides a better way to think about higher level concepts.

$\endgroup$
2
  • $\begingroup$ Hey! I'll look into this textbook during winter break. I think I need to review what encapsulation is and how it's used in the java language. I hope that once i understand encapsulation, i'll be able to bridge the gaps in my knowledge and become a better student. Thank you for the help. $\endgroup$
    – Farah
    Nov 6, 2017 at 17:18
  • $\begingroup$ Do you know best DSA source in C++? $\endgroup$
    – Hamza
    Apr 1 at 7:16

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.