For many students ICS 211 is a challenging course. Getting a B or better (not a B-) is a prerequisite for taking ICS 311. The course is not graded on a curve, so students really need to know the material in order to do well in the course.
There are two major ways of doing well in ICS 211. One is if ICS 211 helps you develop enthusiasm for the subject matter of computer science. This enthusiasm may lead to a desire to learn more, and to sufficient motivation that the work becomes fun. This is the most desirable outcome in every way, and very frequently, people who are enthusiastic about the material end up doing very well. If you enjoy programming, you will program in your free time, you will program to solve actual problems you have or to write games you and your friends might enjoy, and you will learn what you need to learn. Any way you can motivate yourself to learn and practice will help you. Grades can be helpful motivators, but they are not nearly as wonderful as just enjoying what you do.
Many students do not develop such enthusiasm. If you are such a student, it is important to focus your efforts where they will do you the most good.
For earning a good grade, the part of the material that is most challenging for many students is proficiency in Java programming. The assignments are designed to help you develop that proficiency, but ultimately you are responsible for doing whatever it takes to really internalize the skill of programming. For example, the exams will ask you to write programs that you might have never written before, based only on a description of what the program should do. You will be required to do this within a limited time. Students at a university are considered adults, and it is your responsibility to make sure you have mastered the material at a sufficient level to do what is required.
On the other hand, simply being a good programmer is not sufficient for this course. The course includes many concepts, ideas, and algorithms, from stacks to many sorting algorithms, and these are also necessary for doing well in the course. The lectures, labs, and textbook are the primary reference for all this material, but you should consult the instructor and the TA if that would be helpful.
Some simple techniques can make the material much more accessible. Chief among them is to read the textbook before coming to class. Then take notes in class (you may write in the textbook if that is helpful), then, if necessary, re-read the textbook and your notes after class, and certainly in preparation for the exam. As soon as you can, do the self-check exercises and the review at the end of each chapter, and follow up on those items where you have come up short.
You definitely need to study for the exams, and you need to study well in advance. You must have mastered the material by the time the exam rolls around. This is hard to accomplish at the last minute, so again, studying the material in the textbook before coming to class is very helpful.
If you feel so inclined, I encourage you to participate in class. Ask questions. I am human and I make mistakes, and when I do, I appreciate being corrected. So please do! Or ask out loud the question that you do not know how to answer, it is likely that the person sitting next to you has the same question.
I do not read minds, so if you are lost, I may or may not know it. But surely you do, so if you can, do let me know. The simplest thing you can ask me to do is to repeat what I just said, in case you missed it or it went by too fast.
I welcome feedback in many ways, and especially for these suggestions. Please let me know if you have any other thoughts on how students can better learn this material.